コントリビューション

オープンソース・ソフトウェアの醍醐味の一つは、自ら開発に参加できることでしょう。この章では、Ryuの開発に参加する方法について紹介します。

開発体制

Ryuの開発はメーリングリストを中心に進められています。まずはメーリングリストに参加することから始めましょう。

https://lists.sourceforge.net/lists/listinfo/ryu-devel

メーリングリストでのやり取りは、基本的に英語で行われます。使い方などで疑問があったり、不具合と思われるような挙動に遭遇した際には、メールを送ることをためらう必要はありません。オープンソース・ソフトウェアを使うこと自体が、プロジェクトにとって重要なコントリビューションだからです。

開発環境

このセクションでは、Ryuの開発で必要な環境と留意事項について説明します。

Python

RyuはPython 2.7およびPython 3.4をサポートしています。他のPythonバージョンについてはサポート外であるため、動作は保証していません。

コーディングスタイル

RyuのソースコードはPEP8というコーディングスタイルに準拠しています。後述するパッチの送付の際には、その内容がPEP8に準拠していることをあらかじめ確認してください。

http://www.python.org/dev/peps/pep-0008/

尚、ソースコードがPEP8に準拠しているか確認するには、テストのセクションで紹介するスクリプトと共にチェッカーが利用できます。

https://pypi.python.org/pypi/pep8

テスト

Ryuには幾つかの自動化されたテストが存在しますが、最も単純で多用されるものはRyuのみで完結するユニットテストです。後述するパッチの送付の際には、加えた変更によってユニットテストの実行が失敗しないことをあらかじめ確認してください。また、新たに追加したソースコードについては、なるべくユニットテストを記述することが望ましいでしょう。

$ cd ryu/
$ ./run_tests.sh

パッチを送る

機能の追加や、不具合の修正などでリポジトリのソースコードを変更する際には、変更内容をパッチにした上で、メーリングリストに送ります。大きな変更は、あらかじめメーリングリストで議論されていると望ましいでしょう。

注釈

RyuのソースコードのリポジトリはGitHub上に存在しますが、プルリクエストを用いた開発プロセスではないことに注意してください。

送付するパッチの形式はLinuxカーネルの開発で使われるスタイルが想定されています。このセクションでは、同スタイルのパッチをメーリングリストに送るまでの一例を紹介していますが、より詳しくは関連するドキュメントを参照してください。

http://lxr.linux.no/linux/Documentation/SubmittingPatches

それでは手順を紹介します。

1.ソースコードをチェックアウトする

まずはRyuのソースコードをチェックアウトします。GitHub上でソースコードをforkして自分の作業用リポジトリを作っても構いませんが、単純にするためオリジナルをそのまま使った例になっています。

$ git clone https://github.com/osrg/ryu.git$ cd ryu/

2.ソースコードに変更を加える

Ryuのソースコードに必要な変更を加えます。作業に区切りがついたら、変更内容をコミットしましょう。

$ git commit -a

3.パッチを作る

変更内容の差分をパッチにします。パッチには Signed-off-by: 行を付けることを忘れないでください。この署名は、あなたが提出したパッチがオープンソース・ソフトウェアのライセンス上、問題ないことの宣言になります。

$ git format-patch origin -s

4.パッチを送る

完成したパッチの内容が正しいことを確認した後に、メーリングリストに送ります。お使いのメーラで直接送ることもできますがgit-send-email(1)を使うことで対話的に扱うこともできます。

$ git send-email 0001-sample.patch

5.応答を待つ

パッチに対する応答を待ちます。そのまま取り込まれる場合もありますが、指摘事項などがあれば内容を修正して再度送る必要があるでしょう。