How does a new CSS property get standardised? Who makes the decisions? Why should I care about the standardisation process? What’s the deal with airline food? I’ll be covering that, and some more in this post.
Update: This article has now been enchanced, updated and published on CSS-Tricks.com, you can find the link here.
The standardization of CSS is managed by W3C Cascading Style Sheets Working Group (CSSWG), which of today consists of 98 members from browser vendors, university, larger companies and independent CSS experts. This group is organized by Peter Linss and Daniel Glazman, who coordinates CSSWG’s meetings and makes sure that the discussions are relevant and moved forward.
The communication and decision making in the CSSWG comes in different ways. Discussions about specifications are continuous over email and phone conferences, and they have yearly meet ups where they see each other in person.
The decision making is based on consensus. Discussions are made until all members have agreed on the subject, after that a final decision is made on the creation of a new specification.
The standardization process generally consists of six stages, where two are transition stages.
1. Editor’s Draft (ED)
Example: Colors (Level 4)
This is the starting stage of a specification. An idea of a new CSS property or selector are being specified, and is being worked on internally by the CSSWG. This is a stage where a lot can happen to a specification. And if the group agrees that this should be officially published, it continues to the next step.
2. Working Draft (WD)
Followed by the Editor’s Draft comes the Working Draft, the design stage of a standardization. The group works iteratively with a specification with feedback from both internal and external parts. The result of this stage is either that the specification is rejected completely, due to technical difficulties or other issues that might have risen. If the specification on the other hand passes this stage, it’s published as a First Public Working Draft (FPWD). A rough version of the specification that indicates that the CSSWG will continue to work on it.
3. Transition – Last Call Working Draft (LCWD)
This is the first transition stage. When the specification is considered ready to go from Working Draft to the next stage, a deadline is set for any last possible feedback for minor changes.
4. Candidate Recommendation (CR)
This is where the specification is thoroughly tested, by both the CSSWG and browser vendors (Chrome, Safari, Firefox, Opera, etc.) that chooses to implement this specification. Which most often happens when it’s reached this stage. To continue to the next stage, the CSSWG has to demonstrate two correct implementations of the specification.
5. Transition – Proposed Recommendations (PR)
Example: No module currently in PR
When this stage is reached, the W3C Advisory Committee, who works as a W3C global advisory group, decides whether or not the specification should continue to the last stage.
6. Recommendation (REC)
If a specification reaches this step, it’s considered complete and ready for browser vendors to implement. The W3C and CSSWG no longer works actively with the specification, and are only doing small maintenance work on it if needed.
Editor’s note: Turns out Recommendation status is more of a graveyard than an ideal state. Browsers are implementing at the Candidate Recommendation stage. Tab Atkins clarifies:
By the time a spec reaches REC, it’s actually dead, not stable. Errors have probably accumulated, which haven’t been fixed because updating RECs is a pain in the ass. New versions of the spec might already be in development, the feature itself might have died, etc.
Why should I care?
Why should you care about the standardization process? I think it’s important to know how a specification can behave in their different stages, and what the consequences can be if you use them too early.
background-image: -webkit-gradient(linear, 0 100%, 0 0, from(fuchsia), to(yellow));
Later on, when the specification hit Candidate Recommendation the syntax was changed to this:
background-image: -webkit-linear-gradient(fuchsia, yellow); background-image: linear-gradient(fuchsia, yellow);
Which produced a completely different result:
Editor’s note: Stability of a feature isn’t actually all that tied to what stage in the standardization process it is in. Tab Atkins had this to say:
Stability has basically no relation to the process stages, at least up through Candidate Recommendation. A feature is stable when it’s shipped and can’t be changed anymore due to backward compatibility. This might happen to a feature in an Editor’s Draft spec. And some Candidate Recommendation’s have unimplemented (and thus unstable) features. That’s the correct gauge of stability, not the stage it’s at in the W3C process.
So if you are going to use some new bleeding edge property, check what stage that specification is in. Working Draft? I would approach it with caution. Candidate Recommendation? I say go for it, but keep an eye on for changes.
When in doubt, I would recommend asking yourself this question: “Will things fall apart if this doesn’t work?”
Will functionality or availability be harmed if an implemented feature stops working because of syntax changes? It’s not the end of the world if your buttons to stop having rounded corners. But if your new site is completely based on a new layout system, and the syntax changes, then you’re in for some trouble.