GNOME est un environnement au même titre que KDE, essayant d'apporter de la cohérence à l'utilisateur. C'est à la fois un ensemble de bibliothèque de haut niveau, des programmes de configuration, des programmes utilitaires, des jeux, un lanceur d'application, un gestionnaire de fenêtre, un explorateur de fichier universel ( Nautilus)... Il est écrit principalement en C ANSI (ce qui lui a valu d'être porté sous windows), mais avec un système objet basé en bibliothèque (les GObject-s).
C'est l'échelon supérieur de la programmation objet, et c'est à la programmation d'interface graphique ce que les tubes sont à UNIX. Il s'agit de créer des super objets qui sont en fait des processus à part entière (donc en particulier, s'il plante, l'objet conteneur reçoit un signal et continu de tourner). De plus les composants peuvent être découvert durant le run-time. Pour pouvoir fonctionner ils doivent présenter les interfaces qu'ils implémentent et s'enregistrer au sein d'un certain middleware.
La plupart des solutions existantes comportent 2 parties : une couche basse dédiée à la communication (fonctionnant ou non au dessus d'un réseau), une couche haute plus spécifique à l'interface graphique.
Bonobo est le modèle de composant sous GNOME.
Construit au dessus de XWindow et de CORBA, il permet d'utiliser des objets graphiques distants au sein même d'une application.
Ce fichier permet à Bonobo de fusionner les menus du conteneur et celui du composant, de plus Bonobo exploite les possibilités de XWindow à fonctionner au dessus du réseau pour afficher une vue sur le composant.
Un wiki est un site web sur lequel tourne une application (généralement écrit en PHP et se connectant à une base de données MySQL) qui permet d'augmenter et d'éditer le contenu du site de manière distante en utilisant simplement un navigateur. Exemple : PHP Nuke, Spip.
Un traitement de texte peut-être vu comme un compilateur qui convertie un document d'un format à un autre en appliquant un filtre (par exemple .sxw (Open Office) vers PostScript ), de plus on distingue généralement des familles de traitement de texte :
Wysiwyg (What you see is what you what you get) dont l'objectif est de montrer à l'utilisateur ce qu'il obtiendra sur papier. Font partie de cette famille : Microsoft Word, Corel Word Perfect, Star Office, Open Office, ... La plupart d'entre eux utilisent la programmation par composants ce qui permet la création de document mixte, par exemple on peut insérer un document excel dans un document word.
Wysiwyw (What you see is what you want). Il s'agit là d'orienter l'utilisateur à ne pas se soucier de la mise en forme mais de se concentrer sur le contenu. Cette une approche haut niveau, on ne parle pas de telle ou telle police ou de telle ou telle couleur mais de section, et de classe dont fait partie le document (lettre, article, livre). Citons dans cette catégorie :
Un langage de macros
C'est un front end graphique pour latex.
Un langage de balise / Une feuille de style / une sémantique
voir xml / xslt / xsl:fo
A l'heure actuel, un traitement de texte idéal devrait au moins être :
Nous avons des contraintes pour notre traitement de texte qui s'opposent. Nous voulons à la fois bénéficié d'une infinité de filtres et de composants tout en conservant l'espace disque. Ceci nous amène à envisager de distribuer les composants et les filtres de notre traitement de texte idéal.
D'autre part nous avons vu qu'il était du travail de bonobo de s'occuper de la gestion des composants, alors, bien que cela mérite quand même que nous en parlions, nous occulterons ce point pour nous intéresser à l'utilisation des filtres à distance.
Nous souhaitons :
Il s'agira d'écrire à la fois toute la partie cliente que la partie serveur. Pour la communication client - serveur, on utilisera CORBA.
Le cadre est l'environnement GNOME. On utilisera donc le langage C. Si besoin est d'utiliser de la programmation objet, on utilisera les GObject-s. Les autres conventions sont celles couramment admises dans la création de programmes GNOME.
On dispose