Anybody who spends time trying new free software applications and distributions will soon notice that version numbering and labeling is next to meaningless. These days, versioning rarely gives an accurate idea of the state of development, except relative to other builds of the same project. It is simply a label that distinguishes one build from another. That's too bad, because a properly labeled release can give users a sense of how advanced the build actually is.
The problem is not that several different versioning systems exist. Once you realize there are variations, you should have no trouble picking up on the fact that the odd-numbered GNOME releases are development builds and even-numbered ones are official releases. Nor are you likely to mistake KOffice 1.9.95-4 for a late version of KOffice 1.0 for more than a moment before you realize that it is an early version 2.0 build. Anyone familiar enough with free software to be trying the latest builds knows that getting all of a large project's developers to agree on anything besides their mistrust of Microsoft is impossible. We learn to allow for idiosyncrasies.
Rather, the problem is that, no matter what the system, a version number often says nothing about how far along the software happens to be in the development process. Some projects, such as OpenOffice.org, have abandoned versioning except for the final release, and simply label each release as a build. But for every project like Firefox that forthrightly uses names such as "firefox3.0-rc1," dozens are using both the traditional three-digit version number and terms like "beta," "alpha," and "release candidate" so loosely that they no longer carry any meaning.
Version numbering, of course, is partly a matter of judgment -- a reality that Linus Torvalds frequently emphasizes when he announces a new kernel. For instance, five years ago, he announced the long-awaited 2.6.0 with, "This should not be a big surprise to anybody on the list any more, since we've been building up to it for a long time now.... Anyway, 2.6.0 is out there now." The implication that version numbering is arbitrary, and perhaps more a marketer's concern than a developer's one, could hardly be clearer.
Still, over the years, a broad consensus about what to expect in a release cycle has emerged. First come the development releases or nightly builds. Then, at some point around version 0.2 or 0.3, one release is declared -- somewhat arbitrarily -- the alpha release, which, in free software, designates a release in which major functionality is more or less enabled. Somewhere between versions 0.6 and 0.8, a beta is declared, meaning a version in which all the features of the major release are present, and the interface is almost finalized, but in which bugs are still being worked out. When all the showstoppers are fixed, one or more release candidates are released, and finally, a few minor fixes later, the major 1.0 release. The major release may not be bug-free, largely because of the problems of testing on enough different combinations of hardware, but it is supposed to be functional for most users.
That's what users have come to expect. The modern reality is somewhat different. Increasingly, I've seen releases with versions edging towards a whole number in which major functionality was still being implemented. When I reviewed BashStyle-NG, a desktop utility for customizing the shell, much of the interface was still in flux, even though I was using the third release candidate. In a more extreme case, KDE announced 4.0, and its development team then expressed surprise when people tried to use it in their daily work. Version 4.1 was what users wanted, they hurried to explain as the complaints rolled in.
Similarly, when the Foresight distribution has an alpha four release, then obviously the term "alpha" no longer carries meaning, even when you make allowances for the problems of a large project that consists of largely distinct modules. If a fourth alpha exists, then surely the first one was misnamed.
In a similar situation, Cyrille Berger, a KOffice developer, explains the fact that version 2.0 is now in its eighth alpha as due the size and complexity of the project. Designating so many releases as "alpha," he says, "is the only way to show that the project is still alive and is making progress." Berger acknowledges that "after the 2.0 release, we will follow a much shorter release cycle, with much fewer alphas," but meanwhile, the price is user confusion.
When this out-of-control versioning errs in the opposite direction, it causes few problems. When FontMatrix's 0.1 release proved a fully functional font manager, I was pleasantly surprised. Not only was it software still in development that I could use without enduring any crashes or workarounds, but I couldn't help thinking that, if an early release was so polished, what heights would the official release reach?
But users who download and compile a release whose number or status is inflated are only going to have their expectations deflated. Instead of getting involved in the project and filing bug reports to help nurse development along, they are more apt to turn away in disgust, and it may be years before they return. And each time that happens, the project with inflated versions loses a chance to build its community.
<pLabeling a version accurately may be a management or marketing decision, but in the case of a free software project, participants are marketing themselves, and that should make them less reluctant to spend some time on the task. After all, if a project misrepresents itself, how can it expect others to regard it accurately? For public consumption, development teams are hardly bound by what their revision control software might assign.Part of the problem, perhaps, is that version numbers are a legacy or an imposition from commercial development. Some might say they make no sense in free software, with its philosophy of "release early, release often." However, free software is increasingly commercial these days. If projects can compromise enough with business to have regular release schedules, then accurate versioning hardly seems too much to ask.
Or, if accurate versioning is impractical, one answer might be to adopt the loose categories suggested by Debian's cascading repositories: unstable, testing, and stable. That would be enough to tell users what to expect. Then official releases could be named more or less by fiat, the way that Debian has all along.
Whatever solution they choose, free software projects need to be more careful about versioning. Doing so would be doing everyone a favor.
Note: Comments are owned by the poster. We are not responsible for their content.
Arrrrrgh.
Release quality bars, feature implementation order, and which versions are deemed "feature complete" enough to warrant ongoing support, are all part of release planning. This has nothing to do with version numbers, and everything to do with project management (which most FLOSS projects don't have solid, dedicated resources for).
Communicating with potential users to indicate the project's maturity and feature-completeness; which versions are more stable vs. more featureful; the level of support that the project offers, and for which versions; and so forth, are all part of public relations. Again, this has nothing to do with (useful, development-driven) version numbers, and everything to do with marketing (which most FLOSS projects again don't have solid, dedicated resources for). Real Developers despise the ever-present "marketing" version number, because it defiles all the meaning carefully wrapped into a real version number to instead create a number that's easier to sell.
In FLOSS, there is a generally accepted (and practiced) numbering convention for the meaning of that major.minor.micro triple. Major bumps happen only when backwards-compatibility is broken (or made non-native, deprecated, or otherwise inconvenienced or jeapordized by future development). Projects with large major numbers are either a Bad Thing (they can't design and keep breaking their APIs to fix problems; the project keeps changing hands and being rewritten; they just don't care about backwards compatibility...), or are using a "marketing" version number. Minor version numbers indicate backwards-compatible changes -- almost always new features. Large minor versions tend to be a good sign -- the dev team is active, they release often, they're good about adding features, and they aren't breaking compatibility. Micro version numbers indicate bugfix level; large values here indicate that the team either focuses bug-fixing on designated releases (a good thing), or makes releases with lots of bugs (not so good).
People not following the above are out of line with the majority of the FLOSS world. But that's exactly why distros add an extra layer of translation, providing "stable" and "unstable" tags (not that they always get it right). It's a nice, pretty, marketing front-end -- which is far easier to digest than the life's story of every project out there. However, that's a completely different target audience than dev-to-dev, which is what the version number is intended for. Version numbers aren't out of control, so much as you're trying to use them for something they're really, really not meant to do: market.
┌──────────────────────────┬─────┬─────┬─────┐
│Version number components:│Major│Minor│Patch│
├──────────────────────────┼─────┼─────┼─────┤
│ Backwards compatible? │no │yes │yes │
├──────────────────────────┼─────┼─────┼─────┤
│ New features? │yes │yes │no │
├──────────────────────────┼─────┼─────┼─────┤
│ Bug fixes? │yes │yes │yes │
└──────────────────────────┴─────┴─────┴─────┘
Version labeling is out of control
Posted by: Anonymous [ip: 84.69.189.20] on June 07, 2008 05:37 PMConfusion over an alpha release?
... So what if there are 8 alpha's? You expect it to go straight from alpha to beta? What about the number of bugs you miss in correcting that simple error - or the regressions?
There can be 200 'alpha' releases - and the terms of 'how close they are to release' depends on the feature set they're trying to achieve for the official Major/minor release.
Most people know that major's are for huge structural changes, minor numbers relate to big fixes to the code where people can experience 'bad things'(tm) and then anything after (alpha, beta, numbers) are reletively minor fixes and nightly builds..
--
Paul_one
#