Projekt byl založen před přibližně 6-ti lety pod záštitou GNU, samotné jméno GNOME je zkratkou, která o tom vypovídá - GNU Network Object Model Environment. Verze 1.0 - první stabilní verze byla vydána 3.4.1999. Aktuální verze nese označení 2.6 a uvolněna byla 31. 3. 2004.
Gnome je postaveno na grafickém toolkitu Gtk+, s jehož vývojáři úzce spolupracuje. Dokonce velká část programatorů přispívá do obou projektů. Z Gtk+ byly převzaty některé principy vývoje. Kupříkladu Gnome definuje některé rozšiřující grafické prvky děděním z Gtk+, intenzivně používá podpory internacionalizace a lokalizace při práci s textem - Pango, podporu zpřístupnění pro handicapované uživatele - Atk, a pak především vývoj přebírá objektový model z Glib při psaní zdrojových textů v jazyce C.
Vnitřně je projekt rozdělen na větší počet více či méně samostatných knihoven a programů. Každý takový "modul" má svého údržbáře (maintenera), ten je zodpovědný za veškeré změny. Vývoj je otevřený a každý může formou patchů přispívat, ovšem většina hlavních vývojářů je zaměstnána firmami a hackuje za pravidelný plat.
Pro jednotlivé verze Gnome se stanovují cíle, kterých by měly jednotlivé moduly dosáhnout před zmražením vývoje. Verze se označují třemi čísly. Hlavní číslo (v této chvíli 2) označuje návaznost verzí po stránce technologické, tedy, že celý projekt je vystavěn kolem přibližně stejných knihoven. Vedlejší číslo (toho času 6) se pak mění při rozšiřování API za současného zachování zpětné kompatibility. Toto číslo se mění každého půl roku a podobně jako Linux, sudá čísla označují stabilní větev, lichá pak vývojovou. Poslední číslo se mění při vydávání opravných verzí.
V rámci vývoje se celý projekt dělí na dva hlavní subprojekty: Platform a Desktop.
GNOME Foundation byla založena 15. 8. 2000 za účelem koordinace vývoje a prosazování GNOME jako platformy na firemním poli. Členy jsou například GNU, Red Hat, Ximian/Novell, Sun, IBM, Mandrake, HP, OSDN, Debian. Součástí této nadace jsou 2 tělesa:
Souhrn knihoven, které jsou povinou součástí GNOME, což má především význam pro vývojáře. Platform především garantuje zachování kompatibility mezi verzemi.
Dále se podíváme na některé významnější moduly: Gconf, ORBit, libIDL, Bonobo, Gnome-VFS, libGlade.
Knihovna pro ukládání konfigurací programů. Hlavní myšlenka je, aby programátor nemusel vytvářet vlastní konfigurační soubory a ty pak vlastnoručně procházet. Místo toho s použitím GConf může konfiguraci programu ukládat v hierarchické databázi. Ačkoliv GConf evokuje jistou podobnost s registry v MS Windows, ve skutečnosti jsou veškerá data uložena v xml souborech uložených v adresáři ~/.gconf.

