I had to compare versions in PAR::Repository::Client when determining the prefered PAR distribution for installation. Without version.pm that would have required a lot of thought and quite a bit of code to get right. In fact, it might have required most of what version does. Unfortunately, because of the pest that are X.Y.Z versions, version.pm by definition can't make comparisons work well in all cases, but certainly in all but the most obscure ones.
Thank you, John, for helping me retain a bit of sanity by not having to think about version comparison (too much). Your work has cleaned up a lot of cruft.
version.pm is a great idea. If was far better to build proper version support into Perl via a standard version module, rather than in the language itself.
And having it as a standalone dist has meant the concept has been able to develop and break as needed without hurting anyone.
It also works pretty darned well now that it has had time to mature. I'd call it late-beta quality, and ok for use in your code.
That said, I do agree with the Module::Build pains. I don't blame version.pm for M:B's problems, only for choosing to use Module::Build before it is finished, stable and in the core.
Modules that are going to become extremely heavily dependended only really should go for compatibility (including backwards compatibility) and pragmatism first, even at the expense of a bit more work writing the installer.
So a one star penalty for inflicting M:B's pain on a lot of people, but apart from that a perfect score. It is certainly The Right Way to solve the versioning problem.