Romance and Rebellion In Software Versioning 86
joabj writes: Most software releases more or less follow the routine convention of Major.Minor.Bugfix numbering (i.e. Linux 4.2.1). This gives administrators an idea of what updates are major ones and might bring compatibility issues. As Dominic Tarr points out in his essay "Sentimental Versioning," a few projects boldly take on more whimsical schemes for versioning, such as Donald Knuth's use of successive Pi digits to enumerate new updates to TeX, or Node.js's punk-rock careening between major and minor releases. If you break convention, Tarr seems to be arguing, at least do so with panache.
Semantic Versioning (Score:5, Informative)
http://semver.org/ [semver.org]
Re: (Score:2)
Then they should each have their own name, and their own version sequence.
Re: (Score:3)
Got an example at hand?
foo 1.2.3 and foo 1.3.4 might both release as independent stable branches. 1.2.3 might release after 1.3.4, and that would be ok. Ditto for foo 2.1.3 releasing before 1.9.20. So in terms of the upstream, it's perfectly capable of describing concurrent releases.
If you refer to giving room to linux distros to ascribe another tier of versioning, that's why packages append their own revision and flavor (e.g. -5.el6 and -10.el7 may refer to both different generations of the package targ
Re: (Score:1)
Re: (Score:2)
While there is a practical facet of that approach, it misses a lot of things.
For one, if you want *only* bugfixes and *nothing* to change functionally in some app you use (or your confidence in the upstream to make feature changes without regressions is low), then semantic versioning offers a promise that you can use to select what you pursue. libtool speaks strictly only to functional compatibility, but some want to track beyond that promise.
Similarly, it speaks specifically to how API/ABIs work, not thin
Sofware versions should stop at 10 . . . (Score:5, Funny)
Some can go up to eleven, but most should stop at 10.
Re: (Score:2)
But the minor number should keep going past 10, just to make things difficult for pedants. :)
"OS X 10.11? Where's OS XI? Oh my god I'm going insane!"
Sure... (Score:1)
you could do something whimsical. Alternately, you could not be an asshat. Sematic versioning FTW!
Re: (Score:2)
Done.
Done what exactly? I mean, apart from turning a version number into a meaningless number
Re: (Score:2)
actually has meaning, a larger number is newer.
How innovative. Care to point me at some version numbering schemes that do not have this property?
Re: (Score:1)
There are 10 kinds of people in the world...
Re: (Score:2)
The "10" in windows 10 is not the version number, it's the marketing name. Their version number is something different which may or may not begin with 10, but at least doesn't bounce up and down and outside of the domain randomly
Re: (Score:1)
Re: (Score:2)
It's not like I care about what windows does or does not ...
Re: (Score:2)
So you released version 111 and some people downloaded it and purchased a support contract. Then you add a major new features in version 112 that due to their awesomeness have to break backward compatibility with version 111, and for that reason the aforementioned customer is not going to upgrade right away... but they did find a bug in version 111 that you are obligated to fix.
Myth number one, new features does not need breaking changes. Take a look at the Linux kernel. Probably the most modern kernel of all time, yet its developers take pride in that they don't break compatibility. New features does not have to come with the price of breaking changes.
Re: (Score:2)
new features does not need breaking changes
But sometimes/often they do, and in the situation described by AC this case is assumed. What exactly is your point?
Re: (Score:2)
Re: (Score:1)
its developers take pride in that they don't break compatibility
The fuck you say?
Use Gödel numbering (Score:5, Funny)
Use a second series of primes for minor.
Use a third series of primes for patches/micro/bug fixing.
The three sets of primes should be disjoint.
For each release, multiply major with minor with micro. That is your unique version number.
You may add some sugar by adding powers of these primes for various locales, database compatibility etc. etc.
Re: (Score:2)
I like it.
P.S. My UID is also semiprime.
Re: (Score:1)
50614169 = 113 x 307 x 1459
I'm running Chrome 45 and Firefox 41 (Score:2)
Re: (Score:3)
People don't consider a lot when they do things. There's an old convention of 0.x being "incomplete", such that we have some rather mature products in pre-1.0 stable releases without all of the features and finalized interfaces which constitute a completed product. There's a newer convention of Major.Minor.Revision, based on the old Major.Minor.Revision, by which "revision" means "nothing new, fixed some defect", while "Minor" means "Something new, works exactly as before if you're not using the old thin
Re: (Score:2)
Then you have Ubuntu and Debian, who follow a very clear policy: Each release will receive no updates which change any functionality.
Well that's the ideal, whether reality lives up to it is another matter.
Re: (Score:2)
Re: (Score:2)
Then you have Ubuntu and Debian, who follow a very clear policy: Each release will receive no updates which change any functionality. If it worked on release day, it will work in exactly the same way at EOL. Bugfixes may enable previously-broken functionality; they try not to alter functionality such that previous work-arounds start behaving differently, unless the application is so crippled as to be unuseful. This is okay because the scope of a distribution release implies a major change; Ubuntu has a point release system for LTS to signify minor feature updates.
Actually, Ubuntu just bumped python3 from 3.4.0 to 3.4.3 in Trusty LTS yesterday.
Re: (Score:2)
Re: (Score:2)
RedHat takes a different, more Apple-like approach: Their point-releases are just inline updates, like Ubuntu LTS; but they're *major* updates, removing old features and subsystems, integrating completely new systems, changing behaviors, and generally breaking all kinds of shit. There's no support for the previous point release, at all; if you call RHEL support, they tell you to update or else they have nothing for you. The difference between RHEL 6.10 and RHEL 7 is functionally similar to the difference between RHEL 6.9 and RHEL 6.10, or RHEL 7 and RHEL 7.1.
Here you're actually not completely correct. Red Hat does provide Extended Update Support (EUS) as an option to customers that want to standardize on a minor RHEL release for some time, usually two years.
How about time-based versioning? (Score:1)
Re: (Score:2)
OpenBSD dees time-based versioning. Every six months, the version number increments by 0.1 - there's a new release every May 1st and Nov 1st. The change in major version number means nothing other than it's gone from x.9 to (x+1).0
Simple.
Key rules. (Score:5, Interesting)
1. Stay Consistent!!! Don't drop your versioning and swap to another one. Like Microsoft, Firefox, to a lesser extent Apple.
2. If you are using names make sure you know which one is greater. Ubuntu method of going up alphabetically is a good example.
3. Insure development milestones are consistent with the version bumps. So Version 2 to version 3, should be just as large as from version 3 to 4.
The key importance to versioning is so we know what is the newest/newer version and if you have a major version you will expect some compatiblity changes.
Re: (Score:3)
What happens when it goes beyond Z? Does it go onto [?
0. I'm on EBCDIC, you insensitive clod!
Re: (Score:2)
Debian uses a version number, but they nickname each release with a character from Toy Story. Kind of like how Apple uses 10.x to version OSX, but also nicknames each release with a type of feline.
Re: (Score:1)
I've grown accustomed to a variation on Microsoft's four-point versioning system. It's officially Major.Minor.Build.Revision, but I've found reversing the meaning of the last two sections to be more helpful. Major.Minor.Revision.Build just works better for me.
Major versions are breaking revisions. The file format is incompatible. The database architecture changed. The network protocol is completely different. That sort of thing. You increment this when you have a major architecture overhaul or when you make
Re: (Score:2)
Internally, their version numbers are still consistent, but the fact that their product names include numbers (sometimes related to the date, sometimes related to the internal version number, and sometimes related to the previous release) makes for a confusing mess. Windows 3.5, Windows 95, Windows 98, and Windows ME were all built on top of DOS and were not built on the NT kernel. They were all just windowing systems, and none of them deserved to be called an operating system. Underneath, they ran MS-DO
Re: (Score:2)
Windows releases always have internal version numbers like these [gaijin.at]. 5.1.2600 < 6.0.6000, and 4.10.1998 < 5.00.2195 < 6.1.7601 (using your example releases)
Re: (Score:1)
2. If you are using names make sure you know which one is greater. Ubuntu method of going up alphabetically is a good example.
Names like One, Two, Three, Four, Five, ... sounds good to me ;)
Re: (Score:2)
I use Medoc Grads Crus in increasing order of subjective quality - pretty much as obvious as it gets.
KISS (Score:4, Informative)
Please keep this crap simple. It is maddening for secondary tools (ones I don't use daily) to get all cutesy with the Silky Lizard release, which is also known at the 2015 release, but has an about me of 3.2.0.1 hotfix 430. Searching under all three is necessary since everyone adopts a different preferred method to refer to the dang thing.
On the whole I greatly prefer versions that are year.month based so it is very easy to recognize how long in the tooth something is. XYZ 2015.01 tells me it is the January 2015 release.
Re: (Score:3)
On the whole I greatly prefer versions that are year.month based so it is very easy to recognize how long in the tooth something is
Of course there are situations where that really does not matter and fretting about how old a piece of code is pointless worrying. For example, the code to decrypt a DVD hasn't change in an eternity, but there's no good reason to expect a change to be needed on that front. A library dedicated to that purpose might not change because there's no point, not because it's abandoned.
Re: (Score:2)
The big drawback of year.month over major.minor is that year.month gives no indication of the magnitude of changes. Can I install 2015.09 and be certain all of the features I use daily are still there? What's the difference in file format between 2014.06 and this new version?
Now I realize major.minor is not an ironclad guarantee either, but it gets me closer than year.month.
Re: (Score:2)
Microsoft's version numbering "system" has always been the most confusing to me. They went from actual version numbers (Windows 3, 3.1), to the approximate year they were released (Windows 95, 98, 2000), to weird brand names (XP, Vista), to made up version numbers that aren't actually the real version number reported by the OS * (Windows 7, 8, 8.1), and finally back to an actual version number that matches what the OS says it is (Windows 10).
Bloody hell, man!
* Windows 7 reports as version 6.3 when you use t
Re: (Score:1)
Re: (Score:2)
I think Firefox and Chrome, which are mostly on a quarterly release schedule, should have year-dot-quarter version numbers. But I don't have anything against the Gecko version numbering (which is what current FF version numbers correspond to). But no matter what you do, someone will have borked up browser version checking that will break when you change your version numbering to something that seems more sensible.
As for the Windows version naming, the funny part was how they were ready to call it Windows 9
So the final version is... (Score:2)
Re: (Score:2)
I like year-based versioning (Score:2)
With year-based, I know how old the software is and I know which version is newer. Maybe add something extra to indicate if it's a major change, or if it gets long term support.
if there is limited new functionlaity. (Score:1)
If your new version has limited new visible functionality let users vote on a name of the most current release. Can you name the new feartures of android Marshmellow? If nom, you do know the name!
Versioning and Releases Are Old School (Score:2)
We run with a full continuous integration cycle... with continuous release. Our software version is whatever the Git hash is. This is for a large computational science library that's in use by hundreds of researchers around the globe.
You can read about some of our software development methodology here:
http://openresearchsoftware.me... [metajnl.com]
Although, that's a bit dated now and a newer article has already been accepted by the Journal Of Open Research Software and should be out "real soon now". You can see an ear
Re: (Score:3)
with continuous release.
Ain't no rockstar brogrammer got time for releng, right?
Our software version is whatever the Git hash is.
You're saying this as if that was something to be proud of, rather than a demonstration of laziness...
This is for a large computational science library that's in use by hundreds of researchers around the globe.
Thanks for the warning.
Re: (Score:2)
Quick to criticize and call names I see.
You obviously didn't even bother a cursory glance at the two papers I pointed to. We spend a LOT of time doing release engineering... we just build it all into an automated system so that we can do multiple "releases" per day.
We actually test every code change against a large set of our downstream users codes... automatically. Yes, every change... and yes, against _user's_ applications that are built using our library (even users located on the other side of the wor
Re: (Score:1)
That sounds like the worst versioning scheme I've ever heard of, and requires gobs of research just to determine the order of versions. I assume that it includes the presumption that the tip of the repository is always bug free. Assuming that you have different development branches and a strict testing policy before copying a branch up to mainline, this could be feasible. But in this case, you'd expect that you could have your CI tool also include a strictly monotonically increasing integer to help your use
Re: (Score:2)
Look at my reply to the guy above you for a little more detail.
We _do_ actually test every every code change _before_ it enters a "devel" branch (everything flows through tested pull requests). Part of that testing is actually testing against _downstream_ applications (user's applications). Once it's deemed fit to go into "devel" the PR is merged and a new set of automated testing is kicked off... with more extensive testing against all downstream applications. If that passes then a "release" is automati
Do it with Panache? (Score:3)
Do I need to update to 1.1.x?
Also, it would seem that certain young women on the internet have Panache x.x.x.
Re: (Score:2)
Panache got forked. It's now Flamboyance 3.1.4
Re: (Score:2)
Panache got forked. It's now Flamboyance 3.1.4
I hope the new developers are flexible...
Cute when it's small, annoying later (Score:2)
Just like kids and puppies, it's cute when they are small, then develops into an annoyance you put up with for decades.
It's also painfully annoying when you have a version of something (e.g. 7.0), then another version contained in the driver file (340.xx), and still another version reported in a OS-unique manner (e.g. A.B.C.D on Windows). Yes, I'm looking at you, nVidia.
Similar case for themed server names versus role-based, owner-based, rack-location-based, physical-location-based -- anything that allows a
Shall I come in again? (Score:2)
I count four, no, five version numbering schemes:
- romantic
- rebellious
- traditional (major.minor.bugfix)
- marketing (year.month)
- irrational (a.k.a. Mine's Bigger: Firefox, Chrome)