piątek, 18 lutego 2011

Ile kosztuje Linux?

Jak się czujesz, wiedząc, że potencjalnie miliardy dolarów bogactwa są zarabiane dzięki twojemu tworowi, a nic z tego nie zarabiasz?
- Gdybym nie udostępnił Linuksa, również nie otrzymałbym żadnych pieniędzy. Więc mam na myśli, że jest to sytuacja typu zwycięstwo-zwycięstwo. Sam fakt, że jest mnóstwo komercyjnych spółek, oznacza, że jest mnóstwo ludzi, którzy pracują nad Linuksem teraz są opłacani za to, co chcą robić. I czuję się z tym dobrze, bo chciałem, żeby oni pracowali nad Linuksem.
Powyższa odpowiedź należy do bardzo skromnego człowieka, który stworzył jeden z najlepszych projektów Wolnego Oprogramowania, czyli jądro Linuksa. My jednak zacznijmy od historii innego wielkiego programisty, czyli R.M. Stallmana.


Żeby dokładnie zrozumieć czym jest Wolne Oprogramowanie trzeba sięgnąć do jego źródeł, a raczej do początku idei jego powstania. Otwarty kod nie jest jakimś nowym wynalazkiem, na początku wszystkie programy i sterowniki były wolne. Sytuacja dziś nie do pomyślenia, kiedyś stanowiła podstawę rozwoju IT. Po prostu komputery stały głównie na uniwersytetach i tam były prowadzone doświadczenia nad ich rozwojem. Prace, czyli kod programów, który został wypracowany przez jednych był brany przez następny rocznik studentów i dalej rozwijany. Sytuacja zmieniła się gdy komputery dojrzały na tyle, że zainteresowali się ich rozwojem i wdrażaniem przedsiębiorstwa. Niestety konkurencja doprowadziła do tego, że chcąc mieć lepszy sprzęt trzeba było chronić tajemnicę jego kodu przed innymi.


Jak wspomina Stallman. Znalazł się on kiedyś w sytuacji, gdy pracując nad jakimś projektem potrzebował sterowników do pewnego urządzenia. Sterowniki te były wadliwe i Stallman poprosił firmę, która je udostępniła o ich kod w celu poprawienia błędu. Firma jednak stwierdziła, że owszem udostępni taki kod jeśli Stallman podpisze licencje, która zobowiązuje go do nieudostępniania go innym. Zauważyliście już paranoję tej sytuacji. Stallman miałby udostępnić własne poprawki, ale sam nie byłby już ich właścicielem, któremu przysługuje przecież prawo do udostępniania efektów pracy komu chce. Co więcej firmy, które tak zazdrośnie strzegą SWOJEGO kodu, jeszcze nie tak dawno korzystały z zasobów uniwersyteckich. Wolne Oprogramowanie nie powstało więc, wprowadzić konkurencję dla zamkniętych programów. Ono powstało by ochronić te resztki kodu, które jeszcze kiedyś były udziałem całej ludzkości. A nie ma lepszego sposobu, aby tego dokonać jak rozdać go pomiędzy wszystkich.

Wbrew temu co o projekcie Stallmana sądzili inni uczestnicy rynku, zyskał on wielu zwolenników, zwłaszcza na uniwersytetach amerykańskich, gdzie studenci docenili możliwość korzystania bez ograniczeń z kodu, w zamian pozostawiając na uniwersytetach swoje prace, które i tak tam by zostały. Krótko mówiąc dzielimy się swoją wiedzą z innymi, którzy wykorzystują tę wiedzę do kreowania nowych projektów naukowych.

