[LTNet]OPEN-EVENTS::OPEN MUSIC::MINICONTENT::KNOPPIX LINUXTAG.org
Cornerstone
// LinuxTag 2004
Besuchen Sie uns auch n臘hstes Jahr wieder auf dem LinuxTag 2004 im Karlsruher Messe- und Kongresszentrum. Fr n臧ere Details und den genauen Termin besuchen Sie bitte die LinuxTag Homepage.
EUROPAS GRヨSSTE GNU/LINUX MESSE UND KONFERENZ
KONFERENZ-CD-ROM 2003
Hauptseite Vortr臠e Bcher History Software Knoppix Sponsoren Abspann Impressum
Hauptseite//Vortr臠e//ワberblick ber die GNOME-Entwicklungsplattform -- Material zum Vortrag "Einfhrung in die GNOME-Programmierung"

ワberblick ber die GNOME-Entwicklungsplattform -- Material zum Vortrag "Einfhrung in die GNOME-Programmierung"

Matthias Warkus


Umfang dieses Skripts

Es kann nicht Ziel dieses Skripts sein, eine detaillierte Anleitung oder auch nur eine vollst舅dige ワbersicht ber die GNOME-Entwicklung zu geben; dazu ist das Feld mittlerweile zu umfangreich. Bereits einzelne Teilgebiete wie die GNOME-Komponentenarchitektur knten je nicht blo゚ Material zu einem ganzen Vortrag, sondern zu einer ganzen Konferenz liefern. (Was Konferenzen zur GNOME-Entwicklung angeht, siehe auch GUADEC.)

Ich mhte daher nur versuchen, eine Art Streiflicht ber das Thema GNOME-Programmierung zu werfen. Dazu werde ich skizzieren, wie die GNOME-Entwicklungsplattform aussieht und beschreiben, was eine GNOME-Anwendung eigentlich zu einer GNOME-Anwendung macht - sowohl im programmiererischen als auch im nicht-programmiererischen Bereich. Am Schluss soll ein Ausblick in die Zukunft von GNOME aus der Entwicklerperspektive stehen.

Dass der zugehige mndliche Vortrag beim LinuxTag 2003 den Schwerpunkt mehr auf das Praktische legt als dieser doch eher trockene ワberblick, liegt in der Natur der Sache. Wie ich beim Erarbeiten dieses Skripts bemerkt habe, w舐e bereits ein einfaches Programmierbeispiel fr eine `rechtsgltige' GNOME-Anwendung nebst Schritt-fr-Schritt-Erl舫terung des Codes deutlich zu umfangreich, um hier neben allem anderem Platz zu finden. Dieser praktische Teil wird daher `live', w臧rend des Vortrages stattfinden.

Sie knen jedoch dem Paket gnome-2-beispiele.tar.gz, das ich auf meiner Homepage bereitgestellt habe, eine reichliche Menge von ausfhrlich kommentierten Programmierbeispielen fr GNOME 2 entnehmen.

Architektur und Grundkonzepte der GNOME-Plattform

Die G-Welt

