Bonsai プロジェクト
by Tara Hernandez <tara@tequilarista.org>
Bonsai とは、開発サイクルの間に起こった変更を「見る」方法として実にスマートなアイデアです。元々の実装は Terry Weissman によるもので、初めは TCL、次いで Perl に移植されました。Perl、MySQL、そしてお好みの Web サーバーを使用して CVS と連動して動作するようにビルドされています。これによりチェックインの履歴、ログ情報、diff、その他諸々の情報を表示し、簡単に HTML を解析することができます。
Bonsai は、特に活発に開発が進み広くインストールされている Bugzilla と比べると、Mozilla ウェブツールの中でもみずぼらしい孤児のような存在でした。しかし、遂に多くの愛情を受けることになったのです。
- ソースを手に入れる:
-
以下のようにして私たちの CVS サーバからチェックアウトすることができます:
cvs checkout mozilla/webtools/bonsai mozilla/webtools/registry私たちの CVS サーバを利用するにあたっては CVS ページ を参照してください。(Tinderbox と Bonsai のソースは CVS 経由でのみ利用可能です。)
- 目下の焦点:
-
もう少しきちんとした身なりになるためには、幾つかの問題を克服しなければなりません。
パフォーマンス - Bonsai は、ある一定の状況下で、とてつもなく遅くなります。mozilla.org のような環境では、多々そうした状況になります。非常に多くのチェックインがあり、多くのコードが管理されているからです。さらに悪いことに、Bonsai が遅くなると、サーバ負荷は天を突くように上昇し、他のもの までもが遅くなるのです。これは Bad Thing(TM) です。既に悲鳴が上がっています。もっと具体的に問題となっているのは:
- showcheckins.cgi - この弱点には二つほどの理由があります。一つ:ユーザの観点からいうと、UI がいくらか異なっていますが、これは cvsquery 機能とほとんど同じです。二つ:batch-N.pl がファイルされると、このファイルはチェックインテーブルを生成し、非常に大きくなります(例えば 700 かそれ以上のチェックインがあった場合)。これが原因となり addcheckin.pl が果てしなく、果てしなく、果てしなく 遅くなります。
- dolog.pl/handleCheckinMail.pl/addcheckin.pl - 結局のところ「CVS ログを解析し、整形したログ情報を perl スクリプトに送り、その perl スクリプトがその情報を解析し、それをもう一つ別の perl スクリプトに渡し、最後にその情報を MySQL データベースに挿入する」ということを やっているだけ なのです。DBI は良くやってくれているんですけどね。
セキュリティ - 整理整頓のための試みが幾つかされましたが、Bugzilla のように微に細を穿つような分析は経ていません。さらに、Bonsai は Bugzilla のようなユーザ・ログインというコンセプトを持っていません。そのため、パラメータ・ページといった、ある特定のページを保護することがかなりの挑戦になります。少なくとも、データベース情報はどこか他の場所においておく必要があるでしょう。
アップデート: editparams.cgi アクセスは bug 45579 で追跡され、現在は修正されています。参考資料 - 全てのウェブツールの README は、「このプロジェクトは整っておらず、資料も多くありません」と始まります。Bonsai も他とあまり変わりません。現在 Bonsai をインストールして管理しようとすると、幾ばくかの苦痛を伴うことになるでしょう。開発者向けの参考資料とユーザ/管理者ガイドの両方を用意する必要があります。
管理 - treeconfig.pl を手動で編集して Bonsai ページを追加/更新するには、鉄の意志が必要です。
- 将来の計画
-
次に何をするかについては、二つの大きな議題に分かれます。その二つとは現在:
より相互運用性の高いソース管理を可能にする
方法の一つとして、Bonsai がコードをミラーするように設定することです。コードのミラーリングは、古いブランチでコードを確実に変更し、持続可能なエンジニアリング努力を表現することで、複数のプロジェクトに跨がる開発をスムーズにし、リグレッションを解消し、変更を下位のブランチに伝播する方法の一つです。これは Bonsai が基本的な報告の他にできる便利なことの一例でしかありません。更に多くの議論が議論が出てきます。この分野での予備的な作業は Tom Jones によってなされ、そのソースは Bonsai ソースツリーの cvs-mirror ディレクトリから入手することができます。
Bonsai を CVS ではなく SCM に対応するようにする
【訳注:SCM:Software Configuration Management】現在、筆頭候補に挙がっているのは Perforce です。これは幾つかの理由から、面白い挑戦になる見込みです。一つは CVS 内で、各ファイルごとに RCS ログファイルで履歴が管理されるものです。Bonsai はこの情報を取り出し、以降の照会のためにこの情報をデータベースに取り込むのです。Perforce では、システムそのものがデータベースですので、データベース周りの処理で現在 Bonsai が行っている操作全てを、何らかの便利な形で抽出する必要があります。
プロジェクト参加者
| Tara Hernandez | tara@tequilarista.org | プロジェクトオーナー、休暇中の怠け者、貢献者 |
| Josh Soref | timeless@bemail.org | メイン QA、小言屋、貢献者 |
| Myk Melez | myk@mozilla.org | 貢献者 |
| Dawn Endico | endico@mozilla.org | 貢献者 |
| Tom Jones | thj@bluemartini.com | 貢献者 |