レポート

「第2回Jenkins勉強会」活動報告

この記事を読むのに必要な時間:およそ 3.5 分

前回に引き続き,第2回Jenkins勉強会が2月25日に開催されました。今回はニフティエンジニアサポート様の協力のもと80名余りの参加者が集い,⁠JavaプロジェクトにおけるJenkinsの運用について」をテーマに8名の方に発表していただきました。

なお,当日のUstreamをはじめ,各発表者の発表資料や参加者の感想ブログは下記サイトにまとめられています。本レポートの補足として参照ください。

画像

プロジェクト名称変更に関する経緯

まず始めに,Jenkins/Hudsonの創始者で現在はCloudBees所属の川口氏から,HudsonからJenkinsへ名称変更した経緯について報告がありました。

Hudsonの歴史

Hudsonは,2004年に川口氏の個人プロジェクトから始まりました。氏が所属していたSun Mycrosystemsの内部でHudsonが使われるに伴い,Hudson開発が正式に川口氏の仕事の一部となりました。Hudsonの運営は川口氏と複数の有志によるコミュニティ主導で行われており,SunがOracleに買収されてからもその運営方法は基本的に変更ありませんでした。

Hudsonの開発はSunの開発インフラ上で進められていましたが,より利便性の高い外部のプロダクトを採用しようという意見がコミュニティの間であがってきました。その第一歩として,まずBTSがjava.netからJIRAに移行され,2010年11月にはメーリングリストをGoogle Groupに移動するという提案があがりました。メーリングリスト移行の話と並行して,java.net側でも新しいインフラへの移行が行われていたのですが,インフラ移行の最中にHudsonプロジェクトがロックされるという事態が起こりました。このことを機会にリポジトリもGitHubに移行しようという提案がなされ,実際にリポジトリの移行が間近だったのですが,Oracle側から「Hudsonの商標はOracleが所有しているため,Oracleの許可無くソースコードを移管することは許されない」という意見が出されました注1

注1
実際にはこの時点ではOracleから商標が出願されただけであり,商標の保有はされていなかった。

Oracleとの交渉決裂・プロジェクトのフォーク

上記の商標問題は,短期的にはGitHubへの移行という問題ですが,中長期的にはプロジェクトの自律性という観点が考慮されました。上述した通り,Hudsonプロジェクトの運営はコミュニティが中心となって行っており,Hudsonに対するOracleの貢献はあまり大きなものではありませんでした。そのため,Oracleが商標の所有を通じてプロジェクトの運営の最終決定を独占するという統治モデルにはコミュニティからも反発が起き,プロジェクトをフォークすべきという声もあがっていました。

ただし,Hudsonコミュニティの主要メンバーは,フォークした際の影響度を考慮して,Oracleと調整していこうという立場を通していました。そこで,2010年12月頃から主要メンバーとOracleの間で交渉が始まりました。

交渉に当たって,コミュニティ側からの意見は下記の点でした。

  • 商標を中立の財団などの第3者機関に委託して,プロジェクト参加者間の平等を保ちたい
  • プロジェクトへの貢献度合いに応じて,発言権があるというOSSのポリシーを尊重して欲しい

対して,Oracleの要求は主に下記の2点でした。

  • プロジェクトの統治モデルを確立させたい
  • コードの変更を確実にレビュー・追跡したい

残念ながら,2ヶ月に及ぶこの交渉は決裂しました。Oracleとしては,商標を第3者に委託するという要求は受け入れられないという点が決定的になったようです。また,コミュニティ側の主要メンバーとOracleとの間で,交渉を通してよりよい人間関係・信頼関係を構築できなかったということも,交渉決裂の一因として取り上げられていました。

交渉が決裂したことにより,コミュニティ内メンバーの投票を経て,HudsonプロジェクトはJenkinsプロジェクトとしてフォークされました。Jenkinsプロジェクトを始めるに当たって,今回の反省点を踏まえて下記の点が考慮されました。

  • 役員会を選出して,プロジェクトの統治モデルを確立させて安定運用を目指す
  • 第3者機関に商標を委託し,ソースコードのライセンス管理を第3者機関で行う

Jenkinsプロジェクトの現況

コア・プラグインともにHudson開発者の大多数はJenkinsへ移行しており,有志が集計したデータの統計的にも裏付けされています。よって,プロジェクトの運営と今後の開発に関して,今まで同様まったく問題なく継続して行えるでしょう。

また,プロジェクト名称の変更と合わせて,Jenkinsの新しいロゴを決めるコンテストがつい先日の3月4日まで行われていました。そう遠くないうちに,新しいロゴをお披露目できるかと思います。

HudsonからJenkinsへのアップグレードは,非常に簡単に行えます。Debianパッケージなどの一部のパッケージでは若干設定ファイルの修正が必要になることもありますが,既に検証されている方もいますのでそう難しくはないでしょう。アップグレードの際には,下記リンクも参考にしてください。

Sun Java EE部隊のJenkins運用例

プロジェクト名称変更に関する経緯報告が行われた後,引き続き川口氏からSunでのGlassFish開発時にJenkinsを活用した事例が紹介されました。

GlassFishは複数チームによって多数のコンポーネントが同時開発で進むというスタイルで,その際に各コンポーネントのインテグレーションを効率よく進めるためにJenkinsを利用していたということです。具体例として,プラグインを活用してテストをパスしたコンポーネントにのみマークをつけたり,Jenkinsでのビルド時に下流コンポーネントも含めてテストを行うことで,インテグレーション後に発覚する障害を減らすことができたと紹介されました。

また,⁠Jenkinsをどのように各チームに浸透させていくか?」という話題も取り上げられていました。川口氏の経験談として,トップダウンで周知させていくやり方では押し付けがちになり,また関連する人が増えて説得に時間が取られるということでした。そこで,実際に現場で手を動かしている学習意欲の高い人を仲間にし,草の根的に展開していくボトムアップな方法を勧めていました。このような考え方は,Jenkinsに限らず各種ツールを新たに導入する際に参考になることでしょう。

著者プロフィール

中村知成(なかむらともなり)

株式会社ヌーラボ所属。日本Jenkinsユーザ会では,イベントの運営面を主に担当。

前職で課題管理・構成管理といった開発環境の整備に面白さを感じ,BacklogというBTSを提供しているヌーラボに転職。一人前のビルド職人になるべく日々奮闘中。最近は,開発環境を強化するツールとしてのGroovyに注目している。

Twitter:@ikikko
ブログ:http://d.hatena.ne.jp/ikikko/

コメント

コメントの記入