Cet article est issue d’une série d’article sur le fonctionnement du CSS Working Group au W3C. L’article original a été écris en anglais par Fantasai.

Modularité de CSS

Lorsque CSS Level 3 a été créé, il a été pensé comme un ensemble de spécifications modulaires permettant de recréer CSS Level 2 et d’y ajouter plus de fonctions sophistiquées ainsi que de nouveaux systèmes de mise en page. Tous les chapitres de CSS2 ont été séparés au sein de « modules », et des modules supplémentaires ont été créé ce qui a donné un nouveau système appelé CSS3. À l’opposé du monolithique CSS2, chaque composant de CSS3 est une spécification séparée, qui peut être écrite indépendamment et dont les interactions avec les autres modules (à l’opposé des chapitres entremêlés de CSS2) peuvent être facilement articulées et comprises.

Toutefois, pour faire de CSS3 un système cohérent, chaque module doit êtres connecter aux autres via des liens de dépendance. Une des conséquences de cette structuration c’est que les différents modules ne peuvent pas progresser sans que les modules de base ne progressent eux-même. De même, les modules de base ne peuvent pas être finalisés tant que tous les autres modules ne sont pas terminés. Rien ne peut avancer tant que tout n’a pas avancé ! C’est un nouveau type de dépendance infernal à gérer.

Le CSS WG a donc commencé par déconnecter les modules de CSS3 les uns des autres et les à fait dépendre de CSS2.1 (une révision de la spécification CSS2.0 qui était quelque peu irréaliste et remplie d’erreurs). Il a donc finalement été décidé que les différents modules de CSS3 ne dépendraient que de CSS2.1, et de quelques autres modules CSS3 déjà terminés. D’autre part, le CSS WG a également décidé que chaque modules pourrait faire évoluer son numéro de versions indépendamment des autres modules. Nous avons alors commencé à repousser de manière assez agressive les fonctionnalités les plus instables de certains modules CSS3 à une version ultérieurs de ces mêmes modules. Cela nous permet de nous assurer que ces modules ne contiennent plus que des fonctions stables et prêtes à l’implémentation afin de faire avancer le module au status de CR plus rapidement. Cette modularisation a été formalisé dans l’instantané de 2007 (Pekin), qui a marqué le début d’une nouvelle série d’instantanés de la spécification CSS global prévus pour réunir au seins d’un même document tous les modules terminés afin d’obtenir une vue d’ensemble de l’état d’avancement de la spécification CSS.

Avec la publication de la recommendation CSS2.1, le CSS WG a été capable de publier les recommandations CSS Color Level 3, Selectors Level 3, et CSS Namespaces. Actuellement Media Queries, CSS Backgrounds and Borders Level 3 et CSS Multi-column Layout progressent au travers de la phase de Candidate Recommendation du W3C et différents brouillons de travail matures sont en phase de stabilisation en vue de leur passage au status de Candidate Recommendation. Alors que ces modules de niveau 3 se stabilisent, nous débutons les premiers brouillons de Selectors Level 4 et commençons à réfléchir aux nouvelles fonctionnalités à ajouter à de nouveau modules de niveau 4.

Finalement, puisque les modules de CSS3 sont séparés, réorganisés, mis à jour et avancent au travers du processus du W3C, chaque module CSS peut exister dans plusieurs état : en tant que recommandation, recommandation candidate (la phase de test du W3C) ou comme un brouillon de travail. Ce modèle réplique ceux utilisés à grande échelle dans le monde du développement logiciel, ou de nombreuses branches existent avec différents niveaux de stabilité.

Modulariser CSS en suivant cette « doctrine de Pékin » permet au CSS WG de faire progresser les différentes fonctionnalités de CSS en suivant le processus du W3C ; de maintenir des spécifications stables et de concevoir de nouvelles fonctionnalités en parallèle ; de diviser une technologie complexe en morceaux gérables non seulement pour leurs éditeurs mais aussi pour les correcteurs, utilisateurs et implémenteurs ; de distribuer efficacement le travail entre de multiples éditeurs de spécification ; de communiquer clairement la stabilité de chaque fonctionnalité CSS aux implémenteurs, aux autres groupes de standardisation et au public ; et enfin, de tirer avantage des bénéfices qu’il y a à suivre le processus du W3C, celui-ci encourageant largement la participation et la revu des spécification ainsi que la réalisation de tests substantiels en environnement réel.

À suivre : CSS WG — Processus de spécification