GNOME-Programmierung spielt sich in einer Welt ab, die ich auf Grund des inflation舐en Vorkommens des Anfangsbuchstabens G in Programm-, Bibliotheks-, Klassen-, Typ- und Funktionsnamen als `G-Welt' bezeichnen mhte. Folgendes macht diese Welt aus:

  • Zu Grunde liegende Programmiersprache ist C; darauf knen allerdings beliebige Bindungen fr andere Sprachen aufsetzen und tun es auch

  • Quellb舫me werden mit GNU Automake, Autoconf, Libtool etc. konfiguriert, wobei pkgconfig eingesetzt wird, um abzufragen, welche Pakete das System bereitstellt

  • Die Lokalisierung erfolgt mit GNU Gettext, untersttzt durch Intltool

  • Fr einfache Datenstrukturen, Hilfsfunktionen und Abstraktionen wird GLib, die fundamentalste Bibliothek der GNOME-Plattform eingesetzt; bei allen Datentypen gilt die Konvention, dass die mit Gro゚buchstaben beginnenden Teile eines Typnamen den auf diesem Typen arbeitenden Funktionen in Kleinbuchstaben und durch Unterstriche getrennt vorausgehen; d.h. z.B., alle Funktionen, die auf dem Typen "GMemChunk" arbeiten, beginnen mit "g_mem_chunk_"

  • Objektorientierung wird durch GObject bereitgestellt; fast alle ワberprfungen passieren zur Laufzeit, was Bindungen fr interpretierte Sprachen deutlich einfacher macht

  • GTK+ dient als Widget-Bibliothek zum Darstellen grafischer Benutzeroberfl臘hen unter X11 oder inzwischen auch unter anderen Plattformen

  • Mit dem Oberfl臘hen-Editor Glade knen Dialoge und Anwendungsfenster visuell entworfen und als XML-Beschreibungen gespeichert werden, die das Programm sp舩er zur Laufzeit l臈t und darstellt

All dies kann ein Programm noch verwenden, ohne ein GNOME-Programm zu sein. "Reine" GTK+-Anwendungen wie The GIMP halten sich in der G-Welt, aber nicht im GNOME-Land auf.

Die GNOME-Plattform als Bndel von Bibliotheken

GNOME stellt sich nicht als eine gro゚e, monolithische Bibliothek dar, die alle Klassen und Funktionen bereitstellt, die GNOME-Funktionalit舩 ausmachen, sondern als ein ganzes Bndel einer (leider?) erstaunlich gro゚en Zahl von Einzelbibliotheken, die jeweils einen bestimmten Zweck erfllen. Nur einige davon exponieren jedoch fr den Entwickler wichtige APIs; zu ihnen gehen:

  • libgnome/libgnomeui -- GNOME-eigene Hilfsfunktionen und Erweiterungen von GTK+ um GNOME-spezifische Widgets. Diese Bibliotheken sollen irgendwann einmal unnig werden.

  • libgnomecanvas -- Der GNOME-Canvas, eine m臘htige, an den Tk-Canvas angelehnte Zeichenfl臘he.

  • GNOME-VFS -- GNOMEs virtuelles Dateisystem fr synchrone und asynchrone, netzwerktransparente Dateizugriffe

  • GConf -- GNOMEs Konfigurationssystem

  • libxml2 -- Ein flexibler XML-Parser, der Kigsweg zum einfachen Laden und Speichern strukturierter Informationen in der GNOME-Welt

  • GNOME-Print -- GNOMEs Drucksystem: sorgt fr Plattformunabh舅gigkeit und u.A. eine pixelgenaue Druckvorschau

  • GtkHTML -- HTML-Renderer

  • Bonobo -- GNOMEs Komponentenobjektmodell, in etwa vergleichbar mit COM u.ト.

Der Dokumentationszustand der meisten dieser Bibliotheken hat sich in letzter Zeit um einiges verbessert, l舖st aber immer noch viel zu wnschen brig. An dieser Stelle sei erw臧nt, dass es mit DevHelp mittlerweile einen Hilfebrowser speziell fr Entwickler gibt, der den Zugriff auf die Referenzdokumente der installierten Bibliotheken stark vereinfacht (siehe Abbildung).

Was macht eine Anwendung zur GNOME-Anwendung?

Nun ist es so, dass noch lange nicht jedes grafische Programm mit einer GTK+-Oberfl臘he, das vielleicht noch gegen die ein oder andere GNOME-Bibliothek linkt, schon eine GNOME-Anwendung ist. Das Wesen einer `wahren' GNOME-Anwendung wird von zahlreichen Faktoren bestimmt.

Konfiguration mit GConf

Anwendungen haben es an sich, konfigurierbar zu sein. Dies bedeutet letztlich, dass irgendwo eine Reihe von Werten vorliegt, deren Betr臠e das Verhalten oder das Aussehen der Anwendung bestimmen.

Um dies zu realisieren, ginge man normalerweise etwa so vor:

  1. Datenstrukturen fr die Werte definieren

  2. Die Anwendung auf diese Werte zurckgreifen lassen, wo immer sie sich nach ihnen richtet

  3. Einen Konfigurationsdialog schreiben, der die Einstellungen in diese Werte eintr臠t

  4. Implementieren, dass bei Programmende die Einstellungen in eine Datei niedergeschrieben bzw. bei Programmstart sie daraus gelesen werden

