MySQL’s version numbering is getting harder and harder to understand. In fact, it’s getting surreal.
Let me state up front that there’s probably a lot I don’t know here. But if I don’t know, how on earth can the general public figure it out?
Before we begin, let’s define terms: GA is completely done, ready for use. RC is a release candidate: don’t change anything, just fix bugs because we’re charging towards a release here. Beta is possibly unsafe code, use at your own risk. Alpha is known to have significant bugs, but if you’re curious please play with it.
Now for the releases/versions game. Let’s recap:
- 5.0 has version numbers that leapfrog each other in features and functionality. SHOW PROFILES — now you see it, now you don’t.
- 5.1 has been “… released to general availability [as] a near-final release candidate,” whatever that means.
- 5.1 has just had drastic changes in the RC stage. (Remove Federated in 5.1.24, remove RENAME DATABASE, remove Cluster.) And it’s going to have more changes before it’s released, too: Federated will be added back in 5.1.25.
- 5.2 doesn’t exist. Last year at the MySQL conference, someone made an abrupt decision to skip 5.2 and inflate the version numbers to 6.0, which has big changes in the query optimizer and other areas.
- 6.0 is alpha, but it includes Falcon, which is beta even though Falcon has extremely bad bugs that its developers claim are not bugs.
- 6.1 doesn’t exist as far as I know.
- 6.2 not only exists, but it is GA. Not only that, but it just… appeared as GA, as far as I know. No RC stage, no nothing — at least, nothing on the MySQL website that I see (certainly no manual version). It went from nonexistent to GA instantaneously as far as I know. It was created by extracting the Cluster code from 5.1.
- 6.2 is GA, but 5.1 is RC.
- 6.2 is GA, but 6.1 doesn’t exist as far as I know.
- 6.2 is GA, but 6.0 is alpha. (Hopefully you see the pattern here.)
- 6.2 is GA, but presumably does not include the changes made in 6.0, since it was derived from 5.1’s code.
What is going on here?
How is this an improved release model? What is improved about this?
How in the world can anyone figure out what versions of the software have what features? Who can make an educated decision about what product to use in this situation? Are people supposed to just rely on the sales people to help them figure out what to use? Boy, is that trusting the fox to guard the henhouse.
Why didn’t they just release 5.1 Cluster as GA separately, if that reflected the reality in the code? They certainly missed an opportunity to show some progress on 5.1. As it is, 5.1 got robbed of its chance to have at least some of its code go GA after more than 2.5 years in development. Now 5.1 looks like even more of an embarrassment — hey 5.1 team, how come you can’t get anything out the door when these 6.2 people are releasing GA products? Not to mention 6.0 — you guys look bad now too! (Just kidding.)
I tried to draw a timeline of MySQL’s release history, in some detail in the 5.0 history and in very basic detail in the 5.1 and 6.0 and 6.2 trees. You can take a look at that. It’s worth studying for 5 minutes or so, even though it’s kind of ugly. There are lots of oddities to notice about it. Enjoy:
The inmates are running the asylum. This gets more and more amusing as time goes on.
Technorati Tags:humor, Kaj Arno, mysql, MySQL Cluster
6.2 isn’t related to the 5.0, 5.1 version numbering - it’s the version number of Cluster. So it’s not MySQL version 6.2 - it’s MySQL Cluster version 6.2. 6.2 has actually been the GA version of MySQL Cluster Carrier Grade Edition, which has up until now only been available to paying customers, for a while.
The thing is, Cluster is really a separate beast, and if you have a Cluster deployment, the version number of the main MySQL Server is almost irrelevant. I agree - it’s unfortunate that the version numbers are close enough to be seemingly related, but they’re really not. You could say that it’s MySQL 5.1.23 with Cluster 6.2.15 - but that’s not really even true because there are patches in the MySQL part that aren’t in 5.1.23 yet.
I actually thought that Kaj did a good here: http://blogs.mysql.com/kaj/2008/05/23/mysql-clusters-improved-release-model/ explaining this.
Yes, the versioning is a bit hard to understand because of the over branding with “MySQL”.
Cluster has been pulled from “MySQL Server” releases and now is on its own as a product. When they created the new product they kept moving forward on release numbers (aka it is a fork from the main server and on its own release schedule).
Your image link is broken (http://www.xaprb.com/blog/?attachment_id=502)
Ronald, the image link looks like a WordPress bug. Unfortunately the WP forums only have questions, not answers, so I just changed the link to the file instead of the WP page that holds the file. (No time to hack the source.)
The ‘6.2′ refers to the version of the NDB storage engine used.
If you look the the output of SELECT VERSION() in the mysql client from the MySQL Cluster NDB 6.2.15 packages, you’ll see 5.1.23-ndb-6.2.15. What this means is:
1. The MySQL Server is based on version 5.1.23, and has all features and bugfixes that are in the MySQL 5.1.23 release.
2. The NDB storage engine version is 6.2.15.
There is also a NDB 6.3 series (currently in beta development stage and available only as source), the latest being MySQL Cluster NDB 6.3.14, which has the version string 5.1.24-ndb-6.3.14. There is also an NDB 6.4 series in pre-alpha development - that is, no releases have been made yet. There was also an NDB 6.1 series, but that’s no longer being maintained.
See http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster.html for mroe info, in particular the “MySQL Cluster Versioning” section on that page.
Hope this helps to clear things up a bit.
Jon Stephens
MySQL Documentation Team / Sun Microsystems
Thanks everyone for responding. Now you’ve educated me, but what about the general public? There’s a lot of opportunity for confusion here. Not that it’s my problem to solve, but… the MySQL website could do a better job at this, IMO.
You’ve got a point, but I think you’re being a little harsh. Right now dev.mysql.com has three options listed on the sidebar: 5.0 GA, 5.1 RC and 6.04 Alpha. Under that they list other products with their own independent versioning like connectors, and Cluster.
It’s only really confusing if you start reading blogs and talking to people with their own ideas about how the products should be versioned. For example the 6.04 download page talks about how it is alpha quality, that’s pretty simple for a casual user to understand. But then you have people who work on Falcon who stress that the Falcon bits are really more beta than alpha quality — and then you start to have the confusion you talked about.
I still grant that it’s a bit confusing especially when you look at how NDB Cluster versions relate to MySQL Server versions. But for a newbie coming to mysql.com the site does a pretty good job of directing people to what they want to get.
I understood it just fine — 6.2 and 6.3 are the Carrier Grade / NDB version, 5.1.24 is the 5.1 Beta/RC that may not actually make it to production because if the InnoDB snafu.
This is exactly the sort of thing that Sun LOVES to do, so look forward to more of it in the future.
SunOS 5.10 = Solaris 10, after jumping from 2.6 -> 7 for instance, not to mention all their crazy Sun Java Desktop OS N1 Beans nonsense.
Karl,
Not sure what “snafu” you’re referring to - there will be a MySQL 5.1 GA release in the near future, and InnoDB is expected to be one of the storage engines available in that release. Even if, for some reason, we could not include InnoDB - and I’d like to emphasise that at this point in time there is *no* reason for us not to include InnoDB in any MySQL Server release - this would definitely not stop us from doing a MySQL 5.1 GA.
NDBCLUSTER has been branched off from mainline MySQL in order to allow for a faster and more flexible development cycle for that storage engine, but it will periodically be sync’ed up with mainline MySQL 5.1 - this is why MySQL Cluster releases now have 2-part version strings, so it’s easy for users to see when this has happened.
If there’s anything in our documentation that suggests otherwise, please contact us directly and let us know what this is.
Jon Stephens
Sun Microsystems / MySQL Documentation Team
Hi Simon,
As several of us who work with Cluster have already stated here and elsewhere, the “6.2″ derives from the version number for the NDB storage engine, which has existed in 6.1, 6.2, and 6.3 branches since well before Sun acquired MySQL. This versioning reflects actual, non-trivial feature changes and additions.
But do check out the Cluster changelogs and Roadmap section in the MySQL 5.1 Manual and judge for yourself. I think you’ll agree that there really is a logical and functional basis for these designations, and they’re really not just some marketing gimmick.
After all, we could have called the product “MySQL Cluster 10″, “MySQL Cluster 2008″ or even “MySQL Cluster XP”, right? :)
cheers,
Jon Stephens
Sun Microsystems / MySQL Documentation Team
Jon,
I see the reasoning behind MySQL’s decision, but I think the basic point here is that the naming/numbering scheme is not intuitive to the public. When I see “MySQL Cluster 6.2″, I presume that it has some relation to “MySQL ‘regular’ 6.2″. However, the current situation means that at some point (years from now probably) there will indeed be a “MySQL ‘regular’ 6.2″ with absolutely no relation to “MySQL Cluster 6.2″.
The purpose of product names and version numbers is to convey information in a rational fashion to users, hence why many products have internal codenames to convey the same to internal developers when there is a mismatch between internal practices and external understanding.
Its fine to have distinct products and versions, but by putting the version of this new product close enough to the existing one to cause confusion — but far enough apart to eliminate correlation — is distracting regardless of internal logic.
For instance, if MySQL Cluster 6.2.15 is based on MySQL ‘regular’ 5.1.24, then I would adopt the naming scheme MySQL Cluster 5.1.24-Cluster1 or something like that. But of course its your show.
Also, I would prefer the following name if possible: Sun Java MySQL Cluster Server Forte 10: Community Edition with NetBeans.
–
Simon
Jon, what I had ‘heard’ (rumor, blogosphere, et al) is that since Oracle bought the rights to the InnoDB storage engine, that it would not continue to be featured as MySQL’s transactional engine in favor of Falcon and a GA release featuring InnoDB would not be released.
I think our problem as a community is that it’s difficult to tell the difference between MySQL’s marketing FUD spread in order to get people to buy the licensed version, and what’s actually happening from an engineering and community standpoint.
But for a newbie coming to mysql.com the site does a pretty good job of directing people to what they want to get.
Ryan — except for pages like “learn more” (for instance the “learn more” page for the MySQL Query Browser and other GUI tools) that don’t even include a direct link to download. Instead, you have to “learn more”, decide “hey I like this product! I want to download it!” and then somehow realize you have to click “downloads” and then “GUI Tools”.
Would be much easier if they just had a “download now” link off the “learn more” page.