wtorek, 24 maja 2011

Czy Linux jest popularny?

Kiedyś zastanawiałem się co by było, gdyby Microsoft użył jądra Linuksa w Windowsie. Teoretycznie nic nie stałoby na drodze do takiego kroku. Microsoft mógłby nawet dodać do niego zamknięte moduły i sterowniki, bo licencja na to pozwala. Microsoft mógłby nawet pobierać opłaty za produkt oparty na Linuksie i nikt by nie miał nic przeciwko temu. Dlaczego więc nadal używa dziurawego i zamulonego jądra Visty? Odpowiedź jest prosta: Microsoft używając takiego jądra zmuszony byłby do jego rozwoju i co najgorsze dla tej firmy - dzieleniem się efektami swych prac, bo taka jest Licencja!

Dziś Linuksowi zarzuca się, że ma za dużo dystrybucji, że nie wspierają go producenci sprzętu, że nie ma na niego CADa i Photoshopa i wiele innych rzeczy, które sprawiają, że nie jest popularny. Pojawia się tylko, czy tak naprawdę Linux jest mało popularny? Pomijając więc różne statystyki, który z systemów komputerowych może pochwalić się taką liczbą programistów? Dziś samo jądro Linuksa otrzymuje uwagi od tysięcy programistów z całego świata, a gdzie jeszcze ci, którzy pracują nad innymi sektorami oprogramowania GNU. Właściwie Windows znajduje się w klubie szczęśliwców, ludzie płacą niezłe sumki na utrzymanie sztabu sprzedawców, sekretarek, marketingowców i zapewne tych, którzy czerpią z działalności Microsoftu najwięcej, czyli udziałowców. Zapewne sporo z tej kwoty pozostaje dla samych programistów. Pytanie tylko o ile praca dla Microsoftu jest bardziej opłacalna dla programisty niż w Oracle, czy Novelu. Nie ma oczywiście oficjalnych statystyk na ten temat, ale nawet jeśli ktoś by mi zapłacił więcej za jakąś pracę to, czy takim sposobem motywacji wzrośnie mój talent w dziedzinie informatyki i nagle stworzę rewolucyjny program, za kilka dolarów więcej.

Właściwe można by zapytać Linusa ile oczekiwał dostać wynagrodzenia za rok pracy nad jednym z najbardziej rewolucyjnych rozwiązań informatycznych w ostatnich latach, czyli nad jądrem Linuksa. Nie wiem ile oczekiwał ale zaraz po jego stworzeniu oddał swe dzieło społeczności i pozwolił na używanie w praktycznie każdym celu, także wspomnianemu w pierwszym akapicie Microsoftowi.

Wiele osób uważa jednak, że popularność wolnego oprogramowania zaczęła się właśnie od samego jądra Linuksa. W rzeczywistości świat GNU był już wtedy tak potężny, że nawet Linus Torvalds oddał mu hołd określając Linuksa: " To tylko hobby, nie będzie wielki i profesjonalny jak GNU". I zapewne ucieszył się z propozycji dołączenia do tego środowiska, które obecnie pomogło mu się rozwinąć.Co więc doprowadziło GNU do takiego kształtu i takiej opinii od jednego z najlepszych programistów? Odpowiedź jest prosta: obecność na innych systemach operacyjnych. W czasach kiedy jeszcze nie było Linuksa (Windowsa zresztą też) różne programy GNU były już obecne na różnych Uniksach. 

W zasadzie chciałbym jednak dziś rozpocząć dyskusję na temat mitów jakie się ostatnio pojawiły w sieci, a które sugeruję, że tylko zdobycie popularności gwarantuje mu rozwój. Zważywszy na  to w jakim stanie zastajemy w obecnym momencie ten system sugerujemy, że osiągnięcie przez niego 99% udziału w rynku pozwoli stworzyć z niego system przyszłości, który nie będzie potrzebował użytkownika :) . Dlaczego jednak takim systemem nie może być Windows przy obecnym udziale w rynku OSów? Myślę, że czas na konfrontację niektórych takich mitów. Podkreślam jednak, że nie jestem nieomylny i liczę na dyskusję, która nie tyle mnie przekona do innego zdania co wykaże nieścisłości w różnych sposobach pojmowania promocji Linuksa.

Mit 1. Dystrybucja jest systemem



