3 min čitanja

Podeli ovaj članak

Rate this Post

Sve što treba da znate ukoliko Vaši zaposleni koriste Open-Source Code

10/06/2022

“I am a lazy person, which is why I like open-source, for other people to do work for me.”

Linus Torvalds

Bez obzira da li ste zaista lenji ili samo želite da se fokusirate na kreiranje nečeg inovativnog uz korišćenje već utabanih prečica, u svakodnevnom radu programera uobičajeno je da razvoj softverskih proizvoda olakšavaju i ubrzavaju open-source biblioteke (od npr. biblioteka za obradu slike, biblioteka za filtriranje podataka, Big Data analizu, full-stack framework-a, do machine learning-a). Milioni komponenti open-source koda (softver otvorenog koda) se skinu svake godine sa interneta kako bi pomogli savremenom razvoju softvera. Dakle, nema nikakve sumnje da je open-source ekosistem daleko odmakao od grupe entuzijasta koji se bore protiv predatorskog zaključavanja komercijalnog softvera i da je za mnoge sada već postao mainstream. Najbolji dokaz za to je činjenica da se neke od najpopularnijih tehnologija današnjice zasnivaju na open-source kodu (IoT, Healthcare, AI, Android).

Ipak, činjenica da je Open-source softver (u daljem tekstu: OSS) besplatan, ne znači da njegovo korišćenje ne povlači određenu cenu. Zapravo, ukoliko koristite open-source biblioteke protivno njihovoj licenci, postoji mogućnost da niste platili na mostu, ali da ćete platiti na ćupriji.

Ok, hajde sada da krenemo od početka, kako bismo došli do uputstava koje bi trebalo da poštujete.

Razlike između licenci vlasničkog softvera i OSS

Softver, koji predstavlja „originalnu duhovnu tvorevinu autora”, zaštićen je autorskim pravom. Autor ili nosilac autorskog prava odlučuje o tome ko ima pravo da instalira i kopira računarski program, ima parvo da ga koristi ili prodaje, da ga javno saopštava, modifikuje i unapređuje. Suštinski, komercijalni softver (softver namenjen za komercijalnu upotrebu kao što je prodaja) može da bude i vlasnički softver i OSS. Ipak, razlike između ove dve vrste softvera su suštinske.

Kod vlasničkog softvera (na engleskom „proprietary software”), licencom se kupuju određena prava, odnosno definiše se tačno šta je korisniku zabranjeno, a šta dozvoljeno da orisni softverom. Ona, pre svega, treba da odgovori na pitanje kom kodu orisnik ima pristup – da li ima pristup samo mašinskom kodu (object code) ili ima pristup I izvornom kodu (source code). Pravilo je daorisnikk uvek može da pristupi mašinskom kodu, dok se je pristup izvornom kodu potrebno posebno ugovariti i nije karakterističan za, na primer, SaaS (Softver as a Service) ili za programe koji podrazumevaju masovnu upotrebu i koje sami korisnici mogu prilagoditi potrebama (na primer, Microsoft Office). Osim toga, u ugovoru o licenci je definisano gde korisnik može da instalira softver, koliko puta može da ga instalira, da li može da ga kopira, modifikuje i distribuira.

Ukratko, licenca komercijalnog softvera polazi od zabrana i onda eksplicitno nabraja šta sve možete raditi sa takvim softverom.

Tipičan primer vlasničkog softvera je Microsoft, koji podrazumeva kupovinu više dodatnih softverskih licenci, kao što su Microsoft Windows operativni sistem, IIS Web Server, Microsoft SQL Server baza podataka i ASP.NET programski jezik.

Kod Open source softvera, autorsko pravo je okrenuto.

Umesto da licenca nabraja šta vam je dozvoljeno, OSS licence nabrajaju samo ono što vam je zabranjeno u vezi sa softverom. Drugim rečima, polazi se od toga da korisnik ima čitav niz prava, a tačno su definisani samo uslovi pod kojima može ova prava da uživa. U srži open-source definicije su sledeće četiri slobode:

  • Sloboda da se koristi izvorni kod
  • Sloboda da se proučava izvorni kod
  • Sloboda da se modifikuje i poboljšava izvorni kod
  • Sloboda da se izvorni kod distribuira (podrazumeva kopiranje)

 

Prema tome, licenca za softver otvorenog koda garantuje ove slobode bez bilo kakve naknade autoru – vlasniku koda. Takođe, za razliku od vlasničke licence OSS licenca nužno podrazumeva pristup izvornom kodu.

Tipičan primer kombinacije OSS tehnologija je Linux operativni sistem, Apache Web server, MySQL baza podataka i PHP programski jezik.

Ipak, koliko god lepo zvučala činjenica da se ovakve tehnologije mogu dobiti besplatno, u open-source svetu egzistira niz različitih licenci, a samim tim i određeni broj zabrana na koje morate paziti. Ključ leži u razumevanju razlika između licenci.

Koje OSS licence postoje?

