Saturday, December 2, 2017

Ile naprawdę jest dystrybucji systemu Linux

W ostatnim wpisie pisząc ogólnie o systemie Linux doszłem między innymi do wniosku, że na końcowy kształt systemu największy wpływ mają deweloperzy dystrybucji. W tym wpisie chciałbym poruszyć właśnie ten temat, czyli dystrybucji. Gdy patrzę na ilość dostępnych dystrybucji systemu Linux to widzę wielki nadmuchany balok, w który zaraz wbiję szpilę. Wcześniej jednak chciałbym napisać jak wygląda mniej więcej ogólnie proces powstawania dystrybucji GNU/Linux.

Wszystko zaczyna się od pewnej grupy ludzi, których łączy wspólna wizja jakiegoś kształtu dla systemu Linux. Ustalają sobie wewnętrzne zasady działania społeczności i zasady techniczne w jaki sposób będą rozwijać system, chodzi tu o cykl wydawniczy przede wszystkim. Technicznie proces ten wygląda mniej więcej tak:
  1. Pobierane są źródła poszczególnych komponentów systemu z tzw. upstream
  2. Budowane są pakiety w jakimś formacie, mogą to być np. tylko skrypty
  3. Dodawane są własne rozwiązania dotyczące organizacji systemu (instalator, sposób konfiguracji, sposób rozruchu systemu itd.)
  4. Przygotowuje się dystrybucji do wydania (obrazy .iso, witryna, społeczność, repozytoria, testowanie wersji próbnych)
  5. Udzielanie wsparcia dla wydanej dystrybucji (łatki bezpieczeństwa, usuwanie błędów, nowe wersje pakietów itp.)
Często dystrybucje różnią się tym z czego zostaną złożone, dobrym przykładem są różne odmiany programu init. Jednak większość powodów, dla których ktoś kocha albo nienawidzi daną dystrybucję pochodzi z punktu trzeciego, czyli własne rozwiązania (np. w Ubuntu i OpenSUSE własna nakładka graficzna na GNOME).

Teraz zobaczmy jak wygląda oferta dostępnych dystrybucji społeczności GNU/Linux. Jako punkt odniesienia proponuje drzewo rozwoju dystrybucji dostępne w artykule Linux distribution na Wikipedii. Dlaczego uważam, że jest to dobry punkt odniesienia? Jeżeli interesujesz się systemem Linux, to zapewne spotkałeś się już z stwierdzenie wyglądającym mniej więcej tak: "według distrowatch.com najpopularniejszą dystrybucją jest ...". Niestety distrowatch.com jest bardzo częstym źródłem informacji o najpopularniejszych dystrybucjach systemu Linux. Ja tak nie uważam, i to jest jeden z powodów, dla których powstał ten wpis. Jeżeli ktoś siedzi długo w tej tematyce i zobaczy tą listę najpopularniejszych dystrybucji na wspomnianej stronie to od razu zauważy, że cos tu się nie zgadza. Po pierwsze to należy sobie zadać pytanie jak oni to liczą, choć sami przyznają, iż nie jest to dokładny szacunek. Czy można ustalić to na podstawie ilości pobrań danej dystrybucji? Nie, często ludzie pobierają jakąś dystrybucję aby ją zainstalować, nie spodoba się i ją usuwają. Czy ilość pobranych aktualizacji jest wiarygodnym wskaźnikiem? To już lepsze rozwiązanie, ale również ma wady. Jeżeli ktoś instaluje wielokrotnie system od nowa to pobiera wielokrotnie te same aktualizacji. Z kolei duże organizacje, które mają setki instalacji często pobierają raz obraz, a następnie redystrybucją go wewnątrz swojej wewnętrznej sieci z własnych serwerów. Spotkałem się z wypowiedzią twórcy systemu MINIX, który na pytanie o popularność systemu odpowiedział, że monitoruje ilość pobrań ale nie wie, kto go pobiera i co z nim robi.

