# CLX (Delphi)

CLX est l'acronyme de Component Library X(cross)-Platform, pour « Bibliothèque de composants multi-plateformes ». Il s'agit d'un framework écrit en Pascal Objet par Borland lorsque l'éditeur décida de porter Delphi sous Linux en créant Kylix. Bien que la CLX ne soit pas exactement la VCL sous Linux, elle est conçue pour prendre la plupart de ses fonctionnalités en charge et Borland a fourni un effort important pour que les deux bibliothèques aient deux interfaces très similaires.
Le but de la CLX est de produire facilement avec un même code des applications pour Windows ou Linux.

## Conception et implémentation

Comme la VCL, la CLX se compose de plusieurs modules : NetCLX (composants internet), VisualCLX (composants visuels) et BaseCLX (bibliothèque d'exécution standard). Là où la VCL s'appuie sur les API Win32 ou Microsoft .NET, la CLX s'interface principalement dans sa version Linux sur la Bibliothèque standard du C ainsi que le Gestionnaire de fenêtres X via la bibliothèque de composants Qt de Trolltech.
Utilisant DisplayCLX, les objets graphiques de la CLX s'interfacent avec Qt. Cette communication passe d'abord par un fichier d'interface, Qt.pas, qui décrit des fonctions standard « mises à plat » (c'est-à-dire des procédures, et non des méthodes de classe) pour créer et gérer des widgets Qt. Les fonctions sont implémentées par une bibliothèque écrite en C++ fournie par Borland, libqtintf.so, qui charge dynamiquement la bibliothèque Qt, libqt.so. Ce chaînage complexe sans doute censé au départ permettre la mise à jour facile des liaisons au fur et à mesure de l'évolution de la bibliothèque de Trolltech nécessite le déploiement des deux fichiers sur un poste désirant exécuter l'application graphique. Le même système est présent
La CLX gère également sous Kylix les objets et les concepts Linux comme les IPC ou les signaux.
Sous Windows, la gestion des objets graphiques reste toujours délégué à Qt (on déploie cette fois ci la version Windows de la bibliothèque), et a contrario de la VCL il n'y a plus d'appel à des API Windows pour l'instanciation de composants visuels ou le tracé de dessins à l'écran.

## Adoption de la CLX

Beaucoup de développeurs Delphi espéraient simplement avoir à recompiler leur application Windows avec Kylix pour en faire de vraies applications Linux. Évidemment, il n'en était rien, et créer un projet multiplate-forme passait obligatoirement par l'abandon de la VCL au profit de la CLX (sans parler évidemment de la suppression de tout code invoquant directement un API Windows). Cette nécessité de réécriture fut un premier frein au développement de cette bibliothèque.
De plus, la CLX a souffert du manque d'expérience des développeurs de Borland vis-à-vis de Linux. Par exemple, certaines déclarations d'objets de synchronisation ou de communication interprocessus étaient fausses et il a fallu plusieurs versions successives avant que les bugs soient (partiellement) corrigées. Aujourd'hui encore, de nombreuses améliorations sont en proposition et incluses sous la forme de patchs non officiels par des développeurs indépendants.
La CLX obligeait également la distribution de plusieurs bibliothèques propres à Borland, notamment pour l'interfaçage avec Qt. Le déploiement d'applications graphiques sous Linux n'était pas trivial et souvent problématique. L'aspect non « natif » d'une application Qt sous Windows fut aussi un frein au développement de cette bibliothèque.
Avec l'abandon de Kylix par Borland, la CLX n'est plus une solution d'actualité. Il aurait fallu un effort constant d'adaptation au fur et à mesure des nouvelles versions de la libc et de Qt, ainsi qu'un réel investissement dans la correction de bugs résidents en particulier dans la VisualCLX : par conséquent seul subsiste la VCL comme framework de développement sous Delphi et C++Builder.

## FreeCLX

Le toolkit Qt étant utilisable avec, au choix, une licence propriétaire, payante, ou une licence libre « copyleft » gratuite, il en est de même pour la CLX. En effet, Kylix était proposé en versions payantes (Professionnelle, Entreprise) pour le développement d'applications propriétaires et une version gratuite (plutôt limitée) dite Open Edition permettant uniquement le développement d'applications libres en raison du copyleft de la licence. La version Open Edition comprenait le sous-ensemble FreeCLX, qui devait constituer la bibliothèque open source, dont l'évolution aurait dû être assurée par la « communauté ». Le site SourceForge.net héberge ce projet, mais celui-ci est inactif depuis fin 2001.