Svaka OSS licenca ima posebne uslove kako za korišćenje Open source-koda, tako i za njegovu modifikaciju. Organizacija koja nosi ime „Inicijativa za otvoreni kod” (na engleskom Open-Source Initiative) sadrži listu OSS licenci, koje moraju proći kroz postupak odobrenja, jer moraju da poštuju sve zahteve open-source definicije. Postoji preko 70 OSS licenci, ali 10 najpopularnijih se primenjuju u 90% slučajeva.

Ukoliko bismo hteli maksimalno da pojednostavimo objašnjenje različitih vrsta OSS licenci, mogli bismo izvesti njihovu grubu podelu na:

  • Restriktivne ili zabranjujuće (copyleft) licence
  • Dopuštajuće ili permisivne (non-copyleft) licence

 

Restriktivne ili copyleft licence garantuju svim korisnicima gore pomenute četiri slobode bez naknade, pod uslovom da taj open-source kod ili bilo koji program koji nastane upotrebom tog open-source koda garantuje iste uslove svojim korisnicima. Drugim rečima, ako je OSS zaštićen restriktivnom licencom, onda ne možete da ograničavate dalje korisnike da koriste taj kod ili njegove modifikacije. Četiri slobode postaju neodvojive od tog z open-source koda.

Suština restriktivnih licenci je da izvorni kod bude javno dostupan, kako bi drugi programeri mogli da ga proučavaju, modifikuju i unapređuju, te da tako unapređeni softver ostane besplatan i dostupan celom svetu. Kada ne bi bilo copyleft-a, odnosno kada ne bi postojala zabrana da se takav softver komercijalizuje, vrlo brzo bi derivati tog softvera postali nedostupni svima, a korisnici tih derivata ne bi imali više mogućnost da takav kod slobodno koriste, kopiraju, distribuiraju ili modifikuju. Namera je da restriktivna licenca motiviše programere, koji nisu orijentisani isključivo ka profitu, da unapređuju razna softverska rešenja. Pojedini važni programi (na primer, GNU C++ compiler) nastali su isključivo zahvaljujući copyleft-u.

Najpoznatija restriktivna licenca je GNU Opšta javna licenca (na engleskom: GNU General Public License, GNU GPL ili samo GPL) koju je sačinio Ričard Stolman. Na primer, operativni sistemi u okviru Linuksa su zasnovani na GPL licenci. Ako biste, na primer, napisali kod i objavili pod GNU GPL licencom, drugi programer koji modifikuje vaš kod i želi da ga distribuira, morao bi da to uradi isključivo pod GNU GPL licencom. Drugim rečima, i originalni i novi kod moraju biti open-source. U suprotnom, drugi programer može da odgovara za kršenje vašeg autorskog prava.

Sa druge strane, dopuštajuće open-source licence korisniku softvera daju neograničenu slobodu da koristi, proučava i menja softver, a sadrže minimalne zahteve u vezi sa redistibucijom ovog softvera. Ukoliko je OSS koji koristite pod dopuštajućom licencom, izvorni kod možete da koristite i kao deo softvera zatvorenog koda ili softvera zaštićenog vlasničkom softverskom licencom.

Najpopularnije dopuštajuće licence su BSD, MIT i Apache. Na primer, poznati softverski paketi koji koriste jednu od verzija MIT licence uključuju Expat, Ruby on Rails, Node.js, jQuery itd.

Ipak, ni ova podela nije potpuno crno-bela. Postoje i licence koje su između restriktivnih i dopuštajućih. Na primer, GNU Manje opšte javna licenca (na engleskom: Lesser General Public License ili samo LGPL) je u osnovi restriktivna (kao GPL), ali dopušta da open-source kod pod ovom licencom bude vezan za vlasnički softver, što inače ne bi bilo dopušteno pod GPL licencom. Pošto se LGPL najviše koristi za biblioteke, moguće je da vaš kod sadrži open-source biblioteke, a da i sam ne postane open-source.

Ipak, imajte u vidu da to ne važi za samu izmenu biblioteke. Ako postoji njena nova verzija, ona se mora objaviti kao open-source.

U svakom slučaju, od ključnog značaja je pročitati licencu prilikom korišćenja OSS.

Takođe, bez obzira na to da li se radi o restriktivnoj ili dopuštajućoj licenci važno je ispoštovati zahteve koji su istaknuti u takvoj licenci.

Na primer, licenca će zahtevati da se unese ograničenje odgovornosti, ili da se naznači ime autora, ili da se opišu izmene na kodu pre njegove dalje distribucije i sl.

Poređenja radi, GPL, LGPL, Apache, BSD zahtevaju unošenje organičenja odgovornosti, dok GPL, LGPL, Apache zahtevaju da se opišu izmene na kodu pre njegove dalje distribucije, a što nije slučaj sa BSD.

Koje licence mogu biti problematične?

