Re: Proposition to change the prefixing policy

On Fri, May 4, 2012 at 8:26 PM, Florian Rivoal <florianr@opera.com> wrote:
> I believe the current prefixing policy is hurting more than it helps, and
> that the problems are fundamental to the policy itself, rather than
> something that can be blamed on various parties for not following it
> correctly.

I agree.  In order to get this problem fixed, I think the CSS working
group needs to acknowledge that the policy is flawed since it bears
the kind of fruit that it bears and placing the blame away from the
policy itself doesn't help fix the problem.

> Some have argued that authors should not use prefixed properties in
> production sites.

Arguing that authors shouldn't use something that's made available to
them is a losing proposition anyway.  To keep authors from using
something, it's needs not to be shipped.  Sometimes even that's not
enough and authors enthusiastically start to use features before any
browser supports them.

> When a browser vendor implements a new css feature, it should support it,
> from day 1, both prefixed and unprefixed, the two being aliased. If a
> style sheet contains both prefixed and unprefixed, the last one wins,
> according to the cascade.
>
> Authors should write their style sheets using the unprefixed property,
> and only add a prefixed version of the property (below the unprefixed
> one) if they discover a bug or inconsistency that they need to work
> around in a particular browser.

I think it makes sense for browsers to ship without a prefix when a
given feature is shipped.  (I think that stuff that isn't "ready" to
be shipped in a release build without prefix shouldn't be shipped in a
release build at all.)

However, I think the part of your proposal that involves shipping also
with prefix is risky is specially in an environment where some Web
authors only care about one engine and are even proud of it.  When
writing engine-specific styling is facilitated with vendor prefixes,
there's no guarantee that offers will only use them to target old
versions of IE and abandoned WebKit snapshots.  The kind of authors
who today only care about WebKit on mobile might continue to write
WebKit-targeted CSS under the model you propose in order to
deliberately serve down-level content to browsers they don't care to
test with.  (Deliberately serving down-level content to browsers--even
WebKit browsers--that authors don't care to test with happens even at
Google; see https://lists.webkit.org/pipermail/webkit-dev/2012-May/020573.html)
Moreover, building a system that allows authors to target legacy
versions would be an overkill for rapidly released browsers.

Furthermore, if the prefix version is there as a one-shot opportunity
to target legacy versions of a given browser engine, vendors would be
disincented from tracking specs through multiple iterations.  On the
other hand, if we believed that tracking specs with prefix through
multiple iterations was OK, surely it would be OK to do it without
prefix and forget the prefix.

On Fri, May 4, 2012 at 9:02 PM, Boris Zbarsky <bzbarsky@mit.edu> wrote:
> Several WG members have indicated on numerous occasions that as a matter of
> company policy they are unable to propose something for standardization
> until they have shipped a (prefixed, at the moment) implementation of it.
>  What this means with your proposal is that any ideas they have, no matter
> how half-baked, would have to be dumped out on the web without a prefix
> before they could even start to bring them to the working group.

It looks like you're referring to Microsoft and Apple here.

It's already clear that the current prefixing policy doesn't help
ensure that Apple can't push their stuff unilaterally onto the Web.
As far as the Apple situation goes, I think in retrospect it would
have been better for Apple's competitors if Apple had shipped without
prefix to begin with and the working group had more or less rubber
stamped transforms, transitions and animations.  (I think the
syntactic improvements to gradients don't justify all the trouble from
prefixing and since the changes were grammar-incompatible, the working
group could have changed the syntax the way it did anyway and ended up
with a situation where browsers need to support at most two syntaxes
which seems to be where Opera is headed when it comes to gradients.)

As for Microsoft, we have past experience of Microsoft shipping
features without prefix without the features being standardized first.
 In the case of innerHTML and the like that got rubber stamped later,
everyone is better off that Microsoft didn't use prefixes initially.
As for stuff that failed eventually like VBScript, ActiveX and
attachEvent, I doubt that prefixing them would have significantly
discouraged authors from using them in 1999.

Even though I would like vendors to come forward with proposals in the
working group long before being on the verge of shipping, I think
prefixing doesn't help when vendors won't do that.

>> This doesn't mean that the WG would just be a rubber stand body validating
>> de-facto standards.
>
> I think this would be the most likely outcome of this proposal, given the
> interactions between shipping and initial standardization proposals
> described above...

Would that be so terrible after all?  I've been professionally
polishing HTML-related after the fact rubber stamped turds for a while
now and most of the time I think that it's better that less than ideal
stuff made it to the market early instead of features staying off the
market so that they could have been perfected during the time away
from market.

On the time to market point, I also think the Web was better off for
CSS 2 being available unprefixed before CSS 2.1 was done. Looking at
what people now consider unfortunate characteristics of CSS, many of
those come from the spec side instead of a vendor jumping the gun:
e.g.  having float, display and position as distinct properties. But I
still think it was better for that stuff to be available unprefixed
earlier.

On Fri, May 4, 2012 at 9:14 PM, Alan Stearns <stearns@adobe.com> wrote:
> I do not think this would necessarily be the case. Experiments and
> browser-specific features could still be added with a vendor prefix only.

When an experiment is shipped in a release build and supported for
extended periods of time, it's not really an experiment.  It's a real
feature with a weird name.  Can't have the cake and eat it too here.

As for browser-specific features, I think they are antithetical to
interoperability and standardization policies shouldn't cater to them.
 As far as I can tell, browser-specific features fall into the
following categories:

1) Features that are needed for representing legacy oddities that need
to be represented in the UA style sheet.  For example: :-moz-is-html.
Since every UA needs these, these might as well be standardized even
though the benefit for Web authors might be low.  In any case, this
sort of thing does not need to be browser-specific.

