mroonga開発プロジェクトではBTSの1つであるRedmineを用いたチケット駆動開発を実施しています。
Redmineは以下のサイトで運用されています。
http://redmine.groonga.org/projects/show/mroonga
開発の作業はチケット単位で行っています。
開発者の方は上記サイトへのアカウント登録をお願いします。
ロードマップは以下のページで確認できます。基本的に開発はロードマップに沿って行います。
http://redmine.groonga.org/projects/mroonga/roadmap
ロードマップはオフラインあるいはオンラインでの開発会議で検討を行った上で決定されます。
ロードマップは各バージョンごとに追加する機能の一覧として構成されています。
githubを使用したgitによるソースコード管理を行っています。
http://github.com/mroonga/mroonga
上記レポジトリに対してread/writeでcloneを作成し、commitおよびpushして下さい。
アカウントを作成していない開発者の方はgithub.comへの登録をお願いします。
開発は以下の流れで行いたいと考えています。
チケットの新規作成と内容の記述
開発会議での検討(ロードマップへの反映)
チケットの割り当て(担当者作業開始)
機能実装あるいはバグの修正作業、必要に応じてレポジトリへのpush
テストコードの追加と実行、レポジトリへのpush
実装/テスト内容に対するレビュー(必要に応じて4へ戻る)
ドキュメントの追加/変更、 レポジトリへのpush
チケットの完了
機能追加や仕様変更などについても積極的にアイデアを募集します。まずはチケットを新規作成して内容を記述して下さい。
テストコードの追加と実行については後述しますのでそちらを参照して下さい。
基本的にチケットを担当されている方が設計、実装、テスト、ドキュメントまで一通りお願いしたいと考えています。
他の開発者にレビューを依頼し(特に機能追加の場合)、無事パスしたら最後にドキュメントを追加/変更してチケット完了となります。
ドキュメントの追加/変更方法についても詳しくは後述します。
リリースはロードマップ上のチケットが全て完了となった段階で行います。
リリースにあたっては以下の作業を行っています。
ソースパッケージ作成
バイナリパッケージ作成
ドキュメント(http://mroonga.org)のアップデート
リリースの告知
リリース手順 へ移動予定。
現在、以下のような開発環境を想定しています。
Cutter 1.1 (C/C++単体テスト用)
Sphinx 1.1 (ドキュメント用)
glibc 2.5はRed Hat Enterprise Linux 5に相当します。
今のところソースファイルの数はごくわずかです。なるべくシンプルな状態を維持したいと考えています。
mroongaのヘッダファイル
mroongaの実装コード
ユーティリティ関数のヘッダファイル
ユーティリティ関数の実装コード
SQLによるテストコード用ディレクトリ
SQLによるテストコード用ディレクトリSQLテストスクリプト(現在実行可能なSQL文の定義も兼ねる)
SQLテスト想定実行結果(SQL動作仕様定義も兼ねる)
C/C++関数単体でのテストコード用ディレクトリ
Sphinx形式の英語ドキュメント一式
Sphinx形式の日本語ドキュメント一式
mroongaはまだ開発の立ち上げ段階であるため、SQL実行に関する仕様のドキュメント化は当面行いません。
その代わりとしてSQLテストスクリプトとその想定実行結果を機能一覧/仕様定義として見なしています。
mroongaではプログラムの品質管理のため、2種類の回帰テストを用いています。
SQL実行により動作確認を行えるような機能追加/バグ修正に関しては必ずSQLテストを追加して下さい。高速化機能などは一見するとSQLによる動作確認ができないように見える場合もありますが、ステータス変数やinformation_schemaプラグインなどを使用することで上手くテストできるものもあります。
Cutterを使用した関数レベルでの回帰テストです。ユーティリティ関数などSQL実行結果による動作の差異を確認できないような実装を追加した場合にはこちらにテストを追加して下さい。
ソースコードレポジトリへのpushを行う前に必ず回帰テストを実行し、デグレードが発生していないことを確認して下さい。
上記の回帰テストは"make check"で双方とも呼び出されます。
SQLテストはMySQLの回帰テストである"mysql-test"に対する"sub test suite"として実装しています。テストケースの追加や想定結果ファイルの改変方法などの詳細情報は以下のMySQLのドキュメントを参照して下さい。
http://dev.mysql.com/doc/mysqltest/2.0/en/index.html
C/C++単体テストの書き方についてはcutterのドキュメントを参照して下さい。
mroongaではドキュメント作成にSphinxを使用しています。
ドキュメントはReStructuredText形式でソースファイルを書き、HTML形式などにビルドしています。
ドキュメントのソースファイルは"doc/ja/source"ディレクトリにある拡張子が.rstのファイルです。
加筆修正を行ったら"make html"等でビルドして構文エラーが起きないことを確認して下さい。
ドキュメントの実際の公開場所は http://mroonga.org で、これはgithubのサイト機能を使用しているため http://github.com/mroonga/mroonga.github.com レポジトリに最新のHTML出力ファイルをpushすることで更新が行われる仕組みとなっていますが、mroonga.github.comレポジトリへのpushは現リリースバージョンとの整合性などを確認した上で別のタイミングでpushします。
従って、各チケットに対するドキュメントのpushはmroongaレポジトリに対するpushのみで構いません。
またsphinxの出力するディレクトリ名がgithubで使用できない問題を回避するため、"doc/ja/source"ディレクトリにてsphinx2github.shスクリプトを用意しています。mroonga.github.comにcommitする場合にはこのスクリプトを実行してsphinxの生成したファイルを修正して置きましょう。