Perl 5は生き返った! 新たな前進を再開したPerl
「Perl 5コアの開発はここ数年、負の連鎖が続いていた。リリースは滞り、開発者は去り、将来の見通しはどんどん悪くなっていった。ここで話すのは、Perl 5の開発におけるこの悪い流れがどのようにして、楽しく、前向きで、エキサイティングなものに変わったか、というストーリーだ」
Perl 5のコアデベロッパーで、ActiveStateの技術リードでもあるJan Dubois氏は、4月13日に同社のブログにポストしたエントリ「Perl 5 is Alive」で、このように書き出しています。
Perlは、機能が高度化し複雑になったPerl 5までのバージョンを見直し、新たに作り直そうと、2000年にPerl 6の開発が始まりました。しかしPerl 6は10年たったいまでもリリースされておらず(今月に最初のバージョンがリリースされるといわれていましたが…)、一方でPerl 6の開発が始まってからは、旧バージョンになることが分かっていたPerl 5の開発もスローダウンしていきました。
つまりPerl全体の先行きが不透明なものになってしまったのです。
そうした中で昨年11月に、Perl 6は次世代Perlではなく、Perl 5とPerl 6は別々のPerlとしてそれぞれが進化していく、という合意がなされました。Perl 5はPerl 6に置き換えられる存在ではなく、これからは独自に進化していくソフトウェアであるということが明確になりました。
そして4月13日に行われたPerl 5.12.0のリリースとともにPerl 5は勢いを取り戻そうとしています。その裏で何があったのでしょうか?
Perl 5.12.0リリースと同じ日にDubois氏がポストしたエントリを基に、そのストーリーを追っていきましょう。ここからは彼のエントリや参照先などを要約して紹介していきます。
開発者は去り、メジャーリリースは困難に
Perl 5はかつて、約2年周期でメジャーリリースが登場していました。1998年に5.005、2000年に5.6、2002年に5.8。しかしその次の5.10の登場は5年後の2007年でした。
しかしこの頃には外部開発者がコードベースに対して機能拡張などをしにくくなってきたため、外部開発者たちの意欲が減退し、ある者は去り、ある者はPerl 6のプロジェクトへ移りました。そして、Perl 5の内部に詳しい何人かの人たちは、バグフィクスのレビューと、それを古いメンテナンスブランチに対して適応するという作業を行うことになりました。
2000年夏にPerl 6の開発がアナウンスされた後では、Perl 5はメンテナンスモードに入ったとみなされるようになります。当時は、まさかPerl 6のリリースに10年もかかると思う人は一人もいませんでした。
こうして時間が過ぎていくうちに、Perl 5のメジャーリリースはどんどん難しくなっていきます。というのも、Changelogの更新、ローカルに行われた修正を外部モジュールに反映させる作業、CPANからのアップデートモジュールをコアへの統合といった作業がどんどん繰り延べられ、蓄積していったためです。
こうした中で2009年の夏、Best Practical Solutionsのプレジデント Jesse Vincent氏は、何か手を打たなくてはと行動を起こしました。
過去の体制から決別へ
Vincent氏は、Webアプリケーションのchangeloggerをセットアップし、開発者の共同作業を助け、Perl 5.10以降の変更に注釈が付くようにしました。
そしてPerl 5.11.0(デベロップメントリリース)のスナップショットとともに、次のようなメッセージをメーリングリストにポストしました。Perlのリリース方法の見直しです。
Today marks a major change in how we'll be releasing development versions of Perl.
Historically, a single individual, the Perl "pumpking" has been personally responsible for all aspects of the Perl development process - ranging from direction setting, dispute resolution and deep hacking to mentoring, patch application and release engineering.
いままではPerlのリリースは「pumpking」のメンバー個人に依存していたけれど、それをやめようと彼は宣言します。pumpkingは、Perlの開発者ラリー・ウォール氏やその右腕としてこれまでずっとPerlのパッチ適用の判断とその適用、意見のとりまとめなどを行い、リリースを管理してきた人たちです。リリースごとにその中の誰かがリリースマネージャとして割り当てられ、多くの作業をこなしていました。
新しい仕組みでは、こうした個人に多くを依存するのをやめ、もっと純粋にリリース作業だけを行う方式です。
新しく「release manager’s guide」も作り、リリース用スクリプトも自動化します。また、(デベロップメント)リリースは毎月行い、担当者も毎月変わります。pumpkingは意見のとりまとめ、および最終意志決定の権限を持つことになります。
こうしたJesse氏の施策は少しずつ成功していきます。
かぼちゃ大王はやってこない
その後の2カ月で2回のデベロップメントリリースを出した後、Jesse氏は2009年10月31日に「Halloween message」を公開します。そこでは、デベロップメントリリースではなくパブリックリリースとしてPerl 5.12のリリースをすると宣言されていました。
「Halloween message」と呼ばれるメッセージには「The Great Pumpkin」(かぼちゃ大王)というタイトルが付けられています。そこで彼はこんなエピソードを書いています。
「ハロウィンで思い出すのは、スヌーピーの『The Great Pumpkin』(かぼちゃ大王)の話だ。ハロウィンの日、ライナスはかぼちゃ畑でかぼちゃ大王をずっと待ってるんだ。だけどかぼちゃ大王は全然やってこない、それでも彼は我慢強くずっと待ち続けているんだ」
このエピソードの後で、彼はこう切り出します。
I'm tired of being Linus. And I don't want perl porters around the world to spend their Halloweens wondering whether there is a Great Pumpkin or not.
僕はライナスでいるのにはもう疲れた。世界中のPerl開発者にも、ハロウィンの日にかぼちゃ大王がくるかどうか思いを巡らせて過ごしてほしくない。
そうして、パブリックリリースであるPerl 5.12を自分たちでリリースしよう、ということになるのです。
開発者が戻り、再び軌道に
ここからPerl 5には再び協力者が拡大していき、またPerlリポジトリのソースコード構成も変更され、CPANとPerl 5 coreの両方にあるソースコードがメンテナンスしやすいようになります。
長年にわたり無償でPerl 5のコントリビュータとして活躍していたDave Mitchell氏は、現在The Perl Foundationの報酬を受け取る立場としてPerl 5のバグに対して精力的に修正を行っており、そのほかにもコアデベロッパー以外の.pmグループの協力者がバグの仕分けをしたりと、より広い範囲の人たちがPerl5の開発に直接参加できるようにコミュニティ全体が動いています。
そして更新の勢いを維持するために、Perlのリリースは機能ベースから、時間ベースへと変更されました。Perl 5.12の1カ月後にバグフィクス版の5.12.1メンテナンスリリースを予定し、その11カ月後に5.13デベロップメントリリース、そしてその約1年後に5.14パブリックリリースを予定しています。
こうしてPerl 5の開発は再び順調さを取り戻そうとしています。
ブログの書き手であるJan Duboisは、この数年、Perlを取り巻くトピックはMooseやCatalystなど、Perlコアではないところにあったと書いています。
But with all the focused activities directed at releasing Perl 5.12 people have returned to core Perl development again.
Perl 5.12のリリースで再びPerlの開発に人々が戻ってきている。Perlの未来は再び明るくなるだろうと、このエントリを結んでいます。
(この記事はJapan Perl Associationの牧大輔 代表理事に情報を教えてもらいました、ありがとうございます。ただし本文に誤解や間違いがあった場合の責は執筆した新野にあります。)
ハロウィンが近づき、子どもたちはお菓子をもらうために大忙し。みんなおばけに仮装して「お菓子かいたずらか」と近所の家々を訪ねて回ります。そんな中、ライナスだけは「ハロウィンにはかぼちゃ畑にかぼちゃ大王が来て願いをかなえてくれる」という話を信じて…。