Wolne Oprogramowanie rozwijało się więc w zdrowym rytmie i zyskiwało nowych zwolenników, którzy dokładali swoje linijki kodu. Niestety wciąż brakowało tego elementu, który by połączył wszystkie rozproszone elementy w jedną całość. Doprowadziło to do sytuacji, w której otwarte programy były popularne na platformach, których system nie był otwarty. I tu pojawia się nasz bohater z początku artykułu, czyli Linus Torvalds. Linus, kiedy postanowił utworzyć swój system był już świadom wielkości jaką jest GNU i sam twierdził, że jego praca jest tylko hobbystycznym projektem. Czym jest system. System tłumaczy na zrozumiały dla programistów zapis cyfrowy komunikaty pomiędzy maszyną, a programami i użytkownikiem. Stanowi jądro całego projektu. System nie jest więc zestawem oprogramowania. Jest elementem, który pomaga komunikację pomiędzy tymi programami. Zestaw oprogramowania, wraz z użytą wersją jądra nazywamy dystrybucją, czyli sposobem rozpowszechniania systemu. Aby dokładnie poznać czym jest dystrybucją trzeba zapoznać się z jeszcze z dwoma innymi pojęciami mającymi wpływ na kształt tego systemu jaki znamy obecnie.


Linux stawał się coraz popularniejszy na amerykańskich uniwersytetach. Trzeba zrozumieć fakt, że wtedy Windowsa nie był jeszcze wtedy tak popularny, a większość badań odbywało się na Uniksach i BSD (który też jest Uniksem). Linux wprowadził nową jakość. Był szybki, stabilny i bezpieczny. Zyskał także uznanie wśród zwykłych studentów, którzy potrzebowali komputerów niekoniecznie do nauki informatyki. Fani tego systemu zaczęli gromadzić się w grupach zwanych Linux User Group (LUG). Były to specyficzne twory, które gromadziły w różnych miejscach użytkowników Linuksa, gdzie można było wymieniać się doświadczeniami i przede wszystkim pomóc zainstalować i skonfigurować Linuksa początkującym użytkownikom. Zauważcie, że nadal nie rozmawiamy o żadnej dystrybucji. Po prostu system był jeden. Kolega kompilował ci jądro, doinstalowywał potrzebne ci oprogramowanie. System był więc dostosowany do konkretnego użytkownika. Był pozbawiony niepotrzebnych mu rzeczy. Był praktycznie doskonały. LUG istnieją do dziś (także w Polsce), ale założę się że niewiele osób o nich wie. Stanowią podstawę społeczności Linuksowej, która powoli zaczyna ulegać rozkładowi wraz z coraz bardziej "dopracowanymi" dystrybucjami. Zasada jest prosta im bardziej wymagająca od użytkownika dystrybucja, tym ma większą i bardziej skorą do pomocy społeczność.

Ale zajmijmy się naszymi dystrybucjami. Podstawą do powstania takich tworów była Definicja Open Source. Pojęcie Free Software wykreowane przez Stallmana nie było rozumiane w takiej istocie w jakiej zostało stworzone. A jego definicja była bardzo prosta. Wszystko co jest stworzone jako Wolne Oprogramowanie takim pozostaje i to co utworzysz przy jego pomocy także ma takie pozostać. Logika tej definicji była niepodważalna i właściwie według niej można było albo przyłączać się Ruchu Wolnego Oprogramowania, albo być przeciwko. Natomiast według autorów Definicji Open Source, Free Software miało poważną wadę - nie mogło zaistnieć na rynku. Po pierwsze nazwa, która kojarzyła się z darmowymi programikami pisanymi "na kolanie" (stąd zmiana na Open Source - otwarte źródła), po drugie Free Software nie uznawało istnienia obok siebie zamkniętych odpowiedników właśnie z definicji. Albo idziemy z Ruchem Wolnego Oprogramowania albo przeciwko niemu i uznajemy kompromisy. Stallman sprzeciwił się takiemu pojmowaniu Wolnego Oprogramowania. Według niego pójście na kompromis to jednocześnie przystopowanie rozwoju wolnych odpowiedników. W konsekwencji użytkownik dostanie produkt, który będzie wybrakowany, ponieważ oprogramowanie, które nie miało odpowiedników w wersji free zostanie zamienione przez zamknięte odpowiedniki. W ten sposób powstanie takiego odpowiednika stanie się mało ważne, a samo otwarte oprogramowanie użyte w systemie pozostanie niekompletne i narazi się na jeszcze większą krytykę. No bo po co ktoś mi wciska niekompletny program skoro i tak muszę z nim używać tych zamkniętych, które go uzupełniają. Stallman był zwolennikiem szukania rynku wśród osób, które uznają że ten system jest już w pełni kompletny, a braki mogą sami uzupełnić własnym kodem i w ten sposób wpływać na jego rozwój.