Pierwsze dystrybucje powstały już kilka lat po premierze jądra Linux. Można by zapytać więc, w jaki sposób wcześniej instalowało się Linuksa? Przecież logiczny jest, że w takiej sytuacji po instalacji Linuksa ze źródeł otrzymamy gotowy system, czyli dystrybucję. Każdy więc kto dokonał tej sztuki stworzył własną dystrybucję i były one już obecne w pierwszych latach po udostępnieniu jądra, a nie jak się sądzi dopiero dwa lata po tym wydarzeniu. 


Oczywiście takie myślenie jest błędne. O dystrybucji można mówić wtedy, kiedy występują różnice w sposobie dostarczania systemu użytkownikowi. Oczywiście można to zrobić udostępniając mu źródła komponentów systemu i oprogramowania, ale lepiej ułatwić sprawę tworząc system rozpowszechniania tych pakietów poprzez repozytoria i pakiety. Dopiero ten element wyróżnia różne Linuksy od siebie. 


Czym więc jest system? Mówienie, że Linux to jądro jest nieścisłe. Jeśli przyjmiemy, że Linux to system to oprócz jądra będziemy jeszcze potrzebować, kompilatora, powłoki systemowej i innych narzędzi wspomagających procesy sytemu. Sam system odpowiada za komunikację pomiędzy programami i pomiędzy programami, a użytkownikiem. Klucz do różnicy pomiędzy dystrybucjami tkwi więc w doborze oprogramowania. O ile jądra nie można zmienić bo jest w dystrybucjach te same (może w nowszej wersji) to inne komponenty już tak (np. moduły jądra, które je uzupełniają). Oczywiście takich komponentów użytkownik nie używa bezpośrednio, więc różnice pomiędzy dystrybucjami dostrzega dopiero w różnicy pomiędzy programami nie związanymi bezpośrednio z systemem (np. desktopowe). 


Dystrybutor musi więc dostarczyć domyślny zestaw programów, sposób na zainstalowanie reszty oprogramowania i stworzyć narzędzia ułatwiające te operacje. Co więc dystrybutor ma do jakości GIMPa? Niewiele! Może jednak mieć jeśli osoba pracująca wcześniej nad GIMPem podejmie się także pracy nad jakimś narzędziem dla dystrybutora (niebezpośrednio ale jakiś związek jest). Może zaistnieć także potrzeba integracji programu z jakimś narzędziem dystrybucji (dock, sklep internetowy), wtedy wpływ dystrybutora jest już większy nadal jest to jednak praca w ramach FLOSS, więc może być dostępna także dla innych dystrybucji.


Granica pomiędzy różnymi dystrybucjami jest więc znikoma, ponieważ mogą one korzystać z tych samych komponentów (klocków) jednak wizja ostatecznego kształtu tego co wybudujemy wokół systemu zależy już od dystrybutora. Jest to ważne o tyle, że ostateczny kształt dystrybucji nie musi wcale odpowiadać użytkownikowi i dość często tak się zdarza. Użytkownikowi mogą jednak przypaść do gustu inne elementy dystrybucji (np. menedżer pakietów), powinien więc mieć on możliwość zmiany elementów na mu odpowiadające i tak naprawdę stworzyć własną dystrybucję, poprzez zmianę domyślnego oprogramowania, albo ściślej forka i większość użytkowników tak czyni choć nie ma takiej świadomości (tak naprawdę większość polskich użytkowników Ubuntu, po krótkiej konfiguracji, ma dystrybucję bardziej przypominającą Minta niż domyślne Ubuntu).

Na zakończenie dodam, że Windows też posiada swoje dystrybucje (desktop, serwer, netbook), które różnią się pomiędzy sobą doborem oprogramowania (netbook nie korzysta z Aero) choć są one zbudowane wokół jednego systemu (jądra i jego komponentów) i kompatybilne pomiędzy sobą. Tak samo jak w wersji desktop tak i w netbook zainstalujemy Firefoksa z tej samej instalki.


I tu dochodzimy do kolejnego mitu...


Mit 2.  Dystrybucji jest za dużo!


W zasadzie ktoś kto przeczytał poprzedni rozdział (i zrozumie go) wie, że dystrybucji nigdy za dużo. Nawet Microsoft przyznał, że nie można stworzyć dystrybucji do wszystkiego, dlatego różne edycje Windowsa. Dlaczego więc powinna istnieć tylko jedna dystrybucja?


Pierwszy powód to taki, że producenci nie chcą tworzyć programów programów dla Linuksa bo istnieje zbyt wiele formatów paczek. Bzdura! Wystarczy, że udostępnią źródła, a każdy dystrybutor sam zadba o rozpowszechnianie programu. Nawet jeśli ktoś nie chce udostępnić źródeł programu istnieje jeszcze format BIN, który jest odczytywany przez większość dystrybucji. To samo dotyczy sterowników. Nie są one zależne od dystrybucji tylko od jądra, którego i tak zazwyczaj używa się w najnowszej wersji. Różnice pomiędzy jądrami różnych dystrybucji występują głównie na poziomie dołączonych modułów, czyli ... sterowników.


