Re: [csswg-drafts] Let’s Define CSS 4 (#4770)

I'd like to link to [my long comment in the related issue](https://github.com/w3c/csswg-drafts/issues/4752#issuecomment-583364145) explaining why I believe that the value of CSS Snapshots for authors might be still significantly underrated.

The concept of separately progressing features finally getting incorporated into the yearly updated main standard is already familiar to web devs from the EcmaScript process. We are used to speak, e.g., about "arrow functions from ES6/ES2015", or "async/await from ES2017/ES8".

"CSS as a whole" has no versions, but it has a document with the short URL w3.org/TR/CSS that appears to suggest that it somehow describes the stat of "CSS as a whole", with a section named "CSS - _the Official Definition_" (sic!). This document is also updated roughly every year, and the latest definition (CSS-2018) is the 5th update since CSS become modular or the 7th "CSS definition" since CSS1. In other words, if we named "CSS revisions" after the edition numbers of the standard definitions (like ES3, ES5, ES6 etc.), we could call it "CSS7" – good match to @Crissov's estimation above (and the upcoming definition, CSS-2020, would be "CSS8":).

The only thing I'd like to add that for web authors the union of the "Official defininion", "Deployed with rough interoperability", and "Safe to Release pre-CR Exceptions" sections would probably be more useful than the "Official definition" alone. This set of features appears to be "stable enough" for practical applications, either well-supported or soon-to-be-supported in browsers, and thus the primary area of interest. Another useful part of Snapshots is that they explicitly exclude outdated parts of specs (e.g. CSS2.1 sections superseded by newer modules), clearing the confusion and reducing the cognitive load.

Looking through the history of CSS from this POV, we can roughly categorize its features by different CSS "revisions":

Year | Revision | Features added
----|--------|--------
1996|CSS1|Basic concepts of CSS: cascade, type, class and ID selectors, link pseudo-classes, `:first-line`/`:first-letter`, box model, block and inline formatting, floats, font properties, #hex and rgb() colors, absolute lengths, `em` and `ex` units, "reference pixel"
1998|CSS2|Attribute selectors, `:first-child` pseudo-class, :before/:after pseudo-elements, > and + combinators, `@media`, `@page`, table model, `cursor`, `outline`
2007|CSS-2007, or "CSS3"|`display:inline-block`, new attribute selectors, `::` for pseudo-elements, `:last-child`, `:nth-child()` etc., `:empty`, `:target` and `:not()`, `~` combinator, hsl(), currentColor and opacity, CSS Namespaces, `style` attribute standard.
2010|CSS-2010, or "CSS4"|Media Queries 3 (`width`, `orientation` etc.)
2015|CSS-2015, or "CSS5"|CSS Syntax 3, nested `@media` and `@supports`, CSS Cascade 3, new units from Values and Units 3 (incl. `px` as absolute), calc(), multiple backgrounds, `border-image`, `border-radius`, linear and radial gradients, web fonts, Multi-columns, `mix-blend-mode` and `isolation`, updated `cursor` and `outline`, Transforms, Animations, Transitions, Flexbox
2017|CSS-2017, or "CSS6"|Writing modes 3, CSS variables, CSS Text 3, `:dir()` and `:lang()` pseudo-classes, `min-content` and `max-content`
2019|CSS-2018, or "CSS7"|CSS-grid, `will-change`, `filter`, easing functions, logical properties, conical gradients, `:focus-within` pseudo-class
2020|CSS-2020, or "CSS8"|`contain`, ... (to be continued)

Doesn't this make sense?

-- 
GitHub Notification of comment by SelenIT
Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/4770#issuecomment-585617222 using your GitHub account

Received on Thursday, 13 February 2020 08:49:58 UTC