Příjemnou vlastností je, že program může být informován o změně některé hodnoty prostřednictvím callback funkce, což může zjednodušit i psaní konfiguračních menu grafických programů. Pro administrátory je pak příjemné, že uložená data lze měnit z příkazové řádky programem Gconftool-2.
Příklad.:
gconftool-2 --type bool --set /desktop/gnome/interface/accessibility true
Ukládanými typy jsou integer, string, float, boolean, list, pair a schema. Za bližší pohled stojí typ schema, neboť se nejedná o typ, který by mohly programy přímo používat, je to šablona nastavení s implicitními hodnotami. Typ schema je zpravidla uložen při instalaci programu do globálního uložiště a popisuje existenci klíčů, které daný program používá, a současně nastavuje defaultní hodnoty. Schéma je šablona nastavení s implicitními hodnotami. Při dotazu na hodnotu neexistujícího klíče, pak GConf tento klíč zkusí vytvořit podle příslušného schematu.
Příklad:<gconfschemafile>
<schemalist>
<schema>
<key>/schemas/apps/my_app/my_key</key>
<applyto>/apps/my_app/my_key</applyto>
<owner>my_app</owner>
<type>int</type>
<default>42</default>
<locale name="C">
<short>A short description of this key</short>
<long>A longer description here.</long>
</locale>
</schema>
</schemalist>
</gconfschemafile>
ORB = Object Request Broker
IDL = Interface Definition Language
Tyto dvě implementují standart OMG CORBA pro volání lokálních i vzdálených komponent. V rámci GNOME je Corba užívána jako nosný protokol pro vlastní komponentový model Bonobo.
Pomocí IDL souboru popíšeme interface objektu, IDL-kompilátorem pak vygenerujeme stub a skeleton, což jsou zdrojové soubory v požadovaném jazyce, a dopíšeme funkčnost skeletonu. Volající program pak pouze slinkujeme se stubem.
Příklad IDL:
interface Echo {
void echoString(in string input);
};
Bonobo
Komponentový model pro GNOME, podobný obdobným produktům jako COM ve Windows nebo XPCOM v Mozille.
Hlavní užití je pro psaní komponent použitelných v jiných programech. Tyto komponenty mohou vytvářet vlastní grafické rozhraní, nebo mohou implementovat některé služby prostředí. Dále samozřejmě Bonobo umožňuje programům používat komponenty jiných programů. Nejviďitelnějším příkladem jsou třeba Views v Nautilovi (program pro procházení adresářů) nebo applety.

Nautilus zobrazující WWW stránku přes komponentu z prohlížeče Epiphany

panel obsahující něktré základní applety
Bonobo je rozděleno na tři knihovny:
-
Bonobo-activation - vytváří databázi instalovaných komponent, ve které pak mohou programy hledat vhodné komponenty podle implementovaných interfaců, či podle zadaných kritérií.
-
Libbonobo - na GUI nezávisející část pro psaní služeb
-
Libbonoboui - část umožňující vytváření grafických komponent a jejich začleňování do programů. Významnou částí je BonoboControl interface, díky němuž lze do programu vložit libovolný dokument
Gnome-VFS
GnomeVFS je vstupně/výstupní vrstva, která vytváří abstrakci nad médiem. Tím je myšleno, že sjednocuje přístup k souborům na lokálních discích s přístupem přes http, ftp, smb, web-dav, atd. K tomu umožňuje jak synchroní, tak i asynchroní přístup, který je třeba pro zachování interaktivity programů při přístupu ke vzdáleným souborům. Největší výhodou této knihovny je rozšířitelnst přes moduly. Tedy není těžké umožnit přístup k souborům uloženým na nějakém neobvyklém médiu všem programům v GNOME (a dalším používajícím Gnome-VFS).