Rewolucja niestety już się rozpoczęła. Pierwszą firmą, która zaliczyła sukces z Linuksem był Red Hat. RH jest modelowym przykładem amerykańskiego snu. Grupa entuzjastów Linuksa postanowiła stworzyć dystrybucję serwerową dzięki której firmy będą mogły zastosować u siebie technologię Apache i inne otwarte rozwiązania. Rozwiązania Red Hata były tanie, bezpieczne i wbrew pozorom bardzo proste. Wkrótce Red Hat ląduje na giełdzie i w krótkim czasie cena jego akcji wzrasta o 300%. Firma osiąga taki sukces, że sama zaczyna dostarczać własne oprogramowanie Open Source, które uzupełnia rynek Linuksa.

Za przykładem Red Hata na rynku zaczynają się pojawiać podobne rozwiązania. Część z nich skierowana jest na rynek desktopowy. Powód jest prosty, nawet jeśli domowy użytkownik nie zakupi naszych rozwiązań to za darmo przetestuje to co dostarczymy na rynek biznesowy. Dystrybucje oferujące gotowe rozwiązania sprawiły natomiast, że jądro zaczęło strasznie tyć. To, że kiedyś można było w ramach własnoręcznej kompilacji dostosować jego prędkość do własnych potrzeb nie sprawdza się dla wszystkich użytkowników. Niektórzy wolą wolniejszy system, ale który zadziała od razu. Podobnie jest zresztą z doborem programów. Użytkownicy stali się bardzo leniwi i nawet ta część systemu jest często krytykowana, pomimo że użytkownik sam w kilku ruchach mógłby naprawić ten problem.

Krótko mówiąc coś co kiedyś stanowiło doskonałość trafiło w ręce najzagorzalszych krytyków, czyli tych, którzy się w ogóle nie znają na systemie, a najwięcej od niego wymagają. Darmowa pomoc w postaci LUG, czyli społeczności zwykłych użytkowników jest wypierana przez gotowe rozwiązania dystrybutorów, które są tylko panaceum na prawdziwe problemy. Linux zagościł także na rynku komercyjnym. Użytkownicy zaczęli głośno żądać od dystrybutorów zamkniętego oprogramowania bo według nich otwarte odpowiedniki nie spełniają ich potrzeb. Krótko mówiąc Linux stał się w oczach innych takim poprawionym Windowsem, który ma tę wadę, że to co dobrze działa na Windowsie nie działa na Linuksie. Nikt nie dostrzega zależności, że Linux dobrze działa, bo jest pozbawiony właśnie tego co sprawia, że Windows jest łatwiejszy w obsłudze dla przeciętnego użytkownika.

Główną cechą dystrybucji jest umożliwienie łatwej instalacji oprogramowania. Jednak spaczkowanie źródeł jest jednocześnie podstawową różnicą jaka powstaje pomiędzy dystrybucjami, która powoduje zróżnicowanie w świecie Linuksa. Tak naprawdę system jest jeden, jak zresztą to już wielokrotnie tu wspomniałem. Dystrybucje różnią się pomiędzy sobą sposobem paczkowania źródeł, użytą wersją jądra, patchami nałożonymi na te jądro i doborem oprogramowania. Jednak źródło z jakiego powstaje te całe oprogramowanie jest takie same, więc zasadniczo po małych poprawkach każda dystrybucja może mieć u siebie to co jest dostępne u konkurencji. Jakie więc są różnice pomiędzy dystrybucjami?

