Zwalczaj ogień ogniem: desktopowy Linux coraz mniej uniksowy, coraz bardziej jak Windows?
Przez ostatnie kilka miesięcy zdarzyło się autorowi poruszyćkilkukrotnie kwestie związane z rozwojem opensource'owych systemówoperacyjnych. Tematy związanez systemd, nowym demonem init dla Linuksa (i tylko dla Linuksa),czy rosnące trudnościprzenoszenia oprogramowania pisanego na Linuksa na systemy zrodziny *BSD okazały się całkiem interesujące dla P.T.Czytelników. Tym razem spróbujmy się więc przyjrzeć temu, codzieje się z Linuksem z bardziej „filozoficznej” perspektywy.Dlaczego „filozoficznej”? Często używa się takich określeń,jak „filozofia systemu”, czy „filozofia oprogramowania”,mając na myśli fundamentalne założenia, czy ideologię stojącąza danymi rozwiązaniami. W takim to sensie będziemy mówili o„filozofii Linuksa”, czy „filozofii UNIX-a” – bo oczywiścienie o miłość do mądrości tu chodzi. A po co komu takiespojrzenie? Może choćby tylko po to, by zdać sobie sprawę z tego,czym Linux (dla purystów: GNU/Linux) kiedyś był, czym się stał iczym może stać się w przyszłości.A sprawa ta powinna dla osób zainteresowanych technologiamiinformatycznymi być ważna. Bez względu na trendy rynkowe, Linuxstał się jednym z kluczowych elementów infrastruktury IT tejplanety. Od maleńkich urządzeń typu embedded, przeztelefony, tablety, settopboksy, macierze NAS, po wysoce wydajneserwery i superkomputery – wszędzie tam znajdziecie jądroLinuksa, dostosowane do danej architektury, otoczone warstwąoprogramowania dopasowaną do wykonywanych przez dane urządzeniezadań. Tym jednak, co wywiera największy wpływ na rozwój Linuksa,nie są wcale potrzeby tych wszystkich urządzeń, lecz kwestia dlaLinuksa zawsze trudna, zawsze kontrowersyjna – zastosowaniadesktopowe. Czemu tak jest, skoro odsetek użytkowników Linuksa naPC, nawet korzystając z najbardziej optymistycznych dla „pingwina”badań, nie przekracza 5 procent? Odpowiedź jest całkiem prosta:wśród deweloperów Linuksa, odsetek użytkowników Linuksa nadesktopie na pewno mocno przekracza te 5 procent… a że bliższakoszula ciału, to i desktopowe potrzeby mają na rozwój tegosystemu znacznie większy wpływ, niż sugerować by to miałarynkowa rola desktopów z Linuksem.Korzenie Linuksa tkwią przecież jednak zupełnie gdzieśindziej, niż na desktopie. Choć rekurencyjny akronim, stanowiącynazwę tego systemu otwarcie głosi: Linux Is NotUNIX, to przecieżnawet Richard Stallman nie jest w stanie zaprzeczyć, żefilozoficznie i historycznie Linux wyraźnie wywodzi się z wszelkiejmaści Uniksów, których architektura powstawała w latachsiedemdziesiątych i osiemdziesiątych zeszłego stulecia. Mamy więcmonolityczne jądro, zajmujące się obsługą procesów, siecią,obsługą peryferiów i dostępem do systemu plików, mamy warstwęsterowników sprzętowych, bądź wbudowanych w jądro, bądźdołączanych jako moduły, mamy warstwę użytkownika,implementującą bibliotekę standardową języka C (libc), mamyjakąś powłokę systemową (shella), obsługę wielu użytkowników,warstwę graficznego interfejsu (zwykle X Window System). Cała taarchitektura znajduje odbicie w standardziePOSIX (akronim od PortableOperating SystemInterface),wymyślonym w latach osiemdziesiątych, aby zachować zgodnośćoprogramowania pomiędzy licznymi uniksopodobnymi systemami, takimijak AIX, HP/UX, IRIX, UnixWare czy Solaris. Oprócz zgodności zPOSIX i wywodzenia się z oryginalnego Uniksa z Bell Labs, systemy temiały jedną rzecz wspólną: uruchamiano je przede wszystkim nadużych serwerowych maszynach, były więc projektowane z myśląprzede wszystkim o takich zastosowaniach. Gdy powstawał Linux, nadesktopach w praktyce istniało tylko Windows – radząc sobie zdesktopowymi potrzebami całkiem dobrze. System Microsoftu musiałprzejść długą drogę, aby pod marką Windows Servera stać siękonkurencją dla uniksopodobnych serwerowych OS-ów, ale równiedługą drogę musiał przejść Linux, by choćby próbować staćsię konkurencją dla Windows na desktopie. Na dziś na pewno podróżta lepiej udała się Microsoftowi – tam gdzie kiedyś widzieliśmyAIX-y czy HP-UX-y, tam coraz częściej można spotkać WindowsServer, ale nie to jest przedmiotem naszych rozważań. Idąc wstronę zastosowań desktopowych, Linux się zmieniał – i z rokuna rok było w nim coraz mniej filozofii Uniksa.[img=livefree]Czym jest ta filozofia Uniksa?Mike Garncarz napisał swego czasu książkę pt. „The UnixPhilosophy”, mówiącą o tym, jak oprogramowanie powinno wyglądać,by być zgodne z duchem Uniksa. Oto jego dziewięćtez: Małe jest piękne. Niech każdy program robi jedną rzecz, ale dobrze. Buduj prototypy tak szybko jak to możliwe. Przenośność jest ważniejsza od wydajności. Przechowuj dane w prostych plikach tekstowych. Wykorzystuj już napisany kod wielokrotnie. Wykorzystuj skrypty powłoki by zwiększyć przenośność i wielokrotność zastosowań. Unikaj zaborczych interfejsów użytkownika. Niech każdy program działa jak filtr danych.Piękne to tezy, ale czy są onetym, czego mogliby chcieć użytkownicy desktopów? Trudnodefinitywnie odpowiedzieć na to pytanie, ale jedno jest pewne –odkąd Linux zaczął coraz lepiej nadawać się do zastosowańdesktopowych, coraz mniej było w nim Filozofii Uniksa. Przyjrzyjmysię najbardziej wyraźnym przykładom: Wszystkie dystrybucje GNU/linuksowe powinny trzymać się standardowej hierarchii systemu plików (FHS). Hierarchia ta to nic innego jak tylko formalizacja hierarchii systemu plików z BSD, opisująca zastosowania tych wszystkich katalogów w rodzaju /sys, /lib, /proc, /usr – i wcale się jakoś zasadniczo nie różniąca od tego, co było w Uniksie Version 7 w 1979 roku. Powinny, ale coraz częściej zaczynają się od FHS odżegnywać. Przykładowo Fedora stawia na wrzucenie wszystkiego co się da do /usr i tworzenie jedynie symbolicznych linków w miejscach, gdzie FHS ich oczekuje. Podobnie też coraz częściej media montowane są przez Udisk w taki sposób, że praca z nimi z konsoli tekstowej staje się bardzo niewygodna. Czy deweloperzy Udiska się tym przejmują? Skądże – otwarcie deklarują, że ich program nie jest przeznaczony do wywoływania w skryptach czy interfejsie tekstowym. Słusznym sposobem rozmawiania z Udiskiem jest wysyłanie jego demonowi komunikatów przez interfejs D-Bus. Twórcy Uniksa obracają się w grobach. Przez ostatnie kilka lat w Linuksie namnożyło się różnych Kitów. Mamy ConsoleKit, PolicyKit, PackageKit itp. Wszystkie one są praktycznie nie do wykorzystania przez skrypty, za to łatwo wywołuje się je przez ich interfejsy programowania. Wszystkie one też stały się niezbędne, by w ogóle desktopowego Linuksa uruchomić. A jak się zachowują? Ano ze zgoła nieuniksowym rozmachem – taki ConsoleKit potrafi odpalić sobie kilkadziesiąt procesów, zarządzając ich interakcjami z ze zwykłymi uniksowymi procesami (pomyślano go jako rozwiązanie pomostowe) w dość skomplikowany sposób. W zeszłym roku praktycznie dokonało się przejście linuksowego mainstreamu na demona systemd. Kiedyś żartowano, że danemu oprogramowaniu brakuje tylko kuchennego zlewu do kompletu funkcjonalności... patrząc na dokumentację systemd przestaje to być śmieszne. Demon ten robi wszystko, co się tylko da – nie tylko zastępuje starego inita, ale też integruje się ze wspomnianymi Kitami (a nawet je zaczyna zastępować), zarządza dyskami, uwierzytelnieniem użytkowników, i usługami sieciowymi, a kontroluje się go przecież nie przez proste skrypty, lecz tekstowe pliki z opcjami, parsowane następnie przez binarne narzędzia. Zostaje tylko wyrzucić tekstowe pliki, zastępując je centralnym Rejestrem – i będziemy mieli tak pięknie jak w Windows.Jeszcze więcej takichprzykładów można by znaleźć w rozwoju linuksowych desktopów,takich jak Gnome czy KDE, coraz trudniejszych przecież doprzeniesienia na inne uniksopodobne systemy. Wyraźnie widać trendrozwoju Linuksa nie jako następcy komercyjnych Uniksów, ale jakoopensource'owego desktopowego OS-a, który miałby być wygodnąalternatywą dla Windows, dla ludzi, którzy wcześniej z „okienek”korzystali. Nie trzeba się już przejmować przenośnością kodu,można zapomnieć o uniksowych gniazdkach i rurach, skoro mamy dorozmów między procesami D-Bus, porzuca się pisanie skryptów,zastępując je binarnymi narzędziami czytającymi płaskie plikikonfiguracyjne… Pozostaje tylko czekać, aż tetrendy odbiją się na rozwoju samego jądra. W końcu te wszystkiewytyczne filozofii Uniksa miały jeden powód – uczynić życiesysadminów lepszym. Ale dziś większość działających na świecieinstancji Linuksa nie ma żadnego administratora, potrzeby tej grupystały się drugorzędne, więc z czasem zacznie się myśleć oplanistach (schedulerach) budowanych czysto pod desktop, czy teżstałym binarnym interfejsem jądra dla sterowników, by można byłoje instalować na Linuksie tak, jak robi się to na Windows.Nic w tym złego, w końcu LinuxIs Not a UNIX. Problempojawi się dopiero wtedy, kiedy ktoś zechce przenosićoprogramowanie, nawet niekoniecznie już na jakieś BSD, ale np. naOS-a X czy Androida. Szybko odkryje, że oprogramowania pisanego dlaLinuksa już się nie przenosi – trzeba je przepisywać od nowa,gdyż zależy ono od tak wielu monolitycznych komponentówstandardowego desktopu Linuksa, że na niczym innym niż desktopowyLinux nie pójdzie. Może nawet przyjdzie moment, że na nowo trzebabędzie wymyślać specjalnego Linuksa dla serwerów i chmur?