Nautilus zobrazující obsah ftp serveru přes Gnome-VFS
libGlade
Nejprve krátký úvod. Již od prvních verzí Gtk+ existuje program Glade, což je grafický návrhář GUI, který si ukládá vytvářená okna do xml souborů s příponou glade, a teprve z něj generuje zdrojový kód. Jednoho dne napadlo nějakého programátora, že by šlo GUI v programu vytvářet přímo z tohoto glade souboru bez nutnosti statického zakompilování do binárky programu. Nápad to byl dobrý (i když ne všemi hned kladně přijatý), a tak vznikla libGlade a po nějaké době se stala součástí GNOME.
Takže libGlade tedy umožňuje vytvářet GUI z xml souboru pomocí přibližně 4 funkčních volání. V dnešní době tohoto využívají téměř všechny programy, které jsou součástí GNOME. Navíc celé celé GUI nemusí být popsáno pouze v jednom souboru, standartními mechanismy Gtk+ lze jednotlivé části spojovat a tak některé programy toho využívají ke customizaci svého vzhledu - uživatel vlastně vybere, který glade soubor program použije. Podobnou funkčnost se plánuje implementovat v příštích verzích Gtk+, což by mělo mít výhody ve vyšší rychlosti, flexibilnosti a především v rozšíření tohoto přístupu vývoje aplikací.
GNOME Platform Binding
Jedná se o takový pseudo-projekt. V podstatě jen koordinuje vývoj samostatných projektů mimo GNOME, které se snaží přinést podporu pro GNOME API do jiných jazyků než C. K tomu tyto projekty musí splňovat několik podmínek. Především takový bindings musí číslovat verze konzistentně s GNOME Platform&Desktop. V této chvíli jsou zahrnuty jazyky C++, Perl, Java a C# (zatím jen jako beta verze). Kupodivu asi nejpoužívanější binding, pro Python, není součástí, což je spůsobeno neshodou s vývojáři (vlastní číslovaní verzí, nejednotná správa), ale do vydání GNOME 2.8 by se situace měla změnit a i Python by měl mít oficiální binding pro GNOME.
Samozřejmě existují i další "neoficiální" bindingy - Ada, Objective C, Guile, Lisp... Většinou však mají celice daleko k úplnosti a aktuálnosti.
GNOME Desktop
Druhým hlavním subprojektem je souhrn programů, které tvoří Desktop Environment (DE). To znamená všechny grafické prvky, které mají zjednodušit uživatelovi práci s počítačem, a některé programy, které celý DE drží pohromadě "z podkapoty".
GDM je grafický přihlašovací program do X. Gnome-Session běží jako hlavní proces celého DE. Gnome-panel vytváří panely, které pomocí appletů vytváří stěžejní součást DE. Metacity je window manager, tedy stará se o správu a manipulace s okny. Nautilus vykresluje ikony na plochu a umožňuje procházení adresářů a otevírání souborů.
Control-center je hlavní modul, který dává uživali možnost nastavit si vzhled a chování DE podle svého přání. CC ovšem není monolitický program, skládá se ze sbírky tzv. cappletů, což jsou menší programy, přístupné přes menu GNOME nebo přes Nautilus.
Dále jsou v GNOME Desktop zahrnuty některé zaákladní aplikace - gpdf (PDF prohlížeč), ggv (prohlížeč PostScriptu), Eye of Gnome (prohlížeč obrázků), Epiphany (WWW prohlížeč), File Roller (komprimační program), Gedit (jednoduchý textový editor), Yelp (prohlížeč naápovědy), Gnome-Terminal, Gstreamer (multimediální framework)...
GStreamer
GStreamer je určitě největší novinkou v GNOME 2.6 oproti GNOME 2.4. Je to knihovna, která vytváří multimediální vrstvu mezi programem a samotnými multimedii. Je navržena jako minimální jádro potřebné k práci s pluginy, pomocí kterých vytváří tzv. pipelines. Tyto pipeliny umí vytvářet zcela automaticky, tudíž programátor programu nemusí udělat víc, než jen zadat vstupní data a způsob, jak mají být prezentována.

