Re: The mandatory constraint is a footgun

+1 except that there should be a requirement for ignored constraints to 
trigger an event (for logging locally or sent back to the server). This 
will avoid silent failures.

Gili

On 12/11/2013 1:04 AM, Jan-Ivar Bruaroey wrote:
> I've implemented a strict interpretation of the spec's mandatory 
> constraint that treats unknown keys as unsupported, I've tried it, and 
> I think it is wrong.
>
> Scripts should just work, so you mustn't use 'mandatory' unless you 
> also code up a fallback, yet we've made it the thing people try first 
> (with its marginally preferable syntax).
>
> With future constraints coming, 'mandatory' is an invite to fail on a 
> subset of browsers, a honeypot for newbie webdevs who test only their 
> favorite browser(s).
>
> At the same time, 'mandatory' is a sucky api for asking what the 
> browser supports, because you can't just ask, you have to be prepared 
> to do.
>
> So it is bad for simple devs who just want to do, and bad for advanced 
> devs who just want to ask.
>
> It also goes against webidl (maybe even against the web), requiring 
> implementers to circumvent dictionaries, which, as Travis points out, 
> disallow detection of unknown keys for this very reason (future-proofing).
>
> ---
>
> Now, all this may be justified, if there were no other way.
>
> But I think there is another way:
>
> MINIMALLY:
>
>  1. Browsers must have a getCapabilities() query that returns which
>     constraints it implements.
>  2. We clarify that mandatory constraints are webidl dictionaries,
>     e.g. unknown keys are ignored.
>  3. Browsers must include in webidl only the keys they actually implement.
>
>
> The simple dev (with no fallback) can now just do, and things work as 
> well as possible. This is the best outcome for this person.
>
> The advanced dev (with fallback) uses getCapabilites() and /then/ uses 
> gUM with 'mandatory' to narrow sources only by the constraints the 
> browser supports, giving them the control needed to make intelligent 
> fallbacks.
>
> This works with webidl, and is webby.
>
> IDEALLY:
>
>  1. I'd love to see us go further and adopt a constraint format
>     without the now-confusing name 'mandatory', like my "dictionaries
>     of decreasing preference" proposal
>     http://lists.w3.org/Archives/Public/public-media-capture/2013Nov/0052.html
>
>
> .: Jan-Ivar :.
>

Received on Tuesday, 12 November 2013 08:11:45 UTC