X Window System

protocole réseau et graphique

X Window, X11 ou simplement X est un protocole de système de fenêtrage qui gère l'écran, la souris et également le clavier. Il est souvent appelé X Window (sans s, à ne pas confondre avec Windows avec un s).

Schéma client-serveur de X Window.

C'est le système standard ouvert d'interaction graphique avec l'utilisateur sur les UNIX (Linux, BSD, etc.). Le serveur X est optionnel sur macOS (qui utilise nativement Quartz). Il est possible d'installer un serveur X sur la plupart des systèmes d'exploitation, dont Windows[1]. On dit communément d'une application qu'elle tourne sous X lorsqu'elle est conçue pour l'environnement X.

X est actuellement dirigé par la Fondation X.Org, avec son implémentation actuelle : X.Org.

FonctionnementModifier

X fonctionne suivant le modèle client–serveur :

  • le logiciel serveur X tourne sur un terminal intelligent (client léger) doté d'un écran, d'un clavier et d'une souris ; il reçoit et sert des requêtes d'affichage, d'entrées de texte et de déplacement de souris sur un port logiciel ;
  • un ou plusieurs logiciels client X, depuis des ordinateurs locaux ou distants (logiciel graphique) se connectent au serveur X et lui envoient leurs requêtes d'affichage en utilisant le protocole X au travers de la bibliothèque X (Xlib). Le client est simplement l'application logicielle (jeu, traitement de texte, calculatrice…) qui utilise alors le protocole X pour déléguer au serveur X les tâches d'interactions homme-machine (ou IHM).

Cette terminologie client–serveur avec le serveur côté utilisateur et le client côté application peut sembler étrange pour les nouveaux utilisateurs de X, les termes semblant inversés : on a davantage l'habitude de voir un serveur sur l'ordinateur principal que sur un terminal. Cependant X se place du point de vue de l'application plutôt que de l'utilisateur : X fournit des services d'entrée-sortie à l'application, c'est donc un serveur ; la ou les applications consomment ces services, ce sont donc des clients.

Avant l'arrivée du modèle client-serveur, les applications s'exécutaient sur une machine centralisée s'occupant à la fois du traitement des données et de la mise en forme de l'affichage. Le poste de l'utilisateur possédait essentiellement un clavier et un écran, parfois une souris.

Le poste d'affichage ne possédait pas de réelle intelligence locale, les programmes s'exécutant sur la machine centralisée. On lui adjoignait cependant un boîtier contrôleur d'écran et de clavier qui exécutait un serveur X. L'ensemble se nommait un terminal X. Les programmes s'exécutaient sur la machine centralisée (serveur d'applications commun à plusieurs terminaux X) et les interactions homme-machine de ces programmes étaient gérés par le terminal X (client applicatif). Le terminal X est un exemple de ce que l'on appelle un client léger.

X fonctionne en IPv4 depuis des années, mais il peut également fonctionner en IPv6.

Ce modèle de communication permet notamment l'affichage de fenêtres et autres éléments d'interfaces graphiques, en local (logiciel client et serveur sur la même machine) ou déporté sur un autre ordinateur à travers le réseau (un logiciel graphique tourne sur une machine distante et est affiché sur une station de bureau ou portable).

L'affichage graphique se fait par bitmap (image matricielle), par opposition à l'affichage par image vectorielle.

Parmi les clients X, on en distingue généralement un en particulier : le gestionnaire de fenêtres dont le rôle est de gérer l'affichage, la sélection, le déplacement, le redimensionnement et les décorations des fenêtres (une fenêtre particulière étant la root-window c'est-à-dire la fenêtre-racine). Ce gestionnaire de fenêtre peut s'exécuter sur une machine distincte de celle qui héberge l'application graphique[2].

Tout client préalablement autorisé à accéder un poste X peut y ouvrir une fenêtre à tout moment, comme on ferait sonner un téléphone. Un soin particulier doit être apporté à la sécurité du poste afin par exemple qu'un ordinateur autorisé à afficher des informations administratives ne soit pas en mesure d'effectuer à distance des copies d'écran indiscrètes de tout l'écran du poste !

