Open Source Software
Transkrypt
Open Source Software
Szkoła Główna Handlowa w Warszawie Studium Dyplomowe Praca magisterska na kierunku EKONOMIA Grzegorz Andruszkiewicz Nr albumu: 19939 Analiza mikroekonomiczna oprogramowania o otwartym źródle – rola przedsi˛ebiorstw w jego rozwoju Praca wykonana pod kierunkiem prof. Aleksandera Sulejewicza katedra Ekonomii II Warszawa 2004 Prac˛e przedkładam do oceny Data Podpis autora pracy: Praca jest gotowa do oceny przez recenzenta Data Podpis kierujacego ˛ praca: ˛ Spis treści Wst˛ep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1. Oprogramowanie o otwartym źródle . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.1. Licencje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.2. Tworzenie oprogramowania o otwartym źródle . . . . . . . . . . . . . . . . . . 23 1.2.1. Motywacja programistów . . . . . . . . . . . . . . . . . . . . . . . . . 27 1.2.2. Motywacja firm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 1.2.3. Proces powstawania . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 1.2.4. Niezawodność . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 1.3. Rola przedsi˛ebiorstw i rzadu ˛ w tworzeniu wolnego oprogramowania . . . . . . . 47 2. Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 2.1. Funkcja produkcji firm komercyjnych . . . . . . . . . . . . . . . . . . . . . . . 51 2.2. Funkcja produkcji ruchu wolnego oprogramowania . . . . . . . . . . . . . . . . 52 2.3. Funkcja użyteczności użytkownika oprogramownia . . . . . . . . . . . . . . . . 54 2.4. Producent oprogramowania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 2.5. Powstawanie oprogramowania o otwartym źródle . . . . . . . . . . . . . . . . . 57 2.6. Porównanie oprogramowania komercyjnego z oprogramowaniem o otwartym źródle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 2.7. Wnioski z modelu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 3. Wnioski . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 3 Wst˛ep W ostatnich latach na rynku oprogramowania komputerowego zauważamy nowa˛ tendencj˛e – pojawiło si˛e tzw. oprogramowanie o otwartym źródle (ang. open source software, skr. OSS), czyli oprogramowanie, którego każdy ma prawo używać bez konieczności zakupu licencji1 i które każdy ma prawo poprawiać, ponieważ kod źródłowy2 jest publicznie dost˛epny. Fenomenem ostatnich kilku lat jest fakt, że oprogramowanie to jest coraz lepsze i coraz bardziej rozpowszechnione. Najlepszym przykładem jest serwer WWW3 Apache, który można ściagn ˛ ać ˛ za darmo ze strony http://www.apache.org, a jednocześnie ma (luty 2004) ponad 69% udziału w rynku4 . Poza Apache’m istnieje wiele innych bardzo zaawansowanych technicznie projektów, konkurencyjnych do rozwiazań ˛ komercyjnych,5 jak chociażby system operacyjny GNU/Linux6 , prze- 1 Licencja jest rodzajem ograniczonego prawa do korzystania z dobra intelektualnego. Oprogramowanie o otwar- tym źródle także jest obj˛ete licencjami, ale licencje te istotnie różnia˛ si˛e od licencji komercyjnych, gdyż staraja˛ si˛e zagwarantować każdemu prawo do korzystania z oprogramowania, a nie je ograniczyć. Problemy licencji zostana˛ dokładniej omówione w rozdziale 1.1 2 Kodem źródłowym nazywamy tekst programu bezpośrednio tworzony przez programistów. Programy, które uruchamiamy na komputerze sa˛ w postaci tzw. kodu wykonywalnego, który istotnie różni si˛e od kodu źródłowego – jest praktycznie nieczytelny dla człowieka. Posiadajac ˛ kod źródłowy możemy łatwo otrzymać kod wykonywalny poprzez kompilacj˛e (proces zautomatyzowany). Proces ten jest jednakże praktycznie nieodwracalny – istnieja˛ tzw. dekompilatory, lecz nie potrafia˛ one wiernie odtworzyć kodu źródłowego, w szczególności nie da si˛e odzyskać komentarzy programistów, cz˛esto niezb˛ednych do zrozumienia sposobu działania programu. Można wi˛ec przyjać, ˛ że posiadajac ˛ tylko kod wykonywalny programu, nie da si˛e w programie nic poprawić. 3 Serwer WWW to program umożliwiajacy ˛ udost˛epnienie innym użytkownikom sieci naszej strony internetowej. 4 Netcraft, Web Server Survey. 5 Analiza˛ poziomu zaawansowania i konkurencyjnościa˛ oprogramowania o otwartym źródle zajm˛e si˛e w rozdziale 1.2.4 6 http://www.linux.org 5 gladarka ˛ internetowa Mozilla 7 , pakiet biurowy Open Office8 , kompilator gcc9 , debugger gdb10 , system zarzadzania ˛ baza˛ danych MySQL11 , itd. Narzucajacym ˛ si˛e pytaniem jest jak to si˛e dzieje, że takie oprogramowanie powstaje? Stworzenie tak zaawansowanych programów wymaga niesłychanie dużego nakładu pracy wysoko wykwalifikowanych programistów, którzy rozdaja˛ swoje produkty za darmo. Poza tym obserwujemy czynny udział firm w rozwijaniu oprogramowania o otwartym źródle. Na „pierwszy rzut oka” wydaje si˛e, że ten fenomen przeczy zasadom ekonomii klasycznej, gdyż dlaczego ludzie i firmy mieliby rozdawać owoce swojej pracy, zamiast czerpać zyski z ich sprzedaży? W niniejszej pracy chciałbym przedstawić analiz˛e tego paradoksu. Najpierw, w rozdziale 1 zdefiniuj˛e dokładnie oprogramowanie o otwartym źródle i dokonam przegladu ˛ licencji, na których to oprogramowanie jest wypuszczane. Licencje zostana˛ przeanalizowane pod katem ˛ możliwości wykorzystania obj˛etego nimi oprogramowania do celów komercyjnych. Nast˛epnie postaram si˛e wytłumaczyć fenomen, że wielu programistów tworzy, a nast˛epnie dobrowolnie i nieodpłatnie udost˛epnia innym swoje poprawki do istniejacych ˛ programów, czy wypuszcza nowe programy na licencjach oprogramowania o otwartym źródle. Pokaż˛e różne motywacje programistów: poczawszy ˛ od rozwijania oprogramowania dla własnej korzyści, poprzez zagadnienia dotyczace ˛ ekonomii kariery, a na aspektach kulturowo-psychologicznych skończywszy. Na koniec przedstawi˛e także analiz˛e porównawcza˛ oprogramowania o otwartym źródle i oprogramowania komercyjnego pod wzgl˛edem użyteczności dla użytkowników (pokaż˛e że oprogramowanie o otwartym źródle cz˛esto zawiera mniej bł˛edów, nowo-zgłoszone bł˛edy sa˛ poprawiane szybciej, a oprogramowanie to lepiej pasuje do potrzeb niektórych użytkowników) oraz samego procesu powstawania (tworzenia) oprogramowania (przeanalizuj˛e efektywność obu procesów, stopień dostosowania produktu do potrzeb użytkowników i możliwość kontrolowania tworzenia oprogramowania – pokaż˛e mi˛edzy innymi, że nie każda forma wspierania oprogramowania o otwartym źródle przyspiesza jego rozwój). W rozdziale 2 przedstawi˛e model powstawania oprogramowania o otwartym źródle na rynku, przeanalizuj˛e proces powstawania wolnego oprogramowania oraz jego konkurencyjności z produktem firmy komercyjnej. Zauważamy ostatnio, że w rozwój oprogramowania o otwartym źródle angażuje si˛e coraz wi˛ecej komercyjnych firm, zarówno nowo powstałych, zajmujacych ˛ 7 http://www.mozilla.org http://www.openoffice.org 9 http://gcc.gnu.org 10 http://www.gnu.org/software/gdb/gdb.html 11 http://www.mysql.com 8 6 si˛e tylko tym oprogramowaniem, jak i wielkich światowych gigantów. Na przykład firma Red Hat Software12 , powstała w 1995 roku, zajmuje si˛e dostarczaniem firmom rozwiazań ˛ softwarowych opartych na Linuksie i oprogarmowaniu o otwartym źródle. Dystrybucja Linuksa Red Hat13 jest jedna˛ z najbardziej znanych i rozpowszechnionych. Red Hat zajmuje si˛e sprzedaża˛ pudełkowych wersji swojej dystrybucji, można ja˛ jednak ściagn ˛ ać ˛ za darmo ze strony internetowej, cz˛esto nawet wcześniej niż dotrze do sklepów. Firma zarabia głównie na wsparciu technicznym, konsultingu, indywidualne usługi informatyczne czy szkolenie techników (wprowadzono kursy na stopnie: Red Hat Certified Engineer i Red Hat Certified Technician) i inne. Red Hat jest notowana na NASDAQ (RHAT) – dnia 14.03.2004 miała wartość $ 3,158,185,200. Red Hat aktywnie inwestuje w rozwój wolnego oprogramowania, chociaż konkurenci moga˛ korzystać z jej pracy bez żadnych ograniczeń. Z drugiej strony IBM, tradycyjny gigant na rynku, także poświ˛eca ogromne środki na rozwój oprogramowania o otwartym źródle, w tym np. na dostosowanie Linuksa do własnych platform sprz˛etowych. Firmy te ponosza˛ koszty na wspieranie projektów OSS, udost˛epniaja˛ publicznie owoce swojej pracy, a nie maja˛ możliwości czerpania z tego żadnych bezpośrednich zysków (z powodu licencji). Sytuacja z przedsi˛ebiorstwami jest o tyle ciekawsza od motywacji programistów, że przedsi˛ebiorstwa sa˛ nastawione tylko na zysk (zgodnie z ekonomia˛ klasyczna), ˛ nie wyst˛epuja˛ tutaj aspekty kulturowe, psychologiczne, etc. Co wi˛ecej, cz˛esto sie zdarza, że różne przedsi˛ebiorstwa rozwijajace ˛ to samo oprogramowanie o otwartym źródle sa˛ bezpośrednimi konkurentami, co raczej nie zachodziło w przypadku programistów. Analizujac ˛ model postaram si˛e wyciagn ˛ ać ˛ kilka wniosków o możliwości wpływu tych firm na sam proces rozwoju oprogramowania o otwartym źródle. 12 13 http://www.redhat.com Dystrybucja jest to jadro ˛ Linuksa razem ze zbiorem narz˛edzi i programów użytkowych. Dystrybucje posia- daja˛ własny instalator, czyli program uruchamiajacy ˛ (przegrywajacy ˛ na dysk, tworzacy ˛ odp. struktur˛e katalogów, zakładajacy ˛ pliki konfiguracyjne, etc) wszystkie programy na komputerze użytkownika. 7 Rozdział 1 Oprogramowanie o otwartym źródle Na poczatku ˛ istnienia komputerów oprogramowanie powstawało głównie albo w ośrodkach akademickich (jak Berkeley czy MIT), albo w centralnych korporacyjnych laboratoriach badawczych, gdzie naukowcy także mieli duża˛ autonomi˛e (np. Bell Labs i centrum badawcze firmy Xerox w Palo Alto). Nikt nie starał si˛e zarobić na samym oprogramowaniu, w zwiazku ˛ z czym źródła były otwarte, a ludzie wymieniali si˛e nowymi wersjami i ew. swoimi poprawkami. W latach 70-tych korporacje włożyły wiele wysiłku w prób˛e stworzenia systemu operacyjnego, który mógłby działać na wielu platformach sprz˛etowych. Najbardziej udane „wynalazki” tego okresu to j˛ezyk C i system UNIX, stworzone poczatkowo ˛ w laboratoriach AT&T – Bell Labs. Oprogramowanie to było jednak przekazywane (za darmo lub za minimalna˛ opłata) ˛ innym instytucjom, które wprowadzały kolejne poprawki i innowacje, czym dzieliły si˛e z pozostałymi użytkownikami. Proces „dzielenia si˛e” kodem był ułatwiony, gdy w 1979 powstała sieć Usenet, łacz ˛ aca ˛ społeczność programistów uniksowych. Wraz z rozwojem tej sieci, możliwości wymiany technologii przez poszczególne uniwersytety i laboratoria gwałtownie rosły.1 Jednak w latach 80-tych firma AT&T zacz˛eła rościć sobie prawa własności intelektualnej do Unixa (opisany powyżej proces był nieformalny i formalne prawa własnościowe nie były ustalone)2 , inne instytucje zacz˛eły post˛epować podobnie. Mi˛edzy innymi MIT sprzedała firmie komercyjnej licencj˛e na oprogramowanie wytworzone w laboratoriach . Firma ta natychmiast ograniczyła dost˛ep do kodu źródłowego tego oprogramowania, przez co osoby niezatrudnione, w tym twórcy oprogramowania (naukowcy z MIT), przestali mieć możliwość korzystania, nauczania i dalszego rozwijania projektów. W odpowiedzi Richard Stallman z MIT Artificial Intelligence 1 2 Lerner i Tirole, The Simple Economics of Open Source. Ibid. 9 Laboratory założył w 1985 roku organizacj˛e Free Software Foundation3 , która za cel postawiła sobie stworzenie i rozprowadzenie szerokiego wachlarza darmowego oprogramowania z ogólnie dost˛epnym źródłem – w pełni funkcjonalnego systemu operacyjnego złożonego tylko z darmowego (wolnego) oprogramowania. Projekt ten nazywa si˛e GNU4 . Bardziej dziś znane aplikacje to kompilator gcc, debugger gdb, edytor Emacs, graficzny interfejs użytkownika GNOME i wiele innych. Stallman był osobiście dotkni˛ety zdarzeniem w MIT, uważał także, że nowa światowa tendencja do produkcji i sprzedaży oprogramowania w postaci kodu wykonywalnego, którego nie można było modyfikować ani uczyć si˛e na jego podstawie, jest „moralnie zła”.5 Stworzył ide˛e i definicj˛e wolnego oprogramowania (ang. Free Software) – jest to oprogramowanie, które daje użytkownikowi cztery „wolności”: (1) Wolność do używania programu do jakiegokolwiek zastosowania, (2) Wolność do analizowania działania programu i dostosowania go do swoich potrzeb, (3) Wolność do rozprowadzania programu, (4) Wolność do poprawiania, modyfikowania i wypuszczania swoich wersji. Stallman podkreśla, że aby oprogramowanie było wolne w jego rozumieniu, kod źródłowy musi być ogólnie dost˛epny. Jest to niezb˛edny warunek do spełnienia punktów (2) i (4). Stallman (w ramach działalności Free Software Foundation), żeby zapobiec ewentualnym sporom o prawa autorskie wolnego oprogramowania (projektu GNU), postanowił umiejscowić to oprogramowanie w istniejacych ˛ standardach prawnych. Została stworzona specjalna licencja GNU GPL (General Public License), która gwarantowała, że obj˛ete nia˛ oprogramowanie pozostanie wolnym oprogramowaniem (w sensie zdefiniowanym powyżej). Stallman stworzył termin „Copyleft” (pozostawienie do kopiowania), jako przeciwieństwo „copyright” (prawa autorskie, dokł. prawo do kopiowania).6 Normalnie każdy autor dobra intelektualnego ma właśnie „copyright”, co oznacza że tylko on ma prawo do kopiowania i rozprowadzania swojego dzieła, zaś pozostali ludzie sa˛ tego prawa pozbawieni. Wolne oprogramowanie obj˛ete jest „copyleft”, czyli jest pozostawione do kopiowania, każdy ma prawo dowolnie rozprowadzać te programy. Analogicznie jak „copyright”, dobra pochodne7 także obj˛ete sa˛ „copyleft”. Ta˛ cech˛e licencji GPL b˛edziemy nazywać żywotnościa.˛ Żywotność nie jest niezb˛edna˛ cecha˛ licencji wolnego oprogramowania.8 Dokładniej analiza˛ różnych żywotnych i nieżywotnych licencji wolnego 3 http://www.gnu.org Od “GNU’s Not Unix”. 5 von Hippel i von Krogh, Open Source Software and the “Private-Collective” Innovation Model. . . . 6 Stallman, The Free Software Definition. 7 Dobrem (programem) pochodnym innego dobra (programu) – pierwotnego – b˛edziemy nazywać coś, co po4 wstało na bazie dobra (programu) pierwotnego – jako jego modyfikacja, rozbudowa, lub nawet gdy wykorzystano tylko elementy dobra (programu) pierwotnego. 8 Stallman, Categories of Free and Non-Free Software. 10 oprogramowania zajmiemy si˛e w rozdziale 1.1. W latach 90-tych nastapił ˛ dynamiczny rozwój różnych projektów b˛edacych ˛ wolnym oprogramowaniem. W 1991 roku Linus Torvalds stworzył Linuksa9 , czyli jadro ˛ „wolnego” uniksowego systemu operacyjnego. Razem z narz˛edziami i aplikacjami GNU powstał darmowy system operacyjny GNU/Linux, bardzo popularny w kr˛egach akademickich i zdobywajacy ˛ coraz wi˛ekszy udział w rynku serwerowych systemów operacyjnych. Zacz˛eło powstawać wiele nowych projektów, ich rozwój był ułatwiony dynamicznym rozwojem Internetu - rosła pula potencjalnych programistów, chcacych ˛ wziać ˛ udział w rozwoju oprogramowania o otwartym źródle. Poza tym drastycznie zmniejszyły sie koszty komunikacji. Zacz˛eły powstawać inne niż GPL licencje nadal spełniajace ˛ definicj˛e wolnego oprogramowania10 . Żeby to uporzadkować, ˛ w 1995 roku Debian11 stworzył „Debian Free Software Guideliness”12 – zasady opisujace ˛ kiedy dana licencja jest licencja˛ wolnego oprogramowania (dokument ten był zupełnie niezależny od Free Software Foundation, aczkolwiek GPL spełniała te zasady). Pomimo popularności wolnego oprogramowania wśród programistów, było ono rzadko wykorzystywane przez firmy i pozostałych użytkowników komputerów. W 1997 Bruce Perens (szef Debiana) i Eric Raymond (publicysta i programista OSS) doszli do wniosku, że przyczyna˛ tego jest „nieszcz˛esna” dwuznaczność terminu „free software” - ludziom kojarzyło sie ono pejoratywnie z darmowym oprogramowaniem niskiej jakości. Stworzyli oni nowy termin – Open Source Software (po polsku oprogramowanie o otwartym źródle)13 . Założono organizacj˛e Open Source Initiative14 , która z kolei opublikowała „Open Source Definition”15 (definicj˛e oprogramowania o otwartym źródle) – niewiele zmieniony dokument „Debian Free Software Guideliness”. „Open Source Definition” składa si˛e z 10 punktów: 1. Wolna redystrybucja – licencja musi umożliwiać każdemu użytkownikowi programu jego dalsza˛ dystrybucj˛e, w tym pobieranie za to opłaty. 2. Kod Źródłowy – licencja musi zezwalać na dystrybucj˛e kodu źródłowego obj˛etego nia˛ 9 Oparł si˛e na szkoleniowym systemie operacyjnym stworzonym przez Andrew Tanenbaum’a w MIT na potrzeby prowadzenia zaj˛eć ze studentami. 10 von Hippel i von Krogh, Open Source Software and the “Private-Collective” Innovation Model. . . . 11 Debian jest stowarzyszeniem zajmujacym ˛ si˛e tworzeniem wolnego systemu operacyjnego opartego na GNU/Linux – konkretniej ma własna˛ dystrybucj˛e Debian GNU/Linux. Zobacz: http://www.debian.org 12 Debian, Debian Free Software Guideliness. 13 von Hippel i von Krogh, Open Source Software and the “Private-Collective” Innovation Model. . . . 14 http://www.opensource.org 15 Perens, Open Source Definition. 11 oprogramowania. Gdy oprogramowanie jest dystrybuowane bez kodu źródłowego, musi być on dost˛epny za darmo lub za opłata˛ równa˛ kosztowi reprodukcji. 3. Prace Pochodne – licencja musi umożliwiać tworzenie programów pochodnych i dystrybuowanie ich na tych samych zasadach, co licencja pierwotna. 4. Integralność kodu źródłowego autora – licencja może ograniczać dystrybucj˛e zmodyfikowanego kodu źródłowego tylko gdy pozwala na dystrybucj˛e „łatek”.16 5. Brak dyskryminacji żadnej osoby czy grupy osób. 6. Brak dyskryminacji żadnego pola zastosowania programu (w tym zastosowania w biznesie lub do badań z dziedziny inżynierii genetycznej) 7. Dystrybucja Licencji – Licencja na której jest rozprowadzany program musi, bez konieczności dokonania dodatkowych czynności, dotyczyć także wszystkich, którzy ten program posiad ˛ a.˛ 8. Licencja nie może być specyficzna dla konkretnego produktu – nie może zależeć od tego, czy program jest cz˛eścia˛ jakieś wi˛ekszej dystrybucji. 9. Licencja nie może wykluczać innego oprogramowania rozprowadzanego na tym samym nośniku danych. 10. Licencja musi być niezależna od technologii – nie może zależeć od sposobu rozprowadzania programu (w sensie technicznym). Definicje „Open Source Definition”17 i definicja wolnego oprogramowania opublikowana przez Free Software Foundation18 różnia˛ si˛e. Obie te instytucje publikuja˛ list˛e licencji, które uznaja˛ za wolne/o otwartym źródle19 . Dodatkowo Free Software Foundation podaje także list˛e 16 Łatka (ang. patch) – zawiera różnice pomi˛edzy pierwotnym kodem a kodem zmodyfikowanym. Korzystajac ˛ ze specjalnych narz˛edzi, po „nałożeniu” łatki na pierwotny kod, otrzymujemy kod zmodyfikowany. Taki sposób dystrybucji programów pozwala odseparować program pierwotny od później dokonanych zmian. Stosuje si˛e go głównie wtedy, gdy autorzy pierwotnego programu nie sa˛ w stanie stwierdzić jakiej jakości sa˛ poprawki, a nie chca˛ ryzykować utraty zaufania do jakości własnego oprogramowania. Użytkownik wtedy wie, że „nakłada łatk˛e” na własne ryzyko. 17 Perens, Open Source Definition. 18 Stallman, The Free Software Definition. 19 Odpowiednio http://www.opensource.org/licenses/ i http://www.gnu.org/licenses/ license-list.html 12 licencji uznanych za niespełniajace ˛ kryteriów wolności. Po dokonaniu analizy okazało sie, że organizacje te nie zgadzaja˛ si˛e tylko w przypadku jednej licencji: Artistic Licence. Free Software Foundation nie uznało tej licencji jako wolnej, a dla Open Source Initiative jest ona „open source”.20 W uzasadnieniu jest napisane, że „Nie możemy stwierdzić, że jest licencja˛ wolnego oprogramowania, ponieważ jest zbyt nieprecyzyjna – pewne ust˛epy sa˛ zbyt niejasne.”, i dalej „Kłopoty dotycza˛ sformułowań, nie samego sensu.”21 Tak wi˛ec jedyny przypadek sprzecznej klasyfikacji licencji opiera si˛e tylko na nieścisłości sformułowań. Co wi˛ecej, „Istnieje skorygowana wersja Licencji Twórczej (ochrzczona “Licencja˛ Twórcza˛ 2.0”), która jest licencja˛ wolnego oprogramowania, a nawet jest zgodna z GPL.” – czyli problematyczna wersja Artistic License została już poprawiona. Podsumowujac, ˛ obie organizacje sa˛ prawie zgodne co do ram opisywanego przeze mnie ruchu. W zwiazku ˛ z tym poj˛eć „wolne oprogramowanie” i „oprogramowanie o otwartym źródle” b˛ed˛e używał wymiennie. Organizacje te różnia˛ si˛e natomiast podejściem filozoficznym. Richard Stallman napisał „Fundamentalna różnica mi˛edzy tymi dwoma ruchami leży w uznawanych przez nie wartościach, sposobach patrzenia na świat. Dla Open Source kwestia, czy oprogramowanie powinno mieć dost˛epne otwarte źródła to problem praktyczny, nie etyczny. Jak to ktoś ujał: ˛ „Open source to metodyka konstruowania, wolne oprogramowanie to ruch społeczny”. Dla ruchu Open Source oprogramowanie, które nie jest wolne to rozwiazanie ˛ gorsze niż optymalne. Dla ruchu Wolnego Oprogramowania programy, które nie sa˛ wolne to problem społeczny, którego rozwiazaniem ˛ jest wolne oprogramowanie.”22 1.1. Licencje Oprogramowanie komputerowe jest dobrem intelektualnym, charakteryzujacym ˛ si˛e prawie zerowym kosztem krańcowym utworzenia kolejnej kopii. Dobra intelektualne obj˛ete sa˛ specyficznymi dla tej kategorii prawami własności. Istnieja˛ trzy podstawowe rodzaje praw własności intelektualnej23 : Prawa Autorskie (ang. Copyright) Gdy powstaje nowe dobro intelektualne (np. program kom20 Niestety Open Source Initiative nie publikuje listy licencji, które nie sa˛ „open source”. W zwiazku ˛ z tym jedyne badanie jakie mogłem przeprowadzić, to znalezienie wszystkich licencji uznanych za „open source” przez Open Source Initiative a jednocześnie odrzuconych przez Free Software Foundation. 21 http://www.gnu.org/licenses/license-list.pl.html 22 Stallman, Dlaczego termin „Free Software” jest lepszy niż „Open Source”. 23 Koek, Free Software Licensing. 13 puterowy), autor automatycznie dostaje prawo własności tego dobra24 , co w uproszczeniu oznacza że ma on wyłaczne ˛ prawo do kopiowania tego dobra. Prawo to jest automatyczne i uniwersalne (obowiazuje ˛ wsz˛edzie). Gdy autor sprzedaje kopi˛e jakiemuś innemu podmiotowi, prawo autorskie nie przechodzi na kupujacego ˛ – tylko prawo do normalnego użytkowania konkretnej kopii. Warto także zauważyć, że prawo autorskie (w szczególności w przypadku programów) odnosi si˛e tylko do konkretnego kodu, a nie pomysłu, funkcjonalności, etc. Majac ˛ dany program, można stworzyć niezależnie nowy program o identycznych możliwościach jak ten poprzedni – nie b˛edzie on już obj˛ety prawami własności autora pierwszego programu. W przypadku dóbr pochodnych, autor dobra pierwotnego zachowuje prawa autorskie do cz˛eści napisanej przez siebie, zaś osoba wprowadzajaca ˛ modyfikacje uzyskuje prawo autorskie do tych modyfikacji.25 Prawo autorskie wygasa, zwykle po 70 latach. Patenty Patent jest dokumentem wydanym przez odp. urzad ˛ państwowy, który daje posiadaczowi wyłaczne ˛ prawo do wykorzystywania pewnego konkretnego wynalazku (invention) – czyli samego pomysłu, idei, a nie konkretnej implementacji. Żeby wynalazek dało sie opatentować, musi być on (1) nowy (nieopublikowany, nie używany publicznie), (2) nie może być oczywisty (tzn. nie może być tak, że specjalista w danej dziedzinie z łatwościa˛ stworzyłby dany wynalazek), (3) musi należeć do dziedziny techniki26 i (4) musi sie nadawać do przemysłowego wykorzystania. Cz˛estym argumentem przeciwko stosowaniu patentów jest fakt, że to organizacja rzadowa ˛ jest odpowiedzialna za stwierdzenie, czy dany wynalazek spełnia warunki (1) i (2). Ostatnio technika posun˛eła si˛e na tyle do przodu, że bł˛edne decyzje zdarzaja˛ si˛e coraz cz˛eściej, szczególnie jeżeli chodzi o patenty na oprogramowanie. Patenty ulegaja˛ przedawnieniu po minimum 20 latach.27 Sa˛ prawem terytorialnym i nieautomatycznym. O patent trzeba si˛e ubiegać w biurze patentowym, które może 24 O ile stworzone przez niego dobro nie jest identyczne lub bardzo podobne do już istniejacego ˛ (np. algorytmu z podr˛ecznika). 25 Jest to czasem wykorzystywane np. przez wydawców – gdy wydaja˛ jakieś stare dzieło, w przypadku którego prawa autorskie już wygasły, dodaja˛ komentarze/interpretacj˛e, które sa˛ niezależnie obj˛ete prawem autorskim. Dzi˛eki temu dobra jako całości (ksiażki ˛ z komentarzami) nie można kopiować i rozprowadzać. 26 Kwestia czy oprogramowanie jest patentowalne jest różnie rozstrzygalne w różnych krajach. W Stanach Zjednoczonych i Japonii wydaje si˛e patenty na oprogramowanie, w Unii Europejskiej sprawa jest dyskutowana. 27 Taki minimalny czas trwania patentów został przyj˛ety w TRIPS (Trade Related aspects of Intellectual Property Rights) – mi˛edzynarodowej umowie dotyczacej ˛ ochrony intelektualnej, ratyfikowanej przez wi˛ekszość rozwini˛etych gospodarczo państw. 14 przyznać patent lub go odrzucić. Patenty obowiazuj ˛ a˛ tylko na terytorium państwa, które je wydało.28 Znaki handlowe Znak handlowy to znak umożliwiajacy ˛ rozpoznanie towarów lub dóbr danej organizacji. Znakiem handlowym jest np. „Open Source” i „OSI Certified”, należa˛ one do Open Source Initiative29 . Znaki handlowe nie wiaż ˛ a˛ si˛e bezpośrednio z prawami własności intelektualnej programów komputerowych, wi˛ec nie b˛edziemy si˛e nimi wi˛ecej zajmować. Tajemnica firmowa Jest to nieformalny sposób ochrony własności intelektualnej, bardzo istotny jednak w odniesieniu do oprogramowania komputerowego. Ponieważ programy komputerowe sprzedaje si˛e w postaci kodu binarnego, na bazie którego bardzo trudno jest (czyli kosztownie) odkryć rzeczywiste mechanizmy działania programu ukryte pod interfejsem użytkownika, firma nie musi obawiać si˛e ujawnienia tajemnicy służbowej dystrybuujac ˛ program. Jest to jedyna forma ochrony wynalazków używana w małych i średnich przedsi˛ebiorstwach, ponieważ firm tych nie stać na aplikowanie o patenty. Właściciele dóbr intelektualnych moga˛ dać(sprzedać) innym prawo do korzystania ze swojej kopii. To zezwolenie b˛edziemy nazywać licencja.˛ Licencja może ograniczać użytkownika dobra intelektualnego i zabraniać mu dokonywania niektórych czynności (jak kopiowanie, rozpowszechnianie, modyfikacj˛e). Autorzy wolnego oprogramowania wykorzystuja˛ istniejace ˛ mechanizmy ochrony praw autorskich do zapewnienia „wolności” swojemu oprogramowaniu. Posiadajac ˛ prawa autorskie, „rozdaja” ˛ program na pożadanej ˛ przez siebie licencji.30 Przeglad ˛ licencji oprogramowania o otwartym źródle The General Public License (GPL) – kiedyś GNU Public License – jest to pierwsza licencja wolnego oprogramowania, stworzona przez Free Software Foundation, nazywana także „copyleft”. Najważniejsze cechy to: • użycie oprogramowania jest nieograniczone. 28 Ostatnio wprowadzono pojecie patentu europejskiego, który b˛edzie obowiazywał ˛ w całej Unii Europejskiej. Zobacz http://opensource.org/trademarks/. 30 Ibid. 29 15 • kopiowanie i rozpowszechnianie jest możliwe pod kilkoma warunkami, w szczególności kopia programu obj˛etego GPL jest również obj˛eta GPL. Pobieranie opłaty za kopi˛e jest explicite dopuszczone. • modyfikacja jest dozwolona pod warunkiem, że jeżeli zmodyfikowany program b˛edzie rozpowszechniany, modyfikacje b˛eda˛ obj˛ete taka˛ sama˛ licencja˛ jak oryginał (ta˛ cech˛e nazywamy żywotnościa˛ licencji). Żywotność oznacza, że licencja gwarantuje nie tylko wolność obj˛etego nia˛ oprogramowania, ale także zapewnia, że wszystkie programy pochodne, modyfikacje i udoskonalenia także b˛eda˛ wolnym oprogramowaniem. The Library GPL (obecnie Lesser GPL)– gdy biblioteki były obj˛ete GPL, napotkano problem: czy program zlinkowany31 z biblioteka˛ zawiera kod obj˛ety GPL? W uj˛eciu prawnym prawdopodobnie (nie było to jeszcze testowane w sadzie) ˛ taki program jest uznawany za program pochodny, co nie zawsze było intencja˛ autorów bibliotek. Powstała nowa licencja LGPL – różniaca ˛ si˛e od GPL tylko zapisem, że programy zlinkowane32 z biblioteka˛ nie musza˛ być wolnym oprogramowaniem (natomiast nowa biblioteka oparta na naszej musi być na LGPL). Konieczne jest natomiast udost˛epnienie pliku obiektowego(czyli skompilowanego, ale nie zlinkowanego z biblioteka), ˛ żeby użytkownik mógł samodzielnie zlinkować ten plik z inna˛ (nowsza) ˛ wersja˛ biblioteki. typu MIT/X – poprzednio omówione licencje były „żywotne”, czyli wymagały by programy pochodne także były wolnym oprogramowaniem, obj˛etym taka˛ sama˛ licencja.˛ Dla wielu twórców taki zapis jest jednak niewygodny. Licencje typu MIT/X pozwalaja˛ na dowolne licencjonowanie programów pochodnych, wprowadzaja˛ jednak ograniczenia: • wszystkie istniejace ˛ informacje o prawach autorskich i warunkach licencji musza˛ pozostać niezmienione. • nazwiska autorów nie moga˛ być wykorzystywane do promocji programów pochodnych. 31 32 W uproszczeniu korzystajacy ˛ z biblioteki Licencja zawiera bardzo konkretna˛ definicj˛e „bycia zlinkowanym”: (fragment §5 – plik obiektowy jest plikiem już skompilowanym, ale jeszcze nie zlinkowanym z biblioteka) ˛ „(. . . ) Jeżeli taki plik obiektowy korzysta tylko z parametrów liczbowych, schematów struktur danych oraz małych (maksymalnie 10 linii kodu) makr i funkcji wstawianych (ang. inline functions), to użycie takiego pliku obiektowego jest nieograniczone, niezależnie czy formalnie jest to program pochodny”. Pełen tekst licencji: http://www.gnu.org/licenses/lgpl.html 16 Na licencjach tego typu istnieje obecnie bardzo dużo oprogramowania, najważniejszym przykładem jest X Window System – graficzny interfejs użytkownika używany w wi˛ekszości systemów uniksowych (w tym w Linuksie). Licencje takie niosa˛ ze soba˛ jednak niebezpieczeństwo, że w pewnym momencie poprawki i rozszerzenia kodu przestana˛ być wolnym oprogramowaniem. Taka sytuacja miała miejsce z X Window System – w kwietniu 1998 roku Open Group (organizacja zajmujaca ˛ si˛e wtedy systemem) ogłosiła, że implementacja nast˛epnej wersji nie b˛edzie już wolnym oprogramowaniem. W tym momencie ludzie zajmujacy ˛ si˛e dostosowaniem tego systemu do wolnych systemów operacyjnych (Linux i FreeBSD) zadeklarowali, że nie b˛eda˛ oni korzystać z komercyjnej wersji proponowanej przez Open Group, tylko b˛eda˛ niezależnie rozwijać oprogramowanie (wszystkie wersje sprzed kwietnia pozostawały nadal wolnym oprogramowaniem). We wrześniu Open Group ogłosiła, że nowa˛ wersj˛e wyda na tych samych zasadach co dotychczas. licencje typu BSD – (Berkeley Software Distribution) Uniwersytet Kalifornijski Berkeley był jednym z dwóch ośrodków badawczych, w których powstawał system operacyjny UNIX (drugim były Bell Laboratories z AT&T). Rodzaj licencji, na której uniwersytet wypuszczał swoje oprogramowanie nazywamy „licencjami typu BSD”. Ponieważ prace te były sponsorowane przez rzad ˛ Stanów Zjednoczonych, kod jest licencjonowany bardzo liberalnie. Warunki licencji sa˛ podobne do MIT/X z dodanym zastrzeżeniem, że wszystkie reklamy musza˛ zawierać podzi˛ekowanie dla twórców. Zapis ten powoduje, że licencje BSD nie sa˛ „kompatybilne” z GPL33 – to znaczy nie można połaczyć ˛ oprogramowania na licencji BSD z oprogramowaniem na GPL i wypuścić całości na GPL (licencje typu MIT/X nie maja˛ tej własności, gdyż nie zawieraja˛ zapisu sprzecznego z GPL). Przykładami programów na licencji typu BSD sa˛ sendmail, Apache czy freeBSD. Podwójne licencjonowanie Zdarza si˛e także, że oprogramowanie jest dost˛epne na dwóch różnych licencjach – klient wybiera ta˛ która mu bardziej pasuje. Najbardziej znane przykłady to: • J˛ezyk skryptowy Perl daje użytkownikowi wybór pomi˛edzy GPL’em, a Artistic License (nie jest żywotna – modyfikacje moga˛ nie być oprogramowaniem o otwartym źródle – ale wymaga by modyfikacje były rozprowadzane pod inna˛ nazwa). ˛ 33 W nowej wersji licencji BSD zrezygnowano tego kłopotliwego zapisu i jest już ona kompatybilna z GPL – program utworzony z fragmentów kodu na GPL i BSD b˛edzie ostatecznie na GPL. 17 • Autor programu Ghostscript wypuszcza nowa˛ wersj˛e programu na licencji AFPL (Aladdin Free Public License). Pozwala ona tylko na redystrybucj˛e niekomercyjna˛ – w przeciwnym przypadku trzeba zapłacić. Jednak po pojawieniu si˛e nowej wersji, poprzednie przechodza˛ automatycznie na GPL. • Podejście typu opublikuj albo płać – oprogramowanie jest dost˛epne na jakiejś żywotnej licencji oprogramowania o otwartym źródle (np. GPL) lub na licencji komercyjnej, umożliwiajacej ˛ sprzedaż oprogramowania pochodnego na dowolnej licencji(np. system zarzadzania ˛ baza˛ danych MySQL). Podwójne licencjonowanie niesie jednak ze soba˛ pewne problemy. Jeżeli zostanie nadesłana poprawka do wersji licencjonowanej na GPL, to czy może być ona uwzgl˛edniona w wersji komercyjnej? Trzeba by przekonać autora poprawki, by wypuścił ja˛ na innej licencji. Dlaczego jednak miałby to robić? Komercyjne licencje – ostatnio obserwujemy rosnace ˛ zaangażowanie wielkich korporacji w rozwój wolnego oprogramowania. Gdy firmy takie wypuszczaja˛ swoje oprogramowanie jako oprogramowanie o otwartym źródle, cz˛esto tworza˛ nowa˛ licencj˛e, która lepiej pasuje do ich potrzeb. Licencje te zawieraja˛ cz˛esto kontrowersyjne zapisy i toczy si˛e burzliwa dyskusja czy pozostaja˛ one nadal licencjami oprogramowania o otwartym źródle. Przedstawi˛e dwa najbardziej znane przykłady: • The Netscape Public License (NPL) licencja ta jest żywotna tylko w niektórych przypadkach – modyfikacje znajdujace ˛ si˛e w oddzielnych plikach moga˛ być rozprowadzane na innej licencji, a modyfikacje istniejacych ˛ plików nie. Poza tym, Netscape zostawia sobie prawo do wykorzystywania modyfikacji w jakikolwiek sposób – powyższe ograniczenia go nie obowiazuj ˛ a˛ (jako jedyny podmiot ma prawo wypuścić komercyjna˛ wersj˛e). Na tej licencji została wypuszczona przegladarka ˛ internetowa Netscape (lecz nie cały kod, gdyż do cz˛eści Netscape nie miał praw autorskich). Dziś projekt ten nazywa si˛e Mozilla (http://www.mozilla.org), zaś licencjonowanie stało si˛e bardzo skomplikowane, szczegóły można znaleźć na http://www.mozilla.org/MPL/. Wi˛ekszość licencji jest jednak podobna do NPL. • The Apple Public Source License (APSL) Licencja ta obejmuje produkty Apple wypuszczone jako oprogramowanie o otwartym źródle. Licencja ta jest żywotna, 18 nakłada na użytkownika kilka specyficznych ograniczeń: – Każda modyfikacja albo nawet użycie zmodyfikowanej wersji oprogramowania obj˛etego APSL musi być zgłoszone Apple. – Podobnie jak Netscape, firmy Apple żywotność nie obowiazuje ˛ jeżeli chodzi o wszelkie modyfikacje. – Apple zostawia sobie prawo do unieważnienia licencji gdy ktoś zaskarży firm˛e o złamanie patentu czy prawa autorskiego. Dla użytkownika oznacz to, że licencja może być w każdym momencie unieważniona, gdyż nie ma zapisu, że to oskarżenie ma być sensowne. W nowszej wersji osłabiono ten zapis: licencja b˛edzie zawieszona na czas procesu. Przez ten zapis pierwsza wersja licencji w ogóle nie była uznawana jako licencja oprogramowania o otwartym źródle. Cechy różnych licencji Z poprzedniego podrozdziału wynika, że choć oprogramowanie o otwartym źródle wydaje si˛e jednym, spójnym fenomenem, tak naprawd˛e każdy projekt może mieć inna˛ licencj˛e, dalej pozostajac ˛ oprogramowaniem o otwartym źródle. Przeanalizujmy (na podstawie Lerner i Tirole, The Scope of Open Source Licensing) czym kieruja˛ si˛e liderzy projektów wybierajac ˛ jakaś ˛ konkretna˛ licencj˛e, jaki wpływ ma dana licencja na powodzenie projektu oraz jak determinuje możliwości wykorzystania projektu przez firmy komercyjne. W momencie wyboru licencji, licencjodawca musi uwzgl˛ednić czynniki jak współpraca z innym oprogramowaniem (nie każde licencje sa˛ ze soba˛ komplementarne), motywacja innych programistów, żeby przyłaczyli ˛ si˛e do projektu, możliwości rozwidlenia projektu, możliwa współpraca z komercyjnymi dystrybutorami, etc. Zauważmy także, że cz˛esto motywacje licencjodawcy b˛eda˛ si˛e różniły od motywacji licencjobiorców, szczególnie gdy licencjodawca˛ jest nastawione na zysk przedsi˛ebiorstwo komercyjne. Można wyróżnić nast˛epujace ˛ czynniki: 1. Interakcje z innym oprogramowaniem – charakterystyczna˛ cecha˛ oprogramowania o otwartym źródle jest to, że bardzo cz˛esto w jednym projekcie korzysta sie z innych projektów czy łaczy ˛ si˛e kilka programów razem. Co wi˛ecej, jak przeanalizujemy w kolejnym rozdziale, niektóre rodzaje oprogramowania (np. programy rozrywkowe czy branżowe) maja˛ bardzo mała˛ szans˛e wyjść na licencji oprogramowania o otwartym źródle. Dlatego potencjalna możliwość współpracy z oprogramowaniem komercyjnym także ma znaczenie. 19 Łaczenie ˛ z innym oprogramowaniem ma istotne znaczenie gdy autor oprogramowania chce ustalić jakiś obowiazuj ˛ acy ˛ standard (jak na przykład w przypadku projektów ukierunkowanych na komunikacj˛e sieciowa). ˛ Możemy przewidywać, że takie projekty b˛eda˛ na mniej restrykcyjnych licencjach (nieżywotnych), mimo zagrożenia rozwidleniem lub przej˛eciem projektu. Co ciekawe, wybór licencji może spowodować powstanie efektów sieciowych (ang. network externalities)34 wśród liderów oprogramowania o otwartym źródle. Wybór nowej licencji dla programu w pewnym polu zastosowania może być zdeterminowany ch˛ecia˛ współpracy z istniejacymi ˛ już projektami. Brak dowolności w tym wzgl˛edzie wynika z niekompatybilności licencji. Jeżeli istniejace ˛ oprogramowanie jest np. na pierwotnej licencji BSD35 , to wypuszczenie nowego projektu na GPL spowoduje, że zupełnie nie b˛edzie możliwe połaczenie ˛ obu programów. Z kolei jeżeli istnieje jakiś duży projekt na liberalnej licencji (np. X Window Server), a my wypuścimy oprogramowanie na GPL, to liderzy dużego i uznanego projektu nie b˛eda˛ raczej skorzy do zmiany licencji na GPL, żeby połaczyć ˛ si˛e z naszym oprogramowaniem, etc. 2. Komercjalizacja projektów – zwolennicy żywotnych licencji argumentuja,˛ że gdy oprogramowanie jest na liberalnej licencji, jest ono narażone na komercyjne przej˛ecia. Firma może dopisać troch˛e własnego, zamkni˛etego kodu, dodać do oprogramowania o otwartym źródle i wypuścić wszystko jako własne oprogramowanie z zamkni˛etym źródłem (podobnie jak w 1998 roku próbowano zrobić z X Window Server). Takie oprogramowanie może w końcu zdominować rynek. Samo to jeszcze nie koniecznie musi być gorsze dla społeczeństwa niż istnienie tylko wersji OSS. W kolejnym jednak kroku firma komercyjna może zaczać ˛ wykorzystywać swoja˛ pozycj˛e monopolisty, a stara, jeszcze wolna wersja oprogramowania, może być już zupełnie niekompatybilna z nowymi standardami. W każdym wariancie wszyscy (głównie programiści rozwijajacy ˛ to oprogramowanie) straca˛ możliwości wynikajace ˛ z wolności oprogramowania i otwartości kodu, jak dostosowanie oprogramowania do swoich potrzeb czy szacunek kolegów wynikajacy ˛ z pracy nad programem. Taka ewentualność może w ogóle odstraszyć potencjalnych programistów zanim jeszcze po34 Mówimy, że wyst˛epuja˛ efekty sieciowe, gdy konsument używajacy ˛ pewnego produktu uzyskuje wi˛eksza˛ uży- teczność, gdy inni konsumenci korzystaja˛ z tego samego dobra. Dobrym przykładem jest oprogramowanie komunikacyjne – konsument ma z niego użyteczność, gdy ma si˛e z kim komunikować za jego pośrednictwem. 35 Istnieje wiele innych licencji niekompatybilnych z GPL, patrz: http://www.gnu.org/licenses/license-list.html#GPLIncompatibleLicenses 20 dejma˛ prac˛e nad tym projektem. 3. Patenty na oprogramowanie – łatwo sobie wyobrazić sytuacj˛e, gdy zostanie udowodnione, że oprogramowanie o otwartym źródle narusza jakiś patent na oprogramowanie – mogłoby to co najmniej odstraszyć programistów i użytkowników. Najbardziej widoczne jest to w przypadku Apple, gdzie w licencji zapisano, że firma może „zawiesić” ważność licencji w czasie post˛epowania. W GPL także w jawny sposób (patrz §7) jest napisane, że korzystanie z programu w ramach licencji (czyli np. użytkowanie czy rozpowszechnianie) jest dozwolone tylko gdy nie narusza to innych przepisów prawa, np. patentowego. 4. Bodźce do produkcji komplementarnego oprogramowania – standardowym argumentem na korzyść liberalnych licencji jest umożliwienie firmom komercyjnym tworzenie aplikacji, które współpracuja˛ (wykorzystuja) ˛ istniejacy ˛ kod. Wydaje si˛e, że szczególnie w przypadku dojrzałych projektów, gdy poczatkowa ˛ energia programistów jest już na wyczerpaniu, zaangażowanie komercyjnych firm w tworzenie kodu może być kluczowym bodźcem dla dalszego rozwoju. 5. Znajomość licencji przez środowisko programistów – jeżeli korzystamy ze znanej licencji, potencjalni programiści nie musza˛ inwestować dodatkowego czasu, żeby zaznajomić sie z warunkami nowej licencji. 6. Rozwidlanie – poza powstawaniem konkurencyjnych wersji komercyjnych i koniecznościa˛ zmiany nazwy projektu w przypadku niektórych licencji, nie wiadomo na razie jak wybór licencji może wpływać na prawdopodobieństwo rozwidlenia projektu. Lerner i Tirole przeprowadzaja˛ analiz˛e empiryczna˛ licencjonowania projektów OSS. Dane pochodza˛ z SourceForge (http://sourceforge.net/), najwi˛ekszego internetowego serwisu oferujacego ˛ utrzymywanie projektów (ang. hosting – czyli udost˛epnienie strony projektu, przestrzeni na dysku na kod źródłowy i wykonywalny, systemu zgłaszania bł˛edów i poprawek, etc.). Badania zostały przeprowadzone w maju 2002 i wtedy SourceForge zawierał ok. 39 tys. projektów. Oczywiście nie wszystkie programy OSS korzystaja˛ z SourceForge, jednak serwis ten ma znaczna˛ przewag˛e liczebna˛ nad konkurencja˛ – w 2002 drugim pod wzgl˛edem wielkości takim portalem był Savannah i zawierał tylko 790 projektów. Przy czym nawet gdy jakiś projekt fizycznie znajduje si˛e gdzieś indziej, cz˛esto na SourceForge’u także ma swoja˛ stron˛e, zawierajac ˛ a˛ podstawowe dane i odnośnik do właściwej lokalizacji. 21 Dane pokazuja˛ asymetryczny rozkład licencji: 72% projektów jest na licencji GPL, 10% na LGPL, a tylko 7% na BSD. Wynika to pewnie z faktu, że GPL i LGPL sa˛ najbardziej znane wśród programistów i gwarantuja,˛ że praca programistów nie zostanie „skradziona” przez przedsi˛ebiorstwa. Gdy już powstało dużo programów na tych licencjach, kolejne powstawały także 36 z powodów kompatybilności z już istniejacymi ˛ . Najwi˛ecej jest młodych projektów (poniżej 2 lat) – widać wyraźnie że popularność oprogramowania o otwartym źródle najbardziej dynamicznie rosła w ciagu ˛ ostatnich kilku lat. W danych można zaobserwować kilka wyraźnych i statystycznie istotnych zależności: • Projekt w stadium planowania (dopiero rozpoczynany) ma o 12% wi˛eksze przewidywane prawdopodobieństwo że b˛edzie miał restrykcyjna˛ licencj˛e niż projekt dojrzały. Może to oznaczać, że kiedyś GPL nie miała aż takich efektów sieciowych, albo że starsze projekty chca˛ zwi˛ekszyć swoje szanse na przetrwanie.37 • Projekty zorientowane na użytkowników końcowych maja˛ o 23% cz˛eściej restrykcyjne licencje niż projekty zorientowane na programistów.38 • Projekty działajace ˛ na komercyjnych systemach operacyjnych (Ms Windows) rzadziej maja˛ restrykcyjne licencje.39 Może to wynikać z faktu, że Linux i podstawowe narz˛edzia i biblioteki sa˛ na GPL, co tworzy efekty sieciowe. • Projekty atrakcyjne dla konsumentów (np. gry) maja˛ licencje bardziej restrykcyjne.40 Tutaj groźba przej˛ecia przez firm˛e komercyjna˛ wydaje si˛e dominujacym ˛ czynnikiem. Autorzy pracy wyodr˛ebnili z próbki 51 projektów, które były wypuszczone jako oprogramowanie o otwartym źródle przez firmy komercyjne. Okazało si˛e, że licencje restrykcyjne dominuja˛ w tej grupie (chociaż zależność ta nie jest istotna statystycznie). Widocznie ch˛eć pozyskania programistów i ich obawa, czy projekt nie b˛edzie z powrotem „sprywatyzowany” przez firm˛e, były warunkami kluczowymi. 36 Można powiedzieć, że na rynku ustaliła si˛e równowaga z dominujac ˛ a˛ pozycja˛ licencji GPL. Istnienie jednej dominujacej ˛ licencji wynika z efektów sieciowych (network effects) – gdy wszyscy (racjonalnie) wierza˛ że jedna z licencji stanie si˛e dominujaca, ˛ wypuszczaja˛ swoje programy na tej właśnie licencji, żeby zagwarantować sobie korzyści sieciowe – łaczenie ˛ z innymi programami, wykorzystywanie kawałków kodu, łatwe przyciagni˛ ˛ ecie programistów znajacych ˛ licencj˛e, itd. 37 Lerner i Tirole, The Scope of Open Source Licensing s.28. 38 Ibid. 39 Ibid. s.30. 40 Ibid. 22 1.2. Tworzenie oprogramowania o otwartym źródle Oprogramowanie o otwartym źródle powstaje w sposób inny niż oprogramowanie komercyjne. Programiści nie sa˛ zwiazani ˛ kontraktem i nie musza˛ pisać kodu. Nie maja˛ przełożonych w klasycznym rozumieniu tego słowa, którzy koordynowaliby ich prac˛e, przydzielali do konkretnych zadań, pilnowali zachowania jakości pracy i wyznaczonych terminów. Co wi˛ecej, programiści nie dostaja˛ wynagrodzenia pieni˛eżnego za swój udział w projekcie wi˛ec kwestia ich motywacji do podj˛ecia pracy nie jest oczywista. W tym rozdziale chciałbym si˛e zastanowić nad procesem powstawania oprogramowania o otwartym źródle, sposobem koordynacji i kontroli pracy programistów, oraz bodźców kierujacych ˛ ich do podj˛ecia wysiłku rozwoju wolnego oprogramowania. Nast˛epnie przeanalizuj˛e jakość powstałego w ten sposób oprogramowania41 i możliwościa˛ kontroli badź ˛ wpłyni˛ecia na wolne oprogramowanie przez firmy komercyjne. Proces tworzenia wolnego oprogramowania istotnie różni si˛e od tradycyjnej inżynierii oprogramowania używanej w przedsi˛ebiorstwach. Eric Raymond42 w Raymond, The Cathedral and the Bazaar porównuje styl pracy w firmach informatycznych do budowania katedry, a powstawanie oprogramowania o otwartym źródle do wymiany na chaotycznym i hałaśliwym bazarze.43 Żeby zbudować katedr˛e, trzeba na poczatku ˛ przemyśleć i zaprojektować jej wyglad, ˛ a nast˛epnie po kolei wykonywać plan, w „spokoju i izolacji”. Katedra nie może być oddana do użytku (testowania) zanim nie b˛edzie w pełni skończona. Bazar, z drugiej strony, rzadzi ˛ si˛e zupełnie innymi prawami. Tam każdy programista może mieć własna˛ wizj˛e i termin ukończenia swoich kawałków kodu, każdy może w dowolnym momencie przyjść na bazar, popracować nad projektem, a nast˛epnie go opuścić. Nowe wersje oprogramowania sklecone z kawałków nadesłanych przez programistów wypuszczane sa˛ bardzo cz˛esto (nawet codziennie) i bardzo szybko (gdy oprogramowanie osiagnie ˛ jakakolwiek ˛ użyteczność, w przeciwieństwie do doskonałości katedry). W taki właśnie bazarowy sposób powstał mi˛edzy innymi Linux, coraz bardziej popularny system operacyjny o otwartym kodzie. Postaram si˛e wyjaśnić, jak z tego (pozornego) chaosu może powstać oprogramowanie o tak dużej złożoności jak nowoczesny system operacyjny, i o takiej jakości, że ludzie i firmy decyduja˛ si˛e go używać. 41 Jakość rozumiem jako (1) liczba bł˛edów wykrywanych w programach i czas ich poprawienia (2) dopasowanie możliwości programu do potrzeb użytkowników - przeanalizuj˛e jakie grupy użytkowników sa˛ odbiorcami oprogramowania o otwartym źródle 42 Lider projektu „Fetchmail”, publicysta ruchu oprogramowania o otwartym źródle, prezes Open Source Initiative. 43 ibid. s. 2-3. 23 Autorzy (szczególnie Eric Raymond w Raymond, The Cathedral and the Bazaar) podkreślaja˛ konieczność samodzielnego napisania przez programist˛e poczatkowej ˛ wersji programu. Raymond pisze: „Każdy dobry program ma swój poczatek ˛ w połechtaniu osobistych ambicji programisty”44 .Podkreśla, że w bazarowym stylu można rozwijać tylko już istniejacy ˛ program, który musi rzeczywiście działać i wykonywać jakaś ˛ sensowna˛ prac˛e, chociaż może zawierać jeszcze bł˛edy, niedociagni˛ ˛ ecia i braki pewnych (oczywistych) funkcjonalności. Żeby namówić potencjalnych twórców do stworzenia bazaru, musza˛ oni widzieć, że oprogramowanie (1) działa (2) może być rozwini˛ete do czegoś naprawd˛e wartościowego.45 O programach nie rozwijanych jeszcze w stylu bazarowym b˛ed˛e mówił, że sa˛ w fazie wst˛epnej. Lerner i Tirole podkreślaja,˛ że poza warunkami, że projekt ma być działajacy ˛ i „do zrobienia”, pierwotny twórca musi zostawić także jakieś ciekawe i nietrywialne problemy do rozwiaza˛ nia potencjalnym programistom. Linus Torvalds, gdy napisał pierwsza˛ wersj˛e Linuksa, stworzył specjalna˛ stron˛e internetowa,˛ gdzie zach˛ecał innych programistów do dalszego rozwoju tego programu. W swoich pierwszych publikacjach, majacych ˛ wzbudzić zainteresowanie Linuksem, podkreślał ilość kreatywnego programowania, jaka jest jeszcze potrzebna by program uzyskał pełna˛ funkcjonalność.46 Dopiero po utworzeniu produktu przyciagaj ˛ acego ˛ innych programistów projekt wchodzi w faz˛e dojrzała,˛ rozwijajac ˛ a˛ si˛e już w stylu bazarowym. Co wi˛ecej, wypuszczenie ewidentnie działajacego ˛ i funkcjonalnego oprogramowania niekoniecznie musi zapoczatko˛ wać jego rozwój w stylu bazarowym. Przykład przegladarki ˛ Netscape Navigator47 pokazuje, że programiści nie podejma˛ si˛e pracy nad programem źle zaprojektowanym, z niechlujnym kodem czy źle zdefiniowanymi celami.48 Zauważmy, że przez cała˛ faz˛e wst˛epna˛ programista (grupa programistów) pracuje sam, czyli posiada pełna prawa autorskie do swojego dzieła. Czemu decyduja˛ si˛e oni do wypuszczenia 44 Oryginalnie: „Every good work of software starts by scratching a developer’s personal itch.” Raymond, The Cathedral and the Bazaar s.18. 46 Lerner i Tirole, The Simple Economics of Open Source s. 26, 29-30. 47 W 1998 firma Netscape wypuściła kod swojej przegladarki ˛ internetowej na licencji oprogramowania o otwar45 tym źródle. Program ten przegrywał wtedy z konkurencyjnym produktem Microsoft Internet Explorer. Ponieważ jednak na poczatku ˛ Navigator (1) nie do końca był funkcjonalny, gdyż Netscape nie mógł opublikować cz˛eści kodu – do którego nie miał wszystkich praw (2) kod był charakterystyczny dla firm, składał si˛e z wielkich fragmentów współzależnych ze soba,˛ praktycznie niemożliwe było poprawienie małej cz˛eści. Dopiero po dopisaniu brakujacych ˛ fragmentów i podzieleniu kodu na mniejsze, funkcjonalne kawałki (wysoka modularność programów jest bardzo charakterystyczna dla oprogramowania o otwartym źródle) projekt zaczał ˛ dynamicznie zyskiwać twórców i użytkowników. Dziś nazywa sie Mozilla, http://www.mozilla.org. 48 Raymond, The Cathedral and the Bazaar s. 29. 24 oprogramowania jako oprogramowanie o otwartym źródle, zamiast je sprzedać i czerpać z tego zyski? Przedyskutujemy ten problem w dalszej cz˛eści pracy. Po analizie licencji wydawałoby si˛e, że projekty OSS charakteryzuja˛ si˛e „równouprawnieniem” wszystkich twórców i użytkowników, duża˛ liczba˛ rozwidleń (gdyż każdy, gdy nie zgadza si˛e z pozostałymi, ma prawo stworzyć własna˛ wersj˛e, ew. zobligowany jest do zmiany nazwy czy wypuszczenia swojej wersji na tych samych warunkach co oryginał – w zależności od licencji) i ogólnym chaosem. Okazuje si˛e jednak, że w społeczności hakerów (twórców wolnego oprogramowania) istnieja˛ bardzo silne, niepisane normy. W szczególności każdy projekt posiada Lidera, który jest nieformalnym, ale w rzeczywistości bardzo poważanym, przywódca˛ projektu. Eric Raymond wprowadza nawet termin „własności projektów OSS”49 . Pokazuje analogi˛e do anglo-amerykańskiego prawa własności ziemi w przypadku słabej władzy centralnej (Johna Locke’a). Ziemi˛e można było nabyć na 3 sposoby: zagospodarować leżacy ˛ odłogiem teren (na granicy cywilizacji), poprzez transfer tego prawa od poprzedniego właściciela badź ˛ przez zaj˛ecie i zagospodarowanie porzuconego obszaru. Podobnie jest z projektami programistycznymi – zawsze można znaleźć osob˛e (lub grup˛e osób), która zajmuje si˛e projektem, ma uprawnienia do modyfikacji strony i oficjalnego kodu źródłowego, etc. Taka osoba jest „właścicielem projektu” i najcz˛eściej jego liderem. Rozwidlanie projektu uznawane jest przez społeczność za niemoralne, sprzeczne z zasadami norm kulturowych, gdyż jest to swoista kradzież praw własności do projektu. Ma to także uzasadnienie racjonalne – po rozwidleniu grupa programistów zwiazana ˛ z tym oprogramowaniem dzieli si˛e na dwa obozy. Przez to nast˛epuje spadek tempa rozwoju każdej z tych wersji, a co za tym idzie spadek użyteczności społeczności z nowych funkcjonalności. Praktyka wskazuje, że w długim okresie szans˛e na „przeżycie” ma tylko jeden projekt. Obowiazkiem ˛ właściciela/lidera jest dbanie o uwzgl˛ednienie opinii, poprawek, pomysłów, etc. wszystkich zainteresowanych. Gdy nie wywiazuje ˛ si˛e on z tego, projekt uznaje si˛e za porzucony i możliwe jest przej˛ecie jego praw własności przez innego programist˛e. Społeczność hakerów mocno preferuje jednak transfer praw od poprzedniego właściciela, który zdajac ˛ sobie spraw˛e, że sam nie ma już czasu/ch˛eci to zajmowania si˛e projektem, ogłasza, że przekazuje swoje funkcje konkretnemu nast˛epcy. Zupełnie opuszczone projekty zdarzaja˛ si˛e stosunkowo rzadko. Zanim całkowicie si˛e przejmie prawa własności takiego projektu, wypada ogłaszać taki zamiar na listach dyskusyjnych zwiazanych ˛ z projektem i czekać na ew. sprzeciw.50 49 50 Raymond, Homeseading the Noosphere. Ibid. s. 6-11. 25 Istnienie centralnej grupy51 dla każdego projektu, która najwi˛ecej si˛e tym projektem zajmuje, potwierdzaja˛ także badania empiryczne. Lerner i Tirole cytuja˛ wyniki badań Ghosh’a i Prakash’a. Zbadali oni 25 milionów linii kodu oprogramowania o otwartym źródle (3149 różnych projektów). Ponad 13 tysi˛ecy programistów rozwijało to oprogramowanie. Ciekawe, że ponad trzy czwarte z nich dokonało tylko jednej kontrybucji. Tylko jedna osoba na 25 ma wi˛ecej niż 5, górny decyl programistów napisał 72% kodu. Dane te byłyby jeszcze bardziej asymetryczne, gdyby w badaniu wzi˛eto pod uwag˛e także samo zgłoszenie bł˛edu, a nie tylko poprawki i dopisywanie nowych funkcjonalności. Szacuje si˛e, że na jedna˛ poprawk˛e/nowy kawałek przypada ok. pi˛eciu raportów bł˛edów. Główna grupa programistów jest najlepiej widoczna w przypadku projektu Apache’a - tam 15 programistów dokonuje 83-91% zmian.52 Najcz˛eściej liderem/członkami grupy centralnej zostaja˛ pierwotni założyciele projektu (ci, którzy go rozwijali w fazie wst˛epnej) i programiści, którzy pokazali swoje umiej˛etności dopisujac ˛ błyskotliwe kawałki kodu. Zjawisko to jest dla nas bardzo istotne, gdyż istniejace ˛ normy kulturowe maja˛ duży wpływ na sam proces powstawania oprogramowania o otwartym źródle. Tylko lider (grupa centralna) maja˛ prawo zapisywać do oficjalnego repozytorium programu – czyli zmieniać oficjalny kod źródłowy. Oni sa˛ odpowiedzialni za dodawanie przysłanych poprawek do oficjalnego kodu, jeżeli uznaja,˛ że sa˛ dobre. Maja˛ wi˛ec bezpośredni wpływ na rozwój projektu. Ponieważ programistów (potencjalnych) jest bardzo wielu i pracuja˛ oni nad projektem w sposób niekontrolowany, nie jest możliwa pełna koordynacja ich działań – zdarza si˛e że powstana˛ dwie takie same poprawki na raz, lub że dwie poprawki wzajemnie si˛e wykluczaja˛ i nie moga˛ być jednocześnie dołaczone ˛ do programu. Za rozwiazywanie ˛ takich problemów odpowiedzialny jest lider projektu. Żeby zminimalizować to zjawisko, kolejne wersje oprogramowania o otwartym źródle sa˛ wypuszczane bardzo cz˛esto (nawet kilka razy dziennie – a programy komercyjne wychodza˛ co rok-dwa), przez co potencjalni programiści moga˛ si˛e zorientować, że interesujacy ˛ ich fragment kodu źródłowego uległ modyfikacjom. Dzi˛eki takiej organizacji tracimy produktywność na pokrywajacej ˛ si˛e pracy i niekompatybilnościach poprawek. Nie trzeba jednak utrzymywać pełnej koordynacji pomi˛edzy wszystkimi programistami, a tylko pomi˛edzy każdym programista˛ a liderem. 51 52 ang. core developers Lerner i Tirole, The Simple Economics of Open Source s. 11-12. 26 1.2.1. Motywacja programistów W tym rozdziale chciałbym si˛e zastanowić, dlaczego użytkownicy wolnego oprogramowania/programiści decyduja˛ si˛e je rozwijać i dzielić z innymi owoce swojej pracy. Fakt, że zgłaszaja˛ znalezione bł˛edy można łatwo wytłumaczyć ekonomicznie – licza˛ na to, że ktoś te bł˛edy poprawi, przez co zwi˛ekszy si˛e użyteczność jaka˛ maja˛ z korzystania z oprogramowania. Czemu jednak wysyłaja˛ i publikuja˛ poprawki, nowe funkcjonalności, etc.? Autorzy analizujacy ˛ ruch oprogramowania o otwartym źródle zwracaja˛ uwag˛e na kilka różnych przyczyn. Zauważmy, że ludzie zajmujacy ˛ si˛e oprogramowaniem o otwartym źródle ponosza˛ koszt: zarówno koszt utraconych możliwości zużytego czasu na kodowanie, koszt zużycia komputera, pradu, ˛ połaczeń ˛ komunikacyjnych, etc. Ponadto, programista rozwijajac ˛ oprogramowania o otwartym źródle nie skupia si˛e w tym czasie nad głównym życiowym celem – kariera˛ zawodowa˛ czy akademicka.˛ Sa˛ to tzw. koszty przyszłe, wynikajace ˛ z opóźnienia realizacji swoich celów.53 Podstawowa˛ przyczyna˛ jest rozwój oprogramowania dla własnej korzyści. Jak już zauważyliśmy wcześniej, prawie wszystkie projekty powstaja˛ jako zaspokojenie pewnych potrzeb autorów. Lerner i Tirole podaja˛54 cztery analizy przypadków bardzo udanych projektów: Apache, Sendmail, Linux i Perl. Bodźcem we wszystkich przypadkach była jakaś osobista potrzeba. Apache jest serwerem WWW.55 W 1994 roku najpopularniejszym produktem tego typu był program National Center for Supercomputer Applications (NCSA). Kod źródłowy był rozpowszechniany za darmo. W NCSA istniała pewna grupa korespondujaca ˛ z użytkownikami, uwzgl˛edniajac ˛ poprawki i sugestie dotyczace ˛ oprogramowania. W pewnym momencie użytkownicy zacz˛eli napotykać trudności w kontaktach z firma.˛ (Wtedy grupa programistów NCSA zajmujaca ˛ si˛e tym oprogramowaniem odłaczyła ˛ sie i założyła firm˛e Netscape.) Siedmiu administratorów sieciowych (w tym Brian Behlendorf) postanowiło wziać ˛ spraw˛e w swoje r˛ece, gdyż do swojej pracy potrzebowali wysokiej jakości oprogramowania, zaspokajajace ˛ coraz bardziej rozbudowane potrzeby klientów administrowanych przez siebie serwisów internetowych. Założyli pionierska˛ list˛e dyskusyjna˛56 na której duża liczba użytkowników może sugerować zmiany/poprawki, ale tylko niewielka, zaufana grupa głównych programistów, może te zmiany 53 Ibid. s. 20. Ibid. s. 12-19. 55 Serwer WWW to oprogramowanie umożliwiajace ˛ publikowanie stron WWW, czyli umożliwienie innym użyt54 kownikom sieci (Internetu) na ich czytanie. 56 ang. mailing list. 27 fizycznie umieszczać w kodzie. Grupa ta zebrała wszystkie istniejace ˛ łatki i wypuściła w 95 roku Apache wersja 0.8. Głównym bodźcem do rozpocz˛ecia tego projektu był wi˛ec brak alternatyw. Każdy z programistów zdawał sobie spraw˛e, że łatwiej uzyskać wysoka˛ jakość współpracujac ˛ z innymi administratorami niż rozwijajac ˛ program samemu. Linux jest najbardziej rozpowszechnionym systemem operacyjnym o otwartym źródle. Pierwsza wersja została stworzona przez Linusa Torvalds’a w 1991 roku jako praca dyplomowa (oparty był na wcześniejszym darmowym systemie Minix). Wynikał raczej z ciekawości naukowej niż bezpośredniej potrzeby. Linus opublikował swój projekt w Internecie zach˛ecajac ˛ innych użytkowników do współpracy, po czym zyskał on rzesze użytkowników. Perl (Practical Extraction and Reporting Language) został stworzony przez Larry’ego Wall’a w 1987 roku. Wall pracujac ˛ dla firmy Burroughs musiał wykonywać wiele rutynowych zadań administracyjnych na komputerze. Zdał sobie spraw˛e, że działania te nadawały si˛e do zautomatyzowania – stworzył swój j˛ezyk skryptowy dedykowany specjalnie do tego celu, b˛edacy ˛ czymś pomi˛edzy j˛ezykiem C (j˛ezyk dedykowany do pisania oprogramowania) i j˛ezykiem skryptów Bash (przeznaczonym do automatyzacji prostych operacji dyskowych). Perl pozwalał dużo szybciej pisać programy wykonujace ˛ zadania administracyjne, a jednocześnie miał dużo wi˛eksze możliwości niż skrypty shell’owe w rodzaju Bash’a. Dziś jest to jeden z najcz˛eściej stosowanych j˛ezyków tego typu, mi˛edzy innymi w Apache’u. Projekt powstał żeby zaspokoić potrzeby autora. Sendmail został pierwotnie stworzony przez Eric’a Allman’a, studenta informatyki w Berkeley, w drugiej połowie lat 70-tych. Wtedy na tym uniwersytecie istniały dwie niezależne sieci komputerowe – BerkNet oparta na komputerach uniksowych wewn˛etrzna sieć uniwersytecka, oraz ArpaNet – przodek dzisiejszego Internetu. BerkNet opierała si˛e na protokole UUCP (Unixto-Unix Copy Protocol), zaś Arpanet na niekompatybilnym TCP/IP. Każdy student/pracownik miał oddzielne konta pocztowe na każdej z tych podsieci i nie było możliwości przesyłania pomi˛edzy nimi wiadomości. Oprogramowanie Allman’a rozwiazywało ˛ problemy adresowania w różnych sieciach(na poczatku ˛ program nazywał si˛e DeliverMail). Sendmail stał si˛e głównym programem do przesyłania e-maili w Arpanecie. Cz˛esto także już w fazie dojrzałej projektu główna˛ przyczyna˛ wkładu programistów jest korzyść własna. Programiści z głównej grupy czasem nie kwapia˛ si˛e do poprawienia zgłoszonego bł˛edu czy napisania zasugerowanej funkcjonalności. Szeregowy programista, nie doczekawszy si˛e łatki, może dojść do wniosku, że jego użyteczność z poprawki programu b˛edzie wi˛eksza niż wysiłek potrzebny na jej dokonanie i samemu poprawić program. Czasem programiście (czy całej firmie) bardziej opłaca si˛e dostosować wolne oprogramowanie do swoich potrzeb niż ku28 pić program komercyjny, szczególnie gdy takie gotowe rozwiazanie ˛ nie istnieje. Zauważmy, że możliwość samodzielnego poprawiania czy dopasowywania programu jest cecha˛ charakterystyczna˛ tylko dla oprogramowania o otwartym źródle. Używajac ˛ programu komercyjnego nie mamy dost˛epu do kodu źródłowego, czyli możliwości sensownej modyfikacji produktu. Nie bez znaczenia jest także fakt, że programiści, w przeciwieństwie do pracy w firmie komercyjnej, sami moga˛ wybrać sobie kawałek kodu, który chca˛ rozwijać. Dzi˛eki temu moga˛ osiagać ˛ przyjemność z pracy nad wolnym oprogramowaniem (jak Linus Torvalds). Ponieważ kod wolnego oprogramowania jest ogólnie dost˛epny, zaawansowani użytkownicy cz˛esto dyskutuja˛ konkretne rozwiazania, ˛ ew. je zmieniajac. ˛ Programista rozwijajac ˛ ciekawa˛ dla siebie cz˛eść programu i analizujac ˛ przy okazji kod innego programisty, może si˛e wiele nauczyć. Istotna˛ zaleta˛ jest także fakt, że po napisaniu kawałka kodu oprogramowania o otwartym źródle, informatyk może liczyć na twórcze i fachowe komentarze innych programistów (ang. peer review), co dodatkowo sprawia, że może wyeliminować swoje bł˛edy lub poznać jakieś inne spojrzenie na problem. Jest to także sposób na pokazanie światu (kolegom, innym programistom, firmom komercyjnym) swój kunszt i umiej˛etności. Taka możliwość nie istnieje w przypadku oprogramowania rozwijanego w przedsi˛ebiorstwach, które w programie umieszczaja˛ tylko informacje o firmie, w której powstało oprogramowanie, a nie o poszczególnych programistach. Nawet gdyby było wiadomo, kto pisał konkretny kawałek, nie można docenić do końca programisty bez zobaczenia jego kodu źródłowego. Z kolei informacja o programistach rozwijajacych ˛ oprogramowanie jest integralna˛ cecha˛ oprogramowania o otwartym źródle – każdy fragment kodu źródłowego jest podpisany imieniem i nazwiskiem oraz jest podany adres poczty elektronicznej, gdyby ktoś chciał zgłosić uwag˛e czy zadać pytanie. Usuni˛ecie programisty z listy autorów wolnego programu jest jednym z najgorszych przest˛epstw kulturowych w społeczności hakerów.57 Opierajac ˛ si˛e na ekonomii informacji, firmy komputerowe nie b˛eda˛ nigdy płaciły programistom zgodnie z ich produktywnościa.˛ Po pierwsze może nie być możliwe rozróżnienie dobrego informatyka od złego (np. przy podpisywaniu kontraktu) – w takim przypadku firmy b˛eda˛ płaciły wszystkim średnia˛ stawk˛e, na czym dobrze wyjda˛ kiepscy specjaliści (b˛eda˛ otrzymywać wynagrodzenie wyższe od swojej produktywności) kosztem tych lepszych. Co wi˛ecej, jeżeli nawet pracodawca jest w stanie rozróżnić pracowników, ale inni przedsi˛ebiorcy nie sa,˛ i tak b˛edzie on przyznawał najlepszym jednostkom przeci˛etne wynagrodzenie. Gdyby wyróżnił tych pracowników, dałby sygnał konkurentom, że dany pracownik ma ponadnormalna˛ produktywność. Konkurencja miałaby bodziec by danego pracownika podkupić i przedsi˛ebiorca straciłby swoja˛ 57 Raymond, The Cathedral and the Bazaar. 29 rent˛e.58 W zwiazku ˛ z tym dobrzy programiści maja˛ motywacj˛e, by w jakiś sposób zasygnalizować na rynku pracy, że ich umiej˛etności przewyższaja˛ średnia.˛ Właśnie temu może służyć aktywny udział w przedsi˛ewzi˛eciach tworzenia oprogramowania o otwartym źródle – tam kod przez nich stworzony jest podpisany i powszechnie widoczny. Istnieja˛ wi˛ec przyszłe korzyści z rozwijania wolnego oprogramowania – satysfakcja z szacunku innych programistów i użytkowników59 oraz zainteresowanie kariera˛60 . Sa˛ to dwa rozróżnialne bodźce, chociaż z ekonomicznego punktu widzenia jest to jeden bodziec – ch˛eć sygnalizacji otoczeniu swojego mistrzostwa61 .62 Rozumowanie to można poprzeć modelem ekonomicznym zaproponowanym przez Samuela Lee, Nin˛e Moisa i Marco Weiss’a63 . Autorzy przedstawiaja˛ model rynku pracy programistów. Zakładaja,˛ że istnieja˛ dwa rodzaje programistów – słabi i fachowcy. Pokazuja,˛ że możliwa jest równowaga, w której firma i oprogramowanie o otwartym źródle współistnieja.˛ Jeżeli sa˛ programiści dobrzy, którzy maja˛ motywacj˛e do zasygnalizowania swoich umiej˛etności by otrzymywać wyższe przyszłe dochody niż bieżace ˛ w firmie, prawdopodobieństwo powstania projektu OSS jest dodatnie (projekt musi być wystarczajaco ˛ duży, by zapewnić wiarygodność sygnału). Analiz˛e empiryczna˛ znajdujemy w publikacji Hann’a et al.64 Autorzy analizuja˛ trzy główne produkty rozwijane przez Apache Group: Apache, Jakarta i Mod_Perl. Projekty te zostały wybrane, ponieważ kwestie widoczności wkładu programisty w projekt sa˛ tam wyjatkowo ˛ mierzalne. Istnieje pi˛eć stopni wtajemniczenia: developer, committer, ASF member, project management committee member, ASF board member. Developer’em zostaje si˛e po przesłaniu pierwszej poprawki, a na wyższe poziomy przechodzi si˛e na zasadzie ścisłej merytokracji – gdy ktoś cz˛esto przysyła wartościowe łatki, dopracowane technicznie i wnoszace ˛ coś nowego, przechodzi na wyższy poziom.65 Autorzy przeprowadzaja˛ analiz˛e wpływu reputacji, liczby zgłoszonych poprawek, wykształcenia, doświadczenia zawodowego, etc. na wysokość pensji programisty 58 Stiglitz, Information and the change in the paradigm in economics. ang. ego gratification incentive 60 ang. career concern incentive 61 ang. signaling incentive 62 Lerner i Tirole, The Simple Economics of Open Source s. 21. 63 Lee, Moisa i Weiss, Open Source as a Signalling Device – An Economic Analysis. 64 Hann et al., Delayed Returns to Open Source Participation: An Empirical Analysis of the Apache HTTP Server 59 Project 65 Eric Raymond zauważa w Raymond, Homeseading the Noosphere, że jest to cecha charakterystyczna dla całego ruchu OSS, a nie tylko projektu Apache. Tutaj jest to jednak bardziej widoczne dzi˛eki jasno zdefiniowanym stopniom uczestników. 30 w kolejnym roku. Wyniki sa˛ bardzo ciekawe – liczba wysłanych patch’y jest nieznaczaca ˛ statystycznie dla wysokości pensji, za to fakt posiadania stopnia conajmniej Committer (zmienna binarna) wpływa istotnie i pozytywnie na zmienna˛ endogeniczna˛ – programiści z wysokimi stopniami zarabiaja˛ statystycznie 29% wi˛ecej (Caeteris Paribus). Co ciekawe, w próbce nikt o randze Committer lub wyższej nie miał doktoratu. Wśród programistów o randze powyżej Committer nie znalazł si˛e żaden magister – wi˛ekszość z czołowych programistów, nie dysponuje tradycyjnymi sygnałami – dyplomami uniwersyteckimi. Wyniki te potwierdzaja˛ nasza˛ tez˛e – sygnał (wysoka ranga) powoduje wyższe przychody dla programisty. Warto zastanowić si˛e jeszcze, dlaczego programiści po napisaniu jakiejś poprawki decyduja˛ si˛e ja˛ opublikować. Oczywiście sygnalizowanie swoich umiej˛etności otoczeniu nast˛epuje dopiero po opublikowaniu swojego kodu, a nie tylko jego stworzeniu, tak wi˛ec powyższa analiza ch˛eci sygnalizacji dotyczy także udost˛epnienie innym użytkownikom swojego kodu. Dlaczego jednak użytkownicy, którzy stworzyli poprawk˛e „na własny użytek”, czyli czerpia˛ cała˛ użyteczność z samego faktu dokonania poprawki, mieliby ja˛ rozpowszechniać, a nie np. sprzedać czy zachować w tajemnicy? Sama sprzedaż poprawki może być niemożliwa – ze wzgl˛edu na żywotność licencji (jeżeli jest rozpowszechniana, to tylko jako wolne oprogramowanie) czy faktu, że firma, która zatrudnia programist˛e (zakładajac, ˛ że poprawka powstała w czasie jego pracy) może mieć obiekcje co do sprzedaży przez niego kodu powstałego w ramach obowiazków ˛ służbowych.66 Co wi˛ecej wkłady poszczególnych programistów sa˛ na tyle małe, że koszt wyceny poprawki przewyższyłby prawdopodobnie jej wartość.67 Z drugiej strony, trzymanie poprawek dla siebie jest cz˛esto mniej użyteczna˛ opcja˛ dla agenta. Skoro zajał ˛ si˛e on poprawianiem oprogramowania na użytek własny, możemy sadzić ˛ że jest on zainteresowany używaniem go i ściaganiem ˛ nowych oficjalnych wersji majacych ˛ wi˛eksza˛ funkcjonalność. Jeżeli koszt wynikajacy ˛ z tego, że jacyś jego konkurencji b˛eda˛ mogli wykorzystać jego poprawk˛e (zwykle mały) jest mniejszy niż koszt poprawiania każdej kolejnej nowej wersji programu (a nowe wersje wolnego oprogramowania pojawiaja˛ si˛e cz˛esto) to b˛edzie mu si˛e opłacało opublikować poprawk˛e, by została ona dołaczona ˛ do oficjalnego źródła.68 W przypadku zachowania kodu dla siebie, istnieje niebezpieczeństwo, że jakiś inny agent dopisze ta˛ sama˛ funkcjonalność w sposób niekompatybilny – co jeszcze zwi˛ekszy koszty zachowania kodu dla siebie. 66 Lerner i Tirole, The Simple Economics of Open Source s. 22. Raymond, The Magic Cauldron s. 9. 68 Ibid. s. 10. 67 31 1.2.2. Motywacja firm Naturalna˛ rzecza˛ jest, że ruchem wolnego oprogramowania interesuja˛ si˛e także przedsi˛ebiorstwa. Moga˛ one starać si˛e na nim zarobić na dwa sposoby. Po pierwsze oprogramowanie o otwartym źródle wypracowało zupełnie nowy proces tworzenia oprogramowania (analiza nastapi ˛ w dalszej cz˛eści pracy) i firmy komercyjne próbuja˛ go kopiować by poprawić jakość czy zmniejszyć koszt wytwarzanych przez siebie produktów. Nie moga˛ jednak w pełni zaimplementować pewnych mechanizmów jak darmowe szkolenie programistów na uczelniach i produkowanie przez użytkowników wartościowych poprawek, gdyż to oznaczałoby konieczność otwarcia kodu źródłowego. Cz˛esto nie opłaca im si˛e informować publicznie o dokonaniach poszczególnych programistów, gdyż istnieje zagrożenie, że ci najlepsi zostaliby podkupieni przez konkurencj˛e. Próbuja˛ za to implementować współdzielenie kodu w obr˛ebie przedsi˛ebiorstwa i w miar˛e możliwości pozostawiać pracownikom wybór zadań, którymi maja˛ si˛e zajmować.69 Z drugiej strony obserwujemy rosnace ˛ zainteresowanie firm produktami komplementarnymi do wolnego oprogramowania. Powstaja˛ nowe, wyspecjalizowane firmy jak RedHat, zajmujace ˛ si˛e tworzeniem dystrybucji Linuksa.70 RedHat oferuje także kompleksowe usługi serwisowe, infolini˛e (24 godziny na dob˛e), swój produkt sprzedaje nagrany na kompakty z dołaczon ˛ a˛ drukowana˛ instrukcja.˛ Dodatkowo zajmuje si˛e konsultingiem i przygotowaniem indywidualnych rozwiazań ˛ software’owych dla firm. Sa˛ to wszystko usługi charakterystyczne dla (komercyjnego) rynku oprogramowania, a zupełnie nie oferowane przez społeczności programistów. Niektóre podmioty, jak firmy komputerowe, uzależniaja˛ swoja˛ decyzj˛e instalacji (kupna) systemu od takich usług. Widać wi˛ec wyraźna˛ nisz˛e – RedHat jest w stanie oferować pełne rozwiaza˛ nia informatyczne taniej niż konkurencja, gdyż nie ponosi kosztów tworzenia oprogramowania. Nasza˛ analiz˛e potwierdza pozycja tej firmy na giełdzie NASDAQ. Podobnym przykładem jest firma Collab.Net, przygotowujaca ˛ kompleksowe systemy dla przedsi˛ebiorstw oparte na wolnym oprogramowaniu, certyfikujaca ˛ to oprogramowanie i gwarantujaca ˛ jego niezawodność, oferujaca ˛ kompleksowa˛ pomoc techniczna,˛ etc. Taka certyfikacja 69 70 Lerner i Tirole, The Simple Economics of Open Source s. 33-34. Dystrybucja to zbiór dużej liczby darmowego oprogramowania o otwartym źródle, specjalnie przygotowany do łatwej instalacji, który spełnia wi˛ekszość potrzeb użytkownika bez potrzeby samodzielnego wyszukiwania projektów. Nazwa „Linux” jest w tym przypadku bł˛edna – oznacza ona tylko jadro ˛ tego systemu operacyjnego, czyli szkielet pozwalajacy ˛ wykonywać si˛e innym programom, bez oprogramowania pomocniczego absolutnie bezużyteczny. System Operacyjny jako całość powinno si˛e nazywać GNU/Linux, gdyż GNU stworzyła wi˛ekszość wspomnianych programów narz˛edziowych. 32 niezawodności oprogramowania jest bardzo ważna dla niektórych podmiotów gospodarczych, a nieformalna grupa programistów oprogramowania o otwartym źródle nie może jej oczywiście zapewnić.71 Kolejna˛ możliwościa˛ jest sprzedaż sprz˛etu zoptymalizowanego do użycia z systemem operacyjnym GNU/Linux – tym zajmowała si˛e firma VA Linux. Dziś oprogramowanie o otwartym źródle jest na tyle popularne, że wszystkie wi˛eksze firmy produkujace ˛ sprz˛et jak HP, Compaq, IBM oferuja˛ komputery z zainstalowanym GNU/Linux, w zwiazku ˛ z czym VA Linux si˛e przekwalifikowała – prowadzi najwi˛ekszy portal internetowy wolego oprogramowania SourgeForge.net, oferujacy ˛ projektom wolnego oprogramowania (za darmo) miejsce na serwerze i różne usługo sieciowe jak np. system rejestracji bł˛edów, CVS72 , list dyskusyjnych, stron WWW, etc. Pieniadze ˛ zarabia oferujac ˛ podobne usługi firmom. Cz˛esto podkreślanym zjawiskiem jest fakt, że programiści nie lubia˛ pisać dokumentacji do projektów, szczególnie skierowanej do poczatkuj ˛ acych ˛ użytkowników. Fakt ten wykorzystało wydawnictwo O’Reilly & Associates, skupiajac ˛ si˛e na wydawaniu pozycji poświ˛econych wolnemu oprogramowaniu.73 Co ciekawe, zauważalne jest także zainteresowanie oprogramowaniem o otwartym źródle wśród istniejacych ˛ firm na rynku – w tym gigantów o stabilnej pozycji jak IBM czy Novell. Bardzo wiele firm decyduje si˛e na wypuszczenie swoich produktów skompilowanych dla Linuxa – ale cz˛eść z nich decyduje si˛e wypuścić swój produkt na licencji oprogramowania o otwartym źródle, czyli opublikować jego kod źródłowy. Przykładem firmy stawiajacej ˛ na wolne oprogramowanie jako platform˛e jest Oracle – planuje ona przyjać ˛ Linuxa jako podstawowy system operacyjny dla swojej bazy danych. Główna˛ przyczyna˛ jest ch˛eć uniezależnienia swojej strategii biznesowej od firmy Sun Microsystems, producenta unixa Solaris, poprzedniej platformy programowej. Dzi˛eki temu może oferować tańsze systemy kompleksowe, oparte na klastrach PC’tów zamiast drogich serwerów Sun’a i systemie operacyjnym Linux. Wypuszczenie kodu źródłowego na licencji oprogramowania o otwartym źródle może być bardzo ważnym posuni˛eciem strategicznym. Łatwo pokazać, że producenci sprz˛etu komputerowego zyskaja,˛ gdy spadnie cena dobra komplementarnego, jakim jest oprogramowanie, a szczególnie system operacyjny. Dla wi˛ekszości korporacji produkujacych ˛ przemysłowe komputery74 71 72 Ibid. s. 35-36. Concurrent Versioning System – system archiwizowania i tworzenia różnych wersji dokumentów (także kodu źródłowego programów) 73 Raymond, The Magic Cauldron. 74 Czyli „wi˛eksze” od popularnych komputerów osobistych. 33 tworzenie systemu operacyjnego jest tylko niezb˛ednym kosztem, bo zwykle na nim nie zarabiaja.˛ 75 Na przykład firma Sun Microsystems, produkujaca ˛ serwery i stacje robocze, rozdaje za darmo najnowsze wersje swojego oprogramowania każdemu posiadaczowi komputera ich produkcji76 . Hewlett Packard zdecydował si˛e wypuścić jako wolne oprogramowanie swój Spectrum Object Model Linker, by ułatwić przystosowanie Linuxa do architektury RISC’owej komputerów tej firmy. Analogicznie Sun Microsystems pomagał w dostosowaniu Linuxa do swoich procesorów. Dzi˛eki tym zabiegom w przyszłości przedsi˛ebiorstwa te b˛eda˛ mogły rozważyć zupełne odejście od rozwijania własnych systemów operacyjnych, a dziś umożliwiły administratorom zainstalowanie dokładnie tych samych programów na ich serwerach i popularnych oraz tanich PC. Nawet Intel, czyli producent podzespołów do najpopularniejszych na świecie PC’tów, zyska gdy wolne oprogramowanie odbije Microsoftowi cz˛eść rynku. Końcowy użytkownik, gdy b˛edzie potrzebował komputer, nie b˛edzie musiał płacić Microsoftowi za system operacyjny, w zwiazku ˛ z tym sumaryczna cena funkcjonalnego komputera widziana przez użytkownika b˛edzie niższa.77 Co ciekawe, specjalnie opracowana wersja Linuxa (embedded Linux) jest także coraz szerzej stosowana w małych urzadzeniach ˛ elektronicznych jak telefony komórkowe czy podr˛eczne komputerki(ang. PDA – Pesonal Digital Assistant). Przykłady można znaleźć na stronie internetowej http://www.linuxdevices.com/. Motyw tego działania jest analogiczny – taniej jest dostosować istniejacy ˛ system do konkretnego urzadzenia ˛ i zastosowania, zyskujac ˛ dodatkowo kompatybilność z innymi urzadzeniami ˛ (w tym z komputerami) niż tworzyć go od nowa. Użytkownik i tak nie płaci dodatkowo za system operacyjny, kupuje działajace ˛ urzadzenie. ˛ Jedna˛ z głównych zalet procesu powstawania oprogramowania o otwartym źródle dla przedsi˛ebiorstw, poza stosunkowo niska˛ liczba˛ bł˛edów (analiza jakości wolnego oprogramowania b˛edzie w dalszej cz˛eści pracy), jest fakt, że bardzo duża˛ cz˛eść pracy zwiazan ˛ a˛ z produkcja˛ oprogramowania przejmuja˛ użytkownicy, co zmniejsza koszty firmy. Najlepszym przykładem jest firma Apple, która właśnie w celu zmniejszenia kosztów rozwoju oprogramowania udost˛epniła jadro ˛ swojego systemu operacyjnego MacOS X. Z kolei firma Netscape zdecydowała si˛e otworzyć źródła swojej przegladarki ˛ internetowej Netscape Navigator w obliczu konkurencji Internet Explorera Microsoftu. Pod koniec lat 9075 76 Koek, Free Software Licensing. Problemy z piractwem czy free-riding’iem tutaj nie wyst˛epuja,˛ gdyż oprogramowanie to działa wyłacznie ˛ na tych komputerach. 77 Lerner i Tirole, The Simple Economics of Open Source. 34 tych Internet Explorer zaczał ˛ dominować na rynku i wydawało si˛e, że upadek Navigatora jest nieunikniony. Był to jedyny liczacy ˛ si˛e konkurent Microsoftu w segmencie komputerów PC, co mogłoby spowodować przej˛ecie przez Microsoft kontroli nad j˛ezykiem HTML. Jest to tym groźniejsze dla konkurentów tej firmy, że Microsoft zwykł nie publikować cz˛eści kontrolowanych przez siebie protokołów oraz modyfikować standardy tak, by jak najbardziej były niekompatybilne z produktami konkurencji78 . Netscape zaś produkuje serwer WWW (oprogramowanie pozwalajace ˛ udost˛epniać użytkownikom sieci stron WWW – a wi˛ec komplementarne do przegladarek), ˛ który stałby si˛e zupełnie niekompatybilny z istniejacymi ˛ przegladarkami ˛ (czyli Internet Explorerem). Decyzja o wypuszczeniu Navigatora na licencji oprogramowania o otwartym źródle okazała si˛e słuszna – po poczatkowych ˛ problemach wynikajacych ˛ z małej modularności kodu i braku niektórych fragmentów, do których Netscape nie miał praw – projekt spotkał si˛e odzewem społeczności hakerów i rozwija si˛e bardzo dynamicznie.79 Co wi˛ecej, Netscape zostawił sobie „furtk˛e” do wykorzystania kodu stworzonego przez społeczność programistów w swoim programie Navigator – licencja jest żywotna, ale zawiera zapis, że Netscape może wykorzystać kod do celów komercyjnych. Wywoływało to spore kontrowersje, ale licencja została uznana za „wolna” ˛ przez Free Software Foundation i „open source” przez Open Source Initiative.80 Sporo programów jest na tzw. podwójnej licencji (patrz rozdział 1.1) – firmy rozdaja˛ wtedy oprogramowanie ludziom, którzy chca˛ zrobić z niego oprogramowanie o otwartym źródle, zaś licencje musza˛ wykupić firmy chcace ˛ zawrzeć te projekty w swoich komercyjnych systemach o zamkni˛etym źródle. Przykładem jest Aladdin Enterprises, produkujaca ˛ Ghostscript (narz˛edzie do wydruków oparte o standard PostScript), firma Trolltech z Norwegii produkuje wieloplatformowa˛ (UNIX, Windows, MacOS) bibliotek˛e graficzna˛ Qt81 , używana˛ w jednym z bardziej popularnych wolnych środowisk graficznych KDE, czy MySQL ze swoja˛ baza˛ danych. Z podwójnym licencjonowaniem sa˛ jednak zwiazane ˛ pewne problemy prawne, zarysowane w rozdziale o licencjach (1.1). 78 Sa˛ to działania majace ˛ zapewnić firmie pozycj˛e monopolistyczna˛ na rynku. Dodatkowo Microsoft dodaje „gra- tisowo” do swojego systemu operacyjnego Windows programy obsługujace ˛ te protokoły i formaty jak przegladark˛ ˛ e Internet Explorer czy Windows Media Player, przez co staja˛ si˛e one de facto obowiazuj ˛ acymi ˛ standardami (Windows ma ponad 90% udział w rynku systemów operacyjnych komputerów osobistych). Tocza˛ si˛e o to procesy antymonopolistyczne przeciwko firmie zarówno w Stanach Zjednoczonych, jak i ostatnio w Europie, ale nie sa˛ one w stanie skutecznie powstrzymać monopolisty. 79 Dziś nazywa si˛e Mozilla: http://www.mozilla.org. Szczegóły dotyczace ˛ licencji sa˛ opisane w rozdziale 1.1 80 Koek, Free Software Licensing. 81 http://www.trolltech.no 35 Kolejnym rozwiazaniem ˛ strategicznym jest stworzenie pewnego standardu, wypuszczenie go razem z podstawowym oprogramowaniem jako oprogramowanie o otwartym źródle, zaś zarabianie na bardziej zaawansowanych czy wr˛ecz indywidualnie dostosowanych projektach. Przykładem może być Jabber82 , protokół i zestaw narz˛edzi do komunikacji sieciowej w czasie rzeczywistym. Ze strony projektu można pobrać oprogramowanie na licencji wolnego oprogramowania. Jednym z głównych sponsorów projektu jest Jabber Inc.83 , firma oferujaca ˛ przemysłowe systemy przesyłania wiadomości (ang. instant messaging systems) oparte na otwartej technologii Jabber. Eric Raymond zauważa, że oprogramowanie komercyjne przynosi firmie zyski tylko w poczatkowej ˛ fazie cyklu rozwoju, gdy jest nowatorskie i konsumenci je kupuja.˛ Potem jednak powstaja˛ nowe, lepsze produkty i konsumenci nie maja˛ motywacji do kupowania przestarzałej wersji. Cz˛eść konsumentów jednak, która już wcześniej kupiła program i si˛e do niego przyzwyczaiła, nie chce go zmieniać. Tej grupie trzeba zapewnić piel˛egnacj˛e oprogramowania (ang. maintenance), czyli poprawiać bł˛edy i uaktualniać informacje (np. dodać obsług˛e nowych urza˛ dzeń, uwzgl˛ednić zmiany legislacyjne, etc.). W pewnym momencie staje si˛e to tylko kosztem dla firmy, gdyż tego oprogramowania już nie sprzedaje, ale kosztem koniecznym, gdyż nikt nie kupi nowego oprogramowania od firmy, która nie dba o swoich klientów. W tej ostatniej fazie powstaje naturalna motywacja do wypuszczenia oprogramowania na licencji oprogramowania o otwartym źródle i stworzenia społeczności zajmujacej ˛ si˛e dalej projektem. Tak postapiła ˛ firma IdSoftware z gra˛ Doom. W 1993, gdy gra ta została wypuszczona na rynek, była absolutnie nowatorska, wyprzedzała o ponad rok wszystkich konkurentów, zyskała wielu zwolenników. Z biegiem czasu powstawały jednak nowe rozwiazania ˛ – sama firma IdSoftware zacz˛eła tworzyć nowsza˛ gr˛e tego samego typu: Quake. W 1997 roku podj˛eła decyzj˛e o opublikowaniu kodu źródłowego Doom’a. Firma nic nie straciła, gdyż algorytmy wykorzystane w grze stały si˛e wtedy praktycznie wiedza˛ ogólna.˛ Użytkownicy od razu zacz˛eli poprawiać gr˛e, a firma mogła si˛e skupić na nowej. Dodatkowo taki krok robi reklam˛e firmie i zach˛eca użytkowników, którzy ściagn ˛ a˛ stara˛ gr˛e i im si˛e spodoba, do kupienia nowszego odpowiednika. Warto jednak zauważyć, że społeczność hakerów zwykle zajmuje si˛e tylko jednym programem danego typu, zaś programy staja˛ si˛e przestarzałe stopniowo, a nie natychmiast. Pozostaje wi˛ec problem decyzji kiedy opublikować kod, by nie stracić za dużo swojej renty twórcy, a jednocześnie nie zostać ubiegni˛etym przez konkurencj˛e. Oczywiście firmy moga˛ si˛e stać użytkownikami oprogramowania o otwartym źródle – gdy 82 83 http://www.jabber.org http://www.jabber.com 36 okaże si˛e ono bardziej konkurencyjne niż komercyjne. Moga˛ wtedy analogicznie jak zwykli użytkownicy wprowadzać modyfikacje i dodawać je do ogólnego kodu. Przedsi˛ebiorstwa nie maja˛ motywacji wynikajacych ˛ z ch˛eci sygnalizowania, ale za to sami programiści pracujacy ˛ dla tych przedsi˛ebiorstw maja˛ takie bodźce. Bardzo ważnym argumentem dla przedsi˛ebiorstw jest fakt, że korzystajac ˛ z oprogramowania o otwartym źródle uniezależniaja˛ si˛e od producenta oprogramowania. Ponieważ kod źródłowy jest dost˛epny, każdy może si˛e zajać ˛ dalszym rozwojem systemu. Kupienie rozwiazania ˛ o zamkni˛etym źródle powoduje, że nasza firma musi polegać na jego producencie, co powoduje powstanie kosztów transakcyjnych. Oprogramowanie o zamkni˛etym źródle staje si˛e bardzo specyficznym aktywem, zależnym od konkretnego dostawcy. Cz˛esto, ze wzgl˛edu na zbyt wysokie koszty, nie jest możliwa pionowa integracja (czyli wytworzenie oprogramowania wewnatrz ˛ korporacji) – dostawca usług informatycznych rozkłada koszt stworzenia oprogramowania na wiele transakcji z różnymi podmiotami. Natomiast gdy źródła oprogramowania sa˛ otwarte, nie istnieje ta bariera wejścia dla innych firm informatycznych, koszty transakcyjne sa˛ dużo niższe.84 Powyższy argument jest szczególnie ważny, gdy dane oprogramowanie jest kluczowe dla działalności firmy lub gdy posiada ono duże efekty sieciowe (zewn˛etrzne) – np. ustanawia standard uniwersalnej struktury komunikacyjnej. W obu tych przypadkach ryzyko zwiazane ˛ z nieuczciwa˛ postawa˛ dostawcy usług jest duże – koszty byłyby ogromne. Ciekawym przykładem jest wspominany już wielokrotnie serwer WWW Apache. Wiele firm internetowych, dla których program ten jest kluczowym aktywem w działalności, wyliczyło, że bardziej opłaca im si˛e dostosować Apache’a do swoich konkretnych potrzeb i podzielić si˛e poprawkami cz˛esto z bezpośrednimi konkurentami, niż kupować rozwiazanie ˛ komercyjne czy pisać osobny system tylko na użytek własny. Współpraca (nieformalna) z innymi podmiotami miała na celu rozłożenie kosztów tworzenia programu na wiele firm. 1.2.3. Proces powstawania W tym podrozdziale chciałbym przyjrzeć si˛e bliżej samemu procesowi powstawania wolnego oprogramowania. W poprzednich dwóch podrozdziałach starałem si˛e udowodnić, że zarówno prywatni użytkownicy jak i firmy maja˛ motywacj˛e do korzystania i rozwijania oprogramowania o otwartym źródle. Jak to jest jednak możliwe, że małe poprawki wielu różnych, niezależnych podmiotów da si˛e połaczyć ˛ w jedna˛ działajac ˛ a˛ całość? 84 Raymond, The Magic Cauldron. 37 Zajmiemy si˛e tutaj analiza˛ jedynie projektów w fazie dojrzałej, czyli na tyle rozwini˛etymi, że motywacje programistów zaczynaja˛ „działać”. Wcześniej oprogramowanie musi być rozwini˛ete w domu przez grup˛e hobbystów badź ˛ w firmie (jak Netscape Navigator). Proces powstawania oprogramowania komercyjnego został już dobrze opisany w literaturze (najbardziej obrazowa pozycja to według mnie Brooks, Mityczny osobomiesiac) ˛ i nie b˛ed˛e si˛e tym gł˛ebiej zajmował w tej pracy. Za to wolne oprogramowanie jest nowym fenomenem, nie mieszczacym ˛ si˛e w ramach istniejacej ˛ Inżynierii Oprogramowania i na tym fenomenie skupi˛e si˛e w tym rozdziale. Jeszcze kilkanaście lat temu nikt nie przypuszczał, by oprogramowanie, które nie powstało w dużym przedsi˛ebiorstwie, zgodnie z bardzo sformalizowanymi procedurami (opisanymi miedzy innymi przez Brooksa85 ), osiagn˛ ˛ eło na tyle duża˛ jakość, by ktokolwiek zdecydował si˛e go użyć do celów innych niż zabawa. Dziś serwer WWW Apache używany jest na prawie 70% serwerów internetowych86 , czyli na dużo wi˛ekszej liczbie niż jakiekolwiek rozwiazanie ˛ komercyjne. Z systemu operacyjnego Linux korzysta mi˛edzy innymi najcz˛eściej wykorzystywana na świecie przegladarka ˛ internetowa Google87 , polski portal internetowy Onet88 czy polskie Ministerstwo Gospodarki, Pracy i Polityki Społecznej89 . Jak już wcześniej zarysowałem, aby oprogramowanie po fazie wst˛epnej miało szans˛e zyskać zainteresowanie hakerów, musi spełniać pewne kryteria. Po pierwsze, musi być funkcjonalne, musi si˛e dać je uruchomić i zobaczyć, że coś robi. Po drugie, hakerzy musza˛ być przekonani, że robi ono coś przydatnego. Najlepiej, żeby nie duplikował funkcjonalności jakiegoś już istniejacego ˛ projektu oprogramowanie o otwartym źródle – bo po co rozwijać równolegle dwa takie same projekty. Jak już napisałem, rozwój wolego oprogramowania nast˛epuje w „bazarowym” stylu – ludzie tworza˛ i wymieniaja˛ mi˛edzy soba˛ poprawki, uwagi, łatki, itd. Żeby to było możliwe, musi istnieć możliwość tworzenia bardzo małych kawałków które si˛e wymienia, tak żeby minimalnie si˛e na siebie nakładały. Autorzy podkreślaja,˛ że jedna˛ z kluczowych cech wolnego oprogramowania jest modularność jego budowy – czyli podział hierarchiczny kodu na kawałki majace ˛ precyzyjnie zdefiniowana˛ funkcjonalność. Jest to trudny do uzyskania efekt, ponieważ w dużych projektach informatycznych ten hierarchiczny podział jest zwykle niejednoznaczny i nieewidentny oraz pomi˛edzy poszczególnymi funkcjonalnościami istnieja˛ nietrywialne zwiazki. ˛ W firmach komputerowych powstaja˛ zwykle niemodularne programy – tworzy si˛e od razu cała˛ 85 Brooks, Mityczny osobomiesiac. ˛ Netcraft, Web Server Survey. 87 http://www.google.com 88 http://www.onet.pl 89 www.mpips.gov.pl 86 38 kolumn˛e katedry, a nie pojedyncza˛ cegiełk˛e nadajac ˛ a˛ si˛e do wymiany na bazarze. Różnic˛e t˛e obrazuje przypadek firmy Netscape: pierwsza publikacja kodu jej przegladarki ˛ internetowej Navigator zakończyła si˛e fiaskiem. Główna˛ przyczyna,˛ poza brakiem pewnych fragmentów kodu, był brak modularności – niemożność napisania sensownej poprawki, zmieniajacej ˛ lokalnie kod. Dopiero gdy Netscape dopisał brakujace ˛ fragmenty i podzielił kod na moduły, projekt si˛e rozwinał. ˛ 90 Charakterystyczna˛ cecha˛ bazarowego stylu jest brak formalnych powiazań ˛ mi˛edzy pracujacymi ˛ równolegle programistami. Brooks podkreślał, że jest to główny problem dla rozwoju oprogramowania w firmach – w projektach gdzie wyst˛epuje dużo zależności pomi˛edzy różnymi składnikami systemu (czyli we wszystkich dużych) to właśnie konieczność uzgodnienia protokołu na „styku” fragmentów pisanych przez różnych programistów staje si˛e głównym obciaże˛ niem dla dużych projektów.91 W przypadku wolnego oprogramowania ten problem nie istnieje – programiści komunikuja˛ si˛e ze soba˛ nieformalnie, wymieniaja˛ spostrzeżenia, ale rzadko ustalane sa˛ sztywne normy. Poszczególne łatki zbierane sa˛ w jedna˛ całość przez Lidera projektu. Projekty wolnego oprogramowania utrzymywane sa˛ cały czas w stanie „działajacym” ˛ (chociaż oczywiście zawieraja˛ cz˛esto bł˛edy). Głównym obciażeniem ˛ dla oprogramowania o otwartym źródle jest z jednej strony free-riding (zaraz wrócimy) a z drugiej dublujaca ˛ si˛e i niekompatybilna ze soba˛ praca. Żeby zmniejszyć negatywny efekt drugiego zjawiska, liderzy projektów prowadza˛ polityk˛e „wypuszczaj szybko (prawie bez testów) i cz˛esto (nawet kilka razy dziennie)”. Dzi˛eki temu programiści moga˛ si˛e od razu zorientować, że ich praca została już wykonana, albo że łatka która˛ pisza˛ jest niekompatybilna z nowa˛ wersja˛ programu. W trosce o niezawodność oprogramowania Linus Torvalds wprowadził dwa rodzaje wydań: stabilne, zawierajace ˛ sprawdzone rozwiaza˛ nia, i testowe, zawierajace ˛ najnowsze pomysły, które przechodza˛ potem do wersji stabilnej.92 Osoby potrzebujace ˛ oprogramowanie godne zaufania(np. na serwer) wybieraja˛ wersj˛e stabilna,˛ zaś chcacy ˛ wykorzystać najnowsze nowinki techniczne wersje testowa.˛ 93 Te różnice pomi˛edzy oprogramowaniem wolnym a komercyjnym postaram si˛e uchwycić analitycznie w rozdziale (2). Raymond argumentuje, że przy powyższych założeniach odnośnie projektów, można zrównoleglić proces debugowania (wyszukiwania i poprawiania bł˛edów). Dzi˛eki temu, że kod źródłowy jest otwarty i wszystkie poprawki sa˛ szybko wprowadzane do oficjalnej wersji, projekt po90 Raymond, The Cathedral and the Bazaar. Brooks, Mityczny osobomiesiac. ˛ 92 W rzeczywistości może istnieć jeszcze wi˛ecej wydań, np. dystrybucja Debian ma :stable, testing, unstable i 91 experimental. 93 Raymond, The Cathedral and the Bazaar. 39 siada bardzo duża˛ baz˛e testerów (użytkowników) oprogramowania. Użytkownicy ci, dzi˛eki dost˛epowi do kodu, moga˛ dużo precyzyjniej wytropić bład ˛ lub wr˛ecz go poprawić, co jest zupełnie niedost˛epne dla projektów komercyjnych. Co wi˛ecej, w przypadku oprogramowania o zamkni˛etym źródle, najlepszych programistów przypisuje si˛e zwykle do samego planowania programu, a testowanie i poprawianie bł˛edów wykonuja˛ osoby o niższych wynagrodzeniach. W wolnym oprogramowaniu także najlepsi programiści sa˛ testerami i moga˛ dokonać poprawek, zauważajac ˛ cz˛esto nieoczywiste bł˛edy czy możliwości rozwoju. Poza tym grupa użytkowników/testerów jest bardzo duża i w zwiazku ˛ z tym działa tzw. mechanizm Delphi – jeżeli jakoś bład ˛ jest wyjatkowo ˛ trudny do odszukania, to w dużej grupie ludzi z wi˛ekszym prawdopodobieństwem znajdzie si˛e osoba, dla której jest on oczywisty.94 Istotnym problemem wolnego oprogramowania jest tzw. free riding. Zwykły użytkownik zdaje sobie spraw˛e, że poprawianie przez niego programu stanowi koszt. Zawsze istnieje niezerowe prawdopodobieństwo, że jakaś inna osoba zdecyduje si˛e poprawić ten sam bład ˛ i dopisać t˛e sama˛ funkcjonalność. Problem ten dotyczy również firm jako użytkowników oprogramowania. W wyniku poprawek b˛edzie mniej niż potencjalnych programistów. Dogł˛ebna˛ analiz˛e tego zjawiska znajdziemy w Johnson, Economics of Open Source Software. Autor przedstawia model rozwoju wolnego oprogramowania. Rozpatruje zbiór egoistycznych agentów rozpatrujacych ˛ dokonanie poprawki w programie. Agenci sa˛ heterogeniczni. Każdego agenta charakteryzuja˛ dwa parametry – użyteczność z wykorzystania poprawki vi oraz koszt dokonania przez niego tej poprawki ci . Agent zna tylko swoje wartości parametrów oraz rozkład parametrów w całej społeczności. Rozwiazaniem ˛ modelu jest równowaga Bayes’a-Nash’a, czyli dla każdego agenta i para (ψ i , π i ), gdzie ψ i oznacza prawdopodobieństwo, że agent zdecyduje si˛e napisać poprawk˛e, zaś π i – oczekiwane przez agenta i prawdopodobieństwo, że jakiś inny agent stworzy dana˛ poprawk˛e. W równowadze każdy agent maksymalizuje swoja˛ oczekiwana˛ użyteczność, przy założeniu racjonalnych oczekiwań, czyli że wartości π i sa˛ równe odpowiednim prawdopodobieństwom. Rozpatrywane sa˛ tylko równowagi symetryczne. Autor udowodnił, że przy powyższych założeniach (zgodnie z intuicja), ˛ wszyscy hakerzy maja˛ wi˛eksza˛ użyteczność gdy ich liczba (pracujacych ˛ nad projektem) si˛e zwi˛ekszy. Analogicznie wzrasta społeczny dobrobyt (ang. social welfare). Autor pokazuje, że oczekiwana liczba wyprodukowanych niezależnie fragmentów kodu, b˛edacych ˛ ta˛ sama˛ poprawka,˛ zbiega przy liczbie hakerów daż ˛ acej ˛ do nieskończoności, do pewnej stałej (tak wi˛ec koszt pokrywajacej ˛ si˛e pracy jest ograniczony). Dalej, przy założeniu, że jest wiele poprawek (k) robionych w sposób modularny, prawdopodobieństwo, że 94 Raymond, The Cathedral and the Bazaar. 40 wynikowe oprogramowanie b˛edzie zawierało wszystkie możliwe funkcjonalności, wynosi zero – nawet przy liczbie programistów daż ˛ acej ˛ do nieskończoności. Autor słusznie zauważa, że przy rozsadnych ˛ założeniach firma komercyjna majac ˛ nieskończona˛ liczb˛e klientów stworzyłaby wszystkie funkcjonalności.95 Analiza tego problemu znajduje si˛e także w moim modelu w rozdziale 2 – przy nieco innych założeniach, ale uzyskuj˛e zbliżone wnioski. Yochai Benkler uważa nawet, że peer production jest trzecia˛ forma˛ produkcji, obok firmy i rynku. Ronald Coase w 1937 roku wprowadził podział na dwie formy produkcji: firm˛e, zatrudniajac ˛ a˛ pracowników i koordynujac ˛ a˛ ich działania poprzez hierarchi˛e zarzadcz ˛ a˛ oraz rynek, koordynowany poprzez mechanizm cen. Z kryterium maksymalizacji zysku (w tym przypadku konkretnie minimalizacji kosztów) wynika optymalna wielkość firmy – im firma jest wi˛eksza, tym wi˛eksze sa˛ narzuty na biurokracj˛e i menadżerów. Na rynku z kolei wyst˛epuja˛ koszty transakcyjne, które moga˛ być zinternalizowane przez firm˛e poprzez połaczenie ˛ dwóch podmiotów.96 Benkler zauważa natomiast, że proces tworzenia wolnego oprogramowania97 ma odmienna˛ charakterystyk˛e od dwóch poprzednich. Nie wyst˛epuje tutaj hierarchia (każdy programista decyduje si˛e wysłać łatk˛e z własnej woli, sam także wybiera fragment którym chce si˛e zajmować). Istnieja˛ liderzy projektów, jednak nie maja˛ oni bezpośredniej władzy nad programistami, moga˛ tylko przyjmować badź ˛ odrzucać poszczególne poprawki. Z drugiej strony pełnia˛ oni pewna˛ funkcj˛e społeczna˛ – sa˛ nieformalnie wybierani przez społeczność na zasadzie merytokracji. Gdy nie kieruja˛ projektem zgodnie z zasadami merytorycznej doskonałości, projekt ma duże szanse si˛e rozwidlić i straca˛ oni swoja˛ funkcj˛e. Wymiana łatek nie opiera si˛e także na mechanizmie cen. Eric Raymond pisze, że siła˛ motywujac ˛ a˛ programistów jest ich ch˛eć dawania innym wartościowych podarunków (programów), zaspokojenie potrzeb znajdujacych ˛ si˛e najwyżej w piramidzie Maslow’a.98 Żeby projekt miał szans˛e powstać w ten sposób, musza˛ być spełnione pewne założenia, o których już pisałem: program musi mieć budow˛e modularna˛ i koszty kopiowania wyniku musza˛ być prawie zerowe (nie powstanie w ten sposób na pewno żadne materialne dobro konsumpcyjne).99 Kwestia, czy rzeczywiście da si˛e ten fenomen nazwać forma˛ produkcji, jest kontrowersyjna. Z jednej strony widzimy oprogramowanie stworzone przez społeczności hakerów, widzimy, że wielkie korporacje inwestuja˛ w ten ruch liczac ˛ na uzyskanie oprogramo95 ibid. Coase, The Nature of the Firm. 97 Benkler rozpatruje szersza˛ grup˛e produktów, bardzo jednak zbliżonych do wolnego oprogramowania, jak np. 96 powstawanie internetowej encyklopedii WikiPedia (http://www.wikipedia.org). 98 Raymond, Homeseading the Noosphere. 99 Benkler, Coase’e Penguin, or, Linux and The Nature of the Firm. 41 wania bardziej efektywnie niż tradycyjnymi metodami. Z drugiej jednak strony nie możliwe jest kontrolowanie procesu powstawania wolnego oprogramowania. Nie można narzucić hakerom żadnego terminu ukończenia badź ˛ zestawu funkcjonalności, które maja˛ si˛e znaleźć w programie. Być może peer production okaże si˛e najlepsza˛ forma˛ produkcji w długim okresie, poprzez mechanizm ewolucyjnego dobierania optymalnego zestawu funkcjonalności i architektury systemu100 daż ˛ acy ˛ do jakości nieosiagalnej ˛ dla przedsi˛ebiorstw komercyjnych, ograniczonych maksymalizacja˛ zysku w krótkim okresie? Myśl˛e, że za wcześnie jeszcze jest na takie hipotezy. Warto jeszcze zauważyć, że nie wszystkie typy produktów jednakowo cz˛esto powstaja˛ jako wolne oprogramowanie – te nie używane przez programistów maja˛ małe szanse powstać w formie oprogramowanie o otwartym źródle. Programiści z jednej strony nie maja˛ motywacji tworzyć oprogramowania, którego nie używaja,˛ a z drugiej nie jest możliwe skonstruowanie poprawnej specyfikacji programu bez dogł˛ebnej znajomości zagadnienia. W firmach komercyjnych zbieraniem danych o potrzebach użytkowników i przekształceniem tej wiedzy na list˛e i opis niezb˛ednych funkcjonalności zajmuja˛ si˛e mocno rozbudowane struktury zarzadzaj ˛ ace ˛ projektem. Programiści maja˛ ograniczony kontakt z innymi kreatywnymi użytkownikami oprogramowania. Projekty oprogramowania o otwartym źródle nie spełniaja˛ roli współczesnego marketingu, który nie tylko bada potrzeby konsumentów, ale cz˛esto tworzy nowe. Z drugiej strony managerowie w projektach używanych przez wykwalifikowanych programistów sa˛ cz˛esto pośrednikiem pomi˛edzy programistami piszacymi ˛ oprogramowanie a programistami wykorzystujacymi ˛ ten program. Pośrednikiem gubiacym ˛ pewne informacje, gdyż rzadko managerowie posiadaja˛ niezb˛edne wykształcenie i doświadczenie techniczne. Eric von Hippel podkreśla znaczenie innowacji tworzonych przez użytkowników (ang. user driven innovations). Zjawisko wymyślania przez użytkowników nowych funkcjonalności spotyka si˛e w wielu sektorach – von Hippel daje przykład produkcji desek do windsurfingu. Autor podkreśla, że cz˛esto takie innowacje sa˛ bardziej wartościowe niż pomysły stworzone w firmie. W przypadku wolnego oprogramowania ten efekt jest jeszcze wi˛ekszy – użytkownicy nie tylko wymyślaja˛ nowe charakterystyki oprogramowania ale także sami to oprogramowanie wytwarzaja! ˛ Jest to cecha unikalna – użytkownicy sa˛ w stanie obyć si˛e zupełnie bez producenta komercyjnego.101 James Bessen zauważa, że oprogramowania o otwartym źródle ma cechy dóbr publicznych – może być używane przez wszystkich ch˛etnych jednocześnie (ang. non-rival). Powstanie darmowych dóbr publicznych jest sprzeczne z klasyczna˛ ekonomia,˛ Bessen bada przyczyny tego 100 101 Oliva, The Competitive Advantages of Free Software. von Hippel, Open Source Shows the Way: Innovation by and for Users – No Manufacturer Required!. 42 fenomenu. Swoja˛ analiz˛e opiera na złożoności produktu, jakim jest oprogramowanie komputerowe. W pierwszej cz˛eści pracy pokazuje, że proste dobra intelektualne, zawierajace ˛ kilka funkcjonalności, nigdy nie powstana˛ jako oprogramowanie o otwartym źródle – bardziej optymalnie dla twórcy b˛edzie nie publikować kodu. W drugiej jednak cz˛eści zakłada, że oprogramowanie ma bardzo wiele (M ) potencjalnych funkcjonalności. Zakłada dalej, że firma komputerowa, by wypuścić niezawodny produkt, musi przetestować wszystkie produkty użytkowe (ang. use products)102 – czyli każda˛ możliwa˛ kombinacj˛e funkcjonalności. Połaczenie ˛ użycia kilku funkcjonalności może prowadzić do bł˛edów wynikajacych ˛ z nietrywialnych zależności pomi˛edzy kawałkami systemu je obsługujacymi. ˛ W przypadku tworzenia oprogramowania istnieje asymetria informacji – firma komputerowa nie jest w stanie stwierdzić, które funkcjonalności b˛eda˛ używane. W zwiazku ˛ z tym, tworzac ˛ skomplikowany produkt, jest narażona na olbrzymie koszty. Umieszczajac ˛ w programie Mf funkcjonalności, musi przetestować 2Mf różnych produktów użytkowych. Przewaga społeczności wolnego oprogramowania, mimo istnienia problemów wynikajacych ˛ z free-riding’u i duplikacji pracy, wynika z faktu, że społeczność ta dokładnie wie jakie produkty użytkowe b˛eda˛ stosowane – każdy użytkownik testuje te używane przez siebie. Dla bardzo dużych projektów liczba wszystkich produktów użytkowych drastycznie przewyższa liczb˛e tych naprawd˛e używanych. Bessen dochodzi do wniosku, że grupy hakerów czasem sa˛ w stanie wyprodukować oprogramowanie o wi˛ekszej złożoności niż firmy komercyjne.103 1.2.4. Niezawodność W poprzednich rozdziałach przeprowadziłem analiz˛e przyczyn powstawania oprogramowania o otwartym źródle. Starałem si˛e odpowiedzieć na pytania: dlaczego takie oprogramowanie powstaje? Co kieruje programistami wkładajacymi ˛ swój czas w jego rozwój? Jak przebiega sam proces jego powstawania? Teraz chciałbym si˛e zastanowić nad użytecznościa˛ powstałego w ten sposób oprogramowania. Jak już wcześniej napisałem, użytkownicy sami dodaja˛ do projektów funkcjonalności, z których chca˛ korzystać. Można z tego faktu wnosić, że oprogramowanie to ma dostosowany zestaw cech do pewnej grupy użytkowników. Bardzo charakterystyczna˛ cecha˛ oprogramowania jest jednak fakt, że cz˛esto zawiera ono bł˛edy nie do wykrycia przez konsumenta decydujacego ˛ sie na kupno i używanie. Z rozumowania Jamesa Bessena104 wynika wr˛ecz, że koszt przete102 Takie same spostrzeżenia można znaleźć w Brooks, Mityczny osobomiesiac ˛ Bessen, Open Source Software: Free Provision of Complex Public Goods. 104 Ibid. 103 43 stowania programu jest główna˛ składowa˛ kosztu jego wytworzenia! Brooks pisze natomiast, że faza testowania wynosi około połowy czasu tworzenia projektu.105 W tym podrozdziale chciałbym si˛e zastanowić nad niezawodnościa˛106 wolnego oprogramowania, powstajacego ˛ w wyniku opisanego wcześniej procesu. Zastanawiajace ˛ jest, czy produkt powstały z chaotycznie tworzonych i nadsyłanych łatek może być niezawodny. Wydawałoby si˛e, że oprogramowanie jest tak skomplikowanym dobrem, że aby je wytworzyć sa˛ niezb˛edne precyzyjne plany całości, a podejście polegajace ˛ na wielokrotnym poprawianiu małych fragmentów musi prowadzić do porażki. Dlaczego wi˛ec wolne programy sa˛ używane w industri, cz˛esto w zastosowaniach kluczowych dla działalności firmy? Postaram si˛e najpierw przedstawić argumenty teoretyczne, a nast˛epnie analiz˛e empiryczna.˛ Programiści bioracy ˛ udział w projektach oprogramowania o otwartym źródle podkreślaja,˛ że szacunek innych hakerów a jednocześnie prawo dost˛epu do oficjalnego kodu projektów zdobywa si˛e na zasadzie ścisłej merytokracji. Im programista jest lepszy (im lepszy kod dodaje do programu) tym ma wi˛ekszy wpływ na rozwój projektu. W ten naturalny sposób projekty oprogramowania o otwartym źródle gwarantuja˛ sobie, że b˛eda˛ rozwijane przez najlepszych specjalistów, a jednocześnie zabezpieczaja˛ si˛e przed partaczami. Jest to procedura lepsza niż rekrutacja w firmach komercyjnych, gdyż nie towarzyszy jest asymetria informacji. Firma zatrudniajac ˛ programistów nie może sprawdzić ich umiej˛etności potrzebnych do tworzenia konkretnego projektu. Opiera si˛e głównie na widocznych sygnałach – jak dyplomy uniwersyteckie czy doświadczenie zawodowe.107 Programiści oprogramowania o otwartym źródle sami wybieraja˛ funkcjonalność, która˛ chca˛ si˛e zajać. ˛ Sami programiści najlepiej znaja˛ swoje możliwości i słabe strony, dzi˛eki czemu dokonuja˛ optymalnej alokacji. W firmach komputerowych wyst˛epuje asymetria informacji – osoba przydzielajaca ˛ programistom zadania ma niepełna˛ informacj˛e na temat ich stopnia kompetencji w danym zakresie. Co wi˛ecej, hakerzy wybieraja˛ zwykle zadania, które sprawiaja˛ im przyjemność, angażuja˛ si˛e emocjonalnie w prac˛e, co nie jest do końca możliwe dla planisty w firmie. Badania socjologiczne dowodza,˛ że ludzie zadowoleni pracuja˛ bardziej efektywnie. Tak wi˛ec w procesie tworzenia wolnego oprogramowania mamy optymalna˛ alokacj˛e programistów, co także wpływa na zmniejszenie liczby bł˛edów.108 105 106 Brooks, Mityczny osobomiesiac. ˛ Niezawodność rozumiem jako liczb˛e znajdowanych bł˛edów. Przeanalizuj˛e także średni czas poprawy zgłoszo- nego bł˛edu przez firm˛e komercyjna˛ oraz społeczność oprogramowania o otwartym źródle. 107 Raymond, Homeseading the Noosphere. 108 Raymond, The Cathedral and the Bazaar. 44 Programiści podkreślaja˛ negatywny wpływ zbyt krótkich terminów na niezawodność oprogramowania. Ponieważ na rynku można zaobserwować tendencj˛e, że firma, która pierwsza wyda oprogramowanie o nowatorskiej funkcjonalności, zyskuje najwi˛ecej ze wzgl˛edu na efekty sieciowe. Dlatego firmy komercyjne maja˛ tendencj˛e to wydawania nie do końca przetestowanych produktów, zawierajacych ˛ dużo bł˛edów, aby zyskać przewag˛e konkurencyjna.˛ 109 Programiści bardzo krytykuja˛ taka˛ strategi˛e, gdyż p˛ed by zdażyć ˛ w terminie powoduje tworzenie niedopracowanego kodu, który jest dodatkowo podatny na bł˛edy. Oprogramowanie o otwartym źródle jest wolne od tego problemu, ustalane terminy publikacji oparte sa˛ wyłacznie ˛ na wzgl˛edach technicznych.110 W przypadku wi˛ekszości systemów producent oprogramowania nie pisze samodzielnie całości kodu, tylko w miar˛e możliwości korzysta z istniejacych ˛ już (darmowych lub nie) bibliotek. Zdarza si˛e niestety, że biblioteki takie zawieraja˛ bł˛edy. Gdy korzystamy z bibliotek na licencji oprogramowania o otwartym źródle, jesteśmy w stanie te bł˛edy poprawić. Gdy natomiast korzystamy z komercyjnych bibliotek, musimy zdać si˛e na producenta tego oprogramowania. Czasem producent nie jest w stanie zlokalizować bł˛edu bez podania konkretnego przykładu użycia, zaś my nie możemy ujawnić naszego kodu gdyż jest on obj˛ety tajemnica˛ firmowa.˛ 111 Pozostaje wtedy tylko znaleźć obejście bł˛edu w bibliotece (ang. workaround), czego rezultatem jest powstanie „rozpaczliwego” kodu bardzo wrażliwego na bł˛edy – bład ˛ z biblioteki rozprzestrzenia si˛e na nasze oprogramowanie.112 Bardzo ważnym mechanizmem wykluczania wielu bł˛edów jest mechanizm koleżeńskiej weryfikacji (ang. peer review), który, ze wzgl˛edu na ograniczenia kosztów, rzadko wyst˛epuje w przedsi˛ebiorstwach. Każdy kawałek kodu, a szczególnie nowatorski lub kluczowy dla projektu, jest zawsze czytany przez innych programistów. Motywacja˛ takiego działania może być zarówno ch˛eć dopisania czegoś twórczego od siebie, sprawdzenia czy poprawka jest godna zaufania, czy po prostu ch˛eć nauczenia si˛e czegoś nowego. W wyniku takiego procesu można wyłapać wiele bł˛edów wynikajacych ˛ z nieuwagi programisty, czasem trudnych do znalezienia w fazie testowej. Rozwój wolnego oprogramowania bardzo przypomina proces ewolucji. Kolejne wersje pro109 Szczególnie za takie praktyki krytykowana jest firma Microsoft. Niektórzy przypisuja˛ takiej strategii jej sukces rynkowy. Ludzie nie sa˛ w stanie ocenić niezawodności oprogramowania, okazuje si˛e to dopiero podczas użytkowania. Wtedy jednak efekty sieciowe sa˛ tak duże, że nie opłaca si˛e przenosić na inne oprogramowanie. Cz˛esto konkurent w ten sposób plajtuje. 110 Jackson, Why is software freedom useful, and what does it mean?. 111 ang. I can’t show you my source code and you can’t show me your’s problem. 112 Ibid. 45 gramów komercyjnych wydawane sa˛ co kilka lat i każdy kolejny jest rewolucyjny – wprowadza wiele zmian, nowych funkcjonalności i pomysłów. Oprogramowanie o otwartym źródle natomiast rozwija si˛e małymi kroczkami, kolejne wersje powstaja˛ bardzo cz˛esto (czasem codziennie) i nie różnia˛ si˛e bardzo od siebie. Pomi˛edzy kolejnymi wersjami programiści poprawiaja˛ to, co si˛e okazało słabe w wersji poprzedniej. Firmy komercyjne zaś staraja˛ si˛e przekonać konsumenta, że ich wersja jest na tyle ulepszona, że warto ja˛ kupić zamiast używać poprzedniej. Alexandre Oliva argumentuje113 , że taki rozwój ewolucyjny sprzyja powstawaniu „ładnego” kodu, zawierajacego ˛ mało bł˛edów. Co wi˛ecej, w projektach o otwartym źródle inaczej przebiega proces akceptowania zmian w programie. W oprogramowaniu komercyjnym propozycje zmian sa˛ przyjmowane przez kierownictwo po przeczytaniu dokumentacji. Nast˛epnie zmiany przeznaczane sa˛ do realizacji – powstaje odpowiedni kod źródłowy. W przypadku wolnego oprogramowania Lider rozpatruje wyłaczenie ˛ poprawki w postaci już gotowego kodu. Kontrola jest tutaj wi˛ec na poziome samego kodu źródłowego, a nie jak w przypadku oprogramowania firmowego - na poziomie projektu. Zdarza si˛e, że Lider odrzuca kiepsko napisane poprawki, podczas gdy dostaja˛ si˛e one do tradycyjnych systemów.114 Fakt, że małe cegiełki moga˛ być połaczone ˛ w jedna,˛ funkcjonalna˛ całość wynika z wysokiej modularności projektów. Proces powstawania oprogramowania o otwartym źródle wymaga od programistów dzielenia każdego wi˛ekszego modułu na mniejsze kawałki. Dzi˛eki temu powstaje wiele małych modulików. Niektóre moduły (czy sam program) maja˛ bardzo duża˛ funkcjonalność, ale składaja˛ si˛e tylko ze „zlepienia” odpowiednio mniejszych kawałków. Dzi˛eki temu ich kod także jest krótki i przejrzysty. Analiz˛e empiryczna˛ możemy znaleźć w Kuan, Open Source Software as Lead User’s Make or Buy Decision: A Study of Open and Closed Source Quality. Autorka porównuje trzy pary produktów: wolny system operacyjny FreeBSD z komercyjnym odpowiednikiem (niestety nazwy konkurencyjnych odpowiedników nie sa˛ podane), Apache’a z komercyjnym serwerem WWW i Gnome’a z komercyjnym graficznym interfejsem użytkownika. Dla wszystkich produktów porównywane sa˛ liczby znalezionych bł˛edów, uwzgl˛edniajac ˛ ich szkodliwość, oraz średni czas ich poprawienia. We wst˛epnej analizie danych, autorka zauważa, że w oprogramowaniu komercyjnym spotyka si˛e generalnie wi˛ecej bł˛edów. Liczba tych bł˛edów bardzo mocno waha si˛e w czasie (w przypadku wolnego oprogramowania jest praktycznie stabilna) – wynika to z komercyjnego 113 114 Oliva, The Competitive Advantages of Free Software. Asklund i Bendix, Configuration Management for Open Source Software. 46 modelu produkcji. Dalej, z analizy serwerów WWW i systemów operacyjnych wynika, że w programach o otwartym źródle bł˛edy poprawiane sa˛ szybciej niż w komercyjnych odpowiednikach. W przypadku graficznych interfejsów użytkownika sytuacja jest odwrotna. Może to wynikać z faktu, że interfejsy użytkownika sa˛ znanym słabym punktem wolnego oprogramowania – sa˛ słabiej rozwini˛ete niż pozostałe dwie kategorie oprogramowania. Podsumowujac, ˛ uważam, że założenie o porównywalnej niezawodności wolnego i komercyjnego oprogramowania, wykorzystywane w wi˛ekszości cytowanych modeli oraz w moim modelu w rozdziale 2, jest zasadne. 1.3. Rola przedsi˛ebiorstw i rzadu ˛ w tworzeniu wolnego oprogramowania W tym rozdziale chciałbym zajać ˛ si˛e kwestia˛ wpływu firm komercyjnych i państwa na wolne oprogramowanie. W rozdziale 1.2.2 opisałem wiele rodzajów działalności komplementarnej do rozwoju oprogramowania o otwartym źródle, na której firmy zarabiaja.˛ Ponieważ produkty firm sa˛ komplementarne do wolnego oprogramowania, firmy te sa˛ zainteresowane rozwojem tego oprogramowania. Wzrost jakości czy udziału w rynku wolnego oprogramowania b˛edzie skutkował wi˛ekszym popytem dla przedsi˛ebiorstw. Z drugiej jednak strony wyst˛epuja˛ tutaj wyraźne efekty zewn˛etrzne – firma pomagajac ˛ wolnemu oprogramowaniu, pomaga pośrednio także swoim bezpośrednim konkurentom. Analityczny model powyższego zjawiska, oparty na teorii gier, możemy znaleźć w Harhoff, Henkel i von Hippel, Profiting from voluntary information spillovers. . . . Autorzy zakładaja,˛ że każda poprawka jest najbardziej dopasowana do indywidualnych potrzeb autora. Inni agenci też maja˛ użyteczność z tej poprawki, ale mniejsza˛ niż autor. Zakłada si˛e także, że społeczność wolnego oprogramowania, otrzymawszy dwie różne poprawki (od różnych agentów), wybieraja˛ „najlepsze” cechy z obu i robi własna˛ poprawk˛e. Obaj autorzy maja˛ mniejsza˛ użyteczność z poprawki społeczności niż z własnej, ale wi˛eksza˛ niż z poprawki innego agenta. Z modelu wynika, że dla rozsadnych ˛ wartości parametrów, podmiotowi posiadajacemu ˛ innowacj˛e opłaca si˛e ja˛ opublikować, by została dodana do wersji oficjalnej. Wkład firm komercyjnych, zajmujacych ˛ si˛e produktami komplementarnymi, różni si˛e zwykle od wkładu pojedynczych programistów. Firmy staraja˛ si˛e przybliżyć wolne oprogramowanie szerszemu gronu potencjalnych użytkowników, staraja˛ si˛e zmniejszyć różnice pomi˛edzy wolnym 47 oprogramowaniem a komercyjnym. Zajmuja˛ si˛e np. instalatorami czy graficznymi interfejsami użytkownika, dokumentacja˛ programów, etc. – sferami niech˛etnie rozwijanymi przez samych programistów. Cz˛esto firmy zwiazane ˛ z ruchem oprogramowania o otwartym źródle przydzielaja˛ grupk˛e swoich programistów bezpośrednio do pracy nad wolnym oprogramowaniem (np. IBM, RedHat), by lepiej poznać proces jego powstania i zyskać aprobat˛e w oczach hakerów. Firmy tradycyjnie zajmuja˛ si˛e także marketingiem, dzi˛eki czemu informuja˛ społeczeństwo o istnieniu wolnego oprogramowania i jego cechach. To wpływa pośrednio na jego rozwój – im wi˛eksza baza potencjalnych użytkowników, tym wi˛ecej potencjalnych programistów.115 Warto także zauważyć, że firmom zależy na wypromowaniu si˛e i odróżnieniu od konkurencji, by zdobyć jak najwi˛ekszy udział w rynku, a co za tym idzie zwi˛ekszyć zyski. Wynika stad, ˛ że firmy sprzedajace ˛ dobra komplementarne do wolnego oprogramowania maja˛ motywacj˛e sygnalizacyjna˛ – chca˛ pokazać klientom, że to właśnie dana firma najlepiej si˛e zna na oprogarmowaniu o otwartym źródle. W tym celu zatrudniaja˛ liderów najwi˛ekszych projektów na stanowiskach „konsultantów”. Zyskuje na tym zarówno sam lider, cała społeczność zajmujaca ˛ si˛e danym projektem (gdyż lider de facto zajmuje si˛e rozwojem projektu), oraz firma, która pokazuje że skoro dla niej pracuje lider projektu, to ona jest najlepszym specjalista˛ w zakresie danej technologii na rynku. Niektóre firmy zajmuja˛ si˛e także zapewnieniem miejsca na serwerze danemu projektowi (ang. „hosting”). Robia˛ to albo dla projektu zwiazanego ˛ ze swoja˛ działalnościa˛ 116 , lub dla wielu (VA Linux ma portal SourceForge.net). W pierwszym przypadku firma, analogicznie jak poprzednio, stara si˛e pokazać jako specjalista w danej dziedzinie, w drugim pokazuje, że może zapewnić infrastruktur˛e do rozwoju projektów programistycznych. Hakerzy zyskuja,˛ ponieważ spadaja˛ koszty monetarne rozwoju projektów oprogramowania o otwartym źródle. Podsumowujac, ˛ firmy sprzedajace ˛ dobra komplementarne do wolnego oprogramowania, przyczyniaja˛ si˛e pośrednio do szerszego rozprzestrzenienia tego oprogramowania oraz do zmniejszenia kosztów prowadzenia projektu. Oprogramowanie o otwartym źródle zostało ostatnio zauważone przez rzady ˛ państw. W legislacjach europejskich pojawiaja˛ si˛e zapisy o wspieraniu wolnego oprogramowania (np. w 115 116 Stallman, The Free Software Definition. Np. firma Code Weavers sponsoruje serwer projektu Wine (http://www.winehq.com). Wine jest imple- mentacja˛ API (ang. Application Programming Interface) Windows’ów (umożliwia uruchamianie programów pod Windows’y pod Linuksem). Code Weavers oferuje CrossOver Office – oprogramowanie oparte na Wine umożliwiajace ˛ łatwe uruchomienie programu Microsoft Office (i kilku innych) pod Linuksem. 48 dokumencie eEurope). Poza tym poszczególne rzady ˛ (np. niemiecki) niezależnie wspieraja˛ wolne oprogramowanie, np. publikujac ˛ podr˛ecznik użytkowania. Nasuwa si˛e pytanie, czy takie działania sa˛ korzystne ze społecznego punktu widzenia. W dużej mierze jest to temat otwarty. W Xu, Development costs and open source software mamy model oparty w dużej mierze na modelu Johnsona117 , majacy ˛ te same założenia. Autor przeprowadza analiz˛e z której wnioskuje, że zmniejszenie kosztu pojedynczej poprawki (z powodu pewnych działań subwencjonujacych ˛ rzadu ˛ badź ˛ firm) może prowadzić do zmniejszenia prawdopodobieństwa wykonania tej poprawki. Ja w moim modelu w rozdziale 2 otrzymuj˛e przeciwny wynik – obniżenie kosztu pojedynczej poprawki jest jedynym środkiem do zwi˛ekszenia oczekiwanej liczby funkcjonalności oprogramowania o otwartym źródle. W Schmidt i Schnitzer, Public Subsidies for Open Source?. . . znajdujemy analiz˛e potencjalnych działań rzadu ˛ wspierajacych ˛ oprogramowania o otwartym źródle. Autorzy modeluja˛ wolne oprogramowanie i konkurencyjnego przedsi˛ebiorc˛e komercyjnego. Konsumenci rozrzuceni sa˛ równomiernie w modelu liniowego miasta. Wyst˛epuje asymetria informacyjna – wszyscy wiedza˛ o istnieniu oprogramowania komercyjnego, ale tylko cz˛eść wie o oprogramowaniu wolnym. Wynikiem modelu jest wniosek, że jedynym działaniem rzadu ˛ podnoszacym ˛ dobrobyt społeczny sa˛ działania informacyjne. Bezpośrednie dofinansowanie konkretnych projektów czy ustawowe zmuszanie niektórych podmiotów do korzystania z oprogramowania o otwartym źródle prowadzi do spadku ogólnego dobrobytu. Warto jeszcze wspomnieć, że patenty na oprogramowanie sa˛ legislacja˛ opóźniajac ˛ a˛ rozwój wolnego oprogramowania. Społeczności hakerów nie sa˛ w stanie patentować swoich rozwiazań, ˛ bronić si˛e w sadzie ˛ przed oskarżeniami o naruszenie patentów czy podpisywać umowy o wymianie patentów (ang. cross-licensing). Istnieje ponadto wiele publikacji dowodzacych, ˛ że patenty na oprogramowanie zmniejszaja˛ a nie zwi˛ekszaja˛ wydatki na badania i rozwój w sektorze (np. Bessen i Hunt, An Empirical Look at Software Patents). W Stanach Zjednoczonych i Japonii patenty na oprogramowanie funkcjonuja,˛ w Unii Europejskiej kwestia ta podlega aktualnie debacie politycznej. 117 Johnson, Economics of Open Source Software. 49 Rozdział 2 Model W tym rozdziale chciałbym przedstawić stworzony przez siebie model oprogramowania o otwartym źródle i oprogramowania komercyjnego. Model obrazuje rynek, na którym wolne oprogramowanie konkuruje z tym stworzonym w firmie. Uwzgl˛edniłem heterogeniczność konsumentów w postrzeganiu atrakcyjności obu rodzajów oprogramowania – swój model oparłem na znanym modelu zróżnicowania popytu: „liniowego miasta”. Starałem si˛e uchwycić zarówno charakterystyk˛e procesu produkcji oprogramowania w przedsi˛ebiorstwie (opierajac ˛ si˛e na inżynierii oprogramowania), jak i „bazarowy” proces powstawania wolnego oprogramowania, opisany w poprzednim rozdziale. Wyciagam ˛ wnioski jak wpłynie obecność oprogramowania o otwartym źródle na równowag˛e na rynku oraz analizuj˛e jak zewn˛etrzna pomoc dla oprogramowania o otwartym źródle wpłynie na rozwój tego dobra. 2.1. Funkcja produkcji firm komercyjnych Funkcja produkcji oprogramowania w firmie zależy jedynie od liczby programistów. Frederich P. Brooks zauważa, że po pierwsze, przy tworzeniu oprogramowania wi˛ecej czasu poświ˛eca si˛e na wyszukiwanie i poprawianie bł˛edów w już napisanym kodzie niż na samo pisanie. Dlatego też można założyć że poszukiwanie bł˛edów jest dominujacym ˛ składnikiem w funkcji produkcji oprogramowania. Po drugie, najwi˛ecej bł˛edów pojawia si˛e na styku modułów pisanych przez różnych ludzi. Przy założeniu, że nad projektem pracuje N programistów, takich „styków” jest N (N −1) 2 (tzw. Prawo Brooksa – przytoczone przez Eric’a Raymonda1 ). Liczba nowych funkcjo- nalności nie b˛edzie wi˛ec proporcjonalna do liczby programistów, a raczej do pierwiastka z tej 1 Raymond, The Cathedral and the Bazaar s. 10. 51 liczby, gdyż programiści musza˛ „zdebugować” każdy (także pośredni) interfejs miedzy dwoma kawałkami kodu. Tak wi˛ec żeby wyprodukować M funkcjonalności, musza˛ rozpatrzyć rz˛edu M 2 problemów. Ponieważ mój model jest statyczny, czyli przyjmuj˛e, że oprogramowanie powstaje √ w ciagu ˛ jednostki czasu, N programistów może stworzyć (i poprawić bł˛edy) tylko N funkcjonalności.2 Zauważmy także, jednostki N , czyli liczby programistów zatrudnionych w firmie komercyjnej, sa˛ zupełnie niezależne od rynku na oprogramowanie i osób rozwijajacych ˛ wolne oprogramowanie. Możemy wi˛ec pominać ˛ wszelkie stałe współczynniki na tym etapie analizy – wystarczajacym ˛ współczynnikiem b˛edzie płaca programisty. Mamy wi˛ec nast˛epujac ˛ a˛ funkcj˛e produkcji: √ fCSS (N ) = N (2.1) 2.2. Funkcja produkcji ruchu wolnego oprogramowania Funkcja produkcji dla oprogramowania o otwartym źródle ma zupełnie inna˛ postać niż dla tradycyjnego oprogramowania. Jak już zarysowałem, programiści nie maja˛ przypisanych zadań ani funkcjonalności nad którymi pracuja.˛ Sami wybieraja˛ jaki element chca˛ rozwinać ˛ – co może rodzić problem, że ich praca b˛edzie zdublowana i ogólna użyteczność spadnie. Linus Torvalds pokazał, że wyszukiwanie i poprawianie bł˛edów w kodzie może być wykonywane równocześnie i niezależnie przez wielu programistów, oprogramowania o otwartym źródle nie dotycza˛ ograniczenia dla tradycyjnego oprogramowania wynikajace ˛ z kwadratowej liczby miejsc, gdzie powstaja˛ bł˛edy. Ponieważ projekty OSS działaja˛ zgodnie z zasada˛ „Wypuszczaj cz˛esto i szybko”3 , także sam rozwój kodu może nast˛epować równolegle, gdyż każda poprawka jest „niewielka” i jest małe prawdopodobieństwo, że dwie poprawki wypuszczone w tym samym momencie dotycza˛ dokładnie tego samego kawałka kodu. Nawet gdy si˛e to zdarzy, stosunkowo łatwo „dopasować” do siebie obie poprawki, gdyż sa˛ „niewielkie”. Dodatkowo przyjmijmy, że liczba możliwych funkcjonalności (poprawek) jest stosunkowo duża (wynika to z poziomu skomplikowania oprogramowania), stała i wynosi M . Jest to zało2 Firmy komercyjne cz˛esto rezygnuja˛ z poprawiania wszystkich bł˛edów w programie – gdy cz˛estość znajdowania bł˛edów spadnie poniżej ustalonego poziomu podejmuje si˛e decyzj˛e o wypuszczeniu oprogramowania. Ma to jednak ujemne skutki – oprogramowanie dalej zawiera sporo bł˛edów, czasem krytycznych. Nie b˛edziemy tego explicite √ modelować, założymy tylko dla uproszczenia, że nawet jeżeli N programistów zrealizuje wi˛ecej niż N funkcjonalności, to wynikowe oprogramowanie, w wyniku istnienia wielu niepoprawionych bł˛edów, b˛edzie postrzegane √ przez konsumentów równorz˛ednie z oprogramowaniem o N funkcjonalnościach i bez bł˛edów. 3 Raymond, The Cathedral and the Bazaar s. 7. 52 żenie sensowne, gdyż projekty informatyczne maja˛ tendencj˛e do rozwoju ewolucyjnego. Każdy projekt zawiera skończona˛ liczb˛e funkcjonalności, które można rozwinać ˛ na skończona˛ liczb˛e sensownych sposobów. Inny argument: pomysły na nowe funkcjonalności zostaja˛ wymyślone przez ludzi. Ponieważ ludzi jest skończenie wiele i rozpatrujemy skończony przedział czasu, możliwych innowacji też może być skończenie wiele. Z kolei założenie o stałości tej liczby jest upraszczajace ˛ i wynika z faktu, że przyjałem ˛ statyczny model, w którym oprogramowanie rozwija si˛e tylko przez jednostk˛e czasu. W zwiazku ˛ z tym ogólny poziom technologii, wyznaczajacy ˛ M , nie ulega zmianie. Ograniczenie M jest znane wszystkim agentom – także dla uproszczenia. Przyjmijmy także, że agent decyduje si˛e poprawiać jedna˛ z M rzeczy w sposób losowy, każda˛ z równym prawdopodobieństwem 1 . M Zdefiniujmy rodzin˛e zmiennych losowych Xi dla i ∈ {1, . . . , M }: ( 0 gdy i-ta funkcjonalność nie została zrealizowana Xi = 1 w p.p. (2.2) Wtedy, jeżeli LOSS agentów zdecyduje si˛e rozwijać oprogramowanie o otwartym źródle, prawdopodobieństwo, że i-ta funkcjonalność nie zostanie zrealizowana wynosi: 1 1− M LOSS 1 E[Xi ] = 1 − 1 − M LOSS P (Xi = 0) = (2.3) Łatwo obliczyć wartość oczekiwana: ˛ (2.4) Możemy zdefiniować zmienna˛ losowa˛ X = X1 + X2 + · · · + XM oznaczajac ˛ a˛ liczb˛e zrealizowanych funkcjonalności. Korzystajac ˛ z własności wartości oczekiwanej4 możemy policzyć wartość oczekiwana˛ liczby zrealizowanych funkcjonalności przez LOSS programistów: E[X] = E[X1 ] + E[X2 ] + · · · + E[XM ] = LOSS ! LOSS ! 1 1 = 1− 1− + 1− 1− + ··· + M M LOSS ! 1 = M 1− 1− M 4 1 1− 1− M LOSS ! Zmienne Xi sa˛ od siebie zależne, nie wpływa to jednak na własność liniowości wartości oczekiwanej. 53 (2.5) Funkcja produkcji ma wi˛ec postać: fOSS (LOSS ) = M 1 1− 1− M LOSS ! (2.6) W naszej analizie pomin˛eliśmy jednak jeden bardzo istotny czynnik: użytkownicy moga˛ pomyśleć „po co ja mam coś dopisywać do programu, jeżeli moga˛ to zrobić inni zamiast mnie, a ja tylko z tego skorzystam bez żadnych kosztów”. Jest to tzw. Free Riding Problem5 . Dokładniej analiza˛ tego zjawiska zajmiemy si˛e analizujac ˛ użyteczność agentów i rynek. Przyjmijmy chwilowo, że istnieje takie prawdopodobieństwo ψ ∈ [0, 1], że programiście zdecydowanemu używać oprogramowania o otwartym źródle b˛edzie oboj˛etne, czy z prawdopodobieństwem ψ dopisze nowa˛ funkcjonalność czy z 1 − ψ b˛edzie uprawiał free riding.6 Tak wi˛ec programista wybierze każda˛ z innowacji z prawdopodobieństwem ψ M1 = ψ . M Przeprowadzajac ˛ analogiczna˛ analiz˛e jak powyżej uzyskujemy nowa˛ funkcj˛e produkcji, zależna˛ od prawdopodobieństwa ψ: LOSS ! ψ (2.7) fOSS (LOSS , ψ) = M 1 − 1 − M 2.3. Funkcja użyteczności użytkownika oprogramownia Oprogramowanie tradycyjne i oprogramowanie o otwartym źródle różnia˛ si˛e nie tylko sposobem powstawania i licencja.˛ Wolne oprogramowanie jest w dużo wi˛ekszym stopniu nastawione na programistów i administratorów sieciowych, zaś oprogramowanie komercyjne skupia si˛e na „zwykłych” użytkownikach komputera, posiadajacych ˛ cz˛esto minimalna˛ wiedz˛e informatyczna.˛ Wynika to z faktu, że (1) programiści piszacy ˛ oprogramowanie o otwartym źródle cz˛esto rozwia˛ zuja˛ jakieś problemy napotykane w swojej codziennej pracy, (2) firmom zależy na jak najszerszym gronie odbiorców. Programiści poradza˛ sobie z oprogramowaniem dla niedoświadczonych użytkowników, a na odwrót już nie. Chciałbym zaproponować klasyczny model zróżnicowania produktu – model „liniowego miasta”. Zakładam, że na rynku jest L odbiorców oprogramowania. Sa˛ oni rozmieszczeni w równomiernie na odcinku [0, 1]. Na końcu odcinka oznaczonego 1 znajduje si˛e firma komercyjna, zaś w 0 lider projektu oprogramowania o otwartym źródle. Każdy użytkownik może wybrać oprogramowanie komercyjne/wolne. Gdy wybierze wariant komercyjny, ma nast˛epujac ˛ a˛ 5 6 Po polsku zwykle określany „problemem gapowicza”. B˛edziemy rozpatrywać tylko równowagi symetryczne. 54 funkcj˛e użyteczności: UCSS (x) = θMCSS − t(1 − x) − p (2.8) gdzie x oznacza adres agenta w mieście, θ jest współczynnikiem krańcowej użyteczności z nowej funkcjonalności, MCSS to liczba funkcjonalności w zaproponowanym przez firm˛e komercyjna˛ produkcie, t - współczynnik zróżnicowania użytkowników, 1 − x - odległość preferencji konsumenta od polityki firmy, zaś p to cena oprogramowania ustalana przez firm˛e. Użyteczność w przypadku korzystania z oprogramowania OSS wyglada ˛ analogicznie, sa˛ tu jednak dwa przypadki. Agent może zdecydować si˛e wziać ˛ udział w pracach nad oprogramowaniem: d UOSS,d (x) = θMOSS − tx − c (2.9) gdzie c jest kosztem, jaki musi ponieść programista. Może on si˛e jednak zdecydować na Free Riding i nie ponosi kosztu c: fr UOSS,f r (x) = θMOSS − tx (2.10) Warto w tym momencie zauważyć dwie rzeczy. Po pierwsze, niezb˛edne jest założenie o skończonej liczbie użytkowników. Gdyby liczba ta była nieskończona, każdy by wiedział, że jego indywidualny wkład do oprogramowania byłby zerowy, wi˛ec decydowałby si˛e na free riding. W zwiazku ˛ z tym wolne oprogramowanie by nie istniało. Po drugie, zauważmy, że MOSS fr d jest wi˛eksze od MOSS o kontrybucj˛e we wzorach (2.9) i (2.10) nie sa˛ sobie równe – w (2.9) MOSS rozpatrywanego agenta, caeteris paribus. 2.4. Producent oprogramowania Firma produkujaca ˛ oprogramowanie kieruje si˛e maksymalizacja˛ zysku. Zatrudnia programistów (zał. że rynek pracy programistów jest doskonale konkurencyjny, zaś płaca wynosi w) w celu wytworzenia oprogramowania na sprzedaż. Przypomnijmy, że funkcja produkcji ma postać (2.1): √ fCSS (N ) = N Popyt na produkt firmy zależy od jakości produktu (liczby zatrudnionych przez firm˛e programistów), ceny (na te zmienne firma ma wpływ) i na MCSS , czyli jakości wolnego oprogramowania. Zauważmy, że konsument indyferentny (ang. „pivotal consumer” – czyli taki któremu wszystko jedno, czy b˛edzie używał OSS, czy CSS) b˛edzie si˛e zastanawiał, czy wybrać wolne oprogramowanie jako free rider, czy zakupić komercyjne. B˛edzie wolał wydać pieniadze ˛ na 55 oprogramowanie komercyjne niż brać si˛e za rozwój oprogramowania OSS. Przyjmujac ˛ chwilowo MOSS jako dana,˛ możemy policzyć popyt na produkty przedsi˛ebiorstwa. Przypomnijmy, że użyteczność konsumenta z oprogramowania o zamkni˛etym kodzie wynosi (2.8): UCSS (x) = θMCSS − t(1 − x) − p zaś z oprogramowania OSS jako free rider (2.10): UOSS,f r (x) = θMOSS − tx Ponieważ x jest konsumentem indyferentnym, uzyskuje on ta˛ sama˛ użyteczność z obu źródeł: θMCSS − t(1 − x) − p = θMOSS − tx MCSS obliczmy podstawiajac ˛ funkcj˛e produkcji (2.1). Popyt po przekształceniu: D(N, p, MOSS ) = L(1 − x) = L 1− θ(MOSS − √ N) + p + t ! 2t √ θ( N − MOSS ) − p + t = L 2t (2.11) Widzimy, że popyt rośnie gdy firma obniża cen˛e, oraz jest tym wi˛ekszy, im lepszy jest produkt komercyjny od wolnego oprogramowania. Firma ma nast˛epujac ˛ a˛ funkcj˛e zysku: √ θ( N − MOSS ) − p + t − wN π(N, p) = pD(N, p, MOSS ) − wN = Lp 2t (2.12) która˛ maksymalizuje ustalajac ˛ wartości p i N . Po zróżniczkowaniu uzyskujemy nast˛epujace ˛ warunki pierwszego rz˛edu: √ ∂π θ( N − MOSS ) − 2p + t =L =0 ∂p 2t (2.13) ∂π pθL = √ −w =0 (2.14) ∂N 4t N Po przekształceniu (2.13) uzyskujemy wzór na cen˛e oprogramowania komercyjnego: √ 4wt N p= (2.15) θL 56 Wyliczajac ˛ MCSS z równania (2.13) otrzymujemy: √ θMOSS − t N = MCSS = θL θ2 L − 8wt Rozsadnie ˛ jest założyć, że czynnik θMOSS −t θ2 L−8wt (2.16) jest wi˛ekszy od zera. Wtedy cały rynek b˛edzie pokryty przez oprogramowanie, a oprogramowanie komercyjne b˛edzie bezpośrednim konkurentem wolnego. Bez tego założenia firma komercyjna byłaby monopolista˛ w swojej niszy, zaś OSS zajmowaliby sie tylko hobbyści – przypadek nieciekawy. Co ciekawe, ze wzoru (2.16) wynika, że jakość oprogramowania jest zależna dodatnio od jakości oprogramowania o otwartym źródle. Tak wi˛ec firma komercyjna zagrożona wolnym oprogramowaniem b˛edzie z nim walczyła wyższa˛ jakościa.˛ Ze wzoru (2.13) widać, że cena jest wprost proporcjonalna do jakości. Firma komercyjna skupi si˛e na w˛eższym gronie odbiorców (popyt, jak pokazaliśmy, jest ujemnie zależny od ceny) i zaproponuje im wyższa˛ jakość, gdy istnieje dobrze rozwini˛ete wolne oprogramowanie (MOSS jest duże). 2.5. Powstawanie oprogramowania o otwartym źródle Przyjmijmy chwilowo, że LOSS użytkowników oprogramowania zdecydowało sie używać oprogramowania OSS i rozważa możliwość dopisania jakiejś nowej funkcjonalności. Ci wszyscy użytkownicy wola˛ nawet poświ˛ecić czas na rozwój tego oprogramowania niż skorzystać z wersji komercyjnej. Tak wi˛ec sa˛ trzy grupy użytkowników7 : • Zdecydowani na wersj˛e komercyjna˛ – popyt dla przedsi˛ebiorstwa (D(p, N, MOSS )). • Zdecydowani na free riding, bioracy ˛ jakość wolnego oprogramowania jako dana˛ – ta grupa woli oprogramowanie komercyjne, niż dopisywanie własnor˛eczne kodu. • Prawdziwi zwolennicy wolnego oprogramowania, w ogóle nie bioracy ˛ pod uwag˛e kupna rozwiazania ˛ komercyjnego. Maksymalizuja˛ użyteczność wybierajac ˛ pomi˛edzy programowaniem a free riding (LOSS ). Każdy użytkownik z trzeciej grupy maksymalizujac ˛ oczekiwana˛ użyteczność, bierze pod uwag˛e równowag˛e Nasha w strategiach mieszanych – z prawdopodobieństwem ϕ wybiera rozwój, z 1 − ϕ free riding. Zauważmy, że wprowadzajac ˛ funkcj˛e produkcji wolnego oprogramowania założyliśmy, że równowaga ta b˛edzie symetryczna – tutaj dalej utrzymujemy to założenie. 7 Zakładajac ˛ odp. wartości parametrów. Opisywana˛ sytuacj˛e obserwujemy w rzeczywistości, wi˛ec wydaje mi si˛e, że możemy si˛e na niej skupić. Pozostałe sytuacje sa˛ zdegenerowane, a przez to mniej ciekawe. 57 Każdy agent zdaje sobie spraw˛e, że ma wpływ na jakość wolnego oprogramowania – wartość oczekiwana b˛edzie miała inna˛ wartość gdy zdecyduje si˛e na programowanie niż gdy pozostanie przy free riding. Wartość oczekiwana agenta wynosi: ! LOSS −1 ! ψ 1 E[uOSS ] = ϕ θM 1 − 1 − 1− − ty − c M M ! LOSS −1 ! ψ + (1 − ϕ) θM 1 − 1 − − ty (2.17) M gdzie y oznacza adres rozpatrywanego agenta. Liczymy pochodna˛ po ϕ: LOSS −1 ! ∂E[uOSS ] ψ 1 = θM 1 − 1 − 1− − ty − c ∂ϕ M M ! LOSS −1 ! ψ − θM 1 − 1 − − ty (2.18) M Po przyrównaniu do zera, przekształceniu i wyliczeniu ψ otrzymujemy: c L 1 −1 OSS ψ =M 1− θ (2.19) Otrzymana zależność opisuje charakterystyk˛e problemu free riding w przypadku tworzenia wolnego oprogramowania. Zauważmy, że gdy programistów jest stosunkowo niewielu w porównaniu do potencjalnej liczby funkcjonalności, ψ wyliczone z powyższego wzoru b˛edzie wi˛eksze od jedności. Ponieważ ψ opisuje prawdopodobieństwo, taki rezultat nie ma bezpośredniej interpretacji ekonomicznej (nie można stosować kolejnych wzorów korzystajacych ˛ z równania (2.19)). Oznacza to jednak, że programiści sa˛ zdecydowani rozwijać oprogramowanie i zjawisko free riding w ogóle nie wyst˛epuje. We wzorze pojawia si˛e θc , czyli stosunek kosztu wytworzenia pojedynczej funkcjonalności do użyteczności wytworzonej funkcjonalności. Ze wzoru widzimy, że żeby ψ było wi˛eksze od zera (czyli żeby rozwój oprogramowania o otwartym źródle miał miejsce), musi być spełnione θ > c. Jest to rozsadny ˛ rezultat, gdyż nikt nie zdecydowałby si˛e pisać programu wiedzac, ˛ że jego praca, nawet gdy nie b˛edzie zdublowana przez innego programist˛e, da mu mniejsza˛ użyteczność niż jej koszt. Jak napisałem na poczatku ˛ pracy, amatorskie oprogramowanie pojawiało si˛e zawsze, wi˛ec taki stosunek parametrów dobrze modeluje rzeczywistość. Podstawiajac ˛ ψ do funkcji produkcji wolnego oprogramowania (2.7) otrzymujemy: ! c LLOSS−1 OSS MOSS = M 1 − θ 58 (2.20) Jest to bardzo ciekawy rezultat, gdyż przy LOSS → ∞ oczekiwana jakość oprogramowania OSS daży ˛ do stałej, mniejszej niż liczba dost˛epnych funkcjonalności: c MOSS = M 1 − LOSS →∞ θ lim (2.21) Jeżeli przyjmiemy, że LOSS jest ustalone, możemy zbadać wpływ wartości współczynników na poziom ψ, czyli na stopień zjawiska free riding. Gdy c spadnie, ψ wzrośnie. Czyli spadek kosztu wytworzenia funkcjonalności, spowodowany np. niższymi cenami dost˛epu do internetu czy wyższa˛ jakościa˛ darmowych narz˛edzi programistycznych, spowoduje niższy poziom free riding i wyższa˛ jakość oprogramowania OSS. Jest to bardzo ważny rezultat, gdyż wskazuje na coś przeciwnego niż pokazał Xiaopeng Xu, opierajac ˛ si˛e na troch˛e innych założeniach.8 Rozwijajac ˛ model Johnsona9 , założył że użytkownicy oprogramowania OSS zastanawiaja˛ si˛e nad rozwojem jednego, konkretnego ulepszenia programu. Analizował za to zróżnicowanie indywidualnych użyteczności jednostkowych z ulepszenia (u mnie jednolity parametr θ) i kosztów wytworzenia innowacji (u mnie c) oraz asymetri˛e informacji (dla uproszczenia pominałem ˛ w analizie). Ja natomiast skupiłem si˛e na kompleksowości programów komputerowych i możliwości ich rozwoju w wielu kierunkach – rozpatrujac ˛ M możliwych udoskonaleń. Xiaopeng Xu wyszło, że gdy koszt c si˛e zmniejszy, może to prowadzić do mniejszego prawdopodobieństwa wyprodukowania ulepszenia. Mój rezultat pokazuje, że państwo subsydiujac ˛ (wprowadzajac ˛ ulgi podatkowe czy inne ułatwienia dla pozarzadowych ˛ podmiotów subsydiujacych) ˛ rozwój skomplikowanego oprogramowania zwi˛eksza prawdopodobieństwo jego powstania i przesuwa granic˛e maksymalnej liczby funkcjonalności, która może być wytworzona przez ruch oprogramowania o otwartym źródle. Rezultaty Xiaopeng Xu i mój sa˛ zgodne z wynikami Jamesa Bessena10 , który rozpatruje proces powstawania informacyjnych dóbr publicznych oparty na ich złożoności (dokładniej rozpatruje tzw. produkty użytkowe – ang. use products11 ). Bessen pokazuje, że gdy potencjalna liczba funkcjonalności M jest mała (proste produkty) oprogramowanie o otwartym źródle 8 Xu, Development costs and open source software. Johnson, Economics of Open Source Software. 10 Bessen, Open Source Software: Free Provision of Complex Public Goods. 11 Produkt użytkowy to zestaw funkcjonalności produktu z których użytkownik naprawd˛e korzysta. Bessen przyj9 muje, że każdy produkt użytkowy trzeba oddzielnie przetestować, gdyż relacje pomi˛edzy różnymi modułami programu sa˛ na tyle skomplikowane, że nie da si˛e przewidzieć zachowania konkretnego produktu użytkowego bez testów. Wynika stad, ˛ że gdy jest M możliwych funkcjonalności, firma komercyjna musi wykonać 2M testów. Wspólnoty oprogramowania o otwartym źródle maja˛ tutaj t˛e przewag˛e, że każdy programista testuje tylko ta˛ wersj˛e, której używa i nieużywane produkty użytkowe nie musza˛ być testowane. 59 w ogóle nie powstanie – agenci b˛eda˛ preferować rozwój oprogramowania dla siebie i nieujawnianie go konkurentom. Sytuacja natomiast wyglada ˛ zupełnie inaczej, gdy oprogramowanie jest bardzo skomplikowane – im M jest wi˛eksze tym wi˛eksza˛ przewag˛e konkurencyjna˛ ma OSS. 2.6. Porównanie oprogramowania komercyjnego z oprogramowaniem o otwartym źródle Ciekawy problem stanowi także porównanie oprogramowania wolnego i komercyjnego. Niestety nie da si˛e wyliczyć dokładnego analitycznego rozwiazania ˛ modelu ze wzgl˛edu na postać wzorów, ale można wyciagn ˛ ać ˛ wiele interesujacych ˛ wniosków analizujac ˛ tylko zależności pomi˛edzy zmiennymi. Ze wzoru (2.16), jak już zauważyliśmy, wynika że firma komercyjna dostosowuje si˛e do oprogramowania o otwartym źródle podnoszac ˛ jakość produktu. Gdy podstawimy MCSS ze wzoru (2.16) do wzoru (2.15) otrzymamy zależność ceny tego oprogramowania od jakości wolnego oprogramowania: θMOSS − t p = 4wt (2.22) θ2 L − 8wt Widzimy tutaj z kolei, że cena także b˛edzie wzrastać wraz z jakościa˛ oprogramowania o otwartym źródle. Zwróćmy uwag˛e, że z wcześniejszego założenia, że θMOSS −t θ2 L−8wt jest wi˛ekszy od zera (przy analizie równania (2.16)) wynika, że cena równowagi także jest wi˛eksza od zera. Możemy podstawić oba te wyniki do równania na popyt przedsi˛ebiorstwa, żeby sprawdzić jak te dwa efekty – zwi˛ekszenie jakości powodujace ˛ wi˛ekszy popyt i wyższa cena majaca ˛ efekt odwrotny – wpłyna˛ na wielkość popytu: 1 2wθMOSS + 2wt − 12 θ2 L θMOSS − 2wt D(MOSS ) = L + = 2wL 2 θ2 L − 8wt θ2 L − 8wt (2.23) I widzimy, że efekt wzrostu jakości jest silniejszy niż wzrostu cen – popyt na produkty przedsi˛ebiorstwa wzrośnie! Sprawdźmy jaki wpływ ma jakość oprogramowania o otwartym źródle na zysk przedsi˛ebiorstwa – podstawiamy równanie (2.16) i (2.23) do (2.12): π(MOSS ) = 2 2 8w2 θtL(θMOSS − 2tMOSS ) − wθ2 L2 (θ2 MOSS − 2θtMOSS + t2 ) (θ2 L − 8wt)2 Policzmy pochodna˛ czastkow ˛ a˛ zysku po jakości oprogramowania o otwartym źródle: 16w2 θ2 tLMOSS − 16w2 θt2 L − 2wθ2 l2 MOSS + 2θ3 L3 tw ∂π = ∂MOSS (θ2 L − 8wt)2 60 (2.24) Po uporzadkowaniu ˛ i uproszczeniu otrzymujemy: ∂π t − θMOSS = 2wθL ∂MOSS θ2 L − 8wt Ponieważ θMOSS −t θ2 L−8wt (2.25) > 0, wi˛ec pochodna zysku po jakości OSS jest ujemna. Zgodnie z intuicja˛ im wyższa jest jakość wolnego oprogramowania, tym słabsza˛ pozycj˛e strategiczna˛ ma przedsi˛ebiorstwo komercyjne i może sobie pozwolić na mniejsze zyski. Warto si˛e jeszcze zastanowić, jak powstanie i wzrost jakości wolnego oprogramowania wpływa na użyteczność użytkowników. Użytkownicy wolnego oprogramowania w oczywisty sposób na tym zyskuja.˛ Natomiast skutek dla użytkowników oprogramowania komercyjnego jest niejasny i wymaga analizy. Po podstawieniu wzorów (2.16) i (2.22) do (2.8) otrzymujemy: θMOSS − t 2 − t(1 − x) UCSS (x) = (θ L − 4wt) θ2 L − 8wt Po policzeniu pochodnej czastkowej ˛ po MOSS otrzymujemy: 2 ∂UCSS θ L − 4wt =θ ∂MOSS θ2 L − 8wt (2.26) Znak tej pochodnej nie jest ustalony. Zauważmy jednak, że dla rynków z dobrze rozwini˛etym oprogramowaniem OSS, z małym kosztem transportowym (zróżnicowaniem klientów) i duża˛ użytecznościa˛ z oprogramowania, czyli takimi z jakimi mamy do czynienia, b˛edzie spełniona nierówność MOSS > t . θ Ponieważ założyliśmy nieujemność θMOSS −t , θ2 L−8wt wyrażenie θ2 L − 8wt także b˛edzie nieujemne, czyli pochodna b˛edzie dodatnia. W opisanych okolicznościach nawet użytkownicy oprogramowania komercyjnego b˛eda˛ zyskiwali na rozwoju oprogramowania o otwartym źródle. 2.7. Wnioski z modelu W powyższym modelu starałem si˛e zbadać analitycznie niektóre zjawiska wyst˛epujace ˛ przy tworzeniu wolnego oprogramowania. Założyłem, że oprogramowanie komputerowe jest dobrem skomplikowanym, majacym ˛ wiele możliwych funkcjonalności, trudnym do wytworzenia i zagwarantowania niezawodności. Wykorzystałem standardowy model „liniowego miasta” do uchwycenia różnego podejścia programistów-amatorów piszacych ˛ programy dla siebie, dla pokazania swojego kunsztu kolegom po fachu, od firm komputerowych, chcacych ˛ zyskać jak najszersze grono odbiorców, najcz˛eściej tych niezaawansowanych. 61 Przy rozsadnych ˛ wartościach parametrów na rynku ukształtuje si˛e równowaga, w której rozwiazania ˛ komercyjne i wolne b˛eda˛ współistniały, każde majac ˛ swoich zwolenników. Analizujac ˛ oprogramowania o otwartym źródle wziałem ˛ pod uwag˛e zjawisko free riding, czyli sytuacj˛e, gdy użytkownik, zamiast samemu dodać do programu brakujac ˛ a˛ jego zdaniem funkcjonalność, czeka w nadziei że zrobi to ktoś inny. Zgodnie z intuicja˛ pokazałem, że gdy projekt jest w fazie wst˛epnej, czyli zostało zrealizowanych bardzo niewiele potencjalnych funkcjonalności, zjawisko free riding w ogóle nie wyst˛epuje. Dopiero gdy jakość oprogramowania si˛e zwi˛ekszy, poświ˛ecenie programistów spada. Co ciekawe, pokazałem że jest pewna „graniczna” jakość wolnego oprogramowania, wynikajaca ˛ z relacji kosztów rozwoju oprogramowania do użyteczności z niego, powyżej której programiści nie widza˛ sensu dalej rozwijać programu. Wnioski z mojego modelu potwierdzaja˛ słuszność pogladów ˛ nieformalnych liderów wolnego oprogramowania, którzy podkreślaja˛ pozytywny efekt zaangażowania wyspecjalizowanych firm komercyjnych w rozwój oprogramowania o otwartym źródle12 . Firmy takie, by maksymalizować swój zysk zwiazany ˛ z wi˛eksza˛ popularnościa˛ wolnego oprogramowania13 , samodzielnie rozwijaja˛ niektóre porzucone przez programistów funkcjonalności lub zmniejszaja˛ koszty rozwoju wolnego oprogramowania, oferujac ˛ np. miejsce i odp. serwisy na swoich serwerach14 . Gdy koszty si˛e zmniejsza,˛ programiści maja˛ motywacj˛e do dalszego rozwoju. Rozwój wolnego oprogramowania wpływa także na firm˛e komercyjna.˛ Traci ona pozycj˛e monopolisty i musi si˛e bronić przed darmowym konkurentem. Okazuje si˛e, że firma podnosi zarówno jakość jak i cen˛e swojego produktu7, zyskujac ˛ rynek, ale tracac ˛ zyski. Przy wystarczajaco ˛ dobrym oprogarmowaniu o otwartym źródle wszyscy użytkownicy oprogramowania (także komercyjnego) na tym zyskuja.˛ Mój model potwierdza zatem zasadność wspierania rozwoju wolnego oprogramowania przez Uni˛e Europejska˛ oraz poszczególne państwa członkowskie – powoduje to wi˛eksza˛ użyteczność ludności kosztem istniejacej ˛ firmy monopolistycznej. 12 13 Stallman, The Free Software Definition; Perens, Open Source Definition. Firmy moga˛ w różny sposób zarabiać na wolnym oprogramowaniu – tworzac ˛ dystrybucje (czyli gotowe do zainstalowania produkty zawierajace ˛ odp. dobrane portfele różnych wolnych projektów), oferujac ˛ usługi serwisowodoradcze, sprzedajac ˛ dedykowany sprz˛et, etc. 14 Usługi takie oferuje np. VA Software Corporation, posiadacz (za pośrednictwem spółki zależnej Open Source Development Network, Inc.) portalu SourceForge.net 62 Rozdział 3 Wnioski W niniejszej pracy starałem si˛e przybliżyć czytelnikowi oprogramowanie o otwartym źródle. Dokonałem analizy motywacji programistów rozwijajacych ˛ to oprogramowanie, oraz firm starajacych ˛ si˛e znaleźć nisz˛e rynkowa˛ oferujac ˛ dobra komplementarne do tego oprogramowania. Starałem si˛e przekonać czytelnika, że wolne oprogramowanie nie jest tylko nieznaczac ˛ a˛ „zabawka” ˛ grupy hobbystów, ale jest produktem konkurencyjnym do najlepszych systemów komputerowych oferowanych przez firmy komercyjne. Obserwujemy, chociażby artykułach na ten temat coraz cz˛eściej pojawiajacych ˛ si˛e w prasie, że oprogramowanie o otwartym źródle staje si˛e ważnym elementem rzeczywistości, dlatego zasadne jest przeprowadzić badania ekonomiczne tego fenomenu. Zaproponowałem mikroekonomiczny model badajacy ˛ konkurencj˛e pomi˛edzy firma˛ komercyjna˛ a wolnym oprogramowaniem. Pokazałem, że w momencie pojawienia si˛e wolnego oprogramowania i jego rozwoju (daż ˛ acego ˛ do punktu równowagi), wszyscy użytkownicy oprogramowania zyskaja.˛ Jedynym poszkodowanym b˛edzie firma komercyjna. Przedstawiłem dodatkowo analiz˛e wpływu pomocy egzogenicznej (jak rzad ˛ państwa czy firma komputerowa oferujaca ˛ swoje produkty na rynku komplementarnym) dla wolnego oprogramowania. Udowodniłem w oparciu o model, że taka pomoc z zewnatrz ˛ stymuluje rozwój oprogramowanie o otwartym źródle, pozwala mu si˛e bardziej rozwinać. ˛ W ramach niniejszej pracy nie zmieściła si˛e niestety analiza rynku przy założeniu, że firma z produktem komplementarnym do wolnego oprogramowania jest agentem endogenicznym modelu. Podejście takie byłoby bardzo ciekawe, gdyż firma komercyjna produkujaca ˛ oprogramowanie o zamkni˛etym źródle, oferuje najcz˛eściej także usługi komplementarne. Na rynku oprogramowania firma taka jest bezpośrednim konkurentem samego oprogramowania o otwartym 63 źródle, zaś na rynku usług firmy wspomagajacej ˛ wolne oprogramowanie. Kolejna˛ kwestia˛ warta˛ dalszych badań jest dogł˛ebna analiza organizacyjna procesu powstawania wolnego oprogramowania, uwzgl˛edniajaca ˛ struktur˛e przepływu informacji, koszty transakcyjne czy inne koszty charakterystyczne dla tej formy powstawania oprogramowania. Można by porównać efektywność tej metody z odpowiednia˛ stosowana˛ w przedsi˛ebiorstwach informatycznych. 64 Bibliografia Asklund, Ulf/Bendix, Lars: Configuration Management for Open Source Software. Benkler, Yochai: Coase’e Penguin, or, Linux and The Nature of the Firm. aug 2002 Bessen, James: Open Source Software: Free Provision of Complex Public Goods. may 2001 Bessen, James/Hunt, Robert M.: An Empirical Look at Software Patents. jul 2003 Brooks, Frederick P.: Mityczny osobomiesiac. ˛ Warszawa: Wydawnictwa Naukowo- Techniczne, 2000 Coase, R. H.: The Nature of the Firm. 1937 Debian: Debian Free Software Guideliness. 1995 hURL: http://www.debian.org/ social_contract#guidelinesi Hann, Il-Horn et al.: Delayed Returns to Open Source Participation: An Empirical Analysis of the Apache HTTP Server Project. mar 2002 Harhoff, Dietmar/Henkel, Joachim/Hippel, Eric von: Profiting from voluntary information spillovers: How users benefit by freely revealing their innovations. 2000 Hippel, Eric von: Open Source Shows the Way: Innovation by and for Users – No Manufacturer Required! Sloan Management Review 2001 Hippel, Eric von/Krogh, Georg von: Open Source Software and the “Private-Collective” Innovation Model: Issues for Organization Science. Organization Science, 14 2003, Nr. 2, 209–223 Jackson, Ian: Why is software freedom useful, and what does it mean? nov 1998 65 Johnson, Justin Pappas: Economics of Open Source Software. 2001 Koek, Mark: Free Software Licensing. jun 1999 Kuan, Jennifer: Open Source Software as Lead User’s Make or Buy Decision: A Study of Open and Closed Source Quality. Lee, Samuel/Moisa, Nina/Weiss, Marco: Open Source as a Signalling Device – An Economic Analysis. mar 2003 Lerner, Josh/Tirole, Jean: The Simple Economics of Open Source. dec 2000 Lerner, Josh/Tirole, Jean: The Scope of Open Source Licensing. nov 2002 Netcraft: Web Server Survey. hURL: http://news.netcraft.com/archives/web_ server_survey.htmli Oliva, Alexandre: The Competitive Advantages of Free Software. aug 2001 hURL: http: //www.ic.unicamp.br/~oliva/i Perens, Bruce: Open Source Definition. 1997 hURL: http://www.opensource.org/ docs/definition.phpi Raymond, Eric S.: The Cathedral and the Bazaar. aug 2000 Raymond, Eric S.: Homeseading the Noosphere. aug 2000 Raymond, Eric S.: The Magic Cauldron. aug 2000 Schmidt, Klaus M./Schnitzer, Monika: Public Subsidies for Open Source? Some Economic Policy Issues of the Software Market. 2002 Stallman, Richard: Categories of Free and Non-Free Software. hURL: http://www.gnu. org/philosophy/categories.htmli Stallman, Richard: Dlaczego termin „Free Software” jest lepszy niż „Open Source”. Stallman, Richard: The Free Software Definition. hURL: http://www.gnu.org/ philosophy/free-sw.htmli Stiglitz, Joseph E.: Information and the change in the paradigm in economics. dec 2001 66 Xu, Xiaopeng: Development costs and open source software. 67