RSS

Linux w 2006 roku

Liczba odsłon: 192

„Windows NT czy OS/2 — oto jest pytanie. Czy rzeczywiście? W okresie, kiedy rozszerza się wojna 32-bitowych systemów operacyjnych, nie możemy przeoczyć ważnego gracza na rynku — systemu Unix. Nie jest to Unix z lat minionych, który onieśmielał użytkowników. Dzisiejsze systemy Unix łączą potężne 32-bitowe środowisko operacyjne z dopracowanymi pulpitami graficznymi, pożądanymi przez użytkowników”.

Tak rozpoczyna się artykuł opisujący dystrybucje systemu Unix przeznaczone do użytku domowego i biurowego, opublikowany w miesięczniku PC Magazine po polsku w... styczniu 1994 roku. Jak możesz się domyślić, komercyjne systemy Unix nie zawładnęły przez te 12 lat sercami użytkowników i nie zajęły miejsca na dyskach twardych biurowych komputerów. Ba, nawet OS/2 przepadł, pozostawiając na placu boju Windows NT w kolejnych wcieleniach, któremu w końcu udało się pozbyć opinii skompilowanego systemu operacyjnego dla stacji roboczych i ich zdziwaczałych użytkowników.

A jednak wciąż istnieje system operacyjny wywodzący się ze świata Uniksa, który ma szanse walczyć o swoje miejsce na domowych i biurowych komputerach. Linux – bo o nim mowa – od kilku lat atakuje pozycję nazywaną ready for desktop — gotowego do zastosowania w roli uniwersalnego systemu z graficznym interfejsem użytkownika. Co roku jego zwolennicy ogłaszają, że „w przyszłym roku Linux zdobędzie pulpity użytkowników” i co roku okazuje się, że jednak „trzeba mu dać jeszcze rok”. Czy przy obecnym stanie rozwoju Linuksa potrzebuje on kolejnych kilku lat?

Osiągnięcia 2006 roku

W mijającym właśnie 2006 roku Linuksowi udało się rozwiązać kilka najpoważniejszych problemów dręczących go w przeszłości. Najważniejszym osiągnięciem jest chyba para technologii HAL i D-Bus, umożliwiających łatwe przeglądanie aktualnej konfiguracji komputera i wychwytywanie zmian w niej zachodzących. Koniec z ręcznym montowaniem podłączanych urządzeń USB i wkładanych płyt CD: ich ikony pojawiają się na pulpicie automatycznie, opatrzone nazwą woluminu. Tak powinno być już od kilku lat i niektóre dystrybucje skierowane na rynek domowy w różny sposób osiągały podobny rezultat, lecz dopiero teraz dysponujemy jednym, uniwersalnym, a co najważniejsze — dobrze działającym systemem automatycznego montowania nośników w systemie plików.

Drugim osiągnięciem jest ciągły rozwój jądra 2.6 systemu Linux. W porównaniu do długo używanej wersji 2.4, nowa zapewnia znacznie wyższą wydajność i oszczędność wykorzystania zasobów, oraz – co jest mniej istotne dla przeciętnego użytkownika – wysoką skalowalność, umożliwiającą efektywną pracę na wieloprocesorowych serwerach o skomplikowanej architekturze. Wersja 2.6 jądra zawiera też wciąż rozwijane sterowniki magistral i urządzeń USB, bezprzewodowych kart sieciowych, kart dźwiękowych i telewizyjnych oraz wielu innych urządzeń, których użytkownicy musieli dotychczas samodzielnie instalować łaty umożliwiające korzystanie ze sprzętu. Nowy mechanizm informowania aplikacji poziomu użytkownika o stanie systemu (katalog /sys) i rozwijane mechanizmy asynchronicznego informowania aplikacji o zachodzących w systemie zdarzeniach (inotifykevent) dają nadzieję, że budowanie aplikacji wydajnych, oszczędnych i mimo to w ułamki sekund reagujących na zmiany w systemie plików czy konfiguracji komputera przestanie być zmorą programistów, a stanie się powszechną praktyką.

