On Mon, Apr 20, 2009 at 4:17 PM, Michael G Schwern <[email protected]> wrote:
> Do not extend the _Z convention into version.pm.
Too late. It's there. qv("1.2_3") -> v1.2_3
I wish it wasn't that way, but it is. Thus, my suggestion that "v"
always indicate a tuple.
> The state of a release does
> not belong in the version number. Its an inflexible system that complicates
> version comparisons even more. We already have a sane means of recording
> release metadata, it is META.yml. Stick the release info in there.
I agree entirely, though I don't think a convention has been added to
META.yml for it.
> That leaves X and X.Y. The only reason for the leading v is to disambiguate X
> and X.Y, the numbers, from X and X.Y, the tuples. If we disallow X and X.Y
> tuples, there's no more ambiguity, no more v and no more special parsing.
We can't disallow them, short of time travel.
My proposal for using a leading "v" as the standard is based on the
fact that version.pm *already* does it and it solves the X.Y_Z
problem. A "v" also ensures that it can only be interpreted as a
string, not a number. That makes for a nice, clear-cut case. We
*know* with absolute certainty that "v"-whatever is intended to be
tuples. We never have to guess. That seems like a nice feature, as
it's a clean break with the past.
There are two inescapable problems:
(a) how someone should convert from a numeric versions to vX.Y.Z
without screwing up their ascending sequence
(b) how to compare vX.Y.Z to a legacy X.YYZZ
Those will still need heuristics, documentation and a big stick.
-- David