As a person who hangs out in #rubyonrails on Freenode a little too much of his spare time, I eventually come across repeated questions. This is why I made the channel bot which runs on Summer.
One of the hardest frequently asked question is “When is Rails 3 due?”, the next being “When is Rails 2.3.6 due?”
To be honest I don’t know, and I’m pretty sure not even Rails Core knows precisely when it’s due. Sure, they’ll have some kind of idea of when they’d like it to be released but it’s a very similar idea to mine of wanting to be rich (i.e. right now). Ideas and realities are two entirely separate worlds.
On the 1st of April, Rails 3.0.0beta2 was announced by DHH. This announcement came very nearly two whole months after first Rails 3 beta announcement.
So why so long between releases? Well, lets go time traveling.
We travel back, back through time and its murk. We land spot bang in the middle of March 28, 2006. It’s on this day that a slightly-younger version of DHH announces Rails 1.1. Oh look it has RJS. How young and foolish we all were. By we, I mean you guys of course, this was at least 3 months before I even begun getting into Rails. So Rails 1.1 was born into the world on March 28th, 2006. Right then. What about the next significant version?
The next version would be Rails 1.2, let’s jump forward to the first Rails 1.2 Release Candidate on November 23rd, 2006. This is a distance of ~20,735,982 seconds (or in more sensible terms: 7 months and 27 days) between a major release (1.1) and a the next major release’s (1.2) release candidate. Ok, so when was the next release candidate?
That would be the second Rails 1.2 release candidate. Somewhere between these two releases I joined the Rails fray. The distance between releases? ~3,715,200 (or in more sensible terms: 1 month and 13 days). They really didn’t waste much time getting this out the door, and with so many changes too! Next!
So with the release candidates out of the way DHH announces Rails 1.2. This was a mere 17 days (~1,468,800 seconds in the “old money”) between release candidate and major release. 17 days (not a pattern) later, Rails 1.2.2 is announced. On Pi day in 2007, 36 days after Rails 1.2.2 is released, Rails 1.2.3 is released. Then nothing happens for a while.
During the 30th September, 2007 A Rails 2.0.0 Preview Release is announced. Surely the 2.0 release has to be close, right?
Between the 2.0 release postings, on the 5th of October, 2007, 6 months and 19 days after Rails 1.2.3 is released, Rails 1.2.4 comes out. Then a mere week later, Rails 1.2.5 is announced and released. Rails 2 work continued through these releases, as indicated by a Rails 2 release candidate announcement in the midst of November 2007. Rails 1.2.6 was announced 1 month and 12 days after Rails 1.2.5 was. This was to be the final version 1 release before Rails 2.
On December 7th, 2007, Rails 2.0 was released much to the joy of the Rails world. 10 days later Rails 2.0.2 comes out with “some new defaults and a few fixes”. Then nothing happens for a while, again.
Then Rails 2.1 came out, on the 1st of June, 2008, 5 months and 23 days later.
Some more patch releases were made after the Rails 2.1 release. The 3rd of September is when Rails 2.0.4, the first patch release is announced, 3 months and 2 days later. On the 19th October, 2008, another patch release Rails 2.0.5 is released. This is 1 month and 16 days since the previous patch release.
Rails 2.1.1 was released 3 months and 4 days after the Rails 2.1.0 announcement with “lots of bug fixes”. It seems they didn’t quite fix all the bugs as Rails 2.1.2 was released 1 month and 18 days later. The next minor release wasn’t far off, only 28 days, and that one was Rails 2.2.
It is important to note that it is around this point in time that the Merb + Rails merger is announced on the 23rd December, 2008. This merge would grow into what we will soon know as Rails 3.
The next minor release after that was the Rails 2.3 announcement, 3 months and 24 days later on the 16th March, 2009, the first release of 2009. The next announced release occurred on the 20th July, 2009: Rails 2.3.3. Some security fixes are announced, making Rails 2.3.4 a reality 1 month and 15 days after the Rails 2.3.3 announcement.
Then we get to the most recent stable version of Rails: Rails 2.3.5. This was released a total of 2 months and 26 days after Rails 2.3.4.
Now most recently, the Rails 3 betas. The first was announced on the 5th Feburary 2010, 2 months and 5 days after Rails 2.3.5 was released, which doesn’t mean much. What’s a more relevant statistic would be that it was released 1 year, 1 month and 14 days after the Rails + Merb merge was announced. The beta was a very large and sweeping change of just about everything in Rails, afterall, this is a major release. There is going to be some major differences.
Rails 3 beta 2, announced on April fools day, 1 month and 25 days after the first beta release. DHH says that this release is “hopefully our last stop before a release candidate” but again: nobody knows.
13 days after this, Rails 3 beta 3 is released and DHH says “we’re getting close to home now!”.
Once you know the release candidate goes out you’ll know there’ll be a huge hubbub of how momentous the ocassion is. I say everyone deserves a “huge round of applause” or whatever the internet equivalent is. The amount of work put in Rails 3 over the last year and a bit is tremendous. Then people can finally start (or continue, in some cases) migrating their plugins and gems over to Rails. Personally, I look forward to the day where I can begin a new Rails application using compatible versions of Cucumber and RSpec and the latest and greatest Rails 3 code.
This post is not intended to give a solid or even a vague guess at what the Rails 3 release date is going to be. If you want my personal opinion it’s going to be another 2 to 4 weeks (from April 5th, so April 15th-May 5th) before a release candidate. Pure, utter, guesswork based on observation. The regression tickets themselves do not seem overly complex and if they are the only thing in the way of a release candidate then I cannot see there being any major delay.
May 9th update: So I was wrong about the release candidate. It happens. Things get delayed. My new guess is that they’ll release+announce the release candidate at or near the beginning RailsConf. For now, I suggest that we all start developing our applications on it now, so that we can get something strong for the community.