2週間前、Eclipse財団は継続的統合システムであるHudson 3.0のリリースを発表した。Hudsonプロジェクトの源流は2年前にさかのぼる。Jenkinsが分岐し、Eclipse財団をホスト組織とする提案がされたときだ。JenkinsもHudsonも現在まで続いており、Hudsonは分岐後に2.2.1をリリースしているが、Eclipse財団のプロジェクトとしてはこの3.0が初めてのリリースだ。
Hudsonの使い方は二通りだ。単純なウェブアーカイブ(中核機能を含んでいる)とバンドルバージョン(多くの便利なプラグインを含んでいる)だ。Maven Central経由で配布されている。また、Eclipse財団のサイトからも入手できる。
リリースまで時間がかかったのは知的財産の問題をきれいにする必要があったからだ。2011年5月、InfoQは次のように報じている。
Eclipse 財団は IP(Intellectual Property / 知的所有権) 上のクリーン性 に重大な注意を払っている。今回のプロジェクト提案作成はその長い道程の出発点に過ぎない。また,既存コードを Eclipse Public Licence に再ライセンスする移行は,Eclipse の企業メンバ (Sonatype や Oracle) によるコード提供には都合のよい反面,外部からコアへのコードの追加にはより綿密な検査が必要になる可能性がある。
InfoQはHudsonプロジェクトを率いるWinston Prakash氏になぜ知的財産をきれいにしておくことが重要なのか話を聞いた。
Prakash: HudsonがEclipse財団のトップレベルの技術プロジェクトになったとき、Eclipse IPポリシーに従う必要がありました。このポリシーは知的財産に関連するリスクを緩和して、企業が自分たちの製品にHudsonを組み込めるようにすることで、この製品をより魅力的にします。エンタープライズクラスの製品にするというHudsonの目的を支援してくれるポリシーなのです。
InfoQ: コンプライアンスを満たすために中核部分にどのくらい変更かが必要でしたか。
Prakash: Eclipse財団の法務チームは製品のコードベースを一行一行(文字通りです。彼らはコードを分析するツールを持っています)確認しています。Hudsonで使われているサードパーティのライブラリは法務の処理を受けています。コンプライアンスを満たすのに1年以上かかりました。
InfoQ: 3.0のリリースはHudsonの新しい始まりですか。Jenkinsとのプラグインの互換性は将来どうなりますか。
Prakash: 互換性を壊さないように最善を尽くしています。機能は強化しているものの既存のAPIは変更していません。Jenkinsのプラグインはサポートし続けるつもりですし、リリース時には検証もします。
また、Hudsonのユーザには新しいプラグインを開発するよう促していきます。
InfoQ: Hudsonが自動的にJDKをインストールする機能を提供しないことがなぜ重要なのでしょうか。
Prakash: ライセンスの問題です。Oracleの法務チームにより、JDKはラインセンス条項を受諾しないとインストールできないのです。HudsonとJenkinsはJDKをスクリーンスクレイピング経由でインストールしていましたが、これは適法ではないと指摘されました。私たちはJDKチームから適切なREST APIを得られるまで、JDKの自動インストールを無効にしています。
InfoQ: Groovyのプラグインが依存関係から除去されました。なぜですか。Groovyはまだ使えますか。
Prakash: Groovyを除去した理由は来歴の問題です。Eclipse財団はGroovyチームから法的な許諾を得られなかったのです。
Groovyはまだ外部のプラグイン経由で利用できます。外部のプラグインを使うことでスクリプティングのサポートが抽象化されたため、Scala、Jython、JRubyなど他のJVM言語も将来サポートされるかもしれません。
InfoQ: Hudson 3.0のプラグインのサイトはどこにありますか。どれくらいありますか。
Prakash: Hudsonでしか使えないプラグインやHudsonと互換性のあるプラグインは次の場所で入手できます。
- すべてのHudson 3.xプラグイン – https://github.com/hudson3-plugins/
- すべてのHudson 2.xプラグイン – https://github.com/hudson-plugins/
InfoQ: Hudson 3.xは将来どうなるのでしょうか。
Prakash: 安定性が最も重要です。次のリリース(3.1.0)に向けて特に性能改善に特化して開発しています。要望を元に新しい機能追加をしていますが、安定性と性能が最優先です。