Tab Completion

I'm Tab Atkins Jr, and I wear many hats. I work for Google on the Chrome browser as a Web Standards Hacker. I'm also a member of the CSS Working Group, and am either a member or contributor to several other working groups in the W3C. You can contact me here.
Listing of All Posts

A Word About CSS4

Last updated:

I regularly get people asking about when "CSS4" will be available.

I'd like to clear things up with something unequivocal:

THERE IS NO SUCH THING AS CSS4

There has never been a CSS4. There will never be a CSS4. CSS4 is not a thing that exists.

The term "CSS3" refers to everything published after CSS 2.1.
CSS is on its last version as a language as a whole, so it would be appropriate to just drop the number entirely and refer to everything from now on as just "CSS".

"But", you might object, "I saw things like CSS4 Images, or Selectors 4! Aren't they part of CSS4?".

No. As I just said, there is no CSS4. ^_^

While trying to finish CSS 2.1, we (the CSSWG) realized that big monolithic "versions" weren't any good. They were difficult to maintain, and slow to develop.

Instead, we decided to split up the CSS language into a bunch of independent modules. Each module can level up independently, and contains only a smallish set of features, so it's harder for a large set of features to be slowed down by a single stubborn feature.

Some of our modules start out at level 3, if they extend something from CSS2.1. Others start out at level 1, if they're something new (for example, Flexbox). However, the level that a module is at has no correlation with what version of CSS it's in. They're all CSS3 (or just CSS), regardless of what level they're at.

Our URLs don't help the matter much, of course. We use URLs with things like css4-backgrounds in them, which totally sounds like CSS4. On behalf of the CSSWG, I apologize for the confusion. All that means is that it's CSS Background & Borders Level 4, which is implicitly part of CSS3 (or just CSS).

So, now you know. There's no such thing as CSS4. There is only CSS, and each module can level up independently. Pass it on!

(a limited set of Markdown is supported)

So how do you track the module progression and whether or not that module is supported at that level in a specific web browser?

Reply?

(a limited set of Markdown is supported)

i think gettin sass/less etc supported or even just compatible with chrome dev tools, that would be a better milestone then anything else.

IMO (:

Reply?

(a limited set of Markdown is supported)

#1, 2, 3, and 5: You should be ashamed of yourselves for trolling.

Re #4: To keep track of modules, follow the CSSWG twitter account for occasional updates, or CSSCommits for every change we make to our specs.

To know what's supported, the best thing I can recommend is http://caniuse.com.

Re #6: To get them compatible with Dev Tools, bug SASS/LESS about source maps. They should be supported in Dev Tools now.

SASS/LESS will never be supported natively, but we'll steal their good ideas and put them into the language. That's what preprocessors are for.

Reply?

(a limited set of Markdown is supported)

I'd say definitely the urls based on new features don't help to avoid those mistakes.

Just aside: If CSS3 is everything after CSS 2.1, why wouldn't follow that convention in doc urls?

Reply?

(a limited set of Markdown is supported)

Well, people need numbers. So there will be CSS4, CSS5, CSSx in the future. Of cause there will be no standard which will be named that way. But people will ask you "Do you know CSS4 and the things that can be done with that?". Mostly people with little or no knowledge about web-techniques.

Reply?

(a limited set of Markdown is supported)

Gracias, muchas gracias. ¡¡Por fin!! Alguien desde dentro lo dice alto y claro. Css4 es el nuevo espécimen de la criptoCsslogía.

<sub>Thank you, thank you very much. Finally! Someone from inside says it loud and clear. CSS4 is the new specimen criptCSSlogy</sub>

Reply?

(a limited set of Markdown is supported)

Re #12: HTML7 (http://james.padolsey.com/general/html7-arrives/) is already out. Hence, CSS4 must come one day.

Reply?

(a limited set of Markdown is supported)

Wait - so to avoid confusion, the CSSWG decided to abolish the practice of leveling up the language spec as a whole, but instead allow each module to level up independently?

Seems like that creates more confusion to me. Maybe more freedom for individual module progress, but certainly not less confusion.

Reply?

(a limited set of Markdown is supported)

Even though there is no CSS4 Selectors, there are Selectors Level 4 http://www.w3.org/TR/2012/WD-selectors4-20120823/

Reply?

(a limited set of Markdown is supported)

Sounds like a good plan to keep pumping out great new features. Keep up the good work:)