Kolejną kwestią w "bańce dystrybucyjnej" jest ilość dostępnych dystrybucji, wg. distrowatch.com jest ich ponad 300! Ręce opadają. Postaram się odnieść do tej liczby i w tym bardzo przydatne okaże się wspomniane drzewo rozwoju dystrybucji. Jeżeli na nie popatrzymy to większość dystrybucji jest forkami kilku głównych. Postanowiłem przejrzeć czym są te liczne forki. Duża rzesza to dystrybucje rozwijane przez firmy w celu dostosowania dystrybucji do potrzeb ich produktu. Jest też wiele dystrybucji nie będącymi forkami, głównym ich przeznaczeniem są systemy wbudowane. Są też takie, których głównym celem jest predefiniowana konfiguracja lub stworzenie prześlicznego środowiska graficznego. Niektóre powstały tylko z nienawiści do jakiegoś komponentu dystrybucji macierzystej (np systemd). Znalazłem również takie, których główną stroną jest blog na blogger i wyglądają raczej na hobby twórcy, niż zaspokojenie do tej pory niezaspokojonych potrzeb. Warto zwrócić uwagę, że duża ilość odszczepów umarła śmiercią naturalną. Są też takie które są zaznaczone jako ciągle rozwijane, ale ich strony www już nie działają. Wiele z nich to tylko LiveCD, bądź dystrybucje z preinstalowanym tematycznym oprogramowaniem. Jednym zdaniem podsumowując większość forków to dystrybucje  spreparowane pod czyjeś potrzeby bądź upodobania. Nie są to systemy uniwersalne jak ich macierzyste wersji.

Teraz wymienie moim zdaniem dystrybucje, które rzeczywiście mogą pretendować do miana odmiany systemu Linux, reszta to zazwyczaj przeróbki. Oczywiście mam tu na myśli dystrybucje, które są budowane w celu ogólnego przeznaczenia, a nie tylko do konkretnych upodobań. Wymienie je w kolejność wg. popularności moim zdaniem:
  1. Debian (119)
  2. Ubuntu (52) - potomek Debiana
  3. CentOS (6) - potomek RedHata
  4. RedHat (41)
  5. Gentoo (12)
  6. Slackware (37)
  7. Arch (13)
  8. ...
Wyszukiwarka Google zdobyła wielką popularność ponieważ okazała się przydatna dla wielu ludzi. Jej algorytm opiera się na liczbie linków do danej strony. Skoro tam taki algorytm się sprawdził to czemu nie zastosować go w przypadku dystrybucji. W tym celu przy ich nazwach w nawiasach podałem ilość forków wywodzących się z danej dystrybucji. Uważam, że jeżeli ktoś opiera swoją dystrybucję na jakiejś innej to znaczy, że uznał ją za dobrą podstawę. Jak widać Debian pod tym względem wygrywa, duża w tym zasługa systemu Ubuntu. CentOS nie ma wiele forków, ale wynika to z faktu, że z założenia jest kopia RedHata, która wśród serwerów jest bardzo popularna. Jeżeli chodzi o Arch i Slackware to szczerze mówiąc nie orientuje się który bardziej jest popularny, pierwszy to bardziej desktop, drugi z kolei to serwer.
We wspomnianej liście pominąłem kilka niezależnych dystrybucji, ale są to zazwyczaj dystrybucje narzędziowe bądź laboratoryjne. Dobrym przykładem jest Kali przeznaczony do testów penetracyjnych, jego zaletą jest wyposażenie w narzędzia i skrypty do tego służące. Innym przykładem jest płytka SystemRescueCd bazująca na Knoppix, z której sam wiele lat korzystałem jako zestawu narzędzi do diagnozowania i naprawiania komputerów. Z kolei przykładem pewnego rodzaju eksperymentu bądź laboratorium jest Qubes OS, którego celem demonstracja najbardziej bezpiecznego złożenia systemu. Sam niedawno instalowałem dystrybucję, która wyposażona jest w narzędzia do inspekcji sieciowych pakietów. Także jak widać wiele forków jest stworzona w celu konfiguracji systemu pod konkretne zadania.

Oczywiście przedstawiona przeze mnie lista nie jest idealna, ponieważ można by zrobić oddzielną dla desktopów i serwerów. Poza tym część z nich jest komercyjna, jednej z nich np. SUSE nawet nie wymieniłem. Nie wymieniłem również Fedory, która jest poligonem doświadczalnym RedHata. Z kolei surowa liczba obecnie żyjących forków też nie jest idealnym wskaźnikiem. Możnaby wybrać tylko te, które mają już co najmniej np. 7 lat. Ale myślę, że rozdrabnianie się na te szczegóły nie ma już dalej sensu, bo i tak każdy wybierze według upodobania lub potrzeb. Nie mniej łatwiej wybrać z ok. 10 niż 300. Należy, również nadmienić, że wybierając dystrybucję bazową pod nową dystrybucję deweloperzy chyba najbardziej kierują się stabilnością rozwoju takiej dystrybucji. Tak więc takie stabilne, ale przestarzałe dystrybucje są dobrą podstawą dla nowej dystrybucji z aktualniejszymi pakietami.

Nie ma co się przejmować ilością istniejących dystrybucji, bo to co będzie potrzebne przetrwa, reszta nie. Taka jest natura wolności open source. Myślę, że dobrze tą sytuację oddaje to co kiedyś Winston Churchill powiedział, że demokracja, to zarazem najlepszy i najgorszy system jaki do tej pory wymyślono.