La programmation X permet de séparer la création des widgets (en mémoire) de leur réalisation (affichage) pour une bonne ergonomie : l'utilisateur apprécierait peu que, dans une fenêtre comportant quarante éléments graphiques distincts, chacun soit affiché au fur et à mesure que l'application le crée. Tout peut donc être créé d'abord, et ensuite seulement l'ensemble affiché en une seule fois, pour éviter des clignotements fatiguant l'oeil.

Programmation XModifier

 
Bibliothèques pour la programmation X.

La programmation pour X peut se faire à différents niveaux. Le plus bas est celui du protocole X, ou comment le client et le serveur échangent des données. On ne programme pour ainsi dire jamais directement au niveau du protocole, mais il peut être utile de le connaître, de façon par exemple à décoder les informations qui circulent.

Le niveau au-dessus est celui de la bibliothèque X ou Xlib. La Xlib propose une traduction assez directe des requêtes du protocole X en appels de fonctions. Elle permet notamment de créer et de manipuler des fenêtres, de dessiner à l'intérieur par l'intermédiaire d'un contexte graphique et de recevoir des événements (clavier, souris, exposition des fenêtres, messages inter-clients, etc.) Pour la Xlib, une fenêtre est un rectangle dans lequel on peut dessiner, et qu'on peut soulever ou baisser par rapport aux autres (on peut aussi imbriquer des fenêtres) ; la décoration des fenêtres de plus haut niveau est apportée par le gestionnaire de fenêtres. La programmation directe en Xlib n'est guère adaptée que pour des environnements graphiques très limité ou pour le développement de boîtes à outils.

Le niveau suivant est celui de la boîte à outils X ou X Toolkit, Xt en abrégé, un système orienté objets (mais entièrement en C) qui permet de manipuler des widgets, qui sont des fenêtres munies de ressources et de méthodes, leur permettant de réagir « toutes seules » à certains événements. Ce niveau est composé de deux parties : les intrinsics et un jeu de widgets. Les intrinsics sont le cadre dans lequel on peut communiquer avec les widgets, et proposent quelques widgets tout à fait rudimentaires (dont le widget Core, une fenêtre qui ne réagit à rien). Il y a plusieurs jeux de widgets disponibles pour Xt. Le jeu Athena (Xaw en abrégé), développé au MIT, est petit et peu complet, mais il a l'avantage d'être léger, standard et gratuit. Deux autres exemples importants sont le jeu Motif de l'OSF, très commun pour les applications commerciales jusque vers 2000, et OpenLook, qui imite l'apparence de SunView, dont il est le remplaçant.

Ces différentes bibliothèques sont de moins en moins utilisées, au profit d'autres surcouches de la Xlib, qui remplissent les mêmes fonctions qu'Xt. Les deux principales sont GTK+ et Qt.

HistoriqueModifier

PrédécesseursModifier

Différents systèmes d'affichage graphique par point ont précédés X. Notamment Alto (1973) et Star (1981) de Xerox, Display Manager (1981) d'Apollo Computer, Lisa (1983) et Macintosh (1984) d'Apple. Dans l'univers Unix l'Andrew Project (1982) et le terminal Blit (1982) de Rob Pike.

L'université Carnegie-Mellon a produit une application d'accès à distance appelée Alto Terminal, permettant l'affichage dans des fenêtres d'un Xerox Alto d'applications tournant sur des systèmes distants (généralement des systèmes Unix DEC VAX).

Initié à l'été 1984, X Window System se place en successeur du W Window System, fonctionnant sur le système V. Selon l'ordre alphabétique des lettres le nom signifiait signifiait W sur V. Le W Window System utilisait un protocole réseau, supportait des terminaux et des fenêtres graphiques, en gérant la superposition des fenêtres la maintenance d'une liste de commandes graphiques.[3].

Origine et premiers développementsModifier

L'idée originale de X a émergé au MIT en 1984 fruit d'une collaboration entre Jim Gettys (projet Athena) et Bob Scheifler (MIT). Scheifler avait besoin d'un environnement d'affichage utilisable pour déboguer le système Argus. Le projet Athena (un projet conjoint entre DEC, MIT et IBM devant fournir un accès facilité aux ressources informatiques pour tous les étudiants) avait besoin d'un système graphique indépendant de la plate-forme fonctionnant sur des systèmes hétérogènes provenant de différents fournisseurs. Le système de fenêtres alors en cours de développement dans le projet Andrew de l'université Carnegie-Mellon ne rendait pas les licences disponibles et aucune alternative n'existait.