Hieraus ergeben sich sofort einige Probleme. Wie erf臧rt beispielsweise die Anwendung, wenn ein Konfigurationswert ge舅dert wurde? Welches Dateiformat wird verwendet, und wo landet die Datei? Was passiert, wenn die Konfigurationsdatei ge舅dert wird, w臧rend die Anwendung l舫ft? Und hei゚t es nicht das Rad neu erfinden, diesen Mechanismus fr jede Anwendung neu zu schreiben?

GConf lt die Probleme auf ziemlich elegante Art und Weise. Es gibt eine zentrale Konfigurationsdatenbank, die eine als Verzeichnisbaum gegliederte Hierarchie von typbehafteten Schlsseln enth舁t, die Werte aufnehmen knen. Sie tun nunmehr folgendes:

  1. Die Konfigurationsdaten in GConf-Werte herunterbrechen, die in GConf-Schlsseln unterkommen knen

  2. Von Konfigurationswerten abh舅gige Anwendungsteile durch Signalhandler an GConf-Schlssel koppeln

  3. Den Konfigurationsdialog so schreiben, dass er die Einstellungen in die GConf-Schlssel eintr臠t

Dies fhrt dazu, dass jede トnderung an der Konfigurationsdatenbank, ganz gleich, wann und von wo sie erfolgt, sofort an die Anwendung durchgereicht wird (dies wird brigens auch von den GNOME-Ergonomierichtlinien verlangt -- siehe unten). Die Kopplung zwischen der Stelle, an der die Einstellungen vorgenommen werden, und jener, an der sie wirken, erfolgt nur ber die Datenbank, ohne anwendungsinterne Logik. Auch ber die Speicherung der Schlssel mssen Sie sich keine Gedanken mehr machen. Seiteneffekt des Ganzen ist, dass es einfach ist, die Anwendung ber externe Werkzeuge zu konfigurieren, was besonders Systemadministratoren freut.

Ein solches externes Werkzeug wird bei GNOME schon mitgeliefert, n舂lich der GConf-Editor (siehe Abbildung).

Dateizugriff mit GNOME-VFS

GNOME-VFS ist eine Bibliothek, die GNOME-Anwendungen ein virtuelles Dateisystem bereitstellt; daher auch der Namensteil `VFS' fr `Virtual File System'.

Warum nun aber ein virtuelles Dateisystem benutzen und nicht einfach auf das native zugreifen? Neben dem allf舁ligen Rechtfertigungsgrund fr Abstraktionsschichten, der Portabilit舩, geht es auch darum, den Begriff des Dateisystems zu erweitern -- mit GNOME-VFS knen Sie nicht nur Inhalte auf einer lokalen Platte als Dateisystem ansprechen, sondern auf gleicher Weise auch den Inhalt einer Archivdatei oder den eines Web"=Servers auf der anderen Seite des Planeten.

Das Grundkonzept von GNOME-VFS steht auf zwei S舫len: Es werden URIen statt Dateinamen verwendet, um Dateien oder Verzeichnisse zu identifizieren, und die Funktionen sind transparent, das hei゚t, alle Zugriffe auf Dateien verwenden dieselbe URI-basierte API, unabh舅gig davon, wo die Dateien sich befinden und in welcher Art auf sie zugegriffen wird. Wenn Sie also Ihre Zugriffe ber GNOME-VFS abwickeln, knen Sie berall dort, wo Sie sonst Dateinamen akzeptieren wrden, URIen akzeptieren und ihre Benutzer damit zum Beispiel Dateien, die irgendwo im Netz liegen, genauso zug舅glich machen wie lokale, ohne Code fr Netzwerkzugriffe schreiben zu mssen. Die zur Untersttzung von Protokollen (in GNOME-VFS: "Schemen") notwendigen Routinen sind in dynamisch geladenen Modulen untergebracht, so dass beliebige neue Protokollhandler hinzugefgt werden knen.

