Základní principy free software


A manager went to the master programmer and showed him the requirements document for a new application. The manager asked the master:

"How long will it take to design this system if I assign five programmers to it?"
"It will take one year," said the master promptly.
"But we need this system immediately or even sooner! How long will it take it I assign ten programmers to it?"
The master programmer frowned. "In that case, it will take two years."
"And what if I assign a hundred programmers to it?"
The master programmer shrugged. "Then the design will never be completed," he said.

-- Geoffrey James, The Tao of Programming

Mnoho lidí zkoumalo důvod, proč je free software úspěšné a proč se najde tolik programátorů, kteří na programech pracují často i úplně zdarma. Názory jsou různé. Pro zajímavost si můžete přečíst dva články od známých osobností na poli free software - GNU Manifest Richarda Stallmana (1985) a The Cathedral and the Bazaar Erika S. Raymonda (1998). Mezi postupy specifické pro free software patří:

Otevřený vývojový model

Každý, kdo se podílel na větším softwarovém projektu ví, že jeho koordinace není nic snadného. Jenom řízení projektu na kterém pracuje 20 programátorů je velmi náročné. Koordinace projektu, na kterém by pracovaly stovky programátorů ve svém volném čase se zdá být téměř nemožná. Přesto tak ale úspěšně pracuje mnoho free softwarových projektů. Nejznámější je vývoj jádra Linuxu, kde dnes snad tisíce programátorů posílají své změny několika málo koordinátorům, kteří je kontrolují a zařazují do oficiálních zdrojových kódů. Vývojové verze se pak zveřejňují velmi často tak, aby všichni měli šanci vidět výsledky své práce a opravovat chyby. Vývoj Linuxu postupuje nezvykle rychle a efektivně přesto, že tato metoda porušuje snad všechna zaběhlá pravidla. (Klasická literatura o řízení velkých projektů nabádá k vytvoření malé dobře organizovaných skupy, která program napíše a zveřejnění jej až v době, kdy je plně funkční, aby se případní uživatele neodradili.)

Na ojedinělost tohoto postupu poukázal právě Erik Raymond ve výše zmiňovaném článku. Jeho zveřejnění znamenalo významný obrat ve vývoji ostatních projektů. Správci projektů začali úmyslně experimentovat s touto metodou vývoje. Doslova raketovým tempem vznikly některé nové projekty, mezi které patří například GIMP (kreslící program dnes srovnatelných možností s Photoshopem), GNOME a KDE (Uživatelsky přítulné desktopy pro Linux).

Zajímavé bylo sledovat vývoj událostí u GNU překladače (GCC), kde vznikly tendence přejít na tento model. Našlo se ale mnoho odpůrců, kteří tvrdili, že u tak komplikovaného projektu to je nemožné. Překladače patří mezi nejsložitější programy vůbec a není jasný ani jejich návrh a proto koordinace takového množství vývojářů se zdála být složitá. Tak vznikla nová odnož vývoje (EGCS), která měla primárně za úkol testovat složitější změny do překladače, které by pak byly zařazovány do oficiální a stabilní verze. Tato odštěpená verze ale brzy nabyla takové rychlosti vývoje, že zařazování zpět se stalo nemožné. Navíc se tato experimentální verze stala stabilnější, protože již při vývoji byla testována mnoha uživateli a tak nakonec před několika měsíci původní vývojovou větev pohltila. Díky několika odvážným zásahům do překladače se výrazně zlepšila kvalita generovaného kódu a podpora moderních jazyků, jako je C++. Zatímco do staré vývojové verze bylo zařazeno přibližně 10 změn měsíčně, do nové jich přibývá asi 150 a tempo se stále zvyšuje.

Otevřený model vývoje se stal lákadlem i pro komerční firmy. První významný experiment provedla firma Mozilla, která uvolnila zdrojové kódy svého browseru Netscape. Přesto, že ani tento krok nepomohl zachránit firmu před převálcováním firmou Microsoft, mnoho dalších firem začalo zvažovat podobný krok. Na browseru se koneckonců nyní aktivně pracuje a poslední vývojové verze vypadají opravdu slibně. Od startu projektu byl celý prohlížeč kompletně přepsán a rozmodularizován. Zveřejnění nové verze Netscape je tak po mnoha odkladech ohlášeno na konec roku 1999.

Později i někteří další velikáni (jako Sun, IBM, nebo SGI) začali uvolňovat zdrojové kódy svých produktů. Výsledkem je, že free software dostalo podporu velkých firem a ty stále výrazněji napomáhají při jeho vývoji.

Free softwarové licence a copyleft

Původně vznikaly free softwarové programy jako Public domain, kde program neměl copyright a každý jej mohl používat naprosto bez omezení. Časem se ale ukázala nutnost nějak právně zastřešit jejich vývoj. Napřed vznikly licence typu BSD, které povolují používání a modifikace bez omezení ale zakazují z programu vymazat informace o původních autorech.

Se zajímavou myšlenkou přišel Richard Stallman při zakládání GNU projektu. Sám v GNU manifestu píše:

GNU není public domain. Každý bude mít možnost modifikovat a redistribuovat GNU, ale nikdo nemůže omezit jeho další rozšiřování. To znamená, že žádné vlastnické modifikace nebudou povoleny (nikdo si nesmí přivlastnit GNU tím, že by ho modifikoval, a proto považoval za vlastní majetek). Chci zajistit, aby všechny verze zůstaly free.
Proto licenci použitou GNU projektem, GNU General Public Licence (GPL), koncipoval tak, aby chránila hlavně program a jeho uživatele. Licence zakazuje pozdější změnu na jinou licenci a přikazuje každému distributorovi programu dodávat na požádání i zdrojové kódy. Navíc se automaticky přenáší na veškeré úpravy programu a proto i firma, která vyvine nějaké vylepšení do GNU programu, nebo část GNU programu použije ve svém díle, má povinnost své změny zveřejnit. Díky tomu se GPL šíří jako virus na další a další programy. (ne však na výsledky práce programů, můžete tedy v GNU vývojovém prostředí vyvíjet komerční program). Tuto myšlenku nazval "copyleftem", jako opak copyrightu.

Právě díky copyleftu některé firmy musely zveřejnit zdrojové kódy a také napomohl omezit některé "pseudo-free" licence programů (programy distribuované bez zdrojových kódů, programy, které jsou zdarma pouze pro nekomerční použití, programy s omezením na distribuci apod.). Kombinovat GNU programy s programy distribuované pod podobnými licencemi je nelegální a proto většina vývojářů nakonec přistoupí na plně free softwarovou licenci. Díky tomu se dnes stala GPL nejoblíbenější free softwarovou licencí vůbec.

Ne všechny free softwarové licence však musí obsahovat copyleft. Existují i takové, které pozdější komercializaci projektu nezakazují. Mezi nejznámější patří BSD licence použitá například v systému FreeBSD, Artistic licence používaná programem Perl, nebo licence použitá při vývoji systému X Window.

Zálaží tak pouze na autorovi programu, kterou licenci si zvolí.