The meaning of version 0.x versus 1.x

CPANversion numbers Tue 11 April 2017

If the first release of your CPAN module has version 0.01, then when should you release version 1.00, and what does that signify? For a good while now I've kinda of read 0.x as "I'm still kicking things around", and you go to 1.x when things have settled down. I recently realised that others don't think the same as me (I know, amazing huh?), so I thought I'd see what others (that's you) think.

In my early days as a CPAN author, my first releases of a module would have version 1.x. But then at some point I noticed that people generally start with 0.01 or 0.001, so switched to 0.01.

Over the years I've absorbed various ideas related to version numbers, both from the Perl community and beyond. For example, Toby had a clear policy with respect to 1.0 of Type::Tiny, and I remember seeing other people with similar thoughts.

So I suggested to Karen Etheridge (ETHER) that maybe Try::Tiny is ready for a 1.x release. She effectively replied with "huh?", and that's when I realised we don't all have the same thoughts on this.

The Semantic Versioning Spec says:

So, phew!, it's not just me.

In many books about startups, people talk about "shipping 1.0". It's the first version you think people will pay for. But on CPAN, the first version you ship is effectively the version you think (ok, hope) someone else might find useful.

Grinnz made a good point on reddit: for CPAN distributions, bumping to 1.x is possibly also an indication that it's "battle-tested", to borrow Ovid's phrase. If no-one ends up using your module, then maybe it should stay at 0.x. When I see a version 0.01 on CPAN that was released more than a year ago, that says something to me.

Now I'm curious: do most people think that 0.x isn't special, or do you see it the way I do?

Further reading

comments powered by Disqus