GNOME-VFS erweitert das URI-Konzept um `verschachtelte Schemen'. Das hei゚t, dass in einer Adresse ein weiteres Schema angeh舅gt werden kann, mit dem das Ergebnis des vorigen Schemas gefnet wird. So bedeutet beispielsweise ein URI wie "http://www.revival-revival.de/dublin78.tar.gz#gzip#tar/dublin78/wasn-brett.mp3" GNOME-VFS, ein Archivdatei aus dem Netz herunterzuladen, zu dekomprimieren und aus ihr eine bestimmte Datei zu entnehmen.

ワber all dies hinaus liefert GNOME-VFS auch eine Menge praktischer Hilfsfunktionen mit, allen voran ein Subsystem fr asynchrone Zugriffe. Dies ist fr moderne grafische Anwendungen von immenser Bedeutung -- nur indem Dateizugriffe asynchron, das hei゚t, im Hintergrund, verlaufen, kann sichergestellt werden, dass Anwendungen auch w臧rend langen Zugriffen bedienbar bleiben.

GNOME-VFS bernimmt zu guter Letzt auch noch die Zuordnung zwischen Dateien und MIME-Typen einerseits sowie MIME-Typen und darauf arbeitenden Anwendungen andererseits. Das komplette Verknpfungssystem ist nicht nur ber den entsprechenden Konfigurationsdialog fr den Benutzer, sondern ber eine API auch fr den Entwickler zug舅glich.

Einbindung in die Infrastruktur: Meneintr臠e und Dateitypen

Dies fhrt direkt zum n臘hsten Punkt, dem Einbinden von Anwendungen in die GNOME-Infrastruktur. Programme sollten im GNOME-Hauptmen aufrufbar sein und au゚erdem bekannt geben, welche Dateitypen sie fnen knen.

Ersteres geschieht ber einen .desktop-Eintrag im Verzeichnis share/applications des GNOME-Installationsbaumes. Das Format von .desktop-Dateien ist standardisiert (KDE verwendet dasselbe); der Eintrag nimmt Name, Beschreibung, Aufrufname, Kategorisierung etc. der Anwendung auf und landet automatisch im GNOME-Men. Ein Beispiel sehen Sie hier (der ワbersichtlichkeit halber wurden nur die deutschen und franzischen ワbersetzungen der natrlichsprachigen Eintr臠e bernommen):

[Desktop Entry]
Encoding=UTF-8
Name=PDF file viewer
Name[de]=PDF-Dateibetrachter
Name[fr]=Visualiseur de fichier PDF
Comment=Tool for viewing PDF files
Comment[de]=Werkzeug zur Anzeige von PDF-Dateien
Comment[fr]=Visualiseur de fichier PDF (Portable Document Format)
Exec=gpdf
Icon=document-icons/gnome-application-pdf.png
Terminal=false
Type=Application
Categories=GNOME;Application;Graphics;VectorGraphics;Viewer;
StartupNotify=true
		

Das Verknpfen von Dokumenttypen mit einer Anwendung ist geringfgig schwerer. Strenggenommen kann ein Dateityp gar nicht mit einer Anwendung verknpft werden, sondern es kann nur ein neuer MIME-Typ fr einen oder mehrere bestimmte Dateitypen deklariert und andererseits die Untersttzung einer Anwendung fr bestimmte MIME-Typen bekannt gegeben werden.

Die Deklaration neuer MIME-Typen geschieht zum Beispiel, indem eine Datei mit dem Suffix .mime in das Verzeichnis share/mime-info des GNOME-Baumes kopiert wird. Eine solche Datei kann beliebig viele MIME-Typen deklarieren und Erkennungsmerkmale wie Dateinamensuffixe o.ト. angeben. Hat eine Anwendung allerdings keinen eigenen, neuartigen Dateityp, reichen die zahlreichen von GNOME-VFS vorgegebenen Erkennungsheuristiken zur Bestimmung zahlloser mehr oder weniger g舅giger MIME-Typen durchweg aus. Hier trotzdem zur Veranschaulichung die Datei gnumeric.mime, die alle von der GNOME-Tabellenkalkulation Gnumeric neu deklarierten MIME-Typen an Dateinamensuffixe bindet:

application/x-gnumeric
	ext: gnumeric

application/vnd.ms-excel
	ext: xls xlw 

application/x-applix-spreadsheet
	ext: as 

application/vnd.lotus-1-2-3
	ext: 123 wk4 wk3 wk1
	  </programlisting>

	  <para>Untersttzung fr ein oder mehrere MIME-Typen wird bekanntgegeben
		durch Dateien mit dem Suffix .keys im selben Verzeichnis. Sehen Sie
		hierzu einen ebenfalls weitgehend selbsterkl舐enden Abschnitt aus gnumeric.keys:</para>

	  <programlisting>
<![CDATA[application/x-gnumeric:
        open=gnumeric %f
        view=gnumeric %f
        icon-filename=/gnome/garnome/share/pixmaps/gnumeric/gnome-application-x-gnumeric.png
 
application/vnd.ms-excel:
        open=gnumeric %f
        view=gnumeric %f
        icon-filename=/gnome/garnome/share/pixmaps/gnumeric/gnome-application-x-xls.png
 
application/vnd.lotus-1-2-3:
        open=gnumeric %f
        view=gnumeric %f
        icon-filename=/gnome/garnome/share/pixmaps/gnumeric/gnome-application-vnd.lotus-1-2-3.png
	  

Ergonomische Gestaltung

Lange Zeit hatten sowohl die Kernkomponenten von GNOME als auch auf der GNOME-Plattform aufsetzende Drittanwendungen das Problem mangelnder Konsistenz in der Benutzerfhrung. Selbst in einfachen Dingen wie der Benennung und Anordnung von Meneintr臠en gab es jahrelang keine Konventionen.

Selbst kleine Inkonsistenzen fhren jedoch bereits zur Verwirrung der Benutzer, zu Verzerungen in der Bedienung und damit zum Verlust von Produktivit舩. Der Anspruch von トsthetik, Einheitlichkeit und Benutzerfreundlichkeit, den GNOME sich selbst stellt, kann nur eingelt werden, wenn es einheitliche Richtlinien fr die Gestaltung von GNOME-Anwendungen gibt.

Mit den seit August 2002 vorliegenden GNOME Human Interface Guidelines gibt es solche Richtlinien nun. Es wrde den Rahmen dieses Skripts sprengen, im Einzelnen abzuhandeln, worin all diese Richtlinien bestehen. Von allgemeinen Regeln zur Ergonomie bis hin in die Details des visuellen Design von Anwendungen hinein geben die HIG GNOME-Entwicklern eine umfassende Hilfe zur ergonomischen, standardkonformen Gestaltung von Anwendungen an die Hand.

Erw臧nenswert ist vielleicht, dass den HIG das Ideal der visuell ruhigen Anwendung zu Grunde liegt -- das hei゚t: Abst舅de statt Linien zur optischen Gruppierung; keine ワberladung von Fenstern mit Bedienelementen; klare, ausgerichtete Blke von Elementen statt Chaos. Betrachten Sie zum besseren Verst舅dnis die folgenden Abbildungen, die ein Dialogfenster einmal vor und einmal nach der richtlinienkonformen Umgestaltung zeigen.

Vorher:

Nachher:

Barrierefreiheit

Unter diesem Schlagwort versteht man in der Programmierung dasselbe wie in der Architektur: n舂lich, so zu planen, dass von vornherein keine Zugangshindernisse fr Behinderte entstehen -- so mssen auch nachtr臠lich keine berbrckt werden.

Barrierefreiheit in der GNOME-Programmierung bedeutet zuallererst korrekte und aussagekr臟tige Beschriftung sowie Erreichbarkeit aller Bedienelemente einer Anwendung von der Tastatur aus. GTK+ und GNOME stellen dafr komfortable Hilfsfunktionen bereit, so dass es keinen gro゚en Zusatzaufwand bedeutet, hierfr zu sorgen. Da GTK+' mitgelieferte Widgets ihre Daten ohnehin ber das Accessibility Toolkit ATK weitergeben, muss nur bei selbstentwickelten Widgets diese `von Hand' eingebaut werden.

