自分戦略研究所 | 自分戦略研究室 | キャリア実現研究室 | スキル創造研究室 | コミュニティ活動支援室 | エンジニアライフ | ITトレメ | 転職サーチ | 派遣Plus |

特集:OSSにかかわるエンジニアたち

第1回 千里の道も1パッチから――コミッタライフ入門


遠藤侑介(Ruby 1.9系統リリースマネージャ補佐)
2010/9/27


Ruby 1.9系統のリリースマネージャ補佐が「コミッタ」の生態について語る。コミッタになったきっかけ、リリース時にやっていること、コミッタの日常とはどのようなものなのか?

1 2次のページ

 あるプロジェクトのソースコードを修正する(コミットする)権限を持つ人を「コミッタ」といいます。貢献(コントリビュート)にはさまざまな形がありますが、コミッタにはそれ以上の意味はありません。コミッタになるには、

  • ほかのコミッタから認められ、推薦される

  • 自分でプロジェクトを立ち上げる

という2つの道があります。どちらにしても、コミッタになることは結果であり、コミッタになりたくてなった人はそれほどいないように思います。

 今回は「コミッタに興味がある」という人のために、筆者のRubyコミッタとしての経験について紹介します。筆者はRubyプロジェクトを立ち上げたわけではないので、前者の「ほかのコミッタから認められ、推薦される」の方の紹介となります。


Ruby 1.9.0リリース時に「面白そう」と思ってコミット権をもらう

 大学生だった2003年ごろ、わたしはCGIやテキスト処理など日々の雑務をこなすためのスクリプト言語としてRubyを覚えました。Perlと違って相性が良く、自然と身に付きました。

 最初にパッチを送ったのは2005年。大学のSolarisでRubyが動かなかったときです。次は2007年。デバッグ出力用関数pを便利にする提案を行い、(Rubyプロジェクトのリーダーであるmatzさんの説得に半年かかりましたが)採用され、Rubyに思い入れがわくようになりました。

 当時、Rubyは笹田耕一さんのYARV(1.9からの新VM)がマージされた直後でバグだらけだったので、Rubyのソースを読むついでにパッチを書いていました。

 そのうち何人かのコミッタから「コミッタになってみてはどうか」と勧められました。けれど、そのときはコミッタになるメリットを見いだせなかったので、すぐにはコミット権をもらいませんでした。転機は、2007年末ごろです。Ruby 1.9.0リリースで開発陣がてんやわんやになっているのを見て「これは面白そうだ」と思い、2008年初頭にコミット権をもらいました。

Ruby 1.9.2のリリース時にリリースマネージャ補佐となる

 Ruby 1.9.1が2009年1月にリリースされましたが、この時点では1.9はまだ十分に安定しておらず、真の安定版と目される1.9.2リリース(当時2009年末予定)が待望されていました。しかし、Ruby 1.9.2にかかる期待が大きすぎて作業項目が膨れ上がり、1.9.2のリリース活動は2010年初頭まで完全に停滞してしまっていました。

エンジニアライフ
コラムニスト募集中!
あなたも@ITでコラムを書いてみないか

自分のスキル・キャリアの棚卸し、勉強会のレポート、 プロとしてのアドバイス……書くことは無限にある!

コードもコラムも書けるエンジニアになりたい挑戦者からの応募、絶賛受付中

 このままでは1.9がつぶれてしまい、1.9の機能を使ったコードが公開できない。「それはもったいない」と思い、1.9リリースマネージャであるYuguiさんの仕事のうち、自分でできることから進めることにしました。

 まずは、1.9.2で必須とされたrubyspec対応(※1)を行うため、標準添付の各ライブラリ担当のコミッタに多数のメールを投げてライブラリの仕様を聞き、その返事に従ってrubyspecを大幅に更新しました。多くのコミッタが素早く返事をしてくれたので、1カ月程度でrubyspec対応完了を告知できました。

※1:rubyspec:matzさんの作ったRuby実装以外の実装を検証するために作られたRubyの設計仕様書。Ruby 1.8を基に作られたため、本家であるはずのRuby 1.9自体がrubyspecに合格しない状況だった。

 しかしYuguiさんは多忙でリリース活動を再開できない状態だったので、筆者はリリースプランを立案し、Yuguiさんに承認を迫りました。筆者は1.9の危機を感じていました。結果的に、Yuguiさんはリリースプランをほぼそのまま承認してくれて、1.9は半年ぶりにリリース活動が再開しました。

※参考:当時のメール
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/40643
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/40646

 その後、しばらくは順調にリリース管理が進んでいたのですが、5月に入ってYuguiさんが「M17Nについて大幅刷新したい、そのためにリリースを延ばしたい」といい出しました。この提案には多くのコミッタが反対したので、結果的にはリリースの延期にはつながりませんでした。この件をきっかけとして、筆者が「リリースマネージャ補佐」を申し出ました。

※参考:当時のメール
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/41290

 その後も、細かい事件はたくさんありました。担当者のいないライブラリのバグや、Yuguiさんの多忙など。それでもなんとか目標であった8月末の「RubyKaigi 2010」に間に合うようリリースすることができました。

 この貢献が評価されて、RubyKaigi 2010でRuby AssosiationからRuby 1.9.2 Awardという賞をいただきました。

OSSプロジェクトとしてのRubyの特徴

 Ruby開発の場合、現時点では多くのコミッタが業務でなく個人の自由意思で参加しているため、コミッタ自体にはまったく義務がありません。ライブラリの担当者(メンテナといいます)になると、「バグ報告をチェックして担当部分のバグ報告ならば対応する」という義務が一応ありますが、やめたくなったらいつでもやめられます。興味をなくしたコミッタは簡単に去り、その人の担当部分を誰かが肩代わりしないといけなくなります。結果として、常に開発リソース不足に悩んでいます。

 この辺りは、LinuxカーネルやWebKitなどのように、企業が表立って貢献していて、職業として開発に携わっているコミッタが数多くいるOSSとはだいぶ毛色が異なるのではないかと思います。

 前向きにいえば、Rubyは誰にでも貢献できる余地のあるOSSです。

1 2次のページ

自分戦略研究所、フォーラム化のお知らせ

@IT自分戦略研究所は2014年2月、@ITのフォーラムになりました。

現在ご覧いただいている記事は、既掲載記事をアーカイブ化したものです。新着記事は、 新しくなったトップページよりご覧ください。

これからも、@IT自分戦略研究所をよろしくお願いいたします。