Na koniec zostawiłem sobie unowocześnienia w dwóch podstawowych środowiskach graficznych: KDE i GNOME. W obydwu przez ostatnich kilka miesięcy zaszły wielkie zmiany. Miłe jest, że każda kolejna wersja jest szybsza i bogatsza w funkcjonalność, a co najważniejsze — silniej zintegrowana z systemem. Szczególny postęp widać w przypadku GNOME, które długo wydawało się być jedynie pulpitem i zestawem bibliotek do dowolnego wykorzystania w aplikacjach, a dzisiaj zaczyna być standardowym środowiskiem użytkownika w wielu poważnych dystrybucjach, nie tylko drastycznie zwiększając szybkość swojej pracy, ale też obrastając w narzędzia pozwalające na automatyczne zarządzanie podłączanymi nośnikami danych (w kooperacji z warstwą HAL), aktywnymi połączeniami sieciowymi (w tym bezprzewodowymi) i treściami multimedialnymi.

Czego jeszcze brakuje

Nakreślony przeze mnie pozytywny obraz nie oznacza, że Linux już teraz bezdyskusyjne nadaje się do wykorzystania w domu i biurze. Do osiągnięcia szerszej akceptacji brakuje mu kilku cech, którymi charakteryzują się Windows czy Mac OS X.

Przede wszystkim Linuksowi brakuje szybkości ładowania aplikacji. Z jednej strony jest to wina środowisk, które wymagają dołączania zbyt dużej liczby bibiotek; prace nad zminimalizowaniem tego problemu zostały już podjęte i w dwóch kolejnych edycjach środowiska GNOME wiele małych bibliotek zostanie zlikwidowanych na korzyść pojedynczych, dużych bibliotek oszczędzających pamięć i wymagających wielokrotnie krótszego czasu konsolidacji podczas uruchamiania procesy.

Z drugiej strony jądro systemu również powinno zostać nieco przyspieszone w tym zakresie. Od czasów wersji 2.6.0 (w momencie pisania tych słów najnowsze wydanie to 2.6.19) zrobiono wiele, aby przyspieszyć tworzenie procesów i konsolidowanie ich z bibliotekami, lecz wciąż przy wysokim obciążeniu procesora uruchomienie nawet dosyć prostego programu może potrwać kilka sekund.

Najbardziej jednak szybkości brakuje chyba w interfejsie graficznym. Nie da się wskazać tutaj jednego winnego, gdyż problem dotyczy wielu warstw graficznego środowiska użytkownika: systemu X Window, sterowników urządzeń oraz bibliotek elementów graficznych (Qt i GTK2). Najbardziej cierpi wydajność postrzegana, a nie rzeczywista: okna na ekranie rysowane są szybko, a ich przesuwanie nie powoduje wyraźnego spowolnienia, lecz ułamki sekund mijające między wyrysowaniem ramki okna i jego zawartości (szczególnie podczas tworzenia nowego okna) sprawiają wrażenie, jakby obsługa GUI sprawiała Linuksowi straszliwą mękę. Programiści zapomnieli najwyraźniej, że użytkownik nie dostrzeże wcale opóźnienia rzędu 100 ms przed otwarciem nowego okna dialogowego, lecz jeżeli te same 100 ms opóźnienia wstawione zostanie między otwarcie okna a wyświetlenie jego zawartości, użytkownik zacznie zgrzytać zębami i ciskać pioruny w kierunku autorów „tak powolnego systemu operacyjnego”.

Co za rok

W nadchodzącym roku życzyłbym Linuksowi przede wszystkim coraz dalej posuniętej integracji środowisk graficznych ze wszystkimi warstwami systemu, aby konfigurowanie drukarek, połączeń sieciowych i udostępnianych folderów nie wymagało korzystania ze specyficznych narzędzi konkretnych dystrybucji. Również same środowiska powinny ściślej współpracować ze sobą; mamy już tego przedsmak w postaci migracji KDE w kierunku technologii HAL/D-Bus, wykorzystywanych wpierw przez GNOME.