Reply?

(a limited set of Markdown is supported)

This makes a lot of sense, thank you for the clarification. I can't wait until somebody asks me if I know CSS4. Sharing this article.

Aside — smh at the number of trolling / inane comments on this post!

Reply?

(a limited set of Markdown is supported)

#22 - Alexander Trefz:

Well, then for fucks sake, call it CSS and not CSS3. It is the same thing as with HTML5, if there is no version 5 of HTML, just call it HTML and nobody gets confused.

Reply?

(a limited set of Markdown is supported)

Tab, really, wouldn't it be more honest to say that THERE IS NO SUCH THING AS CSS3?

CSS itself has no versions. Levels of modules say completely nothing about their 'coolness' because (as you mentioned in your post) many cool new modules start from Level 1 (and like CSS1 for all people not familiar with CSS WG process). The so called 'CSS validator' with 'CSS3' preset that uses level-based check whether the property belongs to any of CSS3 modules or not seems to be completely useless, since it sees absolutely no difference between modules in Rec stage and the early WDs.

The term 'CSS3' is now mostly used as a marketing buzzword, meaning not only 'New And Cool CSS Features', but primarily 'Cool CSS-like Staff Available Only In Our Super Duper Browser' (including many things that never were a part of any CSS spec at all, like -webkit-reflection and background-clip: text). The word 'HTML5' is also much used this way, but at least there is an actual W3C spec called 'HTML5'. BUT THERE IS NO SPEC CALLED 'CSS3'!

So I'd like to join Alexander Trefz's question: when JUST CSS will be available? When will http://www.w3.org/TR/CSS/ (that is marked at http://www.w3.org/Style/CSS/current-work as 'Latest stable CSS') be not the 2-year-old Group Notes, but the normative reference to the actual state of CSS development (with list of modules that are considered sage for implementation, test suites etc.)?

Reply?

(a limited set of Markdown is supported)

Re #7: Note, caniuse.com is a bit squiffy, just look at what browser 'support' flexbox. Both legacy and current rolled into one. I'd suggest checking the Mozilla Developer Network instead. :o)

Reply?

(a limited set of Markdown is supported)

Note, I've deleted a bunch of trolling or stupid comments. We shall maintain a level of decorum here, people!

(Cussing is fine. So is silliness. But content-less nonsense is not.)

Reply?

(a limited set of Markdown is supported)

Re #11: We just discussed today on the CSSWG telcon figuring out our strategy for urls, and seeing if we can change them.

Changing to "css-background4" would be nice, for example.

Reply?

(a limited set of Markdown is supported)

Re #12: Sure, but those people will be referring to their own private definition of the word. That's fine. We just shouldn't pretend that there's an official concept of "CSS4".

Reply?

(a limited set of Markdown is supported)

Re #16: No, we switched from language levels to independent modules with levels to make our jobs easier, not less confusing. ^_^

CSS 2.1 took 10 years to go from "done" to "actually done (Rec)". 10 YEARS. That's just silly. And even with that enormous span of time, there are still a goodly number of little-used features that aren't interoperable.

HTML realized the same thing, they just took a marginally different tack. HTML is a Living Standard - different parts are at different levels of stability, and that's fine. CSS, as a whole, is also a Living Standard, but individual modules can still do the standard "this draft is finished" thing. It's an insignificant difference semantically, but it's easier for some purposes (like determining patent protection under the W3C's licensing scheme).

Reply?

(a limited set of Markdown is supported)

Re #24: (And #22, for that matter)

It's perfectly appropriate to say that it's just "CSS", sure. I've amended my post somewhat to address this. The point is just that CSS, the language, won't have any more versions.

Reply?

(a limited set of Markdown is supported)

Odd, my comment didn't make it but I couldn't type a lot because I was on an iPad.

Anyway, so why not call it CSS then? I think that for once, it's actually beneficial that they are called CSS4, CSS3, etc because when you have to explain to clients, it's part of the things you can say that you are aware of that makes you stay "current".

