[whatwg] Rename the 7-arg arcTo() to ellipseTo()?
Ian Hickson
ian at hixie.ch
Mon Sep 24 16:32:18 PDT 2012
On Mon, 24 Sep 2012, Dirk Schulze wrote:
>
> Making the path syntax more complex than it needs to be seems not to be
> an option for me.
It's definitely an option, assuming this is not a trivial statement,
because it's no the only axis along which the syntax can be optimised, and
it is not the axis that has been used previously. Specifically, the path
syntax has clearly been optimised for terseness and power, at the expense
of simplicity.
Nothing can quite mess up an API or language like changing optimisation
function (changing design philosophy) half-way through its life. You end
up with languages that feel like they have multiple personality disorder,
and it ends up being much harder to learn the language than if it was
consistent with itself but overall more complicated than possible.
That is, a language that has complexity 10 throughout is easier to learn
and use than a language that is half complexity 10 and half complexity 1.
This is a lesson we have learnt many times on the Web, not least of which
with HTML, which has lurched in many directions over its lifetime,
leaving authors highly frustrated and confused.
> To be honest it seems very confusing to me that Canvas has arc() and
> ellipse() but no ellipseTo() as pendant to ellipse().
ellipse() exists only because arc() already had optional arguments and the
resulting API had arc() been extended to support ellipse()'s use case
would have been to have the radii arguments split or to have optional
arguments in the middle, which is IMHO even worse than adding another
method. It's an unfortunate situation, certainly.
On Mon, 24 Sep 2012, Tab Atkins Jr. wrote:
>
> Returning to the original subject, we don't *want* optional arguments
> here.
Well, the canvas API has optional arguments, so there's no way to be
consistent with canvas with this constraint. (This is the case even before
ellipses are considered.)
> We prefer using the names "arc" and "ellipse" to denote circular and
> elliptical variants of the commands.
I think this will make the path language really ugly, assuming you're
talking about the commands and not the names (as in, the strings in d=""
will now be long instead of one-letter commands), and I question whether
this makes sense, but that's a discussion for the www-svg list.
> Right now, the canvas path API is inconsistent with itself, using
> arc/ellipse in one place, and using arc with optional arguments in
> another.
Specifically, it's using arc and arcTo with optional arguments, and
ellipse separately, because arc couldn't be extended sanely the way arcTo
could be.
> We would prefer to align the syntaxes of canvas path and SVG path as
> much as possible, to help authors translate knowledge between the two.
I think it would be far more useful for SVG to be consistent with itself,
have no similarity with canvas, and present a sane language, than to have
SVG inconsistent with both itself and canvas, and present a fractured
language that is hard to learn.
> As such, we're requesting that the canvas path API change to be
> consistent with itself, in the direction that we prefer.
I believe the canvas API is adequately consistent with itself given the
constraints facing this API's evolution, and so have not changed it.
--
Ian Hickson U+1047E )\._.,--....,'``. fL
http://ln.hixie.ch/ U+263A /, _.. \ _\ ;`._ ,.
Things that are impossible just take longer. `._.-(,_..'--(,_..'`-.;.'
More information about the whatwg
mailing list