Cały czas powtarzam, że dystrybucje nie powstały po to, żeby poprawiać kod Linuksa. One powstały po to, żeby ułatwić jego instalację i konfigurację mniej doświadczonym użytkownikom. To, że deweloperzy tych dystrybucji wprowadzają jakieś poprawki do oprogramowania i jądra jest wynikiem działania, żeby poprawione oprogramowanie było właśnie łatwiejsze w instalacji i konfiguracji. Najwięcej jednak pracy deweloperów poświęcone jest narzędziom właściwym danej dystrybucji związanych z instalacją pakietów i konfiguracją poszczególnych elementów środowiska zastosowanego w dystrybucji. Zarzuty wobec dystrybucji, że nie dba o współpracę ze sprzętem, stabilność środowiska i wiele innych elementów są bezpodstawne. Rolą dystrybutora jest dostarczyć użytkownikowi skonfigurowanego Linuksa, podobnie jak kiedyś robili to członkowie LUG, pomagając im go dostosować do własnych potrzeb. Problem w tym, że tak się nie da.

"Jeszcze się taki nie urodził, co by wszystkim dogodził". Tak samo jest z dystrybucją. Nie można stworzyć jednej dystrybucji, która będzie spełniała potrzeby wszystkich użytkowników. Przykładem może być choćby preferowane środowisko graficzne. Można oczywiście dostarczyć możliwość wyboru środowiska w instalatorze systemu, ale takich specyficznych różnic jest pomiędzy użytkownikami znacznie więcej, wobec czego instalator obładowany wszystkimi możliwościami wyborów dla użytkowników, byłby zaprzeczeniem swojej idei, czyli prostoty instalacji systemu. Druga sprawa to kwestia obsługi sprzętu. Jądro Ubuntu jest obecnie jednym z najlepszych pod tym względem. Posiada ono wiele patchy, także tych niekoniecznie związanych z zastosowaniem tylko otwartego firmware, które umożliwiają poprawne wykrycie sporej ilości sprzętu. Problem w tym, że takie jądro jest jednocześnie jednym z najcięższych co ma wpływ na optymalne działanie systemu. A my chcemy aby system wykrywał tylko sprzęt na którym my pracujemy. Krótko mówiąc im trudniejsza w obsłudze dystrybucja i pełne korzystanie z zalet kompilacji, tym lepiej działający system, bo jądro czyta tylko te usługi które są potrzebne do obsługi tylko naszego sprzętu.

Przeciwnicy kompilacji jądra zaraz zwrócą uwagę, że takie podejście jest zbyt czasochłonne. Zwolennicy tego rozwiązania stwierdzą jednak, że w przeciwieństwie do fanów Ubuntu nie widzą oni potrzeby przeinstalowania systemu co pół roku, a sama kompilacja po jakimś czasie prób staje się coraz prostsza nawet dla początkującego użytkownika. Postęp jednak kosztuje. Dystrybucja niszczy życie społeczne. To nie jest herezja. Wystarczy spojrzeć na materiały dostępne w internecie dotyczące trudniejszych dystrybucji i porównać je z tymi dla początkującego użytkownika. Użytkownik Ubuntu prędzej znajdzie pomoc na forum Debiana, który jest dystrybucją bardziej wymagającą pod względem konfiguracji systemu. Wiki Gentoo, czy Archa nawet nie ma co porównywać do analogicznego tworu dla Ubuntu, dla którego taka pomoc nie należy do popularnych. Z tego względu najwięcej narzekań jest właśnie na dystrybucje "proste". Przyciągają one użytkowników bardziej leniwych i więcej wymagających od systemu pod względem usuality. Problem w tym, że dystrybucje opierające się na wolnym oprogramowaniu nie maja środków, żeby taką pomoc dostarczyć wszystkim użytkownikom i nieuchronnie prowadzi to do wprowadzenia opłat.