Inny powód to niby wolniejszy rozwój Linuksa i jego oprogramowania. Bzdura! Żaden deweloper nie jest w stanie zatrudnić milionów programistów pracujących dla FLOSS. Nawet gdyby zgodzili się oni pracować za darmo dla jednego projektu to nikt nie byłby w stanie kontrolować wszystkich programów. Prace i tak musiałby więc być przeniesione do bardziej rozproszonej struktury (GIT, SVN). No chyba, ze ktoś uważa że dla Linuksa najlepszym rozwiązaniem jest jedno środowisko, jeden odtwarzacz, jeden komunikator itp. Tylko, że znowu zapominamy, że deweloperzy pracują nad swoimi programami społecznie i z własnej woli, a w ten sposób narzucimy im pracę nad kodem, którego nie uważają za słuszny i to za darmo. Oczywiście w ten sposób łamiemy podstawową zasadę wolności, bo zabraniami tworzyć dla Linuksa innych rozwiązań, czyli de facto ograniczamy jego rozwój!


Trzeci powód to standaryzacja. Tylko, że w efekcie równoznaczne jest to monopolowi. Nie standaryzacja sama w sobie, bo jej podstawą jest właśnie otwartość. Powtarzam: sztuczne narzucanie standardów prowadzi do monopolu, ideą standaryzacji jest więc to żeby każdy mógł korzystać z tego co akurat mu jest potrzebne. 


Efektem takiego myślenia jest, moim zdaniem, niedawno wydane GNOME 3. Deweloperzy uważają, że powinno się ograniczyć ingerencję w podstawowe elementy pulpitu, aby skupić się na rozwoju innych elementów. Bzdura! Po prostu GNOME pozbyło się w ten sposób całego eksperymentalnego środowiska pomysłów brianstormowych sugerowanych przez samych użytkowników. Teraz dyskutują oni nad tym jak przywrócić elementy z poprzedniej wersji środowiska zamiast wymyślać już nowe pomysły na ulepszenie środowiska. Masa ciekawych docków dla GNOME przestała mieć rację bytu w GNOME Shell ponieważ deweloperzy postawili na własne rozwiązanie, w dodatku wyjątkowo niedopracowane. Deweloperzy będą więc teraz tracić czas na dopracowywanie tego elementu zamiast pozwolić na to społeczności, która ma już gotowe rozwiązania, a zająć się bardziej istotnymi dla środowiska rzeczami. 

Już Microsoft przekonał się, że nie można stworzyć zestawu oprogramowania działającego na każdym sprzęcie. Na początek są to straty podczas premiery netbooków na rynku, które teraz zostają odrabiane sprzedając na nie system poniżej ceny rynkowej. Teraz mamy głęboki kryzys Microsoftu na smartfonach i oddanie udziałów na rynku przez brak interfejsu systemu w odpowiednim czasie i na koniec całkowity brak propozycji dla tabletów, podczas gdy Apple wydaje już drugą generację tabletów, a Android powoli zapisuje się w umysłach użytkowników i na tym polu. 

Ograniczenia w liczbie dystrybucji nie mają więc sensu, ponieważ deweloper, który podjąłby się takiego czegoś i tak musiałby działać na kilku polach sam dostarczając kilka odłamów tego samego systemu na "różne okazje". Takie działanie miałoby wyłącznie sukces marketingowy, lecz na pewno nie wpłynęłoby na jakość kodu systemu. Canonical nie promuje więc Linuksa, a tym bardziej GNU, oni po prostu promują Ubuntu. Użytkownik nie używa Linuksa, tylko używa oprogramowania, które działa przy pomocy jądra Linuksa. Używa więc zestawu oprogramowania dobranego przez Ubuntu i nieważne czy jest to GNU, czy oprogramowanie własnościowe. Linux nie ma nic do tego tak samo jak nie ma wpływu na to jakiego oprogramowania użyłby Microsoft w hipotetycznie stworzonym Windowsie na bazie jądra Linuksa. I tak samo jak nie ma wpływu na dobór oprogramowania w Androidzie, który też bazuje na Linuksie. Ale o tym opowiem podczas demitologizowania innych bredni o zwiększeniu popularności Linuksa.


W następnym odcinku Photoshop i inni...