Życzyłbym też wzrostu szybkości, aby pojawianie się na ekranie okien dialogowych i menu było – jak w Windows – niezauważalnie szybkie, a nie zabierało cennych dziesiątek i setek milisekund. Dopóki jestem w stanie naciskać kombinacje klawiszy szybciej, niż system rysować okna dialogowe, nie uznam oprogramowania za wydajne.

Dobrze by też było, gdyby uproszczeniu uległa migracja kodu źródłowego aplikacji z Windows do Linuksa oraz samo tworzenie programów w jedynym w pełni wolnym środowisku graficznym — GNOME. Obecnie programista ma do wyboru grzęźnięcie w kodzie C udającym obiektowość, lub korzystanie z warstw pośredniczących dla języków wyższego poziomu takich jak Java, C♯ czy Python, które to warstwy wcale nie integrują się dobrze z tymi wysoce obiektowymi językami programowania. Może zostałem zepsuty latami programowania w Windows, lecz stworzenie programu dla GTK2 w języku C wcale nie wydaje mi się prostsze, niż napisanie aplikacji Windows w tym samym języku.

Ale przede wszystkim życzę Linuksowi coraz dalej idącej akceptacji ze strony programistów i użytkowników. Tylko bowiem coraz więcej niezbędnych aplikacji może faktycznie przeważyć szalę popularności i spowodować, że Linux nie będzie wybierany z powodów ideologicznych, a praktycznych.


Mi brakuje:

1. instalowania nowego sprzętu tak wygodnego jak pod Windows (odpalam skrypt instalacyjny, wpisuję hasło roota, potwierdzam że zgadzam się na instalację sterownika, sterownik się instaluje).
2. 64-bitowego pluginu Flasha do Mozilli/Firefoxa
3. dobrych sterowników do kart graficznych, zwł. porządnej obsługi pivota
4. gry! gry! gry!
1) Instalacja sprzętu jest nawet sprawniejsza (nie trzeba wpisywać haseł, wszystko się samo robi) tylko sterowniki muszą istnieć i być dostępne w otwartej formie w jądrze — o to należy walczyć.
2) Kolejny efekt zamkniętego modelu programowania. Jest opracowywany otwarty moduł odtwarzający animacje Flasha w przeglądarkach, gdy zostanie dokończony będzie działał pewnie na dowolnym procesorze.
3) Trzeba walczyć o dokumentację do kart graficznych, sami producenci nigdy nie będą chcieli opracowywać sterowników przy ciągle zmieniających się API jądra.
4) Wine! Wine! Wine! To chyba jedyna metoda :)
ad. 1: Nie rozumiem, czemu dostępność w otwartej formie jest taka istotna.
ad. 2: Od bodajże dwóch lat co pewien czas instaluję sobie ten moduł, i jeszcze nigdy nie działał poprawnie w Firefoxie. Słabo to wróży na przyszłość. GNU Hurd też będzie świetnym systemem, kiedy zostanie dokończony. A Duke Nukem Forever będzie świetną grą ;-)
ad. 3: Producenci mogą nie chcieć ujawniać wszystkich detali swoich kart, a z kolei nie każdy programista linuxowy musi chcieć podpisywać NDA, w dodatku ludzi którzy będą w stanie napisać wydajny sterownik do takiego potworka jak Nvidia 8800GTX nie ma zbyt wielu i pewnie pokaźna ich część pracuje w Nvidii ;-) Doświadczenie pokazuje, że otwarte sterowniki do kart graficznych są zawsze z tyłu za sterownikami firmowymi:
a) otwarty sterownik do kart ATI nie obsługuje akceleracji sprzętowej na nowszych kartach
b) otwarte sterowniki do kart Nvidii nie obsługują trybu pivot
Wydaje mi się, że może lepiej byłoby ustabilizować API i ABI jądra? Z drugiej strony, uniemożliwi to radykalne usprawnienia kernela. Coś za coś.
ad. 4: Znowu, Wine zawsze będzie krok do tyłu za Windows. Czy w Wine mają już pełną implementację DirectX 9?