Stallman kiedyś zasugerował, że użytkownicy potrzebujący od systemu wygody użytkowania, muszą liczyć się z wpływem na ich prywatność i deprecjację otwartych rozwiązań w systemie kosztem zamkniętych odpowiedników. Można także mówić o wprowadzeniu opłat za niektóre usługi. Problem w tym, że prowadzi to do zamykania coraz większej ilości usług (w miarę zresztą rozwoju popularności dystrybucji), których ochrona jest wymogiem, aby móc w ogóle coś zarobić.

Pojawia się jednak pytanie: czy uczciwe jest pobieranie opłat za coś co inni dostarczają za darmo? W gruncie rzeczy nic nie stoi na przeszkodzie. Licencja nie reguluje w ogóle kwestii opłat za programy. Po prostu twórca aplikacji ma pełne prawa do ich sprzedaży ale musi także udostępnić źródła, z których można zainstalować za darmo ten sam program. Problem pojawia się, gdy użytkownik nie potrafi poradzić sobie z kompilacją źródeł, tu potrzebna mu jest pomoc i wtedy ktoś może zażądać od niego opłaty za pomoc (serwis) w tej kwestii. Użytkownik musi się więc przygotować na to, że im bardziej wygodny system chce posiadać (dla bardziej leniwych) tym bardziej musi się liczyć na to, że będą przed nim zamykane walory wolnego oprogramowania.

Jak widać zalety finansowania Wolnego Oprogramowania, które sprawiają, że sięga po nie coraz więcej osób, wcale nie muszą być takie wymierne. Na pewno deweloperzy takich programów są wdzięczni firmom Red Hat, czy Canonical za każdy serwer lub finansowanie konferencji. Przeciwnicy takich rozwiązań twierdzą jednak, że deweloperzy nie potrzebują pośredników, a pieniądze użytkownik może im przesłać klikając na przycisk Donate na stronie projektu. Drugą kwestia są kłopoty finansowe wielu projektów opierających się na finansowaniu usług, co było przyczyną problemów i zagrożeniem upadkiem już kilku dystrybucji. Podaje się też często przykład dystrybucji opartych na pracy społeczności jako bardziej stabilne i nie zagrożone upadkiem projekty, które dzięki pracy wielu wolontariuszy, często potrafią więcej dołożyć do rozwoju wolnego oprogramowania niż te opierające się na pracy etatowych pracowników.

Jak zapewne niektórzy zauważyli artykuł jest wynikiem moich skromnych dyskusji z niektórymi użytkownikami na łamach Ubucentrum.net. Osoby śledzące tę dyskusję zauważą także, że niektóre z moich wcześniejszych poglądów uległy zmianie. Jestem dość uległy wobec racjonalnych poglądów. Nadal jednak twierdzę, ze promocja Linuksa na takich samych zasadach jak projekty komercyjne wcale nie musi się skończyć jego sukcesem, ani tym bardziej rozwojem Wolnego Oprogramowania jest natomiast świetnym bodźcem stymulującym jego rozwój. Nikt nie powiedział, że Linux powstał aby pokonać Windows. Wiele osób zauważy, że oba projekty mogą się od siebie wiele nauczyć. Windows jest zresztą projektem o wiele młodszym niż Wolne Oprogramowanie, więc warto najpierw zapoznać się w ogóle dlaczego takowe powstało i jakie są jego cele zanim się wyda jakąkolwiek opinię o jego działaniu. Warto także się zastanowić, czy winą za wadliwe działanie dystrybucji nie powinno się obarczyć naszego lenistwa i niechęci do nauki nowych rzeczy. Nikt nie stworzy dystrybucji idealnej, chyba że sami dostosujemy ją do swoich potrzeb, a nie będziemy liczyli na to, że ktoś zrobi to za nas.