GNOME — wzloty i upadki
Wstęp
Na początku chciałbym się przywitać w pierwszym moim wpisie w 2017 roku. Będzie on dotyczył środowiska GNOME. Napisałem już jeden wpis koncentrujący się na opisie i paru poradach dotyczących wtyczek i konfiguracji środowiska GNOME 3, który możecie znaleźć tutaj. W tym wpisie chciałbym się skupić na mniej praktycznym zagadnieniu, mianowicie historii tego środowiska. Zaczynamy więc.Początki
GNOME zostało zapoczątkowane 15 sierpnia 1997 roku przez Miguela de Icaza oraz Federico Mena. Jako cel projektu wytyczono stworzenie wolnego środowiska graficznego i aplikacji dla niego. Warto wspomnieć, że w czasie tworzenia tego projektu istniał już inny projekt mający za cel to samo – mianowicie K Desktop Environment, w skrócie KDE. Pomimo, że wolne, to jednak KDE opierało się na niewolnym wtedy toolkit’cie Qt (stał się wolny dopiero z wersją 2.0 wydaną w czerwcu 1999 roku). GNOME miało od początku używać wolnego toolkita GTK, który został stworzony jako wolny zamiennik Motif’a (toolkit używany przez uniksowe środowisko Common Desktop Environment) dla GIMPa (stąd też skrót GTK – GIMP Toolkit). Samo GTK używało wtedy (i używa do dzisiaj) wolnej licencji LGPL. Nowe środowisko postanowiono wydać na licencji LGPL dla bibliotek i GPL dla aplikacji.
Nazwa „GNOME” była początkowo skrótem od pełnej nazwy GNU Network Object Model Environment, gdyż chciano stworzyć framework w modelu obiektu rozproszonego (podobnego do Microsoft OLE), lecz później zarzucono takie rozwinięcie nazwy, gdyż przestała ona odzwierciedlać wizję deweloperów środowiska.
Środowisko zaczęło się rozwijać, wersja 1.0 została wydana w Marcu 1999 roku. Kalifornijska firma Eazel zapoczątkowała i rozwijała w latach 1999-2001 menedżer plików Nautlius, który wraz z wersją GNOME 1.4 został włączony do projektu i jest jego częścią, w ciągłym rozwoju, do dzisiaj. Miguel De Icaza oraz Nat Friedman w 1999 roku założyli firmę Helix Code (później Ximian), która miała za cel rozwijanie środowiska. W roku 2003 została kupiona przez firmę Novell. W kwietniu 2001 roku wydano ostatnią wersję GNOME z linii 1.x, mianowicie 1.4.
Warto wspomnieć, że w wersjonowaniu GTK jak i GNOME występuje pewna prawidłowość – wydania mają wyłącznie parzysty drugi numer wersji (np. x.0, x.2, x.4, x.6 itd.). Wydania o nieparzystym numerze wersji to edycje rozwojowe.
Szczęśliwa dwójka
Linia 2.x to okres dynamicznych zmian i wzrostu popularności projektu GNOME. Wersja 2.0 została wydana w czerwcu 2002 roku, i poza przejściem na GTK+2 zaprezentowano też Human Interface guidelines będący zbiorem wytycznych w projektowaniu intuicyjnych i wygodnych dla użytkownika aplikacji. Zaraz została wydana wersja 2.2 z usprawnieniami dotyczącymi mutlimediów i menedżera plików. W wersji 2.2 oficjalnie zadebiutował też menedżer okien Metacity, który został domyślnym menedżerem okien GNOME zastępując Enlightenment. Wersja 2.4 (Marzec 2004) pokazała przeglądarkę Epiphany oraz obsługę ułatwień dostępu. Wersja 2.6 to debiut nowego okna wyboru plików GTK oraz funkcji „przestrzennej” przeglądarki plików w Nautilusie, polegającej na tym, że każdy kolejny katalog jest otwierany w nowym oknie (jedno okno symbolizuje jeden katalog i jest jego jedyną reprezentacją). Warto wspomnieć, że w tym trybie domyślnie pracował też Eksplorator Windows w Windows 95. Po wydaniu tej wersji powstał fork GNOME o nazwie GoneME, jednak żył bardzo krótko. Wersja 2.8 (wrzesień 2004) to poprawki obsługi urządzeń wymiennych oraz aplikacji Evolution. Po niej wydano wersję 2.10 w marcu 2005 roku, która poza usprawnieniami wymagań środowiska i wydajności, dodała też nowe aplety do panelu sterowania (ustawienia modemu, ustawienia urządzeń wymiennych, kosz), a także aplikacje Totem i Sound Juicer. Wersja 2.12 (wrzesień 2005) to debiut motywu Clearlooks, który stał się domyślnym motywem środowiska, a także aplikacji Evince, oraz usprawnienia dla pozostałych aplikacji środowiska. W marcu 2006 roku ukazała się wersja 2.14 z usprawnieniami wydajności (czasami nawet o 100%), w niej zadebiutował też framework GStreamer i parę innych funkcji (np. szybkie przełączanie użytkownika).
Wersja 2.16 to jedna z większych aktualizacji. Wydana w sierpniu 2006 roku wprowadzała usprawnienia wydajności, nowe aplikacje (Tomboy, Baobab, Orca, GNOME Power Manager), usprawnienia dla pozostałych aplikacji środowiska (Nautilus, Totem) i przede wszystkim obsługę kompozycji dla menedżera okien Metacity. Wersja 2.18 (Marzec 2007 rok) to kolejna dość duża aktualizacja wnosząca aplikację Seahorse (zarządzająca kluczami PGP i SSH), możliwość szyfrowania maili i plików lokalnych, kodowanie dźwięków mp3 i acc oraz gry Sudoku i glChess. Rocznicowa wersja 2.20 (Wrzesień 2007) nie wniosła dużo widocznych zmian (głównie poprawki), dała jednak wyszukiwarkę w dialogu wyboru plików i automatyczne instalowanie kodeków. Kolejna wersja 2.22, wydana w marcu rok później, była już bardziej widowiskowa. Zaprezentowano w niej program do obsługi kamer Cheese, program wyświetlający zdalny pulpit, Metacity doczekał się podstawowej obsługi kompozycji okien, wprowadzono GVFS (wirtualny system plików GNOME pozwalający się odnieść do wielu zasobów używających różnych protokołów, np. ssh, ftp itd.), obsługę kalendarza Google w Evolution i poprawione odtwarzanie filmów z YouTube i MythTV w Totem. Wersja 2.24 (wrzesień 2008) wniosła obsługę kart w Nautilus, komunikator Empathy oraz lepszą obsługę wielu ekranów i TV. W marcu 2009 roku wydano wersję 2.26 z aplikacją Brasero (służącą do wypalania płyt), obsługę czytnika linii papilarnych, obsługę wielu monitorów i usprawnienia w odtwarzaczu multimediów. Wersja 2.28 wydana we wrześniu tego samego roku to głównie poprawki środowiska i aplikacji, oraz debiut GNOME Bluetooth. Zaktualizowano też wersję GTK+ do 2.18. W marcu następnego roku wydano wersję 2.30. Począwszy od tej wersji wielu deweloperów przeniosło się do wersji 3.0 środowiska, którą chciano wydać w następnym roku. W wersji tej ulepszono środowisko i aplikacje, wprowadzono częściową obsługę iPod i iPod Touch w GVFS, oraz zaaktualizowano GTK+ do wersji 2.20. Ostatnia wersja GNOME 2 (2.32) została wydana we wrześniu 2010 roku. Zaprezentowano w niej Rygel, GNOME Color Manager i poprawki do Empathy, Nautilusa, Evince i innych. Ta wersja była kresem linii 2.x. Deweloperzy w pocie czoła pracowali nad GTK+3 oraz GNOME 3.
Nie da się ukryć, że GNOME 2 było najbardziej lubianą i najpopularniejszą wersją tego środowiska. Radykalne zmiany wprowadzone w 3 sprowadziły na projekt dużo krytyki. GNOME 2 było używane nie tylko w Linuksie – używały go też inne Uniksy, takie jak BSD czy Solaris. Ten pulpit był był jednak domyślną twarzą największej ilości dystrybucji Linuksowych. Korzystała z niego coraz popularniejsza i zbierająca dobre opinie dystrybucja Ubuntu. Było także używane w wielu komercyjnych dystrybucjach Linuksa (np. Red Hat Enterprise Linux). Niestety, wersja 3 odstraszyła od GNOME wielu użytkowników i deweloperów, choć wielu pozostało mu wiernych (np. wspomniany wcześniej Red Hat). Kres dwójki spowodował też powstanie forka o nazwie MATE, który jest forkiem ostatniej wersji GNOME 2 i stara się utrzymać go przy życiu oraz dostosować do nowych technologii, jak np. GTK+3.
Burzliwa trójka
GNOME 3 zostało wydane w marcu 2011 roku i było dość sporym szokiem dla wielu fanów tego środowiska. Wprowadzono nową powłokę systemową zwaną GNOME Shell, która prawie wcale nie przypominała paneli GNOME 2. Zaprezentowano też menedżer okien Mutter, który powstał z połączenia Metacity i biblioteki służącej do tworzenia wspomaganych graficznie interfejsów zwaną Clutter (nazwa to połączenie nazw tych projektów - Mutter = Metacity + Clutter). Poza tym przeprojektowano też framework ustawień z mniejszą ilością bardziej skoncentrowanych opcji. Doszła także obsługa umieszczenia okna aplikacji na połowie ekranu, a także nowy motyw i ikony. Usunięto też stare i porzucone API. Oczywiście najważniejszą zmianą pod maską było GTK+3. Od tej pory też numeracja GTK+ i GNOME została zrównana i ujednolicona. Jedną z krytykowanych zmian było uzależnienie od akceleracji, bez której środowisko nie było w stanie poprawnie pracować, a także jego ociężałość w stosunku do dwójki. GNOME Shell został pomyślany jako wtyczka do menedżera okien (podobnie jak Unity w Ubuntu jest wtyczką do Compiza), tak więc nie było (i nie jest do dzisiaj) możliwe używanie powłoki GNOME z innym menedżerem okien niż Mutter.
Pomimo krytyki rozwój środowiska trwał. Już we wrześniu wydano kolejną wersje 3.2, która przyniosła obsługę kont online, obsługę aplikacji internetowych, menedżer kontaktów, menedżer dokumentów i plików, szybki podgląd plików w menedżerze plików, lepszą integracje i dokumentacje, a także ulepszony wygląd i poprawki wydajności. Wersja 3.4 (marzec 2012) przyniosła nowy wygląd dla aplikacji Dokumenty, Epiphany (od teraz nazywaną Web, po polsku WWW) i GNOME Contacts. Stało się możliwe wyszukiwanie plików z ekranu podglądu. Odświeżono także niektóre elementy interfejsu, ułatwiono zarządzanie wtyczkami i poprawiono obsługę sprzętu. Poprawiono także ułatwienia dostępu i parę innych komponentów w aplikacjach środowiska. Wrzesień tego roku przyniósł wersję 3.6 z odświeżonymi podstawowymi komponentami. Wprowadzono nowy ekran logowania i nowy ekran blokady, poprawiono powiadomienia i wygląd panelu sterowania. Aplikacja Boxes (służąca do zarządzania maszynami wirtualnymi KVM) wprowadzona jako podgląd w wersji 3.4, została teraz oficjalnie dodana. Zmieniono także wygląd niektórych aplikacji. Jedną z najbardziej kontrowersyjnych zmian w tej wersji było przebudowanie menedżera plików Nautilus (w GNOME 3 pod nazwą Pliki) – przebudowano jego interfejs i okrojono go z wielu funkcji. Zmiana ta była mocno krytykowana, na tyle, że deweloperzy Minta, określając nowego Nautilusa jako „katastrofę” zrobili forka wersji 3.4 pod nazwą Nemo, który jest używany w ich środowisku Cinnamon.
W marcu 2013 roku wydano wersję 3.8, która poza dalszymi usprawnieniami i modyfikacjami wprowadziła sesję klasyczną. W sesji klasycznej powłoka GNOME za pomocą wtyczek i paru tweaków udaje wygląd GNOME 2 z dwoma panelami. Sesja klasyczna jest domyślną sesją pulpitu GNOME w Red Hat Enterprise Linux, które od wersji 7 używa GNOME 3. Dodano także asystenta początkowej konfiguracji i opcję integracji z ownCloud. Przeglądarka internetowa została zaktualizowana do WebKit2. Dokumenty GNOME dostały opcję integracji z dokumentami Google. Wrześniowa wersja 3.10 wprowadziła framework do lokalizacji, a także aplikacje Maps, Notes, Music, Photos. Więcej opcji pokazała wersja 3.12 wydana w marcu 2014 roku. Poza poprawkami nawigacji w ekranie Podglądu, przebudowano interfejs aplikacji służącej do pierwszej konfiguracji, bazując na testach użyteczności. Lista aplikacji dostała konfigurowalne foldery. GNOME Videos, GNOME Terminal i gedit doczekały się odświeżonego interfejsu, bardziej zgodnego z HIG. Poprawki doczekały GNOME Software i obsługa wyświetlaczy o dużej gęstości pikseli (np. Retina). Wprowadzono też nowe API do powiadomień. Biblioteka GTK+ dostała nowe widgety i nowy styl kart. Port środowiska na Waylanda uzyskał status używalnego, który może być opcjonalnie pokazany. Wrześniowa wersja 3.14 nie wprowadziła większych widocznych zmian. Usprawniono w niej animacje i obsługę ekranów dotykowych. GNOME Software pozwala też od tej wersji zarządzać wtyczkami. GNOME Photos dostał obsługę Google. Evince, Sudoku, Mines i Weather doczekały się przeprojektowania interfejsu, a Hitori zostało dodane do pakietu GNOME Games. Podobnie niezbyt widowiskowa była wersja 3.16 wydana w marcu 2015 roku. Poza oczywistymi poprawkami, w pocie czoła pracowano też nad portem do Waylanda. We wrześniu 2015 roku pokazano nieco bardziej widowiskową wersję 3.18 z integracją Google Drive w Files (Nautilus), możliwością aktualizacji firmware przez Software, automatyczną regulacje jasności, gesty touchpada, poprawki do aplikacji oraz nowe: GNOME Calendar i GNOME Character Map. Wersja 3.20 wydana w marcu 2016 roku wniosła dużo poprawek do podstawowych aplikacji środowiska (np. recenzje w Software), prostą edycje zdjęć w Photos i usprawnione wyszukiwanie w Files. Wiele aplikacji posiada teraz szybką pomoc do skrótów klawiaturowych, usprawniono także kontrolę nad usługami lokalizacji.
Wersja 3.22 wydana we wrześniu 2016 roku (na dzień pisania tego wpisu jest to aktualna wersja stabilna) jest jedną z największych rewolucji w GNOME. Sesja Waylanda stała się domyślną sesją środowiska, w przypadku jej wykrycia niezgodnego sterownika grafiki, lub ręcznego ustawienia, środowisko uruchomi się w sesji X11. Wprowadzono obsługę kontenerów Flatpak, Software może teraz nimi zarządzać, a Builder je tworzyć. Środowisko zapewnia też obsługę sandboksa dla nich. Files dostał obsługę wsadowej zmiany nazwy plików a Photos obsługę udostępniania zdjęć. Wprowadzono też wiele innych zmian do różnych komponentów środowiska.
GNOME 3 jest z pewnością najbardziej kontrowersyjną wersją tego środowiska. Swego czasu krytykował je nawet ojciec Linuksa Linus Torvalds, stwierdzając, że środowisko to jest „katastrofą”. Zmienił jednak zdanie kilka lat później, gdyż wrócił do niego stwierdzając, że sprawy mają się lepiej niż na początku i zasugerował integracje GNOME Tweak Tool (narzędzie do konfiguracji wielu ukrytych opcji) i Frippery (zbiór rozszerzeń zmieniających GNOME Shell na bardziej klasyczne) ze środowiskiem. Mimo wszystko nie brakuje też osób twierdzących, że trójka jest najlepszą wersją tego środowiska. Przede wszystkim jest to środowisko zapewniające obsługę wielu nowoczesnych rzeczy (np. Wayland), stabilne (w końcu Red Hat je stosuje w swoim komercyjnym systemie) i dość funkcjonalne (np. obsługa kont sieciowych). Faktem jest, że GNOME jest dość zamkniętym ekosystemem, co ma jednak swoje plusy, gdyż zapewnia dobrą integracje poszczególnych elementów środowiska. Krytyki nie uniknęło też GTK+3, które dość często zmieniało API motywów oraz wprowadzało mechanizmy typu Client Side Decorations, co utrudniało pisanie aplikacji i tworzenie motywów dla tego toolkitu. Obecnie wydaje się być ustabilizowane, GTK+ 3.22 jest wersją o długim wsparciu (poprzednie traciły wsparcie na rzecz nowych wersji), która jest zalecana dla środowisk nie lubiących zmian, tylko oczekujących stabilności.
Zakończenie
Na zakończenie wspomnieć, że GTK+ 3.22 to ostatnia wersja GTK+3 – kolejna stabilna po niej będzie już wersją 4.0 i początkiem nowej linii. Wersję 4.0 planuje się wydać w 2019 roku, a jej wydanie będzie kresem GTK+3. Wraz z nią możemy też oczekiwać GNOME 4. Przejście z trójki na czwórkę powinno być mniej bolesne, gdyż ta wersja wydaje się raczej być ewolucją wizji deweloperów, niż jej wyrzuceniem do kosza i wymyśleniem na nowo. Pierwszy krok w kierunku GTK+4 już postawiono – 24 listopada 2016 roku wydano GTK+3.89, które dążąc do setki w końcu stanie się GTK+4. Te wydania nie są jednak polecane do codziennego użytku, gdyż przechodzą duże zmiany i mogą zmieniać API/ABI. Są to wersje podglądowe dla deweloperów aplikacji. Na stabilne wydanie przyjdzie nam poczekać jeszcze trochę.