Abgesehen von der fr nichtbehinderte Benutzer bereits sehr angenehmen Tastaturbedienbarkeit stellt dies auch sicher, dass Zusatzanwendungen wie Bildschirmvorleser, Vergrerungswerkzeuge, Bildschirmtastaturen usw. in die Anwendung eingreifen knen. Ein weiterer Nebeneffekt ist somit, dass es sp舩er einmal sehr einfach sein wird, solcherma゚en zug舅gliche Software von einem Makrorekorder o.ト. fernzusteuern.

Au゚er im Code selber ist Barrierefreiheit auch noch in Teilen des visuellen Designs zu bercksichtigen; zum Beispiel sollten Symbole sich auch von Farbenblinden noch unterscheiden lassen knen. Bei den im Repertoire von GTK+ bzw. GNOME enthaltenen Standardsymbolen ist dies weniger ein Problem, da spezielle Icon-Themen mit besonders gro゚en und/oder kontrastreichen Symbolen existieren.

Lokalisierung mit Gettext

Zur Internationalisierung und Lokalisierung von Software mit GNU Gettext ist schon anderswo viel geschrieben worden. Grunds舩zlich geht es darum, alle irgendwie Locale-spezifischen Zeichenkettenkonstanten in Aufrufe der Makros _() bzw. N_() zu klammern. Die Konstanten werden in einer .pot-Datei zusammengetragen, von ワbersetzern in .po-Dateien fr jede einzelne Locale bersetzt, und beim sp舩eren Aufruf des Programmes wird dieses die bersetzten Zeichenketten verwenden.

