- From: Jan-Ivar Bruaroey <jib@mozilla.com>
- Date: Tue, 05 Aug 2014 08:26:29 -0400
- To: Stefan Håkansson LK <stefan.lk.hakansson@ericsson.com>, Adam Roach <adam@nostrum.com>, Peter Thatcher <pthatcher@google.com>, Martin Thomson <martin.thomson@gmail.com>
- CC: "public-media-capture@w3.org" <public-media-capture@w3.org>
On 8/5/14 3:01 AM, Stefan Håkansson LK wrote:
> I think we're discussing this because it is not obvious. To some (me
> included) a bare value signals "ideal", to others it signals
> "mandatory/exact".
Of course it is not obvious now after we've defined the meaning once as
inverse! Discussions about meaning are hard. We've spun around too much
and now we're dizzy. But I think there's still time to fix this (not
much) so that it's clear long-term.
Taking a step back, I think the right question is: Can someone who is
seeing this for the first time look at the syntax and figure out the
rules enough to use it right? For that to work the rules must be
intuitive and consistent first and helpful second (e.g. don't twist
meaning out of fear or concern for the outcome, or at least twist it
consistently).
Clear your mind of the spec and consider this JS call:
var constraints = { video: { aspectRatio: x } };
getUserMedia(constraints, success, failure);
I'm not going to tell you what x is yet. Can you answer whether it fails
or not? I think people would expect this to work the same for all valid
values of x.
Lets scrutinize the call signature. We used to have the word
"mandatory", which was pretty strict-sounding, and we all agreed it was
clear that it could fail then. Well, I think to fresh eyes the word
"constraint" is just as harsh-sounding! -
https://www.google.com/search?q=constraint - It is the flexible
(non-failing) constraint that is the oxymoron (now thankfully hidden
under "advanced").
The fact that a failure callback is a required argument and that the
word constraint is harsh-sounding should be enough to expect it to fail,
I think.
So now I'll tell you what x is. It could be any of these:
var x = 16/9;
var x = { max: 16/9 };
var x = { min: 4/3, max: 16/9 } };
var x = { min: 4/3, max: 16/9, ideal: 16/9 } };
That's the thing with JS. I think people would expect this to work the
same for all values of x. The exception is "ideal" whose very name we
picked to contradict the word constraint on purpose.
People are going to use cut'n'paste + deductive reasoning (anything I
put in place of x, even an object, follows the same rule).
.: Jan-Ivar :.
Received on Tuesday, 5 August 2014 12:26:59 UTC