A Touch of Class



An Inside View of the CSS Working Group at W3C

This series of posts is about how the CSS Working Group operates in reality.

CSS Modularization

When CSS Level 3 was first created, it was envisioned as an interconnected set of modular specs that recreated CSS Level 2 and added more sophisticated features and new layout systems. Each chapter in CSS2 was broken out into its own “module”, and additional modules were created, to build this new system called CSS3. Unlike the monolithic CSS2, each component of CSS3 was thus a separate spec, that could be written independently and whose interaction with other modules (unlike the tangled CSS2 chapters) could be clearly articulated and understood.

However, in order to realize the CSS3 system as a coherent singular whole, each module had to connect, via dependency links, to any other related modules. As a consequence of this design, feature modules couldn't progress unless the core modules progressed, and the core modules couldn't be complete until all the feature modules were complete. Nothing could move forward until everything moved forward. It was a new kind of dependency hell.

So the CSS WG began to delink the CSS3 modules from each other and to rebase them, each module individually, over CSS2.1 (a revision of the somewhat unrealistic and error-riddled CSS2.0 spec). Eventually it was resolved that CSS3 modules would depend only on CSS2.1, and possibly on other completed modules. In addition, the CSS WG established the principle that each module would level independently. We began to aggressively defer unstable features from CSS3 modules that contained more stable, implementation-ready features in order to drive those specs to CR, knowing that level 4 of that module could follow close behind even if level 3 of other modules were not complete. This modularization doctrine was written up in the 2007 (Beijing) Snapshot, which began a new series of CSS Snapshot documents intended to pull together all the completed modules forming the contemporary state of CSS.

With the publication of the CSS2.1 Recommendation, the CSS WG was able to publish Recommendations of CSS Color Level 3, Selectors Level 3, and CSS Namespaces. Currently Media Queries, CSS Backgrounds and Borders Level 3, CSS Multi-column Layout are progressing through W3C's Candidate Recommendation phase while various mature Working Drafts are being stabilized in preparation for transition to CR. As these Level 3 modules are locking down, we're spinning up early drafts of Selectors Level 4 and starting several other Level 4 modules in the brainstorming stages, ready to accept new feature requests.

Eventually, as existing old CSS3 modules are split up, reorganized, updated, and pushed through the W3C Process, each CSS module may exist in multiple phases: as a completed Recommendation, as a Candidate Recommendation (W3C's testing phase), and as a Working Draft. This model mimics those widely used in software development, where often multiple branches exist with varying levels of stability.

Modularizing CSS according to this “Beijing Doctrine” allows the CSS WG to bring its features to completion within the W3C Process; to maintain stable specifications and design new features in parallel; to divide a complicated technology into manageable chunks—not only for its editors but also for its reviewers, users, and implementors; to effectively distribute work among multiple spec editors; to clearly communicate the stability of CSS features to implementers, other standards groups, and the public; and to take advantage of the benefits of following the W3C Process, which encourages broad participation and review and substantial real-world testing.

Next up: CSS WG — Spec Process