Kiedyś byłem entuzjastą Linuxa, dziś to dla mnie system do pracy, i to z pewnymi ograniczeniami (brak obsługi pivota, niepełna obsługa Flasha, niepełna obsługa formatów plików Microsoftu, w łatwości obsługi jednak nadal ustępuje Windows). Żeby mógł zastąpić Windows na desktopie, musiałaby zajść w nim rewolucja, która zmieniłaby całkowicie charakter Linuxa jako systemu i jako projektu informatycznego. W ten sposób moglibyśmy stracić te zalety Linuxa, dzięki którym ma on taką pozycję jaką ma. Wydaje mi się, że Linux jest skazany na bycie systemem komplementarnym do Windows, i marzenia o "world domination" są tylko marzeniami. Pozycję alternatywnego systemu desktopowego na rynku światowym zajął Macintosh, i nie wydaje mi się, żeby było miejsce na trzeciego gracza.
"b) otwarte sterowniki do kart Nvidii nie obsługują trybu pivot"

Uzupełnienie: bodajże jedynymi sterownikami do X11 które obsługują sensownie pivot, są zamknięte sterowniki do Nvidii. Zarówno otwarte jak i zamknięte sterowniki do ATI mają tylko kretyńską implementację pivota, która wymaga ode mnie wpisania na twardo do konfiguracji X11 wybranej orientacji monitora. Czyli idea dopasowania orientacji monitora do trybu pracy bierze w łeb.
@Roman Werpachowski:
Ad1: A skąd system ma wiedzieć co dokładnie w tym "siedzi"?
Ad2: Pewnie dalej tak będzie, bo raczej Adobe nie jest skłonne do udostępnienia whitepaper'a na temat tej technologii.
Ad3: Z tego co wiem, to jedynie Quadro jako tako dobrze chodzi pod Linuxem ze wszystkimi fajerwerkami. Ale niestety cena tego cuda, pozostawia wiele do życzenia. Jak wiele innych systemów graficznych, które doczekały się sterowników do praktycznie wszystkich OS'ów. Ale ta cena.
Ad4. Jak Microsoft udostępni specyfikację zwykłym "zjadaczom chleba". W komercyjnych dystrybucjach to nawet chwalą się pełną obsługą DX10, jednak występuje ten sam problem co w Ad3 :devil:

Nie pozostaje nam nic innego jak walczyć o dokumentację techniczną. Niestety.

@Radosław Sokół:
Podejrzewam, żeby nie okazało się, że ciągle "jedziemy" na Riva 128 :D . Chociaż, może jest to przejaskrawione, ale wydaje mi się, że gdzieś w tym miejscu leży problem.
"Ad1: A skąd system ma wiedzieć co dokładnie w tym "siedzi"?"

Takie podejście ze strony przeciętnego użytkownika to czysta paranoja. Z jakiej racji Nvidia miałaby mi instalować złośliwe oprogramowanie w komputerze? Rozumiem że na serwerze CBA czy innego NKWD powinno być oprogramowanie wyłącznie o kodzie źródłowym, ale taka klientela może sobie to załatwiać swoimi drogami, albo kupować sprzęt pod tym kątem. Przeciętny Kowalski to oleje sikiem krzywym.
"Ad4. Jak Microsoft udostępni specyfikację zwykłym "zjadaczom chleba". "

Czyli nigdy, bo niby dlaczego MS miałby pomagać swojej konkurencji która ma ambicje go wysiudać z desktopa ;-) To tylko potwierdza moją tezę, że marzenia "Linux powszechny na desktopie" są skazane na porażkę, bo pozycja lidera jest zajęta (Windows), pozycja "tego drugiego" też (Macintosh), a poniżej są już systemy niszowe. Gdyby ktoś wziął towarzystwo Linuxowe za buźkę i powiedział "chłopaki, będziecie jak Harrison Ford w <<Ściganym>>?" etc., to by zamiast na daremno usiłować przebić Microsoft, spróbował wykurzyć Macintosha z pozycji "tego drugiego". Tylko że to by wymagało:
a) skoordynowanego wysiłku
b) nauczenia się od Apple'a jak się promować, ładnie pakować swoje produkty i projektować ładne i komfortowe GUI (ponoć ludziom GUI w produktach Apple'a się podoba)
c) znalezienia sobie choć jednej niszy w desktopach (tak jak Apple to zrobił w grafice i DTP), co by mieć skąd atakować dalej.