Reply?

(a limited set of Markdown is supported)

Re #33: You can call things whatever you want when you're trying to sell billable hours to clients. I won't judge.

That has nothing to do with what we talk about around fellow clueful people, though.

Reply?

(a limited set of Markdown is supported)

Thanks for the clarification. I've seen reference to some magical CSS4 wondered where it came from...

Thinking of CSS as broken into modules as opposed to versions, makes much more sense when trying to explain it. After all, we still use selectors and properties from CSS 2.1...

Part of the problem of course, is that there is an expectation on the part of clients and employers who are looking for a specific "subset" of designer who knows CSS3 instead of just CSS as a whole.

Reply?

(a limited set of Markdown is supported)

Re #29: But there is no official concept of "CSS3" either, is it? Officially there is just CSS, which is based on CSS2.1 spec and includes a set of differently leveled more-or-less stable modules (like it is defined in http://www.w3.org/TR/CSS/#css), isn't it?

Reply?

(a limited set of Markdown is supported)

Is there a list of the current CSS modules somewhere?

P.S.

"CSS is on its last version as a language as a whole, so it would be appropriate to just drop the number entirely and refer to everything from now on as just "CSS"."

  • Or maybe it should be just "The New CSS" ... if you know what I mean :) Just kidding of course.
Reply?

(a limited set of Markdown is supported)

A bit off topic but just an example of how these numbers confuse people.

A big client of ours recently called worried sick that their main competitor had a self confessed "WEB 2.0" blog and they wanted one although they couldn't see anything innovative on that blog compared to what they already had :-D

Reply?

(a limited set of Markdown is supported)

Why use confusing urls when it is so easy to use more specific urls. Rather than use the confusing "css4-backgrounds" url, Try css-backgrounds-l4 or css-backgrounds-4

Scott A. Tovey

Reply?

(a limited set of Markdown is supported)

Re #44: Why use confusing urls when it is so easy to use more specific urls. Rather than use the confusing "css4-backgrounds" url, Try css-backgrounds-l4 or css-backgrounds-4

Scott A. Tovey

WOW! black text on black background. Sure does explain the lack of non confusing urls.

Reply?

(a limited set of Markdown is supported)

Re #45: Yes, we're going to try and move to better urls, like your last one

The background is only enormous on browsers that don't yet support B&B3 - they're failing to parse a 'background' shorthand that sets the background-size to be a 2px-thick line on the right side. I suggest bugging those browsers to fix their support. ^_^

Reply?

(a limited set of Markdown is supported)

Re #14: https://github.com/mitchellh/html7 You must check this out ... its absolutely amazing!

Reply?

(a limited set of Markdown is supported)

Abolishing version numbers for the language as a whole makes total sense. In my experience, browsers only implement whatever pieces of the spec they feel like anyway, so who are we kidding?

Let's watch the different modules level up, and just keep track of each browser's module support level. Then we can determine the pieces that are ready for primetime based on browser support and the particular browser ecosystem of our sites' users. Aren't we as an industry already recommending this approach?

Thanks for the article. I'll stop saying "CSS3" (or "CSS4"...) now!

Reply?

(a limited set of Markdown is supported)

Most of technical oriented people likes increasing mumbers! All other meanings may be correct - but mostly ignored. In mind: The higher the number the higher the fnctionality. So , now you know ist less helpfull.

Reply?

(a limited set of Markdown is supported)

Thanks for clearing that up. Was getting all confused about all these versions that get thrown around these days. Totally vote for just calling it CSS. I reckon people just like to add numbers on to pretend they used something better/newer than others.

Reply?

(a limited set of Markdown is supported)

Re #48: You don't need to stop saying it if it helps you in a point of conversation or as a reference point. I don't use the term to reference a build#, but I do often use to to reference a time period. Example: much of CSS3 is not supported by IE6-8, so when I reference CSS3 it references a time period that is a spec highly unsupported by Microsoft browsers. CSS3 DOES exist because its the time in which as this article states they abandoned the monolithic versioning method for independent module evolution. That being said I feel you are not wrong for wanting to reference CSS3 from a time-frame or compatibility standpoint if it helps you and others make a valid association to something.

