はじめに
Apache Hivemall を知ってますか? Apache Hivemall(以下、Hivemall)はその名が示す通り、Apache Software Foundation(以下、ASF)のもとで開発が進められているオープンソース・ソフトウェア(以下、OSS)です。Hivemall はもともとArm Treasure Data社(以下、トレジャーデータ)が社内で開発していたソフトウェアですが、同社が2016年にASFに寄贈し、ASFの育成プログラムであるApache Incubatorプロジェクトの一部となったものです。
"Apache"ブランドを名乗ることができる、ASFに所属するOSSといえば、Apache HTTP Server やApache Tomcatなどがありますが、これらはほとんどの方がご存じでしょう。それ以外にも私がコミッター/PMCメンバーを務めるApache Lucene/Solr(OSSの検索エンジン)やApache OpenNLP(OSSの自然言語処理ツール)があります。
これらはASFにおけるトップレベル・プロジェクト(よくTLPと省略されます)です。ASFに寄贈されたOSSはいきなりTLPになることはできず、必ず育成プログラムであるApache Incubatorにまずは所属します。ここで「Apacheの流儀」がたたき込まれ、ASFに卒業が認められると晴れて TLPとなることができます。Apache Incubatorに所属するOSSプロジェクトには「メンター(師)」や「チャンピオン」と呼ばれる「先生」がつけられて"Apache 流"のOSSプロジェクト管理・運営方法を学ぶ機会が与えられます。
先日、私は縁あって、Hivemallのメンターに就任しました。前回の記事ではASFの全体的な組織運営について説明しましたが、本稿ではApache Incubatorのしくみについて紹介したいと思います。
Apache Incubatorとは
Apache Incubator(以下、Incubator)は、ASF外で開発されたソースコードおよびその開発プロジェクトチームがASFに加入しようとする時に(ソースコードの場合は加入というよりは「寄贈(donation)」という方がしっくりきますが)、必ず通過する場所としてASFが設けたものです。2002年、ASFの歴史のかなり初期のころから開始された「育成プログラム」となります。ASFにおけるOSSコミュニティの運営を自動車の運転に例えれば、Incubatorは「教習所」のようなところでしょうか。
Incubatorは2つの大きな目標を掲げています。1つ目は、寄贈されたコードやドキュメントが、ASFの定める規約に沿っていることの確認です。2つ目は、"Apache流"のプロジェクト運営手続きを遵守する、新しいコミュニティを構築することです。2番目の"Apache流"のプロジェクト運営手続きについては、前回の記事を参照していただければわかるので、ここでは簡単に1つ目の目標について説明しましょう。
寄贈されたコードやドキュメントはもともとASFの外で開発されたものです。あるソフトウェアは非営利のコミュニティが開発したものかもしれませんし、またあるソフトウェアは会社のバックアップがあって作成されたものかもしれません。これらのソースコードやドキュメント類は知的財産となるので、ASFに寄贈されることを開発者個人やその雇用主が同意していないと、あとあと紛争の原因になってしまいます。そこで、開発者個人やその雇用主はASFが用意するライセンス契約書にサインする必要があります。この契約書にサインしてASFにてファイルされるまでは、ASFのソースコード管理システムのコミット権が与えられません。
Incubatorと似た言葉でpodling(ポッドリング)と呼ばれるものがあります。これは「(エンドウなどの)さや」や「繭(まゆ)」を意味する pod と、fledgling(青二才やひな鳥などの意味)、nestling(同じくひなの意味)、duckling(子ガモ)などの単語に現れる「幼い」ことを意味する接尾辞 ling を組み合わせて作られた造語であり、Incubatorに所属する個々のプロジェクトやコミュニティを指します。例えば、HivemallはIncubatorに所属するポッドリングの1つです。
上図はIncubatorのロゴですが、Apacheのフェザー(feather;羽)が卵形のコンテナ(pod)にくるまれて、これから成長を予感させる雰囲気がよく出ていると思います(podの中の羽が通常のASFロゴの羽より柔らかそうなひな鳥の羽になっているところまで気がつけば、あなたはもうASF 上級者です!)。
Apache Incubatorへの入門方法
Apacheの外部で開発されたソフトウェア(GitHubなどで開発されているOSSを含む)がどのような手順でIncubatorに入るのか、見てみましょう。
-
チャンピオンを見つける
Incubator入りしようとしているプロジェクトで、ポッドリングになる前のものは「ポッドリング候補」と呼ばれます。ポッドリング候補の最初の一歩は、チャンピオンを見つけることです。プロジェクトがまだポッドリング候補の段階からIncubator入りを果たしてポッドリングになって活動し(数か月のこともあれば数年のこともあります)、最後に晴れて卒業してTLPになるか、はたまた卒業叶わずリタイアするまで、あらゆる局面でプロジェクトへの助言を行ってくれるのが、頼りになるチャンピオンです。チャンピオンはASFの幹部またはメンバーから選ぶことになります(ASF幹部やASFメンバーについては前回記事を参照してください)。
-
提案書の提出
提案書を書いてIncubatorのWikiに投稿します。自由に書いて良いことになっていますが、テンプレート/サンプルがこちらのページにあります。 準備ができたらIncubatorの general メーリングリストに[PROPOSAL]で始まるタイトルでプロジェクトの提案を行います。
-
メンターを見つける
上記提案の前にチャンピオンの助けも借りながらメンターを見つけます。また、上記提案のメール投稿内で、プロジェクトに興味を持った人をメンターに誘うことも行います。
-
投票を呼びかける
[PROPOSAL]として投稿したメールスレッドで十分皆の興味を引けて良い反応が得られそうな感触ならば、同じメーリングリストで投票を呼びかけます。通常、[VOTE] で始まるメールタイトルで、先の議論を行ったメールとは異なる新しいスレッドで投票を呼びかけます。
-
晴れてIncubator入りへ
後述するIncubator プロジェクト管理委員会(IPMC)メンバーから十分な賛成票が得られて、晴れてIncubator入りとなります。初期コミッターの人たちは、チャンピオンやメンターの助言を得ながら、ASFの定める契約書にサインして提出します。間もなくASFのソースコード管理システムのコミット権限が与えられますので、初期のソースコードを登録し、<プロジェクト名>.incubator.apache.org のアドレスにプロジェクトのホームページを準備します。
Apache Incubator の構成要素
規程(主にASFの定めるもろもろの手続きやソフトウェア・ライセンスなど)の遵守とコミュニティの育成を重視するASFは、次のような組織体制でポッドリングプロジェクトをバックアップします。 まずはエンティティ(非個人の構成要素)から。
理事会(Board of Directors)
一応Incubatorを支える構成要素としては登場してくるものの、実際の活動は次に紹介するIPMCに権限を委譲しています。なのでここでは詳しく述べません。理事会自体がどういったものなのかは、前回記事をご覧ください。
Incubator プロジェクト管理委員会 (IPMC)
理事会に代わりポッドリングの受け入れ承認や監督を行います。つまり、ポッドリング候補段階の提案プロジェクトについてIncubator入りを認めるかどうかの投票を行い、全ポッドリングプロジェクトの全体的な監督を行う責任を持ちます。さらにはポッドリングの活動が十分認められて、TLPへと「卒業」するかどうかも実質的には IPMCが投票を行うことで承認しています。「実質的」と言ったのは、表面上は後述する「スポンサー」に「卒業させたら?」と進言するまでが IPMCの役割となっていますが、メーリングリストでの動きを見ると、IPMCでの投票がすべてを決しているように見えます。
やる気にあふれ、日頃からOSS活動を行い、「Apache流」がどんなものかをよく理解していると自他共に認める任意の個人がIPMCに入るために自薦/他薦が可能ですが、実際に加入できるかどうかはこれもやはり投票で決定されます。
また、ASFメンバーはIPMCに加入することが推奨されています。私の場合、ASFメンバーになった時点で、「IPMCに入らないといけないかなあ」と思っていたところ、Hivemallのメンターになることになりましたので、それに先だってIPMCに加入した、という流れです。ASFメンバーは IPMCに加入することが推奨されていますので、この場合は無投票で加入できます。
ポッドリング候補(Candidate)
Incubatorに入ってポッドリングを目指すために提案されたプロジェクトは「ポッドリング候補(Candidate)」と呼ばれます。プロジェクトは提案時にはチャンピオンを決めておかなければなりません。また、スポンサー(後述します)が既存のApacheプロジェクトの場合、その提携関係も宣言します。スポンサーまでの関係はなくても、既存のApacheプロジェクトと何らかの関係があればそれについても述べ、その他の前提条件があればそれらについても提案書に記載します。
スポンサー(Sponsor)
「スポンサー」はその名の通り、ポッドリング候補の引受人であり、当該プロジェクトが ASF 入りするのがふさわしいと考える後援者です。スポンサーは、ASFのTLPか、IPMCか、理事会でなければなりません。いずれの場合もスポンサーは当該プロジェクトがASF入りがふさわしいと考えているASFのエンティティでなければなりません。最後の理事会をスポンサーにするのはいろいろな面で難易度が高いので、実際にはASFのTLPかIPMCとなるでしょう。
スポンサーはポッドリング候補がポッドリングとなれるよう、最初に承認を行い、メンターの推薦を行います。
ポッドリングプロジェクト管理委員会 (PPMC)
PPMCは当該ポッドリングのプロジェクト管理委員会であり、TLPのPMCのようにプロジェクト/コミュニティ統治の方法を学習する手助けを行います。TLPのPMCがその活動状況を理事会に報告しているのとは異なり、PPMCはレポート先がIPMCとなります。これは前述の通り、理事会は Incubatorに関するもろもろのことはIPMCに権限を委譲しているためです。PPMCのメンバーは当該ポッドリングのメンターと初期コミッターから構成されます。
次に個人(individual)の構成要素です。
チャンピオン(Champion)
ASFの幹部かメンバーがチャンピオンとなり、プロジェクトがIncubator入りする前からさまざまな支援や助言を行います。スポンサーの個人版、といったところでしょうか。
メンター(Mentor)
スポンサーによって選ばれたメンターは、ポッドリングを能動的にモニタリングし、「Apache流」へとポッドリングを導きます。そしてその活動状況をスポンサーとIPMCへ報告します。メンターはIPMCに所属している必要があります。メンターはスポンサーや特にIPMCとポッドリングコミュニティの橋渡しを行う役割を担います。
例えば、IPMCでの決定や問題になっている事項をポッドリングコミュニティに伝えたり、ポッドリングプロジェクトの状況をIPMCに報告したりします。また、ソフトウェア・ライセンスにまつわる問題の相談や、ASFのインフラ整備(メーリングリストや ASF のアカウント登録)でわからないことがあった時などに相談窓口になったりなど、チャンピオンよりも身近な存在として振る舞います。
コミッター(Committers)
文字通りポッドリングのコミッターです。ポッドリングが候補として名乗りを上げる時点で初期コミッターを宣言します。場合によってはメンターがコミッターを兼務することもあります。コミッターはポッドリングプロジェクトのコードやドキュメントを開発する中心となりますが、メンターの助言を得ながらコミュニティを活発にするという視点で、新しいコミッターをリクルートするといった活動も推奨されています。
TLPではコミッターのリクルートは PMC が行いますが、ポッドリングでは初期コミッターがPPMCとなっているので「コミッターが新コミッターをリクルートする」と書かれているものと考えられます。