- From: François REMY <francois.remy.dev@outlook.com>
- Date: Tue, 6 Nov 2012 23:00:05 +0100
- To: "Boris Zbarsky" <bzbarsky@MIT.EDU>
- Cc: "Sebastian Zartner" <sebastianzartner@gmail.com>, "www-style list" <www-style@w3.org>
| How would this proposal have addressed the problem observed here? I'm
| genuinely curious.
Firstly, your property has the unprefixed name from start, so people can
stop worrying about prefixes in their stylesheet and javascript. No code
will ever break because the property "switch to unprefixed" because such
things never happen in first instance.
Here's how the story of transform would have been with "vendor bangs"
instead of prefixes:
1] experimental stage:
- webkit only recognize a 'transform' declaration as valid if it has
the "target(webkit-1)" and is a valid "webkit-1-syntax" of transforms.
- from the code, the developer has to do ".style.transform='....
target(webkit)'"
2] experimental stage (II):
- moziall only recognize a 'transform' declaration as valid if it
has the "!target(moz-1)" and is a valid "moz-1-syntax" of transforms.
- from the code, the developer has to do ".style.transform='....
!target(webkit)'" for webkit and the same for firefox (using if?)
- if the syntax happens to be compatible and that the results are
identical on most entries, the author could even use '!target(webkit-1,
moz-1)' in one declaration
3] standardization start (III):
- browsers vendors create a new proposal that is sligthly different
from both webkit and gecko.
- wekbit introduce webkit-2 as a new target and could either
- choose to use the same algorithm for both (2 superset of 1)
- continue to use his old algorithm for declarations targeting
webkit-1 (compat issues)
- ignore webkit-1 declarations (no compat issues because fewly
used)
- same happen for mozilla
4] standardization end (IV):
- final spec is written and browsers want to "unprefix": from now,
they'll just ignore any "target" declaration (so Opera would ignore
target(webkit-2)) and use their final algorithm when the value is valid
under the new syntax.
- browsers could decide to keep some special behavior for compat
reasons for specific targets (like iOS apps relying on wekbit-1) but output
a warning in the console.
- browsers could also "mark invalid" certain targets if they know
for sure they cause compat issues (for example: when the angle of gradients
did change of direction but the syntax stayed the same).
The important point is that (1) there's no one-declaration-per-prefix so if
you know your declaration works in multiple browsers you can target them all
at once (2) browser vendors can iterate their experimental implementations
because they have a way to detect for which 'implementation' the declaration
has been written (no compat issue) and (3) there's no need to have
mozTransform and webkitTransform, you can just use transform all the time
and rely on the "@supports" JS equivalent to know which targets a browser
support. This is much better than just making the assumption webkitTransfrom
implementation will stay the same all the time.
After that, the process of getting rid of experimental implementation will
probably stay as bad as it's now. But at least, other browsers could
possibly ignore the "target" token when the spec is finalized and run
"previously-proprietary" code.
I hope you get the idea.
Received on Tuesday, 6 November 2012 22:00:29 UTC