Da biste znali da li je vaš kod zaražen potrebno je da analizirate na koji način su OSS i vaš kod povezani. U oko 80% slučajeva će odgovor biti očigledan, a u 20% će ovo pitanje bili složenije. U svakom slučaju, ovo je tehnička stvar i ona bi podrazumevala da vaš programerski tim radi zajedno sa timom advokata specijalizovanih za zaštitu softvera.

Dakle, nakon što ste identifikovali delove OSS u vašem softveru, uključujući i identifikovanje restriktivnih licenci koje se tako primenjuju, sledeće pitanje treba da postavite:

  • Da li su sekvence OSS ugrađene u vaš kod? Ako je odgovor pozitivan: vaš kod je zaražen OSS licencom.

 

Ako je odgovor negativan, dalje je potrebno postaviti sledeća pitanja:

  • Da li su sekvence OSS i sekvence vašeg koda povezane statički? Ako je odgovor potvrdan: vaš kod je zaražen OSS licencom.
  • Da li su sekvence OSS i sekvence vašeg koda povezane dinamički? Ako jesu, konačan odgovor zavisi od konkretnog slučaja, ali verovatno vaš kod nije zaražen.

Kada se smatra da je vaš kod zaražen OSS licencom?

Da biste znali da li je vaš kod zaražen potrebno je da analizirate na koji način su OSS i vaš kod povezani. U oko 80% slučajeva će odgovor biti očigledan, a u 20% će ovo pitanje bili složenije. Inače, ovo je tehnička stvar i ona bi podrazumevala da vaš programerski tim radi zajedno sa timom advokata specijalizovanih za zaštitu softvera.

Dakle, nakon što ste identifikovali delove OSS u vašem softveru, uključujući i identifikovanje restriktivnih licenci koje se tako primenjuju, ovo je prvo pitanje koje treba da postavite:

  • Da li su sekvence OSS ugrađene u vaš kod? Ako je odgovor potvrdan: vaš kod je zaražen OSS licencom.

 

Ako je odgovor odričan, dalje je potrebno postaviti sledeća pitanja:

  • Da li su sekvence OSS i sekvence vašeg koda povezane statički? Ako je odgovor potvrdan: vaš kod je zaražen OSS licencom.
  • Da li su sekvence OSS i sekvence vašeg koda povezane dinamički? Ako jesu, konačan odgovor zavisi od konkretnog slučaja, ali verovatno vaš kod nije zaražen.

Svakako, imajte u vidu da ako je svrha softvera koji razvijate samo interna, onda niste u opasnosti od kršenja open-source licence. Jedina opasnost za vas postoji ukoliko želite dalje da distribuirate softver kao vlasnički softver svojim klijentima/korisnicima. Tada prethodna analiza za vas treba da bude ključna.

To-do-lista za korišćenje OSS licence

Da biste bili sigurni da ne kršite OSS licencu, te da vas ne može jednog dana iznenaditi tužba za povredu autorskog prava, potrudite se da na sva sledeća pitanja odgovorite potvrdno:

  • Da li pre korišćenja OSS svaki od programera pročita licencu i ispoštuje njene zahteve?
  • Da li u firmi/organizaciji imamo predviđene procedure za korišćenje OSS? Da li imamo osobu koja je odgovorna za poštovanje tih procedura? Da li su svi nivoi naše organizacije upoznati sa procedurama?
  • Da li imamo listu svih OSS biblioteka i listu svih komercijalnih biblioteka koje koristimo? Koliko često ažuriramo tu listu?
  • Da li objavljujemo open-source sekvence našeg koda u skladu sa zahtevima OSS licence?
  • Da li šaljemo neophodne licence i fajlove sa obaveštenjima kao što se zahteva u open-source bibliotekama koje koristimo?

 

Danas postoje automatizovana rešenja za identifikovanje sekvenci open-source softvera u vašem kodu, koja vam mogu značajno uštedeti vreme i smanjiti rizik prilikom korišćenja OSS.

Iako slabosti OSS nisu bile predmet ovog teksta, treba imati u vidu da pojedina istraživanja tvrde da je tokom 2016. godine 58,1 milion open-source komponenti preuzeto sa interneta. Imajući u vidu i cirkulaciju ovih komponenti u novim sekvencama koda, nije iznenađujuće da i vaš kod ima jedan od identifikovanih nedostataka. Uvođenje prethodno navedenih procedura, dakle, nije onda bitno samo sa pravnog aspekta, već i sa tehničkog. Ako na pravilan način vodite evidenciju o sekvencama OSS u vašem kodu, to će definitivno smanjiti sve potencijalne rizike i izdvojiti vas na tržištu.

Sada kada imate jasnija uputstva, na vama je da odlučite.

Slični blogovi

Najnoviji blogovi

Niste sigurni odakle da krenete?

Ukoliko niste sigurni koji je prvi korak, zakažite konsultacije sa jednim od naših stručnjaka.

techlawafficiendo

privacywhisperer

cryptobuddy

evegreen

Ovo nije samo još jedan newsletter

Zaboravite dosadne pravničke analize i teoriju.
Saznajte za rokove i primajte vesti koje zaista pomažu vašem poslovanju.