Šta je open source softver

Otvoriš terminal, otkucaš jednu komandu i za minut imaš instaliran web server koji vrti pola interneta. Ništa nisi platio, nisi uneo ključ i niko te nije pitao za podatke o kartici.

To je open source, i prva je stvar koju vredi razumeti pre nego što kreneš sa Linuxom — jer objašnjava zašto Linux uopšte postoji i zašto ima toliko distribucija.

Zatvoren i otvoren kod

Program koji koristiš je niz nula i jedinica koje procesor izvršava. Taj oblik čovek ne može da čita. Ono što je programer zaista napisao zove se izvorni kod.

Kod zatvorenog softvera dobijaš samo izvršni oblik. Izvorni kod je poslovna tajna — ne možeš da vidiš šta program radi, ne možeš da ga prepraviš i ne možeš da proveriš da li šalje nešto negde. Tako rade Windows, Photoshop i većina komercijalnih programa.

Kod otvorenog softvera izvorni kod je javan. Svako sme da ga pročita, promeni i dalje deli.

Četiri slobode

„Otvoren kod" nije samo to da je kod negde objavljen. Definicija koju je postavio Free Software Foundation traži četiri slobode:

  • Pokretanje — program smeš koristiti za bilo šta, bez ograničenja na broj računara ili namenu
  • Proučavanje — smeš videti kako radi, što podrazumeva pristup izvornom kodu
  • Deljenje — smeš praviti kopije i davati ih drugima
  • Izmena — smeš ga prepraviti i tu izmenjenu verziju objaviti

Ova četvrta sloboda je razlog zašto postoji na stotine Linux distribucija. Ako ti se ne sviđa kako je nešto urađeno, uzmeš postojeći sistem, prepraviš ga i objaviš pod svojim imenom. Tako je Ubuntu nastao iz Debiana, a Rocky Linux iz koda Red Hat Enterprise Linuxa.

Besplatno nije isto što i otvoreno

Ovo se najčešće meša.

Besplatan softver znači samo da ne plaćaš. Chrome, Zoom i Adobe Reader su besplatni, ali im je kod zatvoren — ne znaš šta rade i ne smeš ih menjati.

Otvoren softver znači da imaš kod i prava nad njim. To obično jeste i besplatno, ali ne mora: Red Hat naplaćuje pretplatu na RHEL, čiji je kod otvoren. Ne plaćaš softver — plaćaš podršku, sertifikaciju i odgovornost kad nešto pukne.

Engleski jezik tu pravi zabunu, jer free znači i slobodno i besplatno. Otuda uobičajeno objašnjenje: free as in freedom, not as in free beer.

Free software i open source

Naići ćeš i na razliku između ta dva pojma. „Free software" pokret naglašava slobodu korisnika kao etičko pitanje; „open source" naglašava praktične prednosti otvorenog razvoja i lakše se prodaje firmama.

U praksi pokrivaju isti softver. Ko hoće da izbegne svrstavanje, koristi skraćenicu FOSS — Free and Open Source Software.

Licence

Otvoren kod ne znači bez pravila. Licenca određuje šta smeš da radiš sa kodom, i razlike među njima su vrlo praktične.

Copyleft licence

GPL (GNU General Public License) traži uzvraćanje: ako uzmeš GPL kod, izmeniš ga i objaviš proizvod, i tvoj kod mora biti pod GPL-om. Sloboda se ne sme zatvoriti.

Pod GPL-om su Linux kernel, Bash, GIMP i veliki deo osnovnih alata. Postoji i AGPL, koji istu obavezu proširuje i na softver koji se nudi kao usluga preko mreže.

Permisivne licence

MIT, BSD i Apache 2.0 dozvoljavaju gotovo sve — uključujući ugrađivanje u zatvoren komercijalni proizvod. Jedini stvarni uslov je da zadržiš obaveštenje o autorstvu.

Zato ih firme rado koriste. Pod MIT-om su Node.js i React, pod Apache licencom Kubernetes i Android, pod BSD-om veliki delovi mrežnog softvera.

Zašto ti to uopšte treba

Dva razloga.

Ako pišeš softver za firmu, licenca biblioteke koju uvučeš određuje šta smeš sa svojim proizvodom. GPL biblioteka u zatvorenom proizvodu je pravni problem, ne tehnički.

Ako radiš kao administrator, licenca objašnjava zašto neki paketi nisu u podrazumevanim repozitorijumima — kodeci, drajveri i firmver često imaju ograničenja koja distribucija ne sme da prenese dalje.

Licencu projekta gotovo uvek nađeš u fajlu LICENSE u korenu izvornog koda, a na sistemu:

$ cat /usr/share/common-licenses/GPL-2
$ dnf info bash | grep License
License      : GPLv3+

Odakle Linux u svemu ovome

Priča ima dva toka koji su se spojili.

1983 — Richard Stallman pokreće GNU projekat, sa ciljem da napravi potpuno slobodan operativni sistem nalik Unixu. Za deset godina nastaju kompajler, ljuska, editori i najveći deo sistemskih alata. Fali jedino jezgro.

