Ruby200SpecialEn-193

Author: usa (@unak) Translator: makoto (@makoto_inoue)

Introduction

Congratulations on the Ruby 2.0.0 release.

Ruby 2.0.0, the latest major version upgrade, is finally getting out into the world thanks to dedicated work done by various people (especially mame (Yusuke Endoh), the release manager).

The development focus tends to shift from 2.0.0 branch to trunk, though the majority of the users will be using the stable version. That’s why we need some maintenance resource on version 2.0.0. It’s also important that we maintain Ruby 1.9.3, the current stable Ruby version, as it will take a while for the majority of Ruby applications to move to 2.0.0.

In this post, I am going to forecast the maintenance plan of the upcoming stable version.

Ruby 2.0.0

We know from our long experience (20 years!!) that the stable version right after the release will have some unstable parts, contrary to the name stable. We try our best to avoid unstable parts by releasing preview versions or release candidate versions, though the majority of users start using the version after it is officially released. This leads to us finding unexpected compatibillity issues and holes in new features after the release.

We can fix some simple bugs, but it’s harder to handle holes in new features as we have to make decisions about what the correct behaviours are, are they fixable, would the fixes be compatible, and so on.

That’s why maintaining the new stable versions requires deep understanding of the Ruby interpreter itself, and the background information of how these new features are implemented. In addition, the maintainer has to have a close relationship not only with core developers, but also with the end users who report bugs (sometimes in English, other times in Japanese).

With the reasons mentioned above, we expect that Ruby 2.0.0 maintenance will be a difficult task, especially in the beginning. We thought it would be hard to find an appropriate person, but mame recommended nagachika (Tomoyuki Chikanaga) san who is known for ruby-trunk-changes, and nagachika accepted it.

It will be hard to predict the Ruby 2.0.0 maintenance plan because it is heavily influenced by the release date of the next major version (probably 2.1.0), but nothing concrete has been decided yet.

We don’t even know that 2.0.1 will be released, but if the release happens, then I expect that maintenance will shift from 2.0.0 to 2.0.1.

I expect that we will release patches infrequently for the next year to stabilise 2.0.0, then we will maintain 2.0.0 as we currently maintain 1.9.3 (It may be 2.0.1 by that time).

We don’t know how long 2.0.0 (or 2.0.1) will be maintained, but I expect that it will be for at least one year after the 2.1.0 release. We may even maintain 2.0.0 until 2.2.0 is released.

Ruby 1.9.3

With regards to maintaining 1.9.3, the Ruby Association commissions the maintenance work as part of Ruby support business. At this moment TOUA corporation is commissioned to work on maintenance, and it’s me who is actually doing the maintenance work.

I’d like to thank the Ruby association and its supporting members for the support in this occasion.

I spent most of my 1.9.3 maintenance time handling bug reports from users and back porting requests.

Unlike 2.0.0, there isn’t much instability with regards to features as it’s been a while since 1.9.3 was last released and the majority of feature bugs have been resolved.

There aren’t many interesting things when it comes to maintaining Ruby 1.9.3, because most of the bugs can be handled in similar ways. It’s hard to attract volunteers for these boring tasks, so it makes sense that these maintenance tasks are commissioned as work.

Though I just said that most bugs can be handled in similar ways, you need to pay special attention (especially maintaining compatibilities), as many users use Ruby 1.9.3 as the current stable version.

With this in mind, we are handling 1.9.3 related changes not to effect the existing test suite and RubySpec.

We rely on continuous integration sites such as RubyCI and RubyInstaller CI, so let’s thank the maintainers of these sites.

Let’s talk about the future of Ruby 1.9.3. We are not going to abandon the 1.9.3 as soon as 2.0.0 is released. We will at least maintain for another year, until February 2014.

After that, it depends on the schedule of 2.1.0, but we will move into a security maintenance phase (only apply patches to security related bugs) when 2.1.0 is released, then eventually terminate maintenance a year after.

Ruby 1.8.7

Let’s talk about Ruby 1.8.7 maintenance, too. Ruby 1.8.7 is already in security maintenance mode, and its maintenance will be terminated in June 2013. Thank you very much to Shyouhei (Shouhei Urabe) who has been maintaining Ruby 1.8.7 for a long time.

Ending

We’ve looked at the prospect of maintaining Ruby stable versions. The timing will depend on the 2.1.0 release, but I expect that we will maintain in a similar way to past versions described above.

I’d like to conclude this post by thanking all people who have developed and maintained Ruby, as well as congratulating the release of Ruby 2.0.0 and its 20 year anniversary.

About the author

Usaku Nakamura.

Ruby committer. The maintainer of the windows ports and 1.9.3 branch. The older Ruby gets, the more it reminds me of my age, which depresses me….