2) Features that everyone agrees should be part of the Web but only
one browser has gotten around to implementing so far.  It's bad to
prefix stuff like this, because prefixing means deliberately
sabotaging the interoperability of a feature that everyone agrees that
should be part of the Web.

3) Features that have been proposed with the good-faith expectation
that it's good for them to become part of the Web but so far only to
propose are has implemented them.  If the good-faith expectation is
that the feature will move to category #2 in the future, prefixing the
feature will just cause trouble.  If the feature is rejected, chances
are that having the feature prefixed initially wouldn't significantly
help discourage all first from using it.  To discourage offers from
using a feature, other vendors need to offer an alternative that is
more broadly supported.

4) Features that blatantly expose vendor-specific functionality to the
Web.  I'm trying to recall when this has happened in CSS. The IE
filter property exposed DX filters with a value-side prefixes to such
as "DXImageTransform.Microsoft.", but I don't know the filters well
enough to determine if any of the filters would have been inherently
unreplicable by other vendors.  In any case, I think there shouldn't
be a working group-endorsed mechanism for exposing vendor-specific
functionality to the Web when the functionality isn't in good-faith
proposed to be implemented by every one eventually per case number
three above.

On Fri, May 4, 2012 at 10:19 PM, Ojan Vafai <ojan@chromium.org> wrote:
> I'm really torn on this. On the one hand, the current policy clearly has
> problem of unprefixing too late.  On the other, looking at the latest
> flexbox spec, it wasn't until the preparations for last-call that a bunch of
> naming changes were made.

How is that an argument in favor of prefixing?  If the drafts had been
implemented without prefixes and then all the names had been changed,
the new names would be exactly as non-conflicting with the old names
as in the case where the old names were prefixed.

On Sat, May 5, 2012 at 5:12 AM, Ojan Vafai <ojan@chromium.org> wrote:
> I'd rather we do the same as http headers. Any experimental feature gets an
> x-prefix instead of a vendor prefix.