Um zu vermeiden, dass ein Programm in anderen als der Locale, unter der es entwickelt wurde, unkomfortabel oder unbenutzbar wird, ist es wichtig, gewisse Regeln der Internationalisierung einzuhalten -- z.B. drfen in Fensterlayouts keine festen Breitenvorgaben vorkommen, da sonst Beschriftungen, wenn sie in der ワbersetzung l舅ger werden als im Original, abgeschnitten werden. Auch drfen S舩ze nicht mit Zeichenkettenfunktionen aus Satzfragmenten zusammengebaut werden, da nichts und niemand gew臧rleistet, dass die Grammatik aller anderen Sprachen genauso funktioniert wie die der Entwicklungssprache.

Dokumentation

Der Quasistandard fr strukturierte technische Dokumente, DocBook (mittlerweile in Form von DocBook XML), hat sich in GNOME schon seit Jahren durchgesetzt. Das Format ist detailliert in zahlreichen Quellen dokumentiert und wird von GNOME ohne Modifikationen verwendet, so dass ich es hier nicht weiter zu besprechen brauche. Wichtig ist es jedoch, seine GNOME-Anwendungen nicht nur nach dem GNOME Documentation Style Guide mit einer DocBook-Dokumentation zu versehen, sondern diese dann auch bei der Installation anzumelden.

Hierzu gibt es ein spezielles, ebenfalls einigerma゚en standardisiertes Metadateien-Format namens OMF, das unter GNOME von einer Software namens ScrollKeeper betreut wird. Eine sauber geschriebene OMF-Datei, bei der Installation angemeldet, gew臧rleistet, dass die mhsam geschriebene Dokumentation im GNOME-Hilfesystem berall dort zug舅glich ist, wo sie hingeht. Betrachten Sie das folgende Beispiel fr eine OMF-Datei; es sollte einigerma゚en selbsterkl舐end sein:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE omf PUBLIC "-//OMF//DTD Scrollkeeper OMF Variant V1.0//DE"
"http://scrollkeeper.sourceforge.net/dtds/scrollkeeper-omf-1.0/scrollkeeper-omf.dtd">
<omf>
 <resource>
  <creator>hweitz@klinkenbuchse.de (Harald Weitz)</creator>
  <maintainer>dzimmer@klinkenbuchse.de (Diana Zimmer)</maintainer>
  <title>Handbuch fr WunderText</title>
  <date>2001-03-27</date>

  <version identifier="2.0" date="2002-09-10" description="Aktualisiert fr
	  WunderText 2.0"/>

  <subject category="GNOME|Anwendungen|Bro"/>
  <description>Benutzerhandbuch fr WunderText 2.0</description>
  <type>Benutzerhandbuch</type>

  <format mime="text/xml" dtd="-//OASIS//DTD DocBook XML V4.1.2//DE"/>
  <identifier url="file://opt/gnome/share/gnome/help/wundertext/C/wundertext.xml"/>
  <language code="C"/>
  <relation seriesid="01ddeea4-0a42-11d6-9cf9-ee43c422358d"/>
  <rights type="GNU FDL" license.version="1.1" holder="Harald Weitz"/>
 </resource>
