2009/4/23 Michael G Schwern <schw...@pobox.com>:
> Whether you like it or not, humans eyeball version numbers all the time and
> they don't think to study the documentation... if they can find it or even
> think they might need it to parse something as simple (should be simple) as a
> version number.
>
> Disallowing vX.Y removes an ambiguity into which the user will fall.  The best
> way to avoid a mistake is to remove the possibility entirely.  For example,
> when designing a postal code system you remove 1, l, 0 and o because they are
> easily confused.  Or you interleave numbers and letters, as the Canadians do.
>  You don't tell your entire population to practice better penmanship.

If we care about humans in the META.yml spec, then fair enough. I
agree, in principle.

> What if you don't know the definition?  What would one think upon encountering
> various versions cold?
>
> v1.2.3  is not a number, it must be a tuple!
>
> 1.2.3   same deal
>
> v1.2    its X.Y, that must be a number.
>        OR
>        versions in my experience are tuples, so it must be a tuple.
>        OR
>        it has a v in front of it, that means... "version"?  I dunno.
>
>
> Weighed against this, to which I've gotten no answer, is what is the value of
> allowing v1.2 that v1.2.0 does not also offer?  Is that value worth opening an
> ambiguity in a system that's already full of traps?

If we take such an attitude though then we're saying this isn't being
written as a machine-consumed document that humans can debug if they
need to, but as something that needs to be first-class consumable by
humans, then there's no point of having a v at all.

We just define two part versions as floats, and three or more parts as
tuples, and we're effectively back to the status quo and can be done
with it.

The v seemingly adds no meaning for the machines, and will just add
confusion for the humans.

So are you in favour of just a "2 means float, 3 means tuple" approach?

Adam K

Reply via email to