1991 — finski student Linus Torvalds objavljuje jezgro koje je napisao iz radoznalosti i pušta ga pod GPL-om.

Spojeni, ta dva dela čine kompletan sistem. Zato ćeš sretati i naziv GNU/Linux — komande koje kucaš uglavnom su GNU alati, a Linux je jezgro ispod njih.

Dalje se dešava ono što otvorenost omogućava: 1993 nastaju Debian i Slackware, 1994 Red Hat, 2004 Ubuntu. Svaki je uzeo postojeći kod i složio ga po svome. Nijedan nije morao da traži dozvolu.

Ko to sve plaća

Uobičajena predstava je da open source pišu volonteri iz hobija. Delimično je tačna, ali danas je najveći deo posla plaćen.

  • Firme plaćaju svoje zaposlene da rade na projektima. Najveći broj izmena u Linux kernelu dolazi od programera zaposlenih u Intelu, Red Hatu, Googleu, SUSE-u i sličnim kompanijama. Njima je jeftinije da zajednički održavaju jezgro nego da svaka piše svoje.
  • Podrška i pretplata. Red Hat je izgradio milijardsku firmu na softveru koji svako sme besplatno da preuzme. Proizvod nije kod nego garancija.
  • Open core. Osnovna verzija je otvorena, napredne funkcije se plaćaju. Tako rade GitLab i mnogi drugi.
  • Fondacije. Linux Foundation, Apache Foundation i slične organizacije finansiraju se članarinama firmi i drže infrastrukturu i pravni okvir.
  • Donacije i volonteri. I dalje postoje, i drže veliki broj manjih ali važnih projekata.

Problem koji vredi znati

Ova poslednja stavka je i slaba tačka celog sistema. Ogroman deo infrastrukture interneta oslanja se na male biblioteke koje održava jedan ili dvoje ljudi u slobodno vreme, bez ikakve nadoknade.

Kad se takav održavalac umori ili odustane, projekat ostaje bez nadzora — a on je već ugrađen u desetine hiljada sistema. Nekoliko ozbiljnih bezbednosnih incidenata poslednjih godina imalo je upravo taj koren.

Otvorenost sama po sebi ne garantuje da kod neko zaista pregleda. Ideja da „hiljadu očiju sve vidi" važi za velike projekte, ne i za sve.

Šta od toga ima korist za tebe

Ne plaćaš licence za učenje

Ceo softver iz ovog bloga možeš instalirati i vrteti besplatno — Linux, Apache, MySQL, Docker, Kubernetes, Python. Za odgovarajući komercijalni paket bile bi hiljade evra. Nema prepreke između tebe i sistema koji radi u pravim firmama.

Kad zapneš, možeš da pogledaš

Ako se program ponaša neočekivano, izvorni kod je javan. Ne moraš biti programer da bi ti to koristilo — često je dovoljno pročitati zvaničnu dokumentaciju, prijavljene greške i istoriju izmena. Kod zatvorenog softvera ostaje ti da čekaš odgovor podrške.

Znanje se prenosi

Ono što naučiš ovde radi na svakom serveru na planeti, kod svakog poslodavca. Nije vezano ni za jednog proizvođača.

Možeš i sam da doprineseš

Ne mora to biti kod. Ispravljena greška u dokumentaciji, prevod, uredno prijavljen bag ili odgovor nekome na forumu — sve se računa. To je ujedno i najlakši način da izgradiš vidljivu referencu za posao.

Otvoren softver koji već koristiš

Verovatno više nego što misliš:

  • Android — jezgro sistema je otvoreno
  • Firefox, i Chromium koji je osnova Chromea i Edgea
  • VLC, GIMP, LibreOffice, Blender
  • Signal, VS Code (u osnovnoj verziji)
  • Nginx i Apache — vrte najveći deo veb sajtova
  • Docker, Kubernetes, Git, PostgreSQL
  • Skoro svi veliki AI modeli treniraju se na otvorenim bibliotekama

Praktično svaki server na internetu vrti nešto otvoreno. Zatvoreni sistemi su izuzetak, ne pravilo.

Vežba

Kad instaliraš svoj sistem, pogledaj licence onoga što na njemu radi:

$ dnf info bash | grep License
$ dnf info nginx | grep License
$ dnf info python3 | grep License

Ili na Debian porodici:

$ apt show bash | grep License
$ cat /usr/share/doc/bash/copyright

Primetićeš mešavinu — GPL, MIT, BSD, Apache, često i po nekoliko licenci u istom paketu. Sistem koji koristiš sastavljen je od koda stotina ljudi i firmi koji se nikada nisu sreli.


Sledeći korak → Linux distribucije — koju izabrati

Povezano: Instalacija Linuxa · dnf i yum · Počni odavde

Comments

Popular posts from this blog

Početak u Linuxu — šta je i zašto se uči

Konverzija tipova podataka u Pythonu

groupadd