* Shlomi Fish <shlo...@shlomifish.org> [2015-05-31 18:45]:
> So what should be done?

The thing is that version numbers are used in many places that don’t
necessarily follow the same conventions for what notation is equivalent
to what other notation. Think OS package managers.

The most conservative approach is to treat the version number as both
a simple number and a string, which means just one dot, and making sure
to always zero-pad it to the same fixed length.

So personally I’ve settled into 4 decimal places, i.e. e.g. 1.0000, in
which I treat the first decimal place as the minor version, and mostly
treat the last 3 places as the revision number.

So in place of 1.3.2 you get 1.3002. That is only 2 places shorter than
1.003002, but it is *much* easier on the eyes because it’s shorter in
the front rather than the back: the major and minor don’t get separated
by usually redundant and visually bulky zeroes.

This does limit each major version to 10 minor versions, but I am fairly
liberal about bumping the major version anyway. You can bump too little,
but not really too much. So that doesn’t bother me.

Also, while the last 3 places are where the revision number goes, that
is not strictly their only use. The second decimal place would always be
0 in practice if that were the case. Rather, having 3 places after the
“minor version” gives some wiggle room to fudge the version number a bit
in case that’s needed. So you aren’t *forced* to bump the major version
as often as you might think, either.

The point of going to 4 decimal places from the start is to avoid having
to add places later, and part of the point of that is to avoid setting
any precedent of adding decimal places. (If not for trying to balance
all the compatibility concerns, almost everything on CPAN could make do
with two decimal places, with more occasionally thrown in temporarily.)

If you stick with this scheme unyieldingly, you get compatibility with
anything and everything that might look at your version numbers – human
æsthetic sensibilities included.

And push come to shove, don’t be afraid to bump the major.

So this is what I’ve arrived at. It’s not ideal on any one axis, but it
manages to be quite passable. Considering all the concerns it balances
I feel it’s pretty good. It’s extremely conservative on one hand yet at
the same time gives room for fudging as needed.

Regards,
-- 
Aristotle Pagaltzis // <http://plasmasturm.org/>

Reply via email to