Kaj je prosto programje/odprta koda/FOSS?
FOSS (Free & Open Source Software), odprta koda (Open Source Software) in prosto programje (Free Software) so vsi termini, ki opisujejo istovrstno programje. Gre torej za sopomenke. Avtor članka je Matija Šuklje, Društvo uporabnikov Linuxa Slovenije – LUGOS.
Da je nek računalniški program prosto programje, mora uporabniku zagotavljati naslednje pravice:
- pravico, da program prosto uporablja za kakršen koli namen;
- pravico, da prosto preuči, kako program deluje – za ta namen, mora biti na voljo izvorna koda;
- pravico, da program prosto prilagodi svojim željam in potrebam – tudi za ta namen mora biti na voljo izvorna koda; ter
- pravico, da program in svoje spremembe na njem prosto širi naprej.
Čeprav je to pogosto, ni nujno, da je prost program tudi brezplačen. Tržijo se namreč lahko še vedno razne storitve kot so podpora ipd., le licenca sama po sebi ne sme biti plačljiva. Licenca je skupek pravic, ki jih imetnik pravic daje uporabniku programa.
Več informacij za radovedne
Open Source in Free Software imata vsak svojo definicijo:
- Organizacija OSI (Open Source Initiative) definira OSS (Open Source Software) z 10 pogoji: https://opensource.org/osd-annotated.
- Organizacija FSF (Free Software Foundation) definira FS (Free Software) s 4 svoboščinami (»freedoms«): https://www.gnu.org/philosophy/free-sw.html.
Da bi razumeli, zakaj in kako je prišlo do tega razlikovanja ter zakaj v praksi ta razlika ni (več) pomembna, je treba pogledati na stvar skozi zgodovinsko prizmo.
- Prva desetletja računalništva programska koda ni bila pravno zaščitena in je bila v celoti v javni domeni. Šele v 1970-ih in 1980-ih se je začela javna razprava o tem, ali naj bo programje zaščiteno z avtorskimi pravicami, patenti ali neko novo pravico. V zgodnjih 1980-ih je nekako prevladalo mnenje, da je programska koda še najbolj podobna prozi, zato so takrat avtorskopravni zakoni po svetu začeli urejati tudi pravice na računalniških programih.
- Leta 1983 je Richard M. Stallman (RMS) začel projekt GNU (GNU’s Not Unix) z namenom, da se naredi povsem prost operacijski sistem (ki je podoben Unixom). Pri tem je začel uporabljati termina »Free Software« (slv: prosto programje) ter »copyleft« (recipročna pravica), s tem da ima vsak program znotraj GNU še svojo lastno (prosto) licenco. Leta 1985 se je za namen promocije prostega programja in razvoj GNU projekta v ZDA ustanovila neprofitna nevladna organizacija Free Software Foundation (FSF). Je pa pri tem treba poudariti, da so vzporedno in neodvisno od GNU nastajali tudi drugi programi, ki jih štejemo med prosto programje (npr. X Window System, BSD …).
- Pojavile so se prve proste licence. Nastale so na Berkley University (BSD, specifično različica BSD-4-Clause), na Massachusetts Institute of Technology (MIT, X11) ter s strani FSF (GNU General Public license, specifično GPL-1.0). Med temi je GPL edina, ki je copyleft, ostale so vse permisivne licence.
- Leta 1986 je FSF v prvem GNU’s Bulletin objavil prvo zelo kratko definicijo »Free Software«. Že takrat so izpostavili, da gre pri »Free software« za pravice (»freedoms«) in ne za brezplačnost.
- GNU/FSF (v praksi RMS sam) začne izdelovati seznam licenc, ki jih kategorizira v proste in ne-proste.
- Leta 1991 je Linus Torvalds izdal prvo verzijo Linux jedra ter jo 1992 dal na voljo javnosti pod GPL-2.0 licenco.
- Projekt Debian – ena prvih GNU/Linux distribucij (od l. 1993) – je naletel na težavo: FSF je uspela pregledati le peščico licenc, obstoječa definicija prostega programja s strani FSF pa ni bila zelo uporabna v praksi. Zato so poskušali (v glavnem Bruce Perens sam) s seznama licenc abstrahirati pravila, iz česar je leta 1997 nastala zbirka smernic DFSG (Debian Free Software Guidelines, kot del Debian Social Contract) z 9 pogoji in tremi testi, ki opredeljujejo, kaj Debian smatra kot »prosto programje«.
- Medtem je FSF leta 1996 na strani gnu.org objavila prvo različico še danes uporabljene definicije Free Software s štirim pravicami.
- Leta 1998 so v ZDA ustanovili Open Source Initiative (OSI) z namenom promocije prostega programja v korporativnem okolju. Ker pa jim je beseda »free« malo »smrdela« po brezplačnem (čeprav ni nujno res), so izbrali nov termin »open source software« ter (v praksi spet Bruce Perens) iz DFSG izluščili definicijo OSS na podlagi 10 pogojev.
Tako je postal FOSS krovni termin, ker je hkrati v FS definiciji ter v OSS definiciji. V praksi se je izkazalo, da gre tako pri FS, OSS in FOSS za skoraj vedno isto vrsto programja, le poudarek, oz. zorni kot je lahko drug. Glede tega so si enotni tudi pri organizacijah OSI, FSF in FSFE (Free Software Foundation Europe).
Copyleft
V grobem delimo FOSS licence v dve kategoriji:
- copyleft (oz. recipročne, »share alike«) – npr. GPL-2.0, AGPL-3.0, MPL-2.0, ter
- permisivne – npr. MIT, BSD-2-Clause, Apache-2.0.
Licencam v obeh kategorijah je skupno to, da dajejo prejemniku vse 4 pravice.
Permisivne FOSS licence so praviloma bolj enostavne in uporabniku ne nalagajo dodatnih pogojev, oz. so ti praviloma precej preprosti.
Pri copyleft FOSS licencah pa je dodana recipročnost, kar pomeni, da mora vsak prejemnik neke pravice (torej licence) to isto pravico dati naprej tudi vsem, ki od njega prejmejo ta isti program ali njegovo predelavo.
Pri tem vsaka od teh dveh kategorij poudarja svoj filozofsko-praktičen koncept svobode:
- glavni cilj copyleft je zagotovitev, da program za vedno ostane prost in se prepreči, da bi nekdo tretji »ukradel« kodo (ki so jo ustvarili in dali na voljo splošni javnosti drugi) ter jo zaprl – poudarja torej prostost kode;
- cilj permisivnih licenc pa je, da se programi čim bolj široko uporabljajo, tudi če bi to pomenilo, da program konča kot del zaprto-kodne rešitve – poudarja torej svobodo razvijalca, ki je (prvi) dobil kodo, da z njo lahko počne karkoli, vključno s tem, da jo zapre.
Kompleksni programi ↦ več licenc
Moderni programi in aplikacije so kompleksne in so pogosto – kot tudi mnogi fizični produkti – sestavljeni iz več komponent. V veliki meri je za to, da lahko tako hitro razvijamo tako kompleksne programe, odgovorno prav prosto programje, saj slednje omogoča ponovno uporabo programske kode. Lahko pa se zgodi, da so komponente izdane vsaka pod svojo licenco. Tako je v praksi precej pogosto, da za nek program velja več, kot ena licenca.
Na končnega uporabnika več licenc ne bi smelo imeti resnega vpliva, saj vse FOSS licence zagotavljajo prosto uporabo za kakršen koli namen. Vendar pa je pri razvoju kode (predelavi in deljenju z drugimi naprej) treba paziti, da so te licence med seboj združljive.
Mit: S prostim programjem se ne sme služiti
V nobeni od definicij FOSS ni omejitve, da FOSS ne bi smel biti komercializiran – celo GNU/FSF to eksplicitno dovoli:
https://www.gnu.org/philosophy/free-sw.en.html#selling
https://www.gnu.org/philosophy/selling.html
Dopolnitve besedila: Simona Knavs (Društvo za trajnostni razvoj Duh časa) in Jaka Kranjc (Društvo Ekologi brez meja).
Naslovna slika Vairavi – self-published work, CC BY-SA 4.0, vir.