INFORMATION
テクノロジ

奇跡の巨大IT系ボランティア団体 〜 The Apache Software Foundation

著者:関口宏司

The Apache Software Foundation

The Apache Software Foundation(以下 ASF)は米国に本拠地を置く非営利団体です。この記事を読んでいるほとんどの方は、開発者の立場あるいは利用者の立場という違いはあれど、ソフトウェア業界に何らかの形で関わりを持っていると思いますので、ASFの名前やそこで管理されているOSS(オープンソース・ソフトウェア)の製品をいくつかご存知かと思います。しかし、ASFという団体自体はどうでしょうか。私も含めて「よくわからない」という方がほとんどではないでしょうか。

先週のことになりますが、私はASFにメンバーとして加入することになりました。ASFメンバーとは、株式会社における株主のようなものです。つまり、ASFを運営する経営陣を選ぶ権利(投票権)を持つ一方、ASFが経営陣によって正しく運営されているか、監視する義務も負います。ASFメンバーになったのはつい先週ですが、Lucene/Solrコミッターは2008年5月から努めており、それから考えればASFに関わるようになって今月でちょうど10年になります。これまではSVN(近年ではGitに移行)によるソースコード管理、および主にメーリングリストによるコミュニティ内の円滑なコミュニケーション維持、さらには(PMCとして)新しいコミッターの選出や脆弱性問題などを気にしているだけでよかったのですが、ASFのオーナー(=株主)となって団体運営に関わるとなると、「ん?ASF?よくわかりませーん …ヽ( ´_つ`)ノ ?」というわけにはいかなくなってきます。

そこであらためてASFについて調べることにしました。といっても、ASFのWebページに載っていることをあらためて読んでみた、というだけです。まあせっかくなのでその知識をここで書き残しておこう、ということで書いてみます。もっとも、ほとんどのことは(肌感覚も含めて)わかっていることばかりでした。唯一私が知らなかったのは、ASFメンバーという存在です。一部の人が「自分はASFメンバーである」といっているのを聞いてそういう用語として知っていましたが、それがなんなのか、意識して調べることもなく、その結果これまでよくわかっていませんでした。今回自分もその仲間に加わることになり、ASFメンバーになることに承諾するためにASFメンバーの権利義務規則を読み、あらためてその存在を意識した上で「ASFってどうやって運営されているんだっけ?」と思いながらASFのWebページを読んでみた、ということです。

ところで私はASFを「奇跡の団体」だと思っています。たとえば会社なんかだと「起業した会社の最初の5年間で80%が廃業し、残った会社のうち80%が次の5年間で廃業する。この結果、ビジネス全体の4%しか生き残ることができず、10年以内に96%が廃業する」などというのをよく聞いたりします。ボランティア団体と会社は比較できないとは思いますが、利益を追求しない団体(しかもプログラマーという、世間で最も扱いにくいもののひとつとされる人種の集まり(笑))をこれほどの長期に(来年で20周年!)かつ今なお活発に活動・成長させているのは見事であり、まさに奇跡と呼んでいいのではないでしょうか。

歴史

まずは簡単な歴史から(参考:ASFの歴史)。ASFはその前身で自らを「Apache Group」と名乗るグループによって1999年に設立されました。Apache Groupはそれをさかのぼること4年前の1995年、NCSA(アメリカ合衆国国立スーパーコンピュータ応用研究所)が開発しユーザも多かったHTTPサーバのメンテナンスを有志が引き継いだことが始まりでした。その中心人物だったBrian Behlendorfが最新のNCSA版に当てるパッチファイルを収集し、Apache HTTP サーバの最初のリリースにこぎ着けました。その最初のリリースバージョンが一連のパッチからなるサーバということで「a patch server」とささやかれたことからApache(サーバ)という名前になった、という話を聞いたりしますがどうやら後付けのようです。Apacheという名前の正しい起源は、ネイティブアメリカンのアパッチ族への尊敬の念に由来しているということです。まあ、アパッチ族に由来しているということで私はホッとしています。もし「a patch server」の方だったら、ASFのロゴは現在の赤みがかった鳥の羽ではなく、カーキ色、よくてネイビーのつぎはぎのロゴとなってしまい、ここまで人々を魅了して発展することもなかったでしょうし、結果Apache Luceneやその後のApache Solrも登場することなく、現在私はロンウイットで社長業をしていなかったに違いありません。


The Logo of the Apache Software Foundation
Apache and the Apache feather logo are trademarks of The Apache Software Foundation.


ところで前出のBrian Behlendorfさん、ASFメンバーの一人として今でもメンバーページに掲載されています。ASF管理下の各プロジェクトのコミッターリストと同様、ASFメンバーリストもメンバーに加入した当人がソースコード管理システムに加入の事実を自ら記録し、コミットするのが習わしとなっています。そこでBrian Behlendorfさんがいつ登録されたのか興味津々でsvn logで見てみました。しかし載っていません。さすがにApache Groupの当初から現在行われているような登録手順はとられていなかったのでしょう。ちなみにASFメンバーリストの最初のコミットログは、組織がASFとなる1999年よりも前の1997年10月でした。リビジョンはなんとr64!ちなみにその当時、私はまだDEC社でOSとして*nixではなくてVAX/VMS、ネットワークプロトコルとしてはTCP/IPではなくDECnetをいじっていて、オープンソースなどという概念からほど遠いところにいました。

組織の構成要素

次にASFの組織を見てみましょう。まずはエンティティと呼ばれる、非個人の構成要素です。

理事会(Board of Directors)

理事会はASFの運営と監視に責任を持つ、会社でいうところの経営陣に当たります。ASFメンバーにより年1回選ばれ、慣例的に9人で構成されます。現在のメンバーはこのページに載っています。

プロジェクト管理委員会(PMC;Project Management Committee)

理事会の決議によって設立されたPMCは、同じく理事会の決議によって承認されたコミュニティの管理について責任を持ちます。ここでコミュニティとは、ASF管理下のOSSプロダクトに関わる人々が形成する「共同体」のことであり、やりとりがメーリングリストで行われる仮想的な集会です。1つのOSSプロダクトに1つのコミュニティと考えていいでしょう。ちなみにLucene/Solrはこの組で1コミュニティです。PMCは1人議長(Chair)を選び、その人は自動的にASF幹部(Officer)となります。Lucene/Solrコミュニティでは年1回議長を入れ替えています。慣例的に現議長が交代時に「次のChairには誰々を推薦します」と勝手に宣言して、すぐさま投票に入り、問題がなければその推薦された人が次の1年間議長を務める、ということがここ5年ほど続いています。ちなみに「投票」もメーリングリスト上で行われます。プロダクトの開発や利用に関するやりとりが行われるメーリングリストは、誰でも参加できそのアーカイブも公開されていますが、PMCのメーリングリストは非公開であり、PMCのメンバーしか見ることができません。またPMCはOSSプロダクトを公式にリリースするかどうかをも投票で決定します。その投票もメーリングリストで行いますが、そのメーリングリストはPMC専用のものではなく、開発者用のメーリングリストが使われ、投票の経過は誰でも見ることができます。

幹部(Officers)

理事会によって選ばれたASF幹部は、団体の日常のことがらを監督します。幹部はこのページで見ることができます。

次に個人(individual)の構成要素です。

ユーザ

ASFのOSSプロダクトを使う人です。

開発者(Developer)

ユーザの中でも特にOSSプロダクトを作ったり改善したり、ドキュメントを書いたりする人たちです。Contributorとも呼ばれます。

コミッター(Committer)

開発者の中でもソースコード管理システムのレポジトリに対して書き込み権限が付与された人たちです。apache.orgのメールアドレスがASFから与えられます。コミュニティの運営に責任を持つPMCによりコミット権限が付与されます。

コミッターは前述の開発者の中から有望な人がPMCによって選ばれます。「有望」の定義はコミュニティによっていろいろあろうかと思いますが、共通するのはコードが書けかつ読めて(主にメーリングリストを使った)開発者同士/ユーザ同士のコミュニケーションもうまく取れる人です。プログラムが書けるだけではASFでは認められません。コミュニティによっては、コードが書けなくてもドキュメントをメンテナンスする人、ということでコミット権限を与えられることがあります。

私は2008年5月にLucene/Solrコミッターに就任しました(コミッター一覧)。今でこそコミッターは70人(2018年4月3日現在)にもなりますが、私の就任当時は20人もいなかったのではないかと記憶しています。SVNでさかのぼって調べればわかりますが、面倒くさいので勘弁してください。私のときはErik Hatcherさんに「コミッターにならない?」とメールで誘われました。当時のメールはどこかに行ってしまいました。まだ一度も直に会ったことないです、Erikさん。自分の引退までには一度くらい会ってみたいものです、Erikさん。昨年4月には私はOpenNLPのコミッターにも就任しました。このときはJörn Kottmannさんに「あなたにはOpenNLPのPMCによってコミット権限が付与された」といきなりメールが来ました。Lucene/Solrの場合は前もって候補者本人に推薦しようとするPMCメンバーが声をかけておいてPMC内の投票にかけますが、OpenNLPの場合はPMC内で「こいつコミッターにしようぜ」という話があって本人に確認することなく投票が行われ、投票が通った後に本人に「あなたにはコミット権限が与えられました。おめでとうございます」という通知が来ます。コミュニティによっていろいろあるということですね。

OpenNLPのコミッターは現在23人、このうちここ1年ほどコミッターとしての活動がある人は私も入れて10人以下です。メーリングリストがLucene/Solrにくらべると賑わっていませんが、実はSlackでコミッター同士のやりとりが結構活発に行われています。私は時差の関係で夕方または早朝でないとリアルタイムに会話に参加できませんが、開発する上でのそのコミュニティ特有の「お作法」を尋ねたりするのにリアルタイムな会話手段があるということと、(OpenNLPはGithubを活用しているので)Githubのリンクを参照しながら会話するのにOpenNLPのSlackのコミュニケーションは心地よく感じています。OpenNLPは言語判別の機能を持ちますが、そのせいかどうかは知りませんが、各国語で挨拶するのがはやっています。たとえば「@here Guten Morgen.」てな具合です。時差の関係で私はそのメッセージを夕方に見るのですが。

PMCメンバー

PMCの構成要員です。コミッターと同じくコミット権限を持ちます。通常はコミッターをある期間努めているとPMCになるように既存PMCメンバーからお誘いが来ます。ちなみに私はLucene/SolrもOpenNLPもどちらもPMCメンバーです。

PMC議長

PMCのトップです。形としては理事会から任命されることになっていますが、PMCメンバーの中から選ばれ、あとから理事会が追認するのが実体です。

ASFメンバー

ASFの”株主”あるいは”オーナー”としてASFを「ケア」します。既存のASFメンバーから推薦を受けたコミッターが、やはりASFメンバー専用メーリングリスト内で行われる投票によりASFメンバーに選ばれます。理事会の理事になるのに立候補することもできます。年次総会に参加する資格が与えられます。

数字からASFの大きさや活況度を概観

ASFのサイトなどで公開されているASFの組織やOSSプロダクトにまつわる「数字」をご紹介します。なお、数字は執筆時現在(2018年4月3日)のものです。

トッププロジェクトの数272https://projects.apache.org/projects.html?name
Incubatorプロジェクトの数55https://projects.apache.org/projects.html?name
コミッターの人数6644Timelinesのページ
ASFメンバーの人数845ASFメンバー
その他

Statisticsのページを見ると各種統計値を見ることができます。左上の円グラフを見ると、使われているプログラミング言語の割合が読み取れます。執筆時現在、第1位はJavaで約46%、次いでC++が約11%となっています。割合といってもOSSプロダクトの割合ではなく、プログラムの行数です。このページの中程はIssueの数やメーリングリストのやりとりの数が示されています。いずれも時間経過とともに増えており、ASFがますます成長していく可能性をうかがわせます。このページの一番下は、最新30日間の国別のダウンロードミラーの活発度を示しています。OSSプロダクトをダウンロードするときは、近くのダウンロードミラーサイトが選ばれますので、「ダウンロードミラーの活発度」はそのままダウンロードが多い国を示していると見ていいでしょう。その上でこの世界地図を見てみると、米国が多いのはうなずけますが、それ以上に多いのが中国となっていてなるほどと思わせます。

Timelinesのページを見ると、毎月どれくらいのASFコミッターが誕生し、総計でどのくらいのコミッターがいるのか、グラフで見ることができます。本記事執筆時の2018年3月は、52人のコミッターが誕生し、合計6644人のコミッターがいる、と読み取れます。

コミッターの多い順にプロジェクトを見ることもできます(リンク)。これによると、Apache Hadoopが最もコミッターの人数が多いプロジェクトとなっていることがわかります。もっとも、すべてのプロジェクトが掲載されているわけではなさそうです。なんといっても70人の大所帯であるLucene/Solrプロジェクトが載っていません。

ASFとそのOSSプロダクトの特徴

PMCやASFメンバーなどの一部のメーリングリストを除けば、ほとんどのコミュニケーションは誰でも見られる形で公開され、トラブルがあればメーリングリスト上のコミュニケーションで解決し、決済事項は「投票」によって公式に決議される、それが良くも悪くもASFという組織です。

この運営方法はASF傘下のOSSプロダクトの性格にも強く影響します。弊社は「情報検索の専門企業」を標榜していますので、「SolrとElasticsearchのどちらがいいですか」「両者の機能比較を教えてください」などとよく聞かれます。機能の細部に違いはあれど所詮はApache Luceneというライブラリをどちらも使っているわけです。そんな機能比較なんかより、どういう組織がそのOSSプロダクトを運営しているか、ということの方がよほど大事だと私は考えます。SolrはコミッターとPMCが中心となったコミュニティの中で話し合いが行われ、向かう道筋が決められます。あくまでも公開での決めごとで進む道が決められるわけです。さらに長期的には理事会をリーダーとするASFメンバーが監督をして、よい方向に向かっているか、そうでなければコミュニティを正しい方向に向かうよう指導します。一方、ElasticsearchはOSSとは言っても株式会社が運営しているので、最終的には株主、つまり強力な投資家の方を向いて長期的には進んでいきます。これはよくとれば強いリーダーが進むべき道を決めてそちらの方向にすばやく舵を切れるということです。どんな機能が実装されてどの不具合を先に修正するかなどもそういう原則で決まってきます。Solrはそういう強いリーダーが存在できませんので、進むべき方向は公開のコミュニティで決まります。これは非常に大きな違いで、プロダクトの後方互換性を維持する姿勢などに自然に表れてきます。

おわりに

さて簡単ではありますが、ASFという組織を解説してみました。これまで自分がASFの一員であるなどと意識したことは滅多にありませんが、この記事はASFという魅力的でよくできた組織について考えるよい機会になりました。これだけの組織が20年の長期にわたって存続し、今なお活発に活動して成長し続けていることに私自身あらためて驚いています。記事を書いてはみましたが、なぜうまく機能しているか説明できませんでした。だれかASFをうまいこと説明する研究論文など出していないのでしょうか。それはともかく、私自身はこれからも、力まずたまには力を入れながらOSSにコードを書いていくことになるでしょう。これは誰に言われたからやるというものではありません。好きだからプログラムを書く。そういう人がうまく集まって新陳代謝が機能するように組織できた成功事例がASF、このあたりがオチになるのかもしれませんね。


トレーニングコース

ロンウイットのトレーニングは、Lucene/Solrの経験豊富なコミッターの
監修のもと開発されたハンズオン(実習)形式のコースです。

セミナー

ロンウイットのApache Software Foundationコミッターが、情報検索の基礎、自然言語処理、そして、ユーザにとっての効果についてご説明させていただきます。