Historia systemu
Na początku był Multics...
A przedtem był Chaos. System Multics był podjętą przez Bell Labs i MIT próbą stworzenia systemu, który miał stać się panaceum na problemy tamtejszych (1965) systemów operacyjnych. Miał to być system operacyjny z podziałem czasu, obsługą wielu użytkowników i hierarchicznym systemem plików. Multics nie spełnił swych założeń. Jednak kilka osób pracujących nad Multicsem, mianowicie Ken Thompson, Dennis Ritchie, Doug McIlroy i J.F. Ossanna kontynuowali pracę. Powstał wtedy projekt uniksowego systemu plików. W międzyczasie Thompson w czasie wolnym napisał grę "Space Travel", wpierw pracującą pod systemem Multics, później GECOS, aż w końcu została przepisana do pracy w komputerach PDP-7. Gra ta była wstępem do programowania PDP-7.
Unix nabiera kształtów
W 1969 roku, Thompson rozpoczął implementowanie systemu plików, zwanego "kredowym systemem plików" przez to, że powstał w wyniku niezliczonych dyskusji przed tablicami. Powstał system operacyjny, shell, edytor oraz asembler. Dzięki napisaniu asemblera, system ten uniezależnił się od GECOSa, na którym wcześniej były prowadzone prace nad nim. W 1970 roku Brian Kerninghan zasugerował nazwę UNIX. Wkrótce system UNIX został przeniesiony na komputery PDP-11.
Powstanie języka C
Pierwsza wersja systemu UNIX była napisana w asemblerze. Thompson uważał jednak, że powinien być napisany w języku wyższego poziomu. W 1971 spróbował użyć Fortrana, lecz po pierwszym dniu zrezygnował. Później stworzył prosty język zwany B, który uruchomił na PDP-7. Implementacja tego języka była jednak interpretowana, a więc z założenia powolna. Ritchie, używając PDP-11, rozszerzył język B o typy, a potem napisał jego kompilator. Powstały język był początkowo nazywany NB, od New B - nowy B, później został nazwany C. W roku 1972 Thompson próbował przepisać UNIXa w C, jednak problem stanowił brak obsługi dla struktur danych. Zostały więc one dodane do języka i następnego roku UNIX został przepisany w C.
Powstanie potoków
Wkrótce, po długich dyskusjach i trudnych decyzjach projektowych, UNIX został wyposażony w potoki - mechanizm pozwalający sklejać wyjście jednego programu z wejściem innego. Te usprawnienie dało początek filozofii UNIXa - pisać małe programy, które dobrze wykonują pojedyncze zadania, a następnie łączyć je ze sobą za pomocą potoków.
UNIX pokazany światu
W latach 1976-77 Thompson odwiedził UCB, aby prowadzić wykłady o UNIXie. System ten szybko się przyjął. Profesorowie i studenci z Berkeley ulepszali UNIXa - w ten sposób powstał BSD. Wkrótce system UNIX, rozszerzony o protokoły TCP/IP, stał się podstawą powstającego Internetu.
UNIX staje się komercyjny
Wkrótce, dzięki rosnącej popularności Uniksa, świat biznesu zaczął dostrzegać jego obecność. AT&T oddzielił się od Bella, a następnie wszedł w świat biznesu ze swoim flagowym produktem - System V. Powstało wiele tworzonych przez różne firmy wersji UNIXa, będących często niekompatybilnymi pod pewnymi względami między sobą. W 1988 roku powstała grupa Open Systems Foundation, mająca na celu między innymi ujednolicenie Uniksa.
Projekt GNU - zaczęło się od drukarki...
Do tej pory opowiadałem wyłącznie o UNIXie - systemie, który stał się podstawą projektową dla GNU/Linuksa. Dalsza część opowieści poświęcona zostanie projektowi GNU i powstaniu Linuksa.
W laboratorium Massachusetts Institute of Techonology, gdzie pracował Richard M. Stallman, była bardzo problematyczna sieciowa drukarka laserowa. Mianowicie miała tendencje do zacinania się. Częstą była sytuacja, kiedy wysyłało się 50-stronicowy dokument do wydrukowania, a po przyjściu do drukarki po odebranie dokumentu znajdowało się w niej zaledwie kilka stron, w dodatku należących do innego użytkownika. Problem ten był dla Stallmana bardzo frustrujący. Rozwiązał go, modyfikując kod sterownika drukarki. Kiedy drukarka się zacinała, sterownik wysyłał na ekrany monitorów użytkowników oczekujących na wydruk informację o zaciętym papierze. Dzięki temu natychmiast po awarii pojawiał się ktoś, aby ją naprawić, redukując czasy postoju w laboratorium.
W późniejszym czasie Xerox zafundował laboratorium nową drukarkę laserową. Był to najnowszy model, powstały jako przeróbka kserokopiarki. Drukarka ta drukowała dużo szybciej i dokładniej, niż poprzednia. Niestety, papier zacinał się równie często. Stallman chciał rozwiązać problem w ten sam sposób, jak z poprzednią drukarką. Niestety, Xerox odmówił dostępu do kodów źródłowych sterownika drukarki. Wolność dopasowania oprogramowania do swoich potrzeb zniknęła.
Powstanie FSF
Oprogramowanie przestało być takie, jak kiedyś. Bezpowrotnie zniknęła wolność uruchomienia, kopiowania i modyfikowania. Nie dawało to spokoju Stallmanowi. 27 września 1983 roku napisał na grupę dyskusyjną net.unix-wizards ogłoszenie. Brzmiało ono tak: "Zaczynając od nadchodzącego Święta Dziękczynienia zaczynam pisać kompletny, kompatybilny z Uniksem system operacyjny zwany GNU (GNU's Not Unix), i będę go rozdawać wszystkim, którzy będą chcieli go używać. Bardzo potrzebuję wsparcia w postaci poświęconego czasu, pieniędzy, programów i wyposażenia.". Pierwszym programem stworzonym w ramach projektu stał się edytor GNU Emacs, korzystający z języka Lisp. Stallman postanowił sprzedawać go wysyłkowo, po 150$ za sztukę. Niedługo po opublikowaniu Emacsa powstał manifest GNU, będący rozszerzoną wersją ogłoszenia z 1983 roku.
Dzięki opublikowaniu Emacsa, projekt GNU miał wreszcie jakiś kod do pokazania. Coraz większa ilość osób zaczęła interesować się programem, a wraz ze wzrostem zainteresowania pojawiły się pieniądze i dary. Aby uoficjalnić projekt, Stallman wraz z kilkoma znajomymi założył Free Software Foundation - Fundację na rzecz Wolnego Oprogramowania. W międzyczasie wzrastał rynek systemów uniksowych i kolejni producenci zamykali dostęp do kodów źródłowych, co zwróciło jeszcze większą ilość osób w kierunku projektu GNU.
Licencja GNU
Ustawa o prawie autorskim w Stanach Zjednoczonych z 1976 roku nakazywała traktować program komputerowy podobnie, jak utwór literacki lub piosenkę. Wolno brać z niego inspirację, lecz nie wolno używać "treści" programów (kodu) we własnych programach bez zgody autora. Programom bez licencji groziło podpadnięcie pod ogólną treść ustawy. Dlatego też projekt GNU potrzebował licencji. Początkiem była licencja GNU Emacs License, regulująca zasady dystrybucji GNU Emacsa. W listopadzie 1986 zasugerowano Stallmanowi, że niedługo Emacs nie będzie największą częścią projektu GNU, i należałoby uogólnić licencję. W ten sposób narodziła się licencja GNU GPL - Ogólna Publiczna Licencja GNU, której pierwsza wersja została opublikowana w roku 1989.
GNU/Linux
Powstanie jądra Linux (Linux Is Not UniX, lub LINus UniX) w roku 1991 poruszyło środowisko Wolnego Oprogramowania. Był to system prosty, ograniczony oraz całkowicie przywiązany do architektury i386 i kompilatora gcc. Miał jednak jedną wielką zaletę, której nie posiadał HURD, jądro systemu GNU - działał tu i teraz. Dzięki temu wokół Linuksa skupiło się wielu programistów zainteresowanych rozwojem wolnego jądra. Szybko Linux zaczął być licencjonowany według zasad GNU GPL. Wysiłek ludzi skupionych wokół Linuksa spowodował, że Linux szybko utracił swoje ograniczenia, stając się najbardziej przenośnym systemem operacyjnym. Jednak jakość i przenośność to nie wszystko. Instalacja Linuksa wiązała się z samodzielnym przygotowaniem systemu plików i ręcznym kompilowaniem wszystkich programów. Nie jest to zbyt wygodna procedura instalacyjna. Aby uprościć instalację, powstały pierwsze dystrybucje Linuksa - Red Hat i Debian.
Dystrybucje uprościły proces instalacji, dodając automatyczny instalator oraz zamykając prekompilowane programy w tzw. pakietach. Pakiet zawiera skompilowane binaria programu, pliki potrzebne mu do działania oraz informację o zależnościach od innych pakietów. Oprócz systemu operacyjnego spakietowane zostały aplikacje, przez co dzięki dystrybucjom możliwe stało się uruchomienie gotowej do pracy maszyny z Linuksem w ciągu góra kilku godzin. Zaczął się "bum" na Linuksa.
KDE i GNOME
Linuksowi brakowało już tylko jednego, aby mógł go wypróbować każdy - Dostarczał on wszystko to, co Windows - pasek zadań, pulpit z ikonkami, menu startowe, ikonkowego menedżera plików i inne udogodnienia. Z KDE był jednak pewien problem - opiera się on na bibliotece Qt firmy TrollTech, która nie była wtedy wolna. Z tego powodu KDE również nie miał prawa nazywać się wolnym. Aby zmienić ten stan rzeczy, powstały dwa projekty. Projekt Harmony miał na celu stworzenie wolnego odpowiednika biblioteki Qt, aby pozwolić KDE działać bez oryginalnej biblioteki. Drugim projektem jest GNOME, mający utworzyć konkurencyjne dla KDE środowisko, wykorzystujące jednak zamiast Qt wolną bibliotekę GTK+. Pod wpływem naporów środowiska firma TrollTech zmieniła licencję Qt na GPL, i tak zostaliśmy z dwoma kompletnymi wolnymi środowiskami graficznymi dla Linuksa.