Ce problème a été résolu en créant un protocole pouvant à la fois exécuter des applications locales et distantes. Au milieu de 1983, un premier portage de W vers Unix fonctionnait mais à un cinquième seulement de sa vitesse sous V. En mai 1984, face à ce problème, Scheifler a remplacé le protocole synchrone de W par un protocole asynchrone et les listes de commandes par des buffer graphiques associés à chaque fenêtre donnant naissance à la première version de X. X devient le premier environnement graphique indépendant du matériel et du fabricant.

Scheifler, Gettys et Ron Newman se sont mis au travail et X a progressé rapidement. La version 6 est réalisé en janvier 1985. X est alors choisi par DEC pour sa première station de travail, Ultrix, étant considéré comme le seul système de fenêtrage susceptible d'être disponible à temps. Les ingénieurs de DEC ont porté X6 sur l'écran QVSS de DEC sur MicroVAX.

Au deuxième trimestre de 1985 la version 9 de X ajoute le support des couleurs, permettant son utilisation sur le VAXstation-II/GPX de DEC (Digital Equipment Corporation).

Un groupe de l'Université Brown a porté la version 9 sur l'IBM RT-PC (en). Des problèmes d'alignement de données ont nécessité une adaptation incompatible du protocole, aboutissant à la fin de 1985 à la version 10. En 1986, d'autres organismes commencent à s’intéresser à X. X10R2 sort en janvier 1986, puis X10R3 en février 1986. Bien que le MIT ait accordé une licence X6 payante à certains organismes, c'est à ce moment qu'il est décider de distribuer X10R3, ainsi que les versions suivantes sous ce qui deviendra la licence MIT, dans l'intention de promouvoir X, et espérant en retour la création de nombreuses applications sous X. La version X10R3 est la première à être déployée à grande échelle, utilisée par DEC et Hewlett-Packard pour leur produits. D'autres groupes ont porté X10 sur Apollo, sur les stations de travail Sun et même sur IBM PC/AT. La première démonstration d'application commerciale pour X (un système de conception mécanique assistée par ordinateur de Cognition Inc, fonctionnant sur VAX, et dont l'affichage s'effectuait sur des PC distants munis de serveur X, présenté par Jim Fulton et Jan Hardenbergh) a eu lieu au salon Autofact à ce moment là. La dernière version de X10 est X10R4, en décembre 1986. Des tentatives ont été faites pour permettre à des serveurs X de collaborer en temps réel. Un de ces premiers efforts était l'outil SharedX de Philip J. Gust. Plus tard Virtual Network Computing (VNC) permettra le partage d'un bureau.

Bien que X10 offrait des fonctionnalités intéressantes et puissantes, une refonte du protocole devenait nécessaire avant une large diffusion, afin d'obtenir une architecture plus indépendante du matériel. Cependant le MIT seul n'avait pas les ressources suffisantes pour un travail de cette ampleur. Le Western Software Laboratory de DEC disposait alors d'une équipe expérimentée entre deux projets. Smokey Wallace de DEC WSL et Jim Gettys ont proposé que DEC WSL développe X11 et le publie gratuitement sous les mêmes termes que X9 et X10. Les développements ont commencés en mai 1986 et le protocole a été finalisé en août. La version alpha est entré en phase de tests en février 1987 suivie par la version bêta en mai. X11 sort finalement le 15 septembre 1987.

La conception du protocole X11, dirigée par Scheifler, a fait l'objet de discussions approfondies sur des listes de diffusion publiques au début d'internet, reliées aux groupes de discussion USENET. Gettys a déménagé en Californie pour aider à diriger le développement X11 chez WSL au centre de recherche sur les systèmes de DEC. Phil Karlton et Susan Angebrandt ont dirigé la conception et la mise en œuvre de maquettes du serveur X11. X représente donc l'un des premiers projets de logiciels libres et open source distribué à très grande échelle.

