groongaストレージエンジン開発プロジェクトでは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への登録をお願いします。
開発は以下の流れで行いたいと考えています。
機能追加や仕様変更などについても積極的にアイデアを募集します。まずはチケットを新規作成して内容を記述して下さい。
テストコードの追加と実行については後述しますのでそちらを参照して下さい。
基本的にチケットを担当されている方が設計、実装、テスト、ドキュメントまで一通りお願いしたいと考えています。
他の開発者にレビューを依頼し(特に機能追加の場合)、無事パスしたら最後にドキュメントを追加/変更してチケット完了となります。
ドキュメントの追加/変更方法についても詳しくは後述します。
リリースはロードマップ上のチケットが全て完了となった段階で行います。
リリースにあたっては以下の作業を行っています。
リリース手順 へ移動予定。
現在、以下のような開発環境を想定しています。
glibc 2.5はRed Hat Enterprise Linux 5に相当します。
デバッグ用にビルドすることにより、gdb上でのシンボル解決など開発時に得られる情報が多くなります。そのため、開発時はデバッグ用にMySQLとgroongaストレージエンジンをビルドします。
ノート
片方だけデバッグ用ビルドにすると構造体のサイズなどが異なってしまうため、groongaストレージエンジンがロードできなかったり、実行時にassertに引っかかったりしてうまく動作しません。
MySQL :: MySQL 5.5 Reference Manual :: 2.9.2 Installing MySQL from a Standard Source Distribution にある通り、CMakeのオプションに -DWITH_DEBUG=yes オプションを渡すことでデバッグ用にビルドすることができます。
ダウンロードからビルドまでの流れは以下の通りです。:
% mkdir -p ~/work/
% cd ~/work/
% wget http://ftp.jaist.ac.jp/pub/mysql/Downloads/MySQL-5.5/mysql-5.5.13.tar.gz
% tar xvzf mysql-5.5.13.tar.gz
% cd mysql-5.5.13
% cmake . -DCMAKE_INSTALL_PREFIX=/tmp/local -DWITH_DEBUG=yes
% make
groongaストレージエンジンはconfigureのオプションに --with-debug を渡すことでデバッグ用にビルドすることができます。
リポジトリのcloneからビルドまでの流れは以下の通りです。:
% cd ~/work/
% git clone git@github.com:mroonga/mroonga.git
% cd mroonga
% ./autogen.sh
% ./configure CFLAGS="-ggdb3 -O0" CXXFLAGS="-ggdb3 -O0" --with-debug --prefix=/tmp/local --with-mysql-source=$HOME/work/mysql-5.5.13 --with-mysql-config=$HOME/work/mysql-5.5.13/scripts/mysql_config
% make
無事にビルドができたら以下のようにテストを実行してください。すべてのテストが [pass] になればデバッグ用ビルドは成功しています。:
% test/run-sql-test.sh
今のところソースファイルの数はごくわずかです。なるべくシンプルな状態を維持したいと考えています。
groongaストレージエンジンはまだ開発の立ち上げ段階であるため、SQL実行に関する仕様のドキュメント化は当面行いません。
その代わりとしてSQLテストスクリプトとその想定実行結果を機能一覧/仕様定義として見なしています。
groongaストレージエンジンではプログラムの品質管理のため、2種類の回帰テストを用いています。
ソースコードレポジトリへの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のドキュメントを参照して下さい。
groongaストレージエンジンではドキュメント作成にsphinxを使用しています。
ドキュメントはReStructuredText形式でソースファイルを書き、HTML形式などにビルドしています。
ドキュメントのソースファイルは"doc/ja/source"ディレクトリにある拡張子が.rstのファイルです。
加筆修正を行ったら"make html"等でビルドして構文エラーが起きないことを確認して下さい。
ドキュメントの実際の公開場所は http://mroonga.github.com で、これは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の生成したファイルを修正して置きましょう。