Rubyist Magazine 第 52 号をお届けする。
今号は、久しぶりの目玉企画として、株式会社えにしテックの代表取締役であり、日本 Ruby の会の理事でもある島田浩二さんにお話をうかがった Rubyist Hotlinks 【第 35 回】 島田浩二さん、 RubyKaigi 2015 の運営にも活躍した esa.io の背景を fukayatsu さんが紹介する esa.io の作り方、 さらにイベントレポートとして はじめての海外カンファレンスは、台湾でした。〜RubyConf Taiwan 2015 レポート〜、 RegionalRubyKaigi レポート (55) 松江 Ruby 会議 07、 また、0050 号 読者プレゼントで当選された方からいただいたフィードバックを紹介する プレゼント当選者からのフィードバックとなっている。
RubyKaigi 2015に先立ち、先日、Ruby Conference 2015 が開催された。 これは毎年アメリカで開催されているカンファレンスで、 まつもとさんによるキーノートと質疑応答が目玉の一つとなっているのだが、 その質疑応答にはなぜか「定番の質問」というのがある。 「Ruby にマクロは入らないのか」とか「メインのリポジトリを git(and/or github) にしないのか」といったものだ。
前者は(まつもとさんからは「No」という返答しか期待できないため)ほとんどネタにすぎないのだが、 後者はあまりネタではなく、それなりに切実な思いがあるのだろう。
そこで今回は、git 以前の話として、Ruby のメインリポジトリの変遷を振り返ってみたい。
Ruby が公開された当初、20年近く昔には、バージョン管理システムを使ったソフトウェアの配布というのはほとんど行われていなかった。 そんなんである程度以上の規模のソフトウェアをどうやって開発してたのか? と思われるかもしれないが、私自身もどうやっていたのか不思議に思ったりする(よく覚えていない)。
CRuby も例にもれず、公開当初はレポジトリがなかった。 まつもとさんの手元では RCS 等が使われていたのかもしれない。 (初期のソースにも「$Author$」や「$Date$」が展開されている形跡は残っている)。
とはいえ、一人でメンテナンスしていたころはさておき、(当時流行の)オープンソースソフトウェアとして 外部からも盛んに協力を求めようとすると、何かしらの公開リポジトリが求められるようになった。 そこで、CVS が導入されることになる。
後述するが、CVS リポジトリは後に Subversion に変換されており、SVN レポジトリを掘ればCVS時代の commit が出てくる。 最初期の commit は以下の URL で見られる。
また、現在 github で公開されている git のリポジトリからも見ることができる。
コミットログは以下のようになっている。
1998 年ということは、Ruby のバージョン 1.1 の頃だ(詳しくは0022 号 巻頭言で触れている)。
とはいえ、コミットは随時記録されているが、これがこのまま公開されていたわけではなかった。 CVS についての話題は、随分とあとの 1999 年 3 月の ML に出ている(ruby-dev:6376)。
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/6376
この後、まつもとさん以外の方からの協力もあり、1999 年の 4 月に CVS サーバの準備ができたようで、 CVS のアカウントを募集している(ruby-dev:6667)。
申請すれば誰でもコミット権がもらえる、という牧歌的な時代だった。
とはいえ、その後も(ruby-dev:8592)などで「CVS難しい」とたびたび書いているので、あまり安定した運用だったわけではなかったようだった。
また、この頃はサーバの管理業務についてもまつもとさんが行っていたため(前田さんもある程度フォローしていたはず)、 他の人が見るに見かねて協力する、ということもあった。CVS サーバも例に漏れず、 細かいトラブルなどがあった後、knuさんが管理者に立候補したのが 2000 年の 12 月で(ruby-dev:11876)、 そこから翌年1月には CVSweb、CVSup、Anonymous CVS がそれぞれ整備された旨がアナウンスされた。
この時点では、cvsweb の CGI は knu さんの個人ディレクトリの下に置かれていたが、最終的にはwww.ruby-lang.org の直下に置かれることになる。
ここからしばらく、CVSでの運用が続いた。
CVS からSubversion への移行については、 2005 年の 7 月に前田さんから送られたメールにて提案されている。
特に強い反対はなく、3 日後の 7 月 3 日には、実験的な SVN サーバが立てられ、速度の問題などが指摘されている。
それでも最終的な移行までにはそれなりの時間がかかっている。 これには単なるレポジトリの移行作業以外に、1.9 開発ブランチの本格化や、 YARV のとりこみなどもこのタイミングで行われたせいもあるようだ。
最終的には 1 年半ほどたった 2006 年の年末、2006 年 12 月 20 日に CVS がフリーズされ、 翌日の 12 月 21 日に SVN がスタートする。
そしてその翌日の 12 月 22 日、Subversion への移行が正式にアナウンスされる。
なお、CVSサーバの方は翌2007年の3月16日に停止された。
そして git である。
前述のとおり、実は(というほどでもなくそれなりに有名なはずではあるが)Ruby のほぼ最新のソースは github から git で入手できる。
git を使いたいという話は、たびたびメーリングリストに出ている。少し探してみたところで、 2009 年 1 月と 2009 年 9 月に ruby-talk でスレッドができていた。
そこからしばらく(例によって)試験的な動きがあり、最終的には 2010 年 2 月 28 日に、 github.com/ruby/ruby が公式ミラーとして公開された。
現在の主戦場、というと言葉は悪いかもしれないが(別に意見の深刻な対立があるわけではなく、単に議論の場という意味なので)、とにかく現在の論点が出ている所としては、redmine の Feature #11741 である。
ここでたびたび意見を述べている Eric Wong について触れておくと、多くの方には「unicorn の作者」と説明するのが分かりやすいだろう。 Unicorn は Rails 絡みのプロジェクトにしてはめずらしく github でホストされておらず、 (非公式のミラーとしては https://github.com/defunkt/unicorn があるので、それを使えばよい) 自前で git レポジトリを公開している。 なぜ github を使わないのかは、本人が書いたものが以下の URL (ML アーカイブ) にある。
この手の主張に触れたことのないひとには、とても極端な意見に思われるかもしれないが、 自由なソフトウェアを推進している人たちの間では特にめずらしくない、ある意味ごく普通の意見の一つでしかないとも言える。
reddit にも上記 URL についてのスレッドがあるが( https://www.reddit.com/r/ruby/comments/2cdks1/eric_wong_on_why_unicorn_will_not_be_hosted_on/ )、その最初のコメントにある冒頭のひとこと、 「I love github, but I have nothing against this attitude.」(意訳:私は github が好きだけど、こういうスタンスは一理ある) というくらいの意見であれば、さほど特異な感想ではないだろう。
率直な話として、git にしない積極的な理由はないとしても、現状すでに github で公式にミラーされている git レポジトリがある以上、git をプライマリにするメリットはどれほどあるのかよく分からない。 そして、git にするというよりも github 1ヶ所に集約したい(言い換えると他の場所を全て廃止したい)、という希望は、何かしらの反発を招かざるをえない。 上記の reddit のコメントにもあったように、分散SCMなのに一極集中が必要なのはどうなのか、という素朴な違和感もある。 かといって様々な代替手段も用意するのは単純に手間がかかる。
……といったような状況なので、この問題はどういう落とし所がよいのか、よく分からない。興味のある方はぜひ Feature #11741 にコメントを書いていただきたい。
なお、今号の記事の執筆にも blade ( http://blade.nagaokaut.ac.jp/ ) を多用した。 blade の偉大さはいくら書いても書ききれない。 改めてここに記して感謝いたします。いつもありがとうございます。
(るびま編集長 高橋征義)