Du Consortium X du MIT au X Consortium, Inc.Modifier

En 1989, Simson Garfinkel qualifia X de "réalisation spécifique la plus importante d'Athena à ce jour". De son côté DEC considérait que le seul développement du système valait la donation faite au MIT. Gettys a rejoint l'équipe de conception du VAXstation 2000 (en) pour en assurer la compatibilité avec X, dénommé DECwindows par DEC. La société affecta 1200 employés au port de X vers Ultrix et VMS[4]. En 1987, face au succès grandissant de X11, le MIT a souhaité renoncer au pilotage de X, mais lors d'une réunion en juin 1987 rassemblant neuf constructeurs, ceux-ci ont souhaité le maintient d'une organisation neutre pour maintenir l'unité du projet face au marché. En janvier 1988, le Consortium X du MIT est constitué en tant que groupe de vendeurs à but non lucratif, avec Scheifler comme directeur. Sa mission est de piloter les développements futur de X de manière neutre, en respectant les intérêts commerciaux et éducatifs.

Jim Fulton en janvier 1988, et Keith Packard en mars 1988 rejoignent l'équipe en tant que développeurs seniors. Jim se concentre sur Xlib, les polices, les gestionnaires de fenêtres et les utilitaires, et Keith réimplémente le serveur. L'équipe intègre ensuite Donna Converse, Chris D. Peterson et Stephen Gildea qui se concentrent sur les boîtes à outils et les widgets. Le travail est effectué en étroite collaboration avec Ralph Swick du MIT Project Athena. Le consortium X du MIT a produit plusieurs révisions importantes de X11, à commencer par X11R2 en février 1988. L'équipe est complétée par Jay Hersh en janvier 1991 pour travailler sur les fonctionnalités PEX et X113D, puis par Ralph Mor, également sur PEX et Dave Sternlicht. En 1993, alors que le consortium X du MIT se préparait à quitter le MIT, l'équipe est renforcée par R. Gary Cutbill, Kaleb Keithley et David Wiggins[5].

En 1993, le X Consortium, Inc. (société à but non lucratif) succède au Consortium X du MIT. Il publie la version X11R6 le 16 mai 1994. En 1995, il reprend le développement de la boîte à outils Motif et du bureau Common Desktop Environment pour les systèmes Unix. Puis il se dissous à la fin de 1996, après une dernière version, X11R6.3. Il laisse en héritage, l'exemple d'une participation commerciale dans un développement open source[6].

Informations supplémentairesModifier

Le logiciel client X sans doute le plus connu, et celui qui sert à également tester un bon paramétrage, est Xclock (xeyes et Xlogo sont également très utilisés à des fins de démonstration).

C'est le MIT qui a publié la première version de X en .

À la fin des années 1980, Sun a proposé un protocole et un serveur programmable de plus haut niveau NeWS, programmable dans un langage étendant PostScript pour le graphique distant, qui n'a pas eu le succès escompté.

On trouvait sur X la première version du logiciel Neko.

Voir aussiModifier

Articles connexesModifier

Liens externesModifier

Notes et référencesModifier

  1. (en) Colin Harrison, « Xming X Server », (consulté le 31 juillet 2008).
  2. Lors des débuts de l'OSF, Hewlett Packard possédait un gestionnaire de fenêtre agréable, et il était fréquent que des postes X utilisant des programmes hébergés sur Sun ou IBM utilisent le gestionnaire d'une machine HP du réseau.
  3. Robert W. Scheifler et Jim Gettys, « The X window system », ACM Transactions on Graphics (TOG), vol. 5, no 2,‎ , p. 79–109 (ISSN 0730-0301, DOI 10.1145/22949.24053)
  4. (en) Garfinkel, Simson L., « A Second Wind for Athena », Technology Review,‎ 1988-11 1988-12 (lire en ligne)
  5. (en) Robert W. Scheifler et James Gettys, X Window System: Core and Extension Protocols : X Version 11, Releases 6 and 6.1, Digital Press, (ISBN 978-1-55558-148-0)
  6. (en) « Problems and Strategies in Financing Voluntary Free Software Projects »