
1月14日、「オープンソースコミュニティの運営について」というタイトルでJTPA主催の講演会が行われました。
講演者の川口 耕介さんは米国Sun Microsystemsで様々なオープンソースプロジェクトに関わった後、2010年にオープンソースプロジェクトHudsonを業務にするInfraDNAを起業し、同年CloudBeesに買収されたという経歴をお持ちの方です。
※オラクルの方針と合わずSunを離れ、自分でオープンソースの会社を作ったんですけどね、というご説明もありました^^;
今回の講演では、世界中の多くの開発者を参加させるオープンソースプロジェクトを作るためのポイントについて、失敗したプロジェクト(GlassFish/JAXB)と成功しているプロジェクト(Hudson)を対比しながらご説明してくれました。
GlassFish/JAXBはSun時代に立ち上げたオープンソースプロジェクトだそうですが、結果的にオラクルの開発者(合併後なので、つまり内部の社員)しか参加しないという、全くオープンでないプロジェクトになってしまったそうです。
もちろんオラクルの開発者は優秀であるのですが、仕事ありきになってしまうため、イノベーションが発揮されないのが問題だと。
様々なバックグラウンドやアイデアを持った開発者を広く集めたいというオープンソースの本来の目的が達成されなかったとのことです。
そこで、今回成功したHudsonで、工夫したポイントとして、以下を挙げられていました。
①ダウンロード最新版のダウンロードを簡単にすることが大事
良い例(iTunes):マックでアクセスしたらマックのソフトしかでないなど
ダメな例(Glassfish):ダウンロード箇所が複数あって、どこをクリックしたらダウンロードがはじまるかわからない。次の画面に移っても自動的にダウンロードが始まらず、さらにクリックしないといけない。。
②インストールダウンロード後のインストールはできるだけ簡易に。
→ダウンロードした後、説明書をみないと、インストールできない場合、ユーザが諦めてしまう場合も。
③ユーザサポートソフトウェア自身にフロントラインをサポートをさせること
→適切なエラー情報、ユーザが取るべきアクションを明示する
→エラーがでて調べても、2時間たっても解決できないと、こんなのやってられるか、となってしまう
→ユーザから開発者になってほしいので、エラー時にソースコードを見せるのも一案。何が起こっているか見せて興味を持ってもらう
④再利用性ライブラリ群に分解すること。良くデザインされていないとだめで、コードだけでなくドキュメントも重要。
→全体は興味ないけど部品だけに興味があるという開発者をすくい上げる
⑤プラグイン個々の機能をプラグインとして実装する
→共同作業より分業。同じ領域を共同開発するよりも隣接領域を手分けして開発できるようにする
→周りが何をしているか気にしないで没頭できるようにする
→地理的、タイムゾーンもばらばらなのでコミュニケーションに時間がかかる、人間同士も会ったこそなかったりする
..............forと(の間に()はあるべきかどうかだけでもめてかちんときてしまったり
→利点:他人のコードをみなくてよい、奇抜なアイデアを拒否しなくてよいためイノベーションが生まれやすい
⑥たまり場開発者同士が交流できるたまり場が必要
→人が変わってもプロジェクトの継続性が保たれる、新しい開発者を養成できる
⑦言語他の言語でプラグインを書けるようにする
→ユーザがUIから直接翻訳をsubmitできる仕組みがあれば最高
⑧リリースプロセスリリース頻度をあげる
→バグ修正をユーザに早く届ける、プラグイン開発に必要な修正を早く届ける
→初期には特に有用
---------------------------------
オープンソースプロジェクトにおいて重要な基本は、開発者の参加を容易にすることですと強調されていました。
※誰もがコミッタになれるWikipediaなど