協助專案開發

開放原始碼最大的優點在於對開發專案的共同參與,本章將介紹如何參與 Ryu 專案的開發。

參與專案

Mailing list 是 Ryu 專案開發者主要聚集的地方。 因此首先就是要加入 Mailing list 來得到最新的消息。

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

在 Mailing list 中主要使用英文來進行溝通。 當你在使用 Ryu 上遇到了困難,包括不知道如何使用或發現了程式上的錯誤。 任何時候都歡迎在 Mailing list 上提出你的疑問。 千萬不需要對於遇到了麻煩而感到不好意思結果不敢發言。 因為使用 Open source 本身並提出疑問對於專案而言就是一種貢獻。

開發環境

接下來說明 Ryu 專案在開發的環境上需要注意的事情。

Python 版本

目前 Ryu 專案支援 Python 2.6 以上的版本,並請勿使用比 2.7 更早之前的版本。

Python 3.0 以上的版本在目前尚未提供支援。但請小心撰寫程式碼以保持擴充性並隨時注意將來改版的可能。

程式碼撰寫風格( Coding Style )

Ryu 的原始碼是遵守 PEP8 的規範來開發。當你在送交程式碼時,請務必確認程式碼符合 PEP8 的規範。

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

為了讓開發者更好的檢查自己的程式碼是否符合 PEP8 規範,這邊有個檢查器可以幫助開發者,請參考下述連結。

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

測試

Ryu 專案本身提供自動化測試的工具,最容易也是最常使用的是單元測試( Unit test ),該功能也同樣包含在 Ryu 專案內。 在送出程式碼之前,務必確認通過所有的單元測試,確保您的修改不會對現有的程式碼造成影響。 如果是增加的程式碼,請在單元測試及註解的地方詳細說明該功能。

$ cd ryu/
$ ./run_tests.sh

送交更新的程式碼

因為新功能的增加、程式錯誤的修復而需要對原始碼進行修改時,請針對修改的部分製作更新檔並寄送到 Mailing list。, 我們可以先在 Mailing list 中進行討論是否更新的必要。

備註

Ryu 的原始碼目前存放在 GitHub 上進行託管。 但請注意 Pull request 並不是開發程序的必要條件。

在更新檔的格式上,我們期望收到如同更新 Linux Kernel 相同或類似的格式。 下面的例子是用來說明送交程式更新檔時所需要符合的格式。 請參閱相關的文件以達到該要求。

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

接下來說明整個流程。

  1. 原始碼 Check out

首先是從 Ryu 專案下載原始碼。 你可以在 Github 上 fork 一份專案到自己的帳號。 下面的例子說明如何複製一份專案到自己的工作環境中。

$ git clone https://github.com/osrg/ryu.git
$ cd ryu/
  1. 原始碼的修改及增加

對 Ryu 的原始碼進行必要的修改。 接著將變更的內容進行 Commit。

$ git commit -a``
  1. 更新檔的製作

對於變更的地方製作更新檔。 不要忘記加入 Signed-off-by: 在即將送出的更新檔中。 這個署名是用來辨認你對開放原始碼的貢獻,以及滿足相關的授權所使用。

$ git format-patch origin -s
  1. 送出更新檔

已經完成的更新檔,在確認過沒有問題之後,請寄送到 Mailing list。 你可以使用自己熟悉的郵件軟體或寄送方法,或者也可以使用 git 內建的寄送郵件指令。

$ git send-email 0001-sample.patch
  1. 等待回應
等待開發團隊的討論以及對於更新檔的回應。 原則上整個流程已經結束,若是你的更新檔有任何問題,你需要針對提問進行說明,必要時再次修改並送交更新檔。