[webkit-dev] Adding nonstandard features (was Re: Adding ENABLE_NAVIGATOR_BUILDTYPE to WebCore)
mjs at apple.com
Mon Jun 11 18:29:58 PDT 2012
On Jun 7, 2012, at 1:10 PM, Adam Barth <abarth at webkit.org> wrote:
> On Thu, Jun 7, 2012 at 1:00 PM, Ryosuke Niwa <rniwa at webkit.org> wrote:
>> On Wed, Jun 6, 2012 at 1:51 PM, Annie Sullivan <sullivan at chromium.org>
>>> I wanted to let you know that I plan to add support for
>>> navigator.buildType (e.g., "nightly", "beta", "final") to WebKit. This
>>> feature isn't on the standards track (but neither are a bunch of other
>>> similar properties on Navigator). This feature will be behind the
>>> ENABLE(NAVIGATOR_BUILDTYPE) feature define. See:
>> What is the rationale for adding this property on the navigator object
>> instead of the chrome object we also expose if your'e not expecting this
>> property to be ever standarized?
> Generally, we avoid implementing web visible features via the "chrome"
> object because that makes them Chrome-proprietary. In this case, it
> seems entirely reasonable for other browsers (e.g., Firefox) to want
> to implement this feature. By putting it on navigator, we invite them
> to implement it as well.
This thread seems mostly over, but taking the opportunity to make a broader point:
If we want to invite other browsers to implement a feature, then we should propose it to the relevant standards group (and prefix it or just don't add it if it seems likely to be rejected). Just implementing unprefixed, without discussing with a relevant standards group first, is not the best approach. It can needlessly damage our relations with other implementors and the relevant standards groups themselves. While browser implementors in general, and the WebKit project in particular, have not always done a great job of this, this, we've been trying to do this more consistently since we adopted a process for reviewing feature additions.  We may even want to update that policy page to mention that you'll very likely be asked, "is this on the standards track?" and if the answer is "no" you need a particularly compelling reason.
More information about the webkit-dev