Even the IETF, which is a super-conservative organization (must use
ASCII-only text paginated for an ancient printer) for whom it is
really hard to get to acknowledge its past mistakes (consider for
example the default encoding for text/* MIME types), is waking up to
realize that x-prefixes where a bad idea:
http://tools.ietf.org/html/draft-ietf-appsawg-xdash-05

On Sat, May 5, 2012 at 5:33 AM, Liam R E Quin <liam@w3.org> wrote:
> How does that work if two different browsers have different value-spaces
> for the same property? This seems entirely likely - e.g. they implement
> different drafts, or invent something independently.

Different value spaces are grammar-incompatible and, therefore, the
different versions of the syntax don't conflict any more than
differently-prefixed versions of the syntax.

Check out the source code of
http://mrdoob.com/lab/javascript/webgl/ie/ .  It shows a property
being used with multiple grammar-incompatible values.  Some of the
values of trivially incompatible due to different prefixes but there
are two different -webkit-prefixed values in use as well.

On Sat, May 5, 2012 at 1:20 PM, Daniel Glazman
<daniel.glazman@disruptive-innovations.com> wrote:
> Florian, I think your proposal has one flaw only but that's a pretty
> big one... We introduced prefixes originally to be able to have preview
> implementations potentially differing from the final spec and
> implementations.

It would be nice if the W3C declassified the records of the
discussions that led to the introduction of vendor prefixes so that we
could discuss the original intentions on this mailing list and compare
the intentions with the outcomes publicly.

I think the motivating factor for introducing vendor prefixes is
substantially different from the browser situation that we have now,
but I think I will have to leave it at that and not go into the
details.

On Sat, May 5, 2012 at 6:30 PM, Boris Zbarsky <bzbarsky@mit.edu> wrote:
> Yes, that's one of the key problems against a UA unilaterally moving to a
> model where they ship things preffed off by default.  It puts them at a
> competitive disadvantage.  And even if we all agreed to do it, the benefits
> to defecting would be enormous.

As far as I can tell, there would be benefits from defecting from the
current policy.  Kudos to Opera for defecting, but it has taken a
remarkably long time for them to do so and it seems to be hard to get
Mozilla and Microsoft to defect.  I don't know why Mozilla hasn't
defected already, so I can't comment on the mechanism that causes
non-defection, but it evidently looks like vendors won't necessarily
defect from working group policy even when there would be benefits
from doing so.  Thus, it seems that a policy could hold even when
there are benefits from defecting.  (Getting Web authors not to defect
from a policy is hopeless of course.)

Moreover, I think it's a feature that if the working group takes
unbearably long to nail something down when vendors have running code,
vendors defect, ship and make the feature available to authors leaving
it to be polished after the fact like many of the backward-looking
features specced in HTML5 and that have made the Web better off by
being available rather than withheld.

On Mon, May 7, 2012 at 1:49 PM, L. David Baron <dbaron@dbaron.org> wrote:
> On Saturday 2012-05-05 15:02 -0700, Maciej Stachowiak wrote:
>> Properties can be shipped in unprefixed form once both of the following are true:
>> (A) The appropriate standards group (most likely the CSS WG for CSS properties) has agreed to take up the relevant specification as a work item; AND
>> (B) At least two independent roughly interoperable (though not necessarily identical in all edge cases) implementations are publicly available.
>
> I think this is largely reasonable, except I'd like an opportunity
> to reconsider taking things up as a work item, given its additional
> implications.
>
> There are some things where I agreed to let them be work items
> despite the opinion that the current spec is harmful, with the hope
> (as yet unfulfilled) that they'd be improved while worked on in the
> group. [1]

If a harmful spec has proceeded to the stage where there are two
independent roughly interoperable implementations and the creators of
those implementations want to ship, is there really any way to put the
cat back into bag by the working group speaking against a feature?
That is, if Maciej's condition (B) holds, isn't the feature pretty
much a done deal anyway to such an extent that it's futile to try to
undo its existence?  Is there a historical example of a case where
condition (B) was true and a W3C working group managed to purge the
feature from the Web platform to such an extent that other vendors
didn't need to implement it and could still successfully render the
Web?

-- 
Henri Sivonen
hsivonen@iki.fi
http://hsivonen.iki.fi/

Received on Tuesday, 8 May 2012 13:23:44 UTC