Apple wyczuł pismo nosem i wykorzystał kod BSD w swoim systemie operacyjnym, tak więc hasło "Linux ma stabilność Unixa" nie wystarczy. Gdyby ktoś słuchał moich rad, to by próbował swoich sił np. w edukacji, gdzie cena gra rolę (co przynajmniej w Polsce wyklucza Macintoshe, choć swojego czasu komuś się udało wcisnąć MEN sporo starych trupów od Apple'a), gier nikt nie instaluje, natomiast potrzebny jest system który ma małe wymagania sprzętowe, da się łatwo zarządzać, jest odporny na wirusy i trojany, itd. No i może młodzież (zwł. ta pryszczata i w piglach) by chętniej chodziła na lekcje informatyki gdyby uczyli się na Linuxie. Tylko jeden warunek: to wszystko powinno mieć wsparcie jakiejś firmy która sprzedy komputery soft (w tym klikalny "Panel Sterowania" ze wszystkim czego może potrzebować pan od informatyki, Wine pod którym bez problemu zainstaluje się MS Office (w razie gdyby szkoła uparła się, że lekcja informatyki = kurs obsługi Worda i Excela) oraz, last but not least, bogaty zestaw programów edukacyjnych), zainstaluje to wszystko i będzie świadczyła wsparcie techniczne w razie kłopotów. Gdyby jeszcze ta firma miała polityczne plecy i wygrała przetarg w MEN, to byłby to milowy krok w promocji Linuxa w Polsce. Oczywiście jako systemu niszowego, ale o tym cały czas mówimy.

Z powyższych 3 punktów, oczywiście a) jest warunkiem zaistnienia b) i c), co stawia całość pod wielkim znakiem zapytania. Zanim mi ktoś wyjedzie z katedrą i bazarkiem, to dopowiem że oczywiście model obecny ma swoje zalety, ale jako model tworzenia systemu niszowego. Pozycji "tego drugiego" nie da się nim zaatakować, nie mówmy w ogóle o pozycji lidera. Ta będzie dostępna jak któryś rząd USA poćwiartuje Microsoft na kawałki jak niegdyś AT&T albo jak Ballmerowi czapa jeszcze bardziej odbije i zrobi jakiś katastrofalny błąd strategiczny (ew. takiego wałka jak w Enronie).
Na temat zamkniętych i otwartych sterowników powstanie cały osobny artykuł, więc nie będę kontynuował tego wątku dyskusji.
Co do specyfikacji: powinny być otwarte. Nie z powodu Linuksa, ale z powodu możliwości wzajemnej współpracy wszystkich produktów programowych.
"Dobrze by też było, gdyby uproszczeniu uległa migracja kodu źródłowego aplikacji z Windows do Linuksa oraz samo tworzenie programów w jedynym w pełni wolnym środowisku graficznym — GNOME."

Jak mam to rozumieć? KDE nie jest "w pełni wolne"?
KDE narzuca programiście konieczność publikacji aplikacji na licencji GPL. W efekcie aby stworzyć aplikację komercyjną bazującą na Linuksie trzeba z góry zainwestować w licencję Qt albo otworzyć kod. Ta druga opcja nie zawsze jest możliwa.
Tymczasem GTK2, dzięki licencji LGPL, może być używane w sposób normalny nawet z zamkniętego kodu. Jest to logiczne, bo w końcu nie modyfikuję czy rozbudowuję te biblioteki, a jedynie z nich korzystam. Nie dziwi zatem, że większość komercyjnych aplikacji linuksowych powstaje jednak z wykorzystaniem GTK, a nie Qt.