Drzewo genealogiczne Linuksa albo historia Uniksa zwięźle opowiedziana.
23.03.2010 | aktual.: 23.03.2010 16:07
Historia jest często kluczem do zrozumienia zjawisk, również w dziedzinie informatyki. Poznanie kontekstu historycznego pomaga zrozumieć dlaczego społeczność Uniksowa wygląda w drugiej dekadzie XXI wieku, tak jak wygląda. George Santayana powiedział niegdyś: Ci, którzy nie pamiętają przeszłości, są skazani na jej powtarzanie. Być może sentencja ta była inspiracją dla usenetowej sygnatury Henriego Spencera (jednego z czołowych programistów Uniksa): Ci, którzy nie rozumieją Uniksa są skazani na wymyślanie go od nowa. Gorzej.
Patriarchą rodu, z którego wywodzi się Unix był mały i prosty system CTTS – Compatibile Time Sharing System. W zależności od przyjętej definicji był to pierwszy lub drugi system operacyjny z podziałem czasu. Po jego upowszechnieniu powstał projekt stworzenia wielofunkcyjnego narzędzia informacyjnego, które miałoby umożliwiać efektywne dzielenie czasu superkomputerów pomiędzy wieloma użytkownikami. Tak narodził się Multics. Niestety, dotknął go tzw. Syndrom Drugiego Systemu – próba dodania wszystkiego czego brakowało pierwowzorowi i w efekcie stworzenie przeładowanego narzędzia, które załamuje się pod własnym ciężarem. Na jego zgliszczach narodził się Unix.
Unix został stworzony w roku 1969 w laboratorium Bella przez Kena Thompsona. Był on jednym z uczestników projektu Multics, co wyraźnie go inspirowało przy pisaniu Uniksa. Trzeba pamiętać, że w tamtych czasach moc obliczeniowa komputerów była dużo mniejsza od współczesnych telefonów komórkowych. Terminale graficzne były spotykane jedynie gdzieniegdzie, upowszechniły się na dobrą sprawę dopiero w połowie lat siedemdziesiątych. Sama idea współdzielenia czasu procesora była w informatyce względnie nowa, przeważnie stosowano mechanizmy przetwarzania wsadowego.
Ken Thompson po upadku Multicsa pozostał z kilkoma pomysłami dotyczącymi projektowania systemów operacyjnych (przede wszystkim konstrukcji systemu plików) oraz projektem gry Space Travel. Jak wspomina pierwszy współpracownik Thompsona Dennis Ritchie (twórca języka C) on sam, Thompson, Doug McIllroy (wynalazca potoków) i ich koledzy przyzwyczaili się do dzielenia czasu procesora i nie chcieli tracić tej możliwości. Unix (pisany na maszynę PDP‑7) był dla nich "kołem ratunkowym". Sama nazwa systemu – początkowo UNICS (Uniplexed Information and Computing Service) – była wg. Ritchiego "nieco zdradliwym przeinaczeniem słowa MULTICS (Multiplexed Information and Computing Service). Już na samym początku związana była z nim tradycja programowania nieformalnego. Dla porównania: Multics był projektem, którego sama specyfikacja zajmowała tysiące stron napisanych jeszcze przed stworzeniem maszyny zdolnej go obsłużyć. Pierwotny kod Uniksa został wymyślony przez trzy osoby i zaimplementowany przez Thompsona w ciągu dwóch dni na przestarzałej maszynie (PDP-7 miał być tylko terminalem graficznym dla prawdziwego komputera).
Na początku lat siedemdziesiątych Dennis Ritchie stworzył język programowania C, który dość szybko się upowszechnił i został znaturalizowany również w nie‑uniksowych środowiskach. Thompson podjął decyzję o przepisaniu kodu Uniksa w nowym języku. Była to decyzja, która zapewniła Uniksowi przetrwanie mimo ogromu przemian, które dokonały się w przeciągu następnych kilkudziesięciu lat. Systemy operacyjne projektowano głównie w asemblerze, żeby osiągnąć maksimum wydajności sprzętowej. Unix był pierwszym systemem napisanym w języku wysokopoziomowym, co zapewniało jego przenośność. Po przedstawieniu Uniksa światu w roku 1974 różne laboratoria i uniwersytety prosiły o możliwość przetestowania nowego systemu na własną rękę. Ken Thompson wysyłał każdemu proszącemu nośniki danych zawierające kod systemu.
Prawdopodobnie najważniejszym miejscem, do którego trafił Unix był Uniwersytet Kalifornijski w Berkeley. Opracowano tam dziesiątki narzędzi, między innymi nową powłokę systemową. Znacznie bardziej istotne, jest to, że kod źródłowy Uniksa tworzonego na tym uniwersytecie był wolny i niezastrzeżony. Przesądziło to o wyborze dokonanym przez Rządową Agencję Zaawansowanych Projektów Badawczych Departamentu Obrony (DARPA), żeby nowy protokół sieciowy TCP/IP opracować na platformie Berkeley Unix. Jak zauważa Eric Raymond: "Zespół Computer Sience Reserch Group w Berkeley znalazł się we właściwym czasie we właściwym miejscu i był wyposażony najpotężniejsze narzędzia programistyczne; wyniki jego prac stanowiły prawdopodobnie najważniejszy punkt zwrotny w historii Uniksa od momentu jego powstania. Oprócz konsekwencji ściśle technologicznych protokół TCP/IP miał bardzo poważne konsekwencje kulturowe. Dwie, do tej pory oddzielne kultury technologiczne: uniksowa i internetdowa, zaczęły się przenikać, co znacznie je wzmocniło w obliczu nadchodzących zmian.
Lata osiemdziesiąte były bardzo brzemienne w wydarzenia, ale ponieważ ma to być historia Uniksa zwięźle opowiedziana, ograniczę się do hasłowego sprawozdania: rosnący monopol IMB, powstanie Microsoft, C++, mikrokomputery, procesor 386. Bardzo ważnym wydarzenie była druga rozprawa anty trustowa pomiędzy rządem USA i AT&T. Jej skutkiem było m.in. oddzielenie od tej firmy Bell System, co umożliwiło przemianę Uniksa w produkt komercyjny, co omal nie wyeliminowało go z rynku. Stopniowo ograniczano wolność kodu źródłowego systemu, a chcąc odnieść sukces finansowy poszczególne firmy starały się jak najbardziej zróżnicować swoje wersje systemu. Rozdrobniono w ten sposób rynek uniksowy i zniszczono jego czołową zaletę – przenośność między-platformową. Kolejnym wielkim błędem firm traktujących Uniksa jako produkt komercyjny (głównie Sun Microsystems) było całkowite zignorowanie rynku komputerów osobistych. W tym czasie społeczność Uniksowa była zajęta Wojnami Uniksowymi. Były to spory o charakterze technologicznym i kulturowym między Unix System V i BSD Unix (gniazda kontra strumienie, tty kontra termio, etc.). W drugiej połowie lat osiemdziesiątych walka Uniksa z Uniksem nabrała charakteru instytucjonalnego. IBM, DEC, Hewlett-Packard i inni pomniejsi producenci Uniksa założyli Open Software Foundation, żeby skuteczniej przeciwstawiać się dominacji Unix International (AT&T oraz Sun Microsytems).
Na tym dość mrocznym dla Uniksa etapie dziejów miały jednak miejsce dwa wydarzenia, które pomogły mu się odrodzić na początku lat dziewięćdziesiątych. W 1983 roku DEC przerwał pracę nad następcą PDP‑10. Przypieczętowało to rozpad kultury hakerskiej z laboratoriów AI MIT skupionej wokół tych komputerów, co zaowocowało założeniem przez Richarda Stallmana projektu GNU – próby stworzenia całkowicie wolnego klonu Uniksa. Drugim ważnym wydarzeniem było stworzenie przez Larry'ego Wall'a (twórcę języka Perl) narzędzia patch, które pozwalało scalić zmiany wygenerowane przez diff z plikiem bazowym. Umożliwiło to programistom Uniksa współpracę przez Internet, dzięki przekazywaniu łat (przyrostowych zmian kodu) zamiast całych plików.
Jak zauważa Raymond: "Lata 1989 – 1993 to najczarniejszy okres w historii Uniksa". Producenci własnościowych Uniksów zmęczyli się ciągłymi potyczkami i nie mieli woli dalszej walki, projekt GNU nie wydał jądra systemu i pomimo stworzeniu wielu fantastycznych narzędzi jego wiarygodność była na wyczerpaniu. Technologia PC stawała się coraz bardziej uzależniona od korporacji, a uniksowi pionierzy z lat 70. wkraczali w wiek średni i coraz bardziej tracili zapał. Mimo, że sprzęt stawał się coraz tańszy (procesory Intela), Unix pozostawał drogi.
Pierwszym światełkiem w tunelu była podjęta w 1990 roku próba przeporotowania Uniksa BSD na komputery z procesorami 386. Dwa lata wcześniej jeden z hakerów z Berkeley Keith Bostic zaczął oczyszczać kod BSD z zastrzeżonego kodu AT&T. W ten sposób odradzał się wolnodostępny system Unix BSD. Niestety pod koniec 1991 roku William Jolitz, główny autor 386BSD porzucił projekt i zniszczył swoje dotychczasowe wyniki. Jolitz chciał opublikować kod w postaci wolnodostępnych źródeł i zirytował się, gdy korporacje i sponsorzy żądali coraz bardziej restrykcyjnych licencji. We wrześniu 1991 roku nieznany nikomu student z Finlandii, Linus Torvalds, ogłosił rozpoczęcie prac nad projektem stworzenia wolnego uniksowego kernela. Później przyznał, że gdyby wiedział o projekcie 386BSD, to dołączyłby do niego i nie rozpoczynał nowego projektu.
Początkowo oba projekty nie wzbudziły szczególnego zainteresowania społeczności nawet uniksowej, nie mówiąc o szerokiej rzeszy użytkowników. Projekt systemu z Berkeley został dodatkowo obciążony przez proces, jaki wytoczyła AT&T firmie BSDI (firmie wspierającej projekt Jolitza). W wyniku rozprawy zidentyfikowano kod własnościowy i usunięto go z systemu, ale jednocześnie proces skłonił wiele osób do zajęcia się raczej Linuksem niż BSD. Pod koniec roku 1993 roku Linux w pełni obsługiwał internet i był wyposażony w system graficzny X. Dzięki pełnej obsłudze doskonałych narzędzi GNU Linux stał się zbiornikiem przyciągającym całe oprogramowanie o dostępnych źródłach rozrzucone po własnościowych systemach. Wkrótce stabilność i jakość oprogramowania Linuksa dorównywała komercyjnym Uniksom.
Można by jeszcze długo rozprawiać o bratniej współpracy przez internet, o sukcesie modelu Open Source (chociażby w projektach Mozilli czy Google), o podboju serwerów WWW przez Apache, o rozwoju wielkich projektów wolnego oprogramowania jak Debian czy KDE, o wpływie kultury hakerskiej na Uniksa, o różnicach między BSD a Linuksem, ale to już całkiem inna historia... :‑)
Najważniejszym wnioskiem pozostaje stwierdzenie, że kiedy Unix stosował się do praktyk później określonych jako Open Source rozwijał się pomyślnie. Próby komercjalizacji kończyły się stagnacją i upadkiem. PS. Pisząc Unix mam na myśli szersze znaczenie tego słowa, czyli dowolny system operacyjny wywodzący się z kodu oryginalnego Uniksa lub jego spadkobierców, bez względu czy jest uznany za Uniksa w sensie prawnym czy nie. W takim znaczeniu Linux (wbrew swojej nazwie) jest Uniksem.