Reply?

(a limited set of Markdown is supported)

#55 - Eduard Pascual:

Re #24: You are right saying there is no such thing as CSS3. I was going to say exactly that until I saw your comment.

There is, however, a thing called "Modular CSS", which is made of modules, and those modules have a "level". And the level of most (although not all) of those modules starts at 3. And that merely reflects the fact that the earlier levels of those modules were just parts of the monolithic specs.


There is a thing worth calling CSS3. And also something that deserves the name "CSS4".

CSS3 can be understood as the CSS modularization effort. Let's look back a bit:

  • CSS1 was the "font-killer" (it'd allow us to kill the font tag). It was also the first attempt at separating structure from presentation. If you look deeply at it, its feature cover pretty much the same ground as HTML3.2's presentational elements.
  • CSS2 (2.0 to be exact) was an epic fail. Not of the spec on itself, but on the W3C process that was being followed then. There are more aspects of CSS2.0 (essentially, it was aimed at replacing not the purely presentational elements, but the presentational use of structural elements), but in the end it became the nonimplemented, unimplementable CSS spec. CSS2.0 achieved something: it highlighted issues on the W3C process that are now fixed (and those fixes brought some of the modern issues, but more on that later).
  • CSS2.1 was the ammendment to the disaster. It could have been called "Implementable CSS2", but that would have sounded awful. Its grounds were the same as for CSS 2.0, essentially a tool to erradicate the need of presentational use of HTML tags. In that regard, it was a partial success.
  • CSS3 is a realization that the presentation needs for the modern web are simply too much to be covered by a single spec.
  • CSS4 is... well, I'm not sure what exactly what CSS4 would be. When we look at the "level-4 generation of modules", there seems to be a trend. Once we see what is that trend exactly, we will be able to describe what CSS4 is.

The bottom line is that, while from CSS3 onwards the number no longer refer to a specific version of a specific specification, the numbers still have a meaning.

Maybe something like CSS 2007, CSS 2010, CSS 2013, etc could work better. But it doesn't :(


Now, addressing your question: when will "JUST CSS" be available? Short answer is: it's already available. We have been using CSS for over a decade! But I'll try to answer to what you wanted to know rather than to what you asked.

An attempt was started, back in 2007, to document the current implementation status of CSS features in a "snapshot" spec. The document was titled "CSS Snapshot 2007". I'm sure you know about that document, and about the similar "CSS Snapshot 2010". Actually, those are more than similar. They gather exactly the same features, by virtue of referencing the same list of specs in their definition of "what is CSS as of year". The 2010 note is just a bit longer because it includes a couple of indexes (for properties and selectors), but other than that they are identical.

And here goes a painful fact: that effort, started in 2007, didn't become stable until 2011. CSS 2.0 is the culprit of that. Because of the disaster 2.0 was, the W3C process was updated to include strict interoperability testing. Going into the fine letter, the process requires "at least 2 independent interoperable implementations" before it can become a Rec. Getting a couple of major browsers to implement some stuff ain't that hard (actually, they implement some stuff even before it gets spec'd!). Testing that those implementations abide to the spec... well, that is tough work.

Before a spec (be it a "snapshot" or a new module) can get the "Rec" stamped on it, implementations need to exist and be tested. Which means that a mechanism to test implementations has to be available. That mechanism is a comprehensive test suite and it is the biggest slowdown within the W3C process.


Hence we are now at a crossroads: a mechanism to test implementations is needed to avoid repeating the CSS 2.0 disaster. But the mechanism currently in place is so expensive (in terms of development effort) that is making the W3C lag behind actual browser support for new features.

If you have any contribution on how to speed up that process, I'm sure the folks at the W3C will be glad to hear it.

Reply?

(a limited set of Markdown is supported)

Re #24: Totally agree with this! These days CSS3 has become such a buzzword that everywhere recruiters and companies ask for CSS3 and questions like - do you know the new graident style, transformation etc? People have no idea and anything 'cool looking' is termed as CSS3. Where CSS is getting better day by day, why not term it as just plain CSS and save the confusion?

Reply?

(a limited set of Markdown is supported)