CSS Grid Layout Module Level 1 at Candidate Recommendation

Today CSS Grid Layout has transitioned to become a Candidate Recommendation. In this post I explain what that means, and encourage you to get involved in these final months before we can really start to use it.

What is a Candidate Recommendation?

As specifications travel through the CSS Working Group process they achieve various maturity levels. A work in progress is defined as a Working Draft. You will also find the most up to date changes in the latest Editor’s Draft – which is the actual document in which changes are being made by the editors of that specification. Grid Layout in current form has existed as a draft since 2011, to read more of the history from my point of view see my post from last year – Three Years with CSS Grid Layout.

Once a Working Draft has satisfied a number of requirements it can advance through the Recommendation Track. The specification is then on track to become a W3C Recommendation, which is what we tend to refer to as a specification. This is a completed document that browser and other user-agent implementors, authoring tool vendors, and authors (that’s us web developers) should comply with. The next step on that track is Candidate Recommendation,

“A Candidate Recommendation is a document that W3C believes has been widely reviewed and satisfies the Working Group’s technical requirements. W3C publishes a Candidate Recommendation to gather implementation experience.”

Implementation experience

The Candidate Recommendation phase is a phase during which a test suite will be built and implementation experience gathered. It is important that any specification is demonstrated to be able to be implemented in an interoperable manner – not just by one browser. So there should be at least two implementations of any feature included in the specification.

What might be surprising to anyone just discovering grid layout today, is that there are excellent implementations in pretty much every browser. They just aren’t available unless you toggle a experimental features flag or use a Nightly browser. Many of the issues raised and resolved in the specification to date have come from the people behind those implementations.

To see the current status of browser implementations take a look at this page which I try to keep up to date. That page also links to the bug trackers for various browsers, so you can see how the browser implementations are taking shape.

During this process features that are not shown to be able to be implemented in an interoperable manner may be dropped. Those features are marked in the specification as at-risk. An at-risk feature can be dropped in order to progress the specification through the Recommendation track in a timely manner. I’m especially concerned about the potential for subgrid to be dropped during this process – read why here.

So, when do we get grid to use for real?

The question everyone wants to know the answer to is when will grid be out from behind a flag? There is a very good chance that we are looking at early 2017 for that to happen, and when Grid lands it is going to land pretty much cross-browser. Built into CSS with Feature Queries is a way for you to start enhancing your layouts with grid pretty much from day one, therefore it really is time to start getting to grips with it. This will mean you can take advantage of it quickly once it does ship, but also while learning you can offer feedback and log any issues that you do find.

I’ve been working with the spec for about four years now, and have created a whole heap of material to help. You can:

head on over to Grid by Example for a whole pile of example code and resources

Build things, write up your experiences, if you find a browser bug while doing so, search to see if it is already logged and if not create a reduced test case and log it. We are getting really close now to having a real layout system for the web for the first time, I’m excited to see what people do with it.