Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Drzewo genealogiczne Linuksa albo historia Uniksa zwięźle opowiedziana.

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. 

Komentarze

0 nowych
  #1 23.03.2010 11:42

genealogiczne
pozdrawiam

corrtez   12 #2 23.03.2010 11:52

Ciekway wpis. Tak 3maj :)

strastotierpiec   6 #3 23.03.2010 12:08

Dobry artykuł. Czytałem z przyjemnością.

imeehow   5 #4 23.03.2010 12:37

Jak wygląda społeczność Uniksowa w drugiej dekadzie XXI wieku dowiemy się najwcześniej 1 stycznia 2011, bo wtedy zacznie się druga dekada. Teraz możemy co najwyżej zgadywać jak będzie wtedy wyglądała, albo jak wygląda w pierwszej.
A poza tym to miło się czyta.

Gitma-Dżones ;<   4 #5 23.03.2010 13:13

Super blog, naprawdę dawno takiego nie napotykałem! Dzięki!

  #6 23.03.2010 14:46

Bardzo ciekawy wpis, czyta się z przyjemnością. Liczę na więcej :) Pozdrawiam.

skandyn   9 #7 23.03.2010 15:54

This is very good job.
Pozdrawiam.

iacobus   6 #8 23.03.2010 16:06

Przepraszam za literówki. @lth - dzięki za uwagę. @Imeehow druga dekada już się zaczęła. Rok 2000 był pierwszym rokiem nowego millenium, nowego wieku i nowej dekady - 2009 tę dekadę kończył :-)

imeehow   5 #9 23.03.2010 17:26

Zapomniałeś, że nie było roku "zerowego" więc wiek XV zaczął się w 1401, XX w 1901, a XXI w 2001, tak samo z dekadami. http://pl.wikipedia.org/wiki/Wiek
http://pl.wikipedia.org/wiki/Dekada_%28czas%29

cephei   12 #10 23.03.2010 17:47

not bad...not bad ...:)

iacobus   6 #11 23.03.2010 17:52

@imeehow: masz rację, zwracam honor :-)

SS13   3 #12 23.03.2010 21:11

Świetny wpis, przyjemnie się czyta. Oby więcej takich.
Gdyby w szkole w podobny sposób uczono historii (nie koniecznie historii informatyki) to na pewno byłbym bardziej zainteresowany.
Najbardziej zaciekawiły mnie "wojny uniksowe". Nie wiem dlaczego, ale skojarzyło mi się to z wojnami bałkańskimi, albo czymś podobnym. Właśnie zgłębiam temat tych bojów (uniksowych rzecz jasna).

pila19   4 #13 23.03.2010 21:17

ależ żeś się napisał ho ho ho ;)

grzesio..   3 #14 23.03.2010 21:52

Naprawdę wpis godny polecenie i przeczytania..i nie dla lamusów, co klikają w okna :-)

iacobus   6 #15 23.03.2010 22:47

@S13 - podstawowe informacje masz tutaj: http://en.wikipedia.org/wiki/Unix_wars . Jest tam niezły zbiór odnośników, dzięki którym można dowiedzieć się więcej.

mati75   6 #16 24.03.2010 08:12

Super!

  #17 24.03.2010 10:12

Wpis świetny. Sam lubie Uniksa bo bez niego nie było by nic, (stos sieciowy w Windows [i nie tylko] jest z BSD).
Tylko mam pytanie. Co z Mac OS X? Jak on wypada w Uniksowej rodzinie? W końcu jest zamknięty a mimo to radzi sobie nieźle jako system wbudowany.

iacobus   6 #18 24.03.2010 11:21

Co do OS X - powiem szczerze - nie mam pojęcia. Nie interesowałem się tym systemem.

mktos   10 #19 24.03.2010 14:28

@Paul Mc: Tak nie do końca. Stos sieciowy Windows NT i jego związki z BSD to temat na oddzielną dyskusję. Fakt, kawałki kodu BSD tam były, ale potem został przepisany (i to ze dwa razy). Za to pewne narzędzie pozostały.

A MacOS X to system Unikso-podobny - mikrojądro Mach-3 plus pewne narzędzia i elementy z FreeBSD i NetBSD tworzą jądro, które jest dostępne jako projekt Darwin (open source, zgodny z POSIX). Darwin + interfejs graficzny Aqua + Finder = MacOS X (uogólniając trochę). A sam Darwin ma trochę wspólnego z NeXTSTEP, uniksowym systemem z początku lat 90-tych.

Warto wspomnieć, że w latach 80-tych mała firma Microsoft sprzedawała licencjonowany od AT&T system operacyjny Unix (zmodyfikowany co nieco) - Microsoft Xenix. Xenix został potem sprzedany firmie SCO, a Microsoft zajął się OS/2, a potem Windows NT. Podobno w pewnym okresie Xenix był "najbardziej rozpowszechnionym systemem Uniksowym", a w okolicach roku 1993 cała poczta elektroniczna Microsoftu działała na Xeniksie. Ot, taka dygresja, że i MSFT ma swój udział w historii Uniksa.

  #20 24.03.2010 14:53

@Nemhein To się nazywa wyczerpująca odpowiedź.
A MS + Unix = Xenix heh tego nie wiedziałem.

  #21 24.03.2010 23:53

Wow! Bardzo dobrze i rzeczowo napisany wpis. Czekam na kolejne. Moze cos o historii architektury procesorow?

Pozdrawiam

tomimaki   6 #22 25.03.2010 17:32

Przyjemnie się czyta. Czekam na kolejne wpisy.

  #23 27.03.2010 22:34

Wreszcie jakiś konkretny i ciekawy wpis... Oby takich było więcej, zamiast nic niewartych tekstów frustratów, którym coś nie wychodzi i potrafią tylko narzekać.

jrencz   2 #24 28.03.2010 18:40

bardzo sensowny wpis - rzeczowy i napisany w łatwy w odbiorze sposób. Dużo można się z niego dowiedzieć.
Chętnie poczytam jeszcze ;)

Szkoda trochę, że dobreprogramy nie dają możliwości subskrybowania blogów poszczególnych użytkowników - boję się że Twoje wpisy zginą mi w czytniku i tyle z tego będzie (albo nie umiem znaleźć - tak czy tak minus na konto DP)

iacobus   6 #25 29.03.2010 03:39

bynajmniej nie jest to jedyna wada systemu blogów... Ale jak się nie ma co się lubi... :-)

ajz   2 #26 31.03.2010 22:10

Hmm, korzystałeś z jakichś źródeł czy pisałeś "z głowy"? Podejrzewam, że jednak to pierwsze, a wtedy jakaś przyzwoitość wymaga ich wypisania. ;-)

Wpis ciekawy, miło się czyta - tak trzymaj!

iacobus   6 #27 01.04.2010 12:36

Poprawiłem się w następnym wpisie. Źródłem jest "The Art of Unix Programming" Erica Raymonda, bardziej znanego jako esr.