</omf>
	

Ausblick

Sie werden sicher bemerkt haben, dass ich einen gro゚en Bereich der GNOME-Programmierung in meinem Skript ausgeklammert habe, n舂lich die des Komponentenobjektmodells Bonobo. Dieses CORBA-basierte System zum Exportieren und Einbetten von Komponenten und Controls spielt in GNOME 2 eine wesentlich grere Rolle als in GNOME 1 -- Bonobo ist mit der neuen Version unmittelbarer Teil der Kernplattform geworden.

Es wrde trotzdem dieses Skript ber Gebhr verl舅gern, hier Bonobo eingehend zu diskutieren, was angesichts der zahlreichen bereits vorliegenden Skripte und Online-Verfentlichungen von auf diesem Gebiete Kompetenteren hoffentlich zu verschmerzen ist. Es bleibt mir zu wnschen, dass Bonobo Eingang in eine eventuelle zweite Ausgabe oder Fortsetzung von "GNOME 2.0 -- Das Entwicklerhandbuch" finden knen wird.

Ansonsten sei noch darauf verwiesen, dass die n臧ere Zukunft (d.h. die GNOME-Version 2.4 und eventuelle weitere 2.x-Versionen) fr GNOME-Entwickler keine unangenehmen ワberraschungen bringen kann, da die bin舐e Abw舐tskompatibilit舩 zwischen GNOME-Versionen mit der selben Ziffer vor dem Punkt stets gewahrt wird.

Unter dem Arbeitstitel "libegg" entsteht jedoch schon seit einiger Zeit ein Sammelbecken von vorgeschlagenen API-Erweiterungen, die im Laufe der n臘hsten Monate und Jahre ihren Weg in die Plattformbibliotheken finden sollen. Hauptschwerpunkt ist es dabei, eine neue, einheitliche umfassende Lung fr das Programmieren von Mens und (konfigurierbaren) Werkzeugleisten zu finden, wozu derzeit in GNOME mindestens drei verschiedene Wege existieren.

Als Nebenprodukt der weiteren Konsolidierung der GNOME-Plattform sollen, wie oben schon erw臧nt, die Bibliotheken libgnome und libgnomeui in absehbarer Zeit verschwinden oder zumindest ihren Charakter als GTK+-Erweiterungsbibliotheken verlieren, da alle GNOME-spezifischen Widgets irgendwann entweder in GTK+ `einwandern' oder durch 舍uivalente, neue GTK+-Widgets abgelt werden sollen.

Nachwort: Zur Ermunterung

Es ist gut mlich, dass Sie dieses Skript und der zugehige Vortrag mehr von der GNOME-Entwicklung abschrecken als zu ihr hinziehen. Wenn dies an bestimmten technischen Eigenheiten der Plattform liegt, kann ich Ihnen hierzu keinen Rat geben -- vieles ist da verst舅dlicherweise Geschmackssache.

Eines mhte ich jedoch noch loswerden: Der Umfang der Arbeiten, die zu einer kompletten GNOME-Anwendung nig sind, braucht sie nicht abzuschrecken. Die GNOME-Gemeinde ist riesig, und viele ihrer Mitglieder haben sich mittlerweile zu Spezialisten fr Teilgebiete der Anwendungsentwicklung wie Ergonomie, Internationalisierung, Barrierefreiheit oder Dokumentation entwickelt. Wenn Ihre Anwendung gut und ntzlich ist, werden Sie keinen der Schritte, der sie zu einer vollwertigen GNOME-Anwendung macht, alleine gehen mssen.

Impressum // ゥ 2003 LinuxTag e.V.