@@ -260,29 +260,67 @@ Introduction {#intro}
260
260
should not be released in production software;
261
261
but may be released experimentally (unprefixed) in non-release builds.
262
262
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
+
263
270
<li>
264
271
If at least three browsers implement a feature
265
272
(or if a browser has broken the previous rule and shipped in a production release already),
266
273
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,
268
275
implementers may ship that feature in a release build.
269
276
<dfn>Rough interoperability</dfn> is satisfied by a subjective judgment
270
277
that even though there may be differences,
271
278
the implementations are sufficiently similar
272
279
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>
273
296
274
- <li>
275
297
When exposing an unstable feature to the Web in a production release,
276
298
implementations should support both prefixed and unprefixed syntaxes
277
299
for the feature.
278
300
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
+
279
309
<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>
286
324
</ol>
287
325
288
326
0 commit comments