Od pewnego czasu, gdziekolwiek się nie obejrzę, toczy się mniej lub bardziej zaangażowana dyskusja na temat patentów, licencji, wolnego oprogramowania lub ruchu Creative Commons. Jedni mówią o tym, że piractwo jest złe, bo to droga na skróty, inni odpowiadają, że to sposób na walkę z korporacjami i skostniałym prawem, ktoś wspomina o wolności zawartej w ruchu open source, ktoś na to odpowiada, że nie chce mieszać etyki z technologią. Kłócą się, dyskutują, szukają poparcia wśród autorytetów moralnych, prawnych, ekonomicznych. I jakkolwiek wszystkie te dyskusje są niezwykle istotne, to często pomijają ważny aspekt całej sprawy – jej wymiar praktyczny. Dla mnie ruch open source to zwykła pragmatyka – etyka, prawo i ekonomia są tylko bonusami.
Zbyt krótkie wprowadzenie do tematu licencji
Wolne i otwarte projekty (nie tylko programistyczne) nie są pozbawione swoich praw. By mogły swobodnie funkcjonować jako wolne i otwarte, stworzono szereg licencji, których głównym zadaniem jest ochrona prawa do dalszego rozwoju licencjonowanego projektu. Jedną z licencji tego typu jest General Public License (GPL), której autorem jest założyciel Free Software Foundation – Richard Stalmann, a której specyfika polega na tym, że wymaga od autora prac pochodnych wobec projektu licencjonowanego opatrzenia swojego dzieła tą samą licencją. W ten sposób GPL zapewnia otwarty byt wszystkim pochodnym danego projektu. Często mówi się o tym mechanizmie jako o wirusie licencyjnym, który przechodzi z pracy na pracę. Poza tym najczęściej stosowanymi wolnymi i otwartymi licencjami są Lesser General Public License (LGPL), BSD oraz licencje z rodziny Creative Commons.
Chciałbym przedstawić tę pragmatyczną stronę dziedziny open source z kilku dopełniających się perspektyw. Zastanowić się, jaki jest jej wymiar edukacyjny, co znaczy wygoda w open source, czym jest etos pracy w projektach tego typu i dlaczego taniej jest drożej, choć drożej jest taniej. W tym odcinku głównie o wymiarze edukacyjnym, który wydaje mi się wciąż jedną z najmocniejszych stron ruchu open source.
Zacznijmy od wymyślonej historyjki o Kowalskim i Nowaku. Historyjki w punktach.
1. Programista Kowalski pisze nowy program komputerowy – odtwarzacz muzyki. W tym celu powstaje spora ilość plików tekstowych zawierających tzw. kod źródłowy programu, czyli – upraszczając nieco sprawę – długa i zagmatwana lista instrukcji skierowana pod adresem komputera, a wyrażona w jednym z setek języków programowania. Kowalski wybrał język Python, bo jest on łatwy i programowanie w nim sprawia mu dużo frajdy.
2. Kowalski używa specjalnych narzędzi, żeby zamienić ten kod źródłowy w działający program. Co więcej, umieszcza on na swojej stronie internetowej ów program w postaci specjalnej wersji instalacyjnej, żeby przyszli użytkownicy nie musieli tracić czasu na walkę z plikami z kodem źródłowym. Double-click naszym przyjacielem!
3. Kowalski uznał, że opatrzy swój program jedną ze standardowych licencji wolnego oprogramowania – GPL (General Public License). Dlaczego nie miałoby być tak, że ktoś coś do jego programu doda lub go zmieni? Kowalski nie jest programistą zarozumiałym i jeśli ktoś ma dobry pomysł, co z jego odtwarzaczem zrobić, to nie będzie mu w tym przeszkadzał. „Ludzie to mają pomysły” – zwykł mawiać Kowalski.
4. Grafik komputerowy Nowak trafił na stronę Kowalskiego zupełnie przypadkiem, ale chciał spróbować, co to za program. Słucha muzyki na komputerze dzięki pracy Kowalskiego już od dwóch tygodni i jest bardzo zadowolony. Program działa bez zarzutów, ma kilka fajnych opcji, a do tego nic go nie kosztował – jego autor nie chciał zapłaty.
Open source
W artykule zdecydowaliśmy się używać nietłumaczonego i nieodmienionego terminu „open source”. Decyzja taka związana jest ze sposobem funkcjonowania tego terminu w języku angielskim. Od pewnego czasu bowiem „open source” to określenie związane ze sposobem realizacji projektów w różnych dziedzinach, niekoniecznie związanych z programowaniem czy komputerami w ogóle. W tym odcinku opowiadamy o dwóch filmach animowanych, które w dużej mierze realizują założenia open source. Znane są również projekty z dziedzin takich jak architektura, ekonomia, edukacja czy design. Tłumacznie zatem terminu na „otwartoźródłowy” (zgodnie z sugestią Poradni Językowej PWN) mija się nieco z celem. Ciężko bowiem mówić o architekturze otwartoźródłowej lub otwartoźródłowej edukacji. Decydując się na nietłumaczenie tego terminu uznaliśmy również, że polska odmiana – choć funkcjonuje w języku mówionym – w piśmie sprawdza się nienajlepiej, i pisanie o „projekcie open source'owym” wydaje się nieeleganckie. Pozostajemy zatem przy „open source”, zwracając jednocześnie uwagę na lukę w polskiej terminologii.
5. Nowaka drażni jednak, że Kowalski, będąc „typowym informatykiem”, opatrzył program brzydkimi ikonkami i wybrał kolory „z lat 90.”. Przypomniał sobie, że program dystrybuowany jest na licencji GPL, co oznacza, że jego autor jest chętny do współpracy.
6. Po przygotowaniu serii ładnych ikonek, Nowak napisał maila do Kowalskiego z pytaniem, czy ten nie chciałby wykorzystać ich w swoim programie i że w razie potrzeby mógłby mu podesłać nowy zestaw kolorów. Kowalski odpisał następnego dnia informując, że ikonki są już dodane do nowej wersji programu, a nazwisko Nowaka figuruje w dziale Contributors (współpracownicy). Dodał również, że kolory przyjmie bardzo chętnie – nie jest to jego najmocniejsza strona i zawsze się z tym męczy. Jeśli jednak Nowak chciałby zacząć pracować samemu z tymi kolorami, to nie ma problemu, bo kod źródłowy jest dobrze opisany i pewnie da sobie radę. Panowie wymienili się nickami popularnego komunikatora.
7. Z pewnym przerażeniem, ale i podekscytowaniem, Nowak ściągnął kod źródłowy programu i rozpakował pliki na swoim komputerze. Plików było sporo, lecz Nowak szybko znalazł dwa interesujące go foldery: pics z ikonami i gui z kodem źródłowym interfejsu użytkownika – tam pewnie znajdują się kolory.
8. Kiedy Nowak otworzył plik o nazwie track_list.py i za pomocą Ctrl+F znalazł pierwsze wystąpienie słowa color, jego zdumienie było olbrzymie. Oczom jego ukazały się takie linie:
# set the font color to light red
self.color = QtGui.QColor( 250, 150, 150 )
„Przecież to jak angielski!” – pomyślał Nowak.
9. Nowak od razu zorientował się, że w nawiasie znajdują się wartości RGB (czerwony, zielony, niebieski), które dobrze zna z Photoshopa. Poszukał zatem fajnej czerwieni i podmienił wartości na nowe.
10. Kiedy uruchomił program ponownie, zaznaczone piosenki na trackliście miały nowy odcień. Duma przepełniła Nowaka.
11. Kowalskiemu bardzo spodobało się, że jego odtwarzacz lepiej wygląda. Zmienił numer wersji z 0.6 na 0.7 i dodał Nowaka do oficjalnych autorów. Minęło kilka miesięcy, od kiedy Nowak dołączył się do prac nad odtwarzaczem. Program wygląda coraz lepiej, a z pomocą Kowalskiego Nowak nauczył się programować w Pythonie. Co prawda nigdy nie myślał, że będzie się tym zajmował, ale teraz siedzi z Nowakiem na czacie i omawia rozbudowę odtwarzacza muzyki o funkcję oglądania filmów. Będzie nowa wersja!
Być może niektórym czytelnikom historia ta wyda się bajką o pięknym, idealnym świecie. Jeśli jednak ktokolwiek czytał ją w Firefoksie, ten na własnej skórze doświadczył efektów działania takiej bajki i to na o wiele większą skalę. Firefox to przeglądarka internetowa open source, w przypadku której zaangażowanie użytkowników daje się policzyć w ilości dodatków i zestawów tzw. skórek, które zostały do niej stworzone. Na dzień dzisiejszy strona Mozilli podaje ponad dziesięć tysięcy dodatków i ponad trzydzieści pięć tysięcy skórek. Co więcej, na podstawie kodu źródłowego Mozilli powstał nie tylko Firefox, lecz kilka innych przeglądarek internetowych (w tym całkiem popularny ostatnio Flock).
Innym spektakularnym przykładem jest oczywiście system operacyjny Linux. Powstał z inicjatywy genialnego studenta z Finlandii, który ubolewał, że po skończeniu studiów nie będzie miał dostępu do systemu operacyjnego Unix, którym posługiwał się na uczelni. Napisał zatem swój własny. W pracach pomogli mu koledzy z roku oraz setki tysięcy nieznanych mu programistów i entuzjastów z całego świata. Linux jest bowiem sztandarowym przykładem wykorzystania internetu do wspólnej pracy.
Każdy, kto doczytał do tego miejsca może powiedzieć, że nawet to ciekawe, lecz ogranicza się do wąskiego świata programistów. Nie jest to jednak prawda i to z kilku powodów. Nie wdając się w szczegóły (przyjdzie na nie czas w następnych artykułach), przyjrzyjmy się dwóm projektom filmowym open source.
Chodzi o krótkometrażowe animacje „Elephants Dream” i „Big Buck Bunny”. Obie produkcje powstały w bardzo podobny sposób – Blender Foundation (instytucja odpowiedzialna za powstanie i rozwój programu open source Blender, służącego do tworzenia animacji trójwymiarowych) ustanowiła program rezydencjalny dla kilku wybitnych twórców animacji, określając sztywno cel stypendium. W pierwszym przypadku zadaniem grupy było stworzenie krótkiego metrażu, który wyzyska wszystko co możliwe z animacji postaci w programie Blender. W drugim przypadku chodziło o kwestie związane z animacją przyrody. Podczas obu produkcji Blender Foundation nie tylko mogła sprawdzić, jak wiele da się zrobić za pomocą ich oprogramowania, lecz również na bieżąco rozwijać je w sposób sugerowany przez wybitnych twórców. Co więcej jednak, twórcy Blendera wiedzieli, że uzyskają w ten sposób gotowy materiał edukacyjny najwyższej próby – całość materiałów związanych z powstaniem filmu została bowiem udostępniona użytkownikom programu na otwartej licencji. Kod źródłowy to w tym przypadku modele postaci, schematy oświetlenia, konkretne sekwencje animacji – wszystko, co jest potrzebne by stworzyć film animowany. Można go ściągnąć ze strony fundacji i wykorzystać dla własnych potrzeb – edukacyjnych, artystycznych, programistycznych. W konsekwencji zatem, ilekroć w trakcie oglądania filmu pojawia się pytanie: „Jak oni to zrobili?”, tyle razy możemy odpowiedzieć: „Nie mam pojęcia, ale za chwilę zajrzę do środka filmu i już będę wiedział”. Najlepsi animatorzy udostępnili nam bowiem całą swoją pracę, byśmy mogli rozwijać nasz własny warsztat niejako pod ich okiem.
Jak w przypadku historyjki o Kowalskim i Nowaku, tak i tutaj wymiar edukacyjny powinien funkcjonować na planie pierwszym. Open source to nie tylko możliwość dostosowania oprogramowania do własnych potrzeb, lecz przede wszystkim możliwość uczenia się od osób bardziej zaawansowanych od nas. To ta cecha właśnie stanowi o radykalnej zmianie perspektywy, jaką oferuje ruch open source. Klasyczne powiedzenie: „skończył studia, zawodu nauczył się w pracy” znajduje tutaj swoje odbicie – dzięki możliwości uczenia się bezpośrednio z prac doświadczonych programistów, architektów, animatorów, wiedza nie jest oddalona od zawodowej praktyki danej dziedziny. Ja sam jestem programistą samoukiem – wiem, ile zawdzięczam otwartym źródłom!
Ten artykuł jest dostępny w wersji angielskiej na Biweekly.pl.