ruby 1.8系を使い続ける。

はじめに

趣味でも仕事でも ruby を使っている。趣味では ruby の 1.9 系を使えるが、仕事では使っていない。Rails が動かないからだ。だから、ruby 1.9Rails を動かす、のではなく、ruby 1.8 を使い続けることになる。そのためには、ruby 1.8.6 や ruby 1.8.7 が本当に安定し、互換性を保ち、最新版を安心して使える状態が続く必要がある。

ruby 1.8 系を使い続ける

ruby の 1.8 系を使う場合、deb パッケージのように特定の ruby (Debian GNU/Linux 4.0 (Etch) ならば 1.8.5) を使い続ける方法がある。しかし、Linux ディストリビューションに含まれる ruby は、基本的にセキュリティフィックスのみの対応になる。このため、仕様通りに動作していないといった不具合は修正されない場合がある。だからこそ、Linux ディストリビューションが提供するバイナリパッケージではなく、ruby 1.8 系の安定版リリースをソースからコンパイルして、導入する必要がでてくる。
ruby 1.9.1 がリリースされた現状でも、これからも様々な用途で ruby 1.8 系は使い続けられるだろう。

ruby 1.8 系を使い続ける場合でも、ruby 1.9 系の新機能を取り込んだ ruby 1.8.8 (以下、1.8.8) がリリースされ、ユーザは 1.8.8 に移行するのか、それとも ruby 1.8.6 (以下、1.8.6) や ruby 1.8.7 (以下、1.8.7) を使い続けるのか選択することになる。1.8.6 や 1.8.7 は定期的(3 ヶ月に 1 度?)に不具合のみを修正したバージョンがリリースされる。どちらを選択するにしても、新しいのリリースに合わせ、ユーザはアプリケーションの動作に問題がないかどうかを入念にチェックする必要がある。
このとき、前回のリリースからの変更に関する十分な情報や、多くのユーザから正しく動作したという報告があれば、より早く、新しい版を採用できる可能性があるだろう。
逆にそれらの情報がなければ、ユーザがアップデートを見送るということも考えられる。具体的な例として、Rails の Web サイトに最近まで 1.8.7 は推奨しないと記述してあったため、私は 1.8.7 の採用を見送っていた。(これに関して、rubyRails などのアプリケーションのためのソフトウェアではないので、アプリケーションが ruby に対応すべきだという意見はあると思います。)

必要な情報

1.8 系といっても、1.8.6 や 1.8.7 と、もうしばらくするとリリースされるであろう 1.8.8 では大きく状況が異なる。
1.8.6 や 1.8.7 は、基本的にバグ修正だけが行われる。このため、変更はとても緩やかで、基本的にアプリケーションが動作しなくなるようなことはない。(ActiveSupport のように ruby で定義しているクラスを変更しまくっている場合は例外だと思う。)このため、早い段階でバグ修正に関するコードの変更点の解説や影響範囲、もしかすると問題が発生するケースなどの情報が求められる。これらの情報をユーザに提供することで、リリースを待たずに、安心して新しい版を使ってもらえるようになればいいのではないかと思う。
それに比べて、1.8.8 は 1.9 系の機能をいくつか取り込んだ 1.9 系へ移行するための準備を行う版である。機能追加の結果、アプリケーションが期待通りに動作しなくなる場合があると思われる。リリースされるまではユーザが試すこともないため、リリースされるとすぐに Rails などのユーザの多いアプリケーションが動作しないという報告があふれるだろう。google で検索すると動作しないという情報が見つかり、ユーザはバージョンアップをしないということが起きるかもしれない。まるで 1.8.7 のリリース時のように。このため、1.8.8 には、リリース後にユーザからのフィードバックを収集し、それを反映して、早い時期に修正版をリリースする。ユーザから信頼され、安心して新しい版に移行してもらえるような適切な情報を提供できるようになればいいのではないかと思う。

自分にできること

私は仕事で、1.8 系を使っており、Debian lenny に採用されている 1.8.7 をあと数ヶ月(もしかすると数年)は使い続けることになるだろう。
そこで、まずは現在のリリース版である 1.8.7-p72 からレポジトリに適用された変更点を追い続けることにする。次に 1.8 ブランチへの修正のうち、リリース版にバックポートしたいものをリクエストしていく。パッチも作成したい。
最終的には、安定版のメンテナのサポート役に立候補したい。あくまでサポート役ですよ。安定版をひとりでメンテナンスをしなくてはいけないというルールはないはずだ。手はいくつもあったほうがいいはずだ。ただし、いまの自分の知識や技術ではサポートなんてできやしなので、これから修行する。やりたいと思って、手を動かし続けていたら、いつかはなんとかなるものである。Ruby のコミッタになれたように。
1.8.7-p72 からレポジトリに適用された変更点は、パッチレベル毎に調査し、この日記に書くことにする。あとから閲覧しやすいように「Ruby 1.8.7」というタグをつけ、タイトルは「ruby-1.8.7-p73」のようなフォーマットとする。いつまで続くかわからないけど、やれる範囲で挑戦してみよう。