Skip to content

Commit c23c7d0

Browse files
committed
[css-2015] Explain non-prefixing policy.
1 parent c8f424f commit c23c7d0

File tree

1 file changed

+46
-8
lines changed

1 file changed

+46
-8
lines changed

css-2015/Overview.bs

Lines changed: 46 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -260,29 +260,67 @@ Introduction {#intro}
260260
should not be released in production software;
261261
but may be released experimentally (unprefixed) in non-release builds.
262262

263+
<details class=why>
264+
<summary>Why?</summary>
265+
This allows both authors and implementors to experiment with the feature and give feedback,
266+
while preventing authors from using them in production websites
267+
and thereby accidentally "locking in" certain syntax or behavior that might change later.
268+
</details>
269+
263270
<li>
264271
If at least three browsers implement a feature
265272
(or if a browser has broken the previous rule and shipped in a production release already),
266273
and the implementations have rough interoperability,
267-
and the CSS Working Group has consensus that this feature should exist and be released,
274+
<em>and</em> the CSS Working Group has recorded consensus that this feature should exist and be released,
268275
implementers may ship that feature in a release build.
269276
<dfn>Rough interoperability</dfn> is satisfied by a subjective judgment
270277
that even though there may be differences,
271278
the implementations are sufficiently similar
272279
to be used in production websites for a substantial number of use cases.
280+
Vendors <em>should</em> provide spec-editing and testing resources to complete standardization of such features.
281+
282+
<details class=why>
283+
<summary>Why?</summary>
284+
If a feature has already escaped into the wild and sites have started depending on it,
285+
pretending it's still "experimental" doesn't help anyone.
286+
Allowing others to ship unprefixed recognizes that the feature is now de facto standardized
287+
and encourages authors to write cross-platform code.
288+
289+
If a feature is sufficiently popular that three or more browsers have implemented it before it's finished standardization,
290+
this clause allows releasing the pressure to release.
291+
Note, though, that the CSSWG still needs to be consulted to ensure coordination across vendors
292+
and to ensure sanity review by the CSS experts from each vendor.
293+
Note also that "rough interoperability" still usually means painful lack of interop in edge (or not-so-edge) cases,
294+
particularly because details have not been ironed out through the standards review process.
295+
</details>
273296

274-
<li>
275297
When exposing an unstable feature to the Web in a production release,
276298
implementations should support both prefixed and unprefixed syntaxes
277299
for the feature.
278300

301+
<details class=why>
302+
<summary>Why?</summary>
303+
This is recommended so that authors can use the unprefixed syntax to target all implementations,
304+
but when necessary, can target specific implementations
305+
to work around incompatibilities among implementations
306+
as they get ironed out through the standards/bugfixing process.
307+
</details>
308+
279309
<li>
280-
When shipping in a production build a feature that is either
281-
only meant to be used in non-web environment,
282-
or both in web and non-web environment
283-
but does not match the criteria of the second rule,
284-
it should be supported only through a prefixed syntax,
285-
and should not be exposed to the Web environment.
310+
When shipping in a production build a feature that is only meant to be used in non-Web environment,
311+
it should be supported only through a prefixed syntax
312+
and not exposed to the Web.
313+
(Even if a feature is intended to eventually be used in the Web,
314+
if it hasn't yet been standardized
315+
it should still not be exposed to the Web.)
316+
317+
<details class=why>
318+
<summary>Why?</summary>
319+
The prefixing requirement allows shipping specialized features in non-Web environments
320+
without conflicting with future additions to standard CSS.
321+
The restriction on exposure to the Web environment is to prevent
322+
accidentally causing the public web to depend on an unstandardized feature.
323+
</details>
286324
</ol>
287325

288326

0 commit comments

Comments
 (0)