Program gst-editor pro vytváření pipeline
Pluginy vždy pouze provádí transformaci dat mezi svými vstupy a výstupy a mohou implementovat interface, pomocí kterého s nimi program může komunikovat (např mixer, contrast, atd.).
Několik typů pluginů:
- Source - získává data, například čtením z disku
- Sink - prezentuje data, třeba vykresluje video přes Xvideo, nebo hraje zvuk přes ALSA
- Demuxer - prvek 1-N, například AVI stream rozdělí na audio a video
- Muxer - prvek N-1, použití hlavně při encodování
- Filtry - prvky M-N, třeba deinterlacing, ekvalizér
- Autoplugger a Manager - pro vytváření streamu
GNOME Office
GNOME Office je další z pseudo-projektů. Je to seznam programů, pomocí kterých dosáhne uživatel podobného cílu jako s užitím MS Office. Nadto se snaží o koordinaci a interoperabilitu. Ve skutečnosti se úžeji integrují pouze programy Abiword a Gnumeric.
Momentálně jsou na seznamu: Abiword (textový procesor), Gnumeric (tabulkový kalkulátor), Dia (kreslítko diagramů), Evolution (více než mailer), GIMP (rastrový grafický editor), Sodipodi (vektorový grafický editor), Sketch (vektorový grafický editor), GnuCash, MrProject, Gfax, Galeon, Eye Of Gnome, Balsa, GNOME-DB, Toutdoux.
Mono
Mono je OpenSource implementace .Net platformy. Co má Mono společného s GNOME? Stejného otce - Miguel de Icaza. Vznik Mona se datuje do dubna 2001, kdy se ve firmě Ximian (nyní pod křikly Novellu) rozhodli, že pro Linux je nutné mít vlastní klon .Net. Další vztah ke GNOME je ten, že se hovoří o adopci Mona jako budoucí platformě pro GNOME, ovšem zde není nic rozhodnuto a větší sympatie si získává Java (ke škodě Pythonu - pozn. autora).
Samotný runtime dotnetu, pojmenovaný CLR (Common Language Runtime) je otevřený standart spravovaný organizací ECMA. Ale vetšina modulů (tak jsou nazývány knihovny) je již nejčastěji patentovaná Microsoftem, ten se však zavázal nikterak neomezovat jejich implemetaci sřetími stranami. I přesto zde hrozí ze strany Microsoftu jisté riziko, že "změní" názor. To vede k silným antipatiím k Mono ze strany některých opensourcových sympatizantů.
V součanost Mono podporuje převéžně jazyk C#, v němž je téměř celý napsán (od března 2002 je self-hosting)
Součástí ECMA standartu jsou přesněji virtual machine s class loaderem, Just-in-time kompilátor, garbage collector a některé třídy, ovšem pouze naprosté základy (ekvivalent ANSI C). Dále tento standart popisuje virtuální instrukční sadu - CIL.
Mono samotné se pak skládá z C# kompilátoru, VB kompilátoru, Just-In-Time (JIT) kompilátoru, interpreter a knihoven. Na tyto části se podíváme blíže.
mcs
Program mcs je kompilátor jazyka C#, momentálně podporující C# verze 1.0 (verzi 2.0 za několik měsíců). Ze zdrojových souborů vygeneruje CIL kód a provádí na něm některé optimalizace. Program se snaží zachovat maximální kolmpatibilitu s MS C# kompilátorem, kvůli usnadnění portace z MS .Net . Tato kompatibilita se týká parametrů, chybových hlášení apod.
mono
Tento program je samotné jádro .Net runtimu s JIT. Podporuje architektury x86, spark a powerpc. Na nepodporované platformě se přepne na program mint. Použití je snadné - mono program.exe .
mint
Interpreter CIL bez JIT, což se projevuje především mnohem nižším výkonem oproti mono, je přibližně 10x pomalejší. Výhodou je naopak možnost spustit .Net aplikace na téměř libovolném unixovém systému.
Přehled knihoven v Mono

V červené barvě komponenty firmy Microsoft, modrě jsou vyvedeny součásti pokryté ECMA standarty, zelené jsou komponenty specifické pro projekt Mono
Odkazy
GNOME - Oficiální stránky
GNOME Developers - Stránky pro vývojáře
GNOME Foundation - Stránky nadace
GNOME Office
Footnotes - Zpravodajský server ze světa GNOME
PlanetGNOME - weblog vývojářů GNOME
GNU - notoricky známá organizace
Gtk+ - grafický toolkit
GStreamer - multimediální toolkit
Mono - .Net platforma
Mozilla - prohlížeč a vývojová platforma