Every Time You Call a Proprietary Feature “CSS3” a Kitten Dies


Public use announcement: Every time we call a disdainful underline “CSS3” a kitten dies. Any -webkit- underline that doesn’t exist in a welfare (not even an Editor’s draft) is not CSS3. Yes, they are entirely evangelized as such, nonetheless they are not prejudiced of CSS during all. This eminence is not nitpicking. It’s vicious given it encourages certain vendors (*cough* Apple *cough*) to by-pass a standards process, practice whatever they come adult with in WebKit, thereafter scold it to developers as a best thing given sliced bread. The silken new toys enfeeble us and we start compelling them too, contributing to a describe chamber.
Every Time You Call a Proprietary Feature CSS3, a Kitten Dies
In a fervour to use a new bling, we mostly forget how many people fought in a past decade to permit us to write regulation nonetheless forks and hacks and settlement it to work interoperably. If we have been in this domain some-more than a few years, we definitely remember that it wasn’t always like this. The reason we now have this welfare is web standards, tough won in a Browser Wars.

You cunning be bewildered to hear that web standards did exist during a Browser Wars too. The W3C was founded in 1994. However, authors didn’t care, and were ideally pacific to acquire disdainful extensions. As a result, browsers didn’t worry many with web standards. Does this remind we of something? The disdainful comforts of now are no softened than ActiveX and IE filters. Their entirely inadequacy is softened PR, as we haven’t faced a consequences yet. Believe it or not, those comforts were also welcomed with breakthrough behind in a day.

Yes, intermittently browsers come adult with good things that does get stereotyped eventually (XMLHttpRequest, Drag and Drop API, contentEditable, Web fonts, to plead a few). However, 0 prevents them from innovating and following a standards process. Nothing prevents them from opening adult with something cool, proposing it to a suitable W3C Working Group, and improving it by common feedback before rushing to practice it. If Microsoft had finished this for a Drag Drop API, it wouldn’t be such a PITA to use.

Proprietary comforts that haven’t been by a standards slight entirely humour from bad design, even when a entire suspicion is good. For instance, CSS gradients were a good idea, nonetheless -webkit-gradient() was a verbose, error-prone mess. Web fonts were a good idea, nonetheless requiring .eot files was not. The standards slight doesn’t entirely assistance with interoperability, it also helps titillate a settlement of any feature, due to a incomparable array and hotchpotch of opinions.

So, that are these execrable features? In CSS, some of a many renouned ones are:

  • -webkit-box-reflect
  • -webkit-text-stroke
  • -webkit-mask
  • -webkit-background-clip: text;
  • -webkit-text-size-adjust
  • -webkit-tap-highlight-color
  • -webkit-text-fill-color

Not any prefixed underline is proprietary. Some of them are entirely initial implementations of comforts enclosed in zephyr specifications. Which brings us to your successive question.

“How do we detect possibly a certain underline is proprietary?”

A proceed that works for me, in Google, is to hunt for a underline (in quotes) and insert site:w3.org to a hunt term, in method to entirely hunt within a w3.org domain. Two examples:

  • “box-shadow” site:w3.org
  • “box-reflect” site:w3.org

As we can see, one of a unequivocally initial regulation for a initial underline is a W3C specification. The regulation for a second one are merely discussions on mailing lists, that indicates there is no welfare for it yet.

“How can we help?”

The easy sequence of float is to prevaricate disdainful comforts altogether. Don’t use them, don’t scold them, and many certainly, don’t count on them. However, we know that this cunning be some-more simply conspicuous than done. If we can’t totally tighten disdainful things out of your life, here are a few fortify I’m certain we can follow:

  • Make certain their use complies with a beliefs of on-going encouragement so that a settlement works stately nonetheless them.
  • Don’t scold them or, if we have to, make certain to explain that these comforts are disdainful and what that means.
  • If we have to use them in your code, addition a critique about this. Something like /* Warning: Non-standard */ would suffice. Many people learn front-end coding by regard a source of extant websites. Even if we don’t give talks or write tutorials, we are almost indirectly training folks with any block of regulation we put out there.
  • Call out articles, talks, demos, etc. that scold these comforts with no warnings, or that entirely use a unaccompanied vendor’s prefix (which is also a unequivocally vicious problem). Or, even better, repair them yourself, if possible.

“How can we assistance sequence a feature?”

If we find yourself wanting a disdainful underline too frequently, take transformation to sequence something similar. A array of stairs I’d advise is a following, many of that can be unsentimental to new proposals in general:

Step 1: Research standards-compliant alternatives

First of all, examine standards-compliant alternatives. They cunning have worse or self-existent browser support, nonetheless during smallest we will know what to lift for. You can even addition it as a fallback, so that we don’t tighten other vendors out even after they practice this feature.

You can even assistance to speed adult implementation, by filing a bug in a browsers that don’t support it. Make certain to hunt for extant bug reports first. If it’s reported, we can still expose that it’s vicious to you, by letter a critique (be polite!). Browsers take author proceed into criticism when prioritizing that comforts to implement. Show them that a certain underline matters to you.

Step 2: See if a underline is already proposed

The W3C discusses that comforts to addition and how to tweak them to soundness in their mailing lists. There is one per Working Group (WG), and intermittently more, as Working Groups can mix in building comforts that impact churned technologies. For example, a CSS WG uses a www-style mailing list and a SVG WG uses a www-svg mailing list. However, for comforts that impact both CSS and SVG, there is a public-fx mailing list.

Before we post in any of these lists, greatfully search for before row of a issue. Every footnote a WG member spends responding to register suggestions is one rebate footnote spent building web standards. To hunt a archives, we can again use ol’ clever Google. Type your keywords as we customarily would and insert site:lists.w3.org to your hunt query.

If we see that a underline is already suggested, nonetheless a row has stalled with no resolution, we can respond (once!) to pierce it up. Please prevaricate opening off as fervent or tender in your email. Keep reading a row for ideas on what to addition that someone hasn’t secluded already.

Step 3: Propose a feature

Try to consolidate as many germane information as possible.

Some kinds of information that we could consolidate are:

  • Use cases a underline is useful for. This is unequivocally important. No WG wants to sequence things that are going to be used in dilemma cases only. Show that what you’re suggesting is common. A useful technique to amass such use cases is to google for a disdainful underline and see what people are controlling it for.
  • Your believe from controlling that feature. What we like, what you’d change in a proceed it works, how could it be generalized, etc.

Also, endorse that welfare it’s for. You can find a list of a CSS specifications here. Then prepend a due of your thread with that specification’s ID in brackets. For example, if it’s for Values Units, prepend it with [css3-values]. (The ID of any welfare can be found in a URL). This ensures that a editors of that welfare will notice your thread some-more easily, and tagging helps everybody to follow a expansion of certain specs they’re prying in.

Another thing to keep in mind is that new comforts don’t get total to specifications that have reached, or are about to strech Candidate Recommendation status. Of impetus this relates to any station that comes after that, i.e. Proposed Recommendation and Recommendation. For example, if your thought is about adding a new selector, don’t advise it for Selectors Level 3 (ID: css3-selectors), that is in Recommendation status, nonetheless for Selectors Level 4.

If we wish to know some-more about how a standards slight works, we can examination fantasai’s stately letter array “Inside a CSS WG”.

“All this is tough and boring!”

The same can be conspicuous for recycling vs. throwing all in a same bin. Yes, it definitely is harder than entirely controlling disdainful comforts and pursuit it a day. However, in a enlarged run it’s in everyone’s best interests, including your destiny self.