Extension X
Le mécanisme qui a permis à X11 d'acquérir de nouvelles capacités pendant près de quarante ans sans que le protocole de base change une seule fois.
La version du protocole est la 11 depuis 1987. Tout ce qui a été ajouté depuis — fenêtres non rectangulaires, mémoire partagée, texte anticrénelé, multi-écrans, composition, OpenGL — est arrivé sous forme d'extension, chacune avec un nom et son propre jeu de requêtes. Un client envoie QueryExtension avec le nom et reçoit en retour un opcode majeur ainsi que les premiers numéros d'événement et d'erreur utilisés par l'extension, ou une réponse indiquant que le serveur ne l'a pas. Dès lors, les requêtes de l'extension circulent sur la même connexion que tout le reste.
Ce choix de conception a permis aux anciens clients de continuer à fonctionner et aux nouveaux de se replier quand quelque chose manquait ; xdpyinfo liste ce qu'un serveur donné propose. Le revers est que « X11 » désigne en pratique une cinquantaine d'extensions d'âge et de qualité variables, dont plusieurs se recoupent et quelques-unes n'ont jamais tout à fait fonctionné. Wayland a gardé l'idée mais pas le bagage : tout le protocole y est construit dès le premier jour à partir d'extensions interchangeables.