本文講的主要是GCC項目,但是這些技巧也適用於其它的項目。
1. 黃金法則:儘早開始。你越早開始研究你的建議,你被接受的可能性就越大。
2. 注重質量:你應該關注較少的項目,如果你關注大量的項目,那麼你提出的建議的質量肯定會下降。 以我來說,我清楚地知道我想要做什麼,所以我只需要爲唯一的建議而工作。 提出一個出衆的建議非常重要。
3. 參與到項目中:
3.1 訂閱郵件列表,並且提問和回答問題;
3.2 如果項目有每週的電話會議或者IRC頻道,那麼你最好也參與到其中(這裏是GCC/Graphite的每週電話會議鏈接)。
3.3 閱讀項目的介紹文檔,熟悉項目的代碼和代碼規範
3.4 參與到該項目的社區中
3.5 添加簡單的功能到該項目中,解決簡單的bug,寫一些早期的代碼
3.6 發送一些補丁並得到反饋,如下兩個原因說明這很重要:
3.6.1 如果你之前沒有參與過該項目,那麼早期的開發工作會幫助你更好的理解一個內部代碼,從而幫助你確定每一階段需要的時間。
3.6.2 通過早期的開發,你看起來在說:”嗨,我可以做,我的補丁就是證明“
3.6.3 你的代碼必須符合該項目的代碼規範,在你提交第一個補丁之前一定要確定你讀過該項目所有的代碼標準。Sebastian POP 已經開發了一個腳本,它可以幫助你檢查你的代碼(如果你是參與的GCC的項目的話)。
4. 討論你的想法:
4.1 你的想法是否與項目相關?你如何計劃完成這項工作?里程碑是什麼?
4.2 尋求關於你的想法的反饋,這對於你的程序來說是十分重要的。該項目的開發人員會幫助你調整完成每個里程碑至少需要的時間,以及你是否能在Google Summer of Code期間完成該項目,有時候一些學生非常樂觀 :)。
4.3 討論一些技術細節,例如如何測試你的程序?如何使用項目的測試框架對你的程序進行測試?你是否需要編寫自己的測試用例?
4.4 確定優先順序,在GSoC後期什麼應該被推遲,什麼是可選的?確定你能完成你的目標。最好是編寫一個小巧的,可靠的,容易理解的,文檔化的代碼,而不是有很多bug,難以理解的代碼。質量十分重要。
討論你的想法是編寫建議之前非常重要的步驟。
5. 編寫建議書:
5.1 明確地描述你的想法:
5.1.1 想法本身
5.1.2 該項目的益處?它爲什麼重要?
5.1.3 技術細節:技術細節表明你清楚地你想做的。
5.1.4 描述你可能遇到的問題以及你打算如何去解決?
5.2 包含具體的工作計劃:什麼時候做什麼?
5.3 個人簡歷章節:
5.3.1 表明你已經參與過一個類似的項目對你的幫助很大。
5.3.2 而且,一個好的簡歷,很好的展示了你對該項目非常熟悉,而且你已經貢獻過一些補丁,你已經準備好來高效地工作了。
6. GCC GSoc 建議示例
這裏有一些關於GCC項目已經被接受的建議:
6.1 我的建議書(GSOC'10):PDF
我大概花了1個月來明確我的想法,並且編寫建議書。我與Sebastian POP(來自AMD)Tobias Grosser (來自德國Passau大學)和 Albert Cohen (來自INRIA),討論了很多細節。
6.2 Lee Feng的建議書(GSOC'09):PDF
6.3 Tobias Grosser的建議書(GSOC'08):Web Page(現在是404)
其它關於Nmap項目的示例:
6.4 Djalal Harouni的示例(GSOC'10):PDF(現在是404)
6.5 Djalal Harouni在GSOC'11提出的建議也被接受了,如果想獲得他的建議書,請聯繫他。
6.6 David Fifield的建議書(GSOC'07):Web Page
7. 常用的鏈接
7.1 http://drupal.org/node/59037
7.2 http://shlang.com/writing/soc2005.html
7.3 http://weblogs.mozillazine.org/gerv/archives/2006/05/how_not_to_apply_for_summer_of.html
7.4 http://summer.cs.pdx.edu/propose
8. 翻譯
如果你想將翻譯這些技巧來幫助你的國家的學生,請將翻譯的頁面和你的主頁發送給我,我將他們添加到這裏。
8.1 阿拉伯語 翻譯:鏈接
8.2 日語 翻譯(多謝 Naohiro Aota):鏈接
8.3 本文的英文鏡像:OpenDZ network
8.4 你也想翻譯?
9. 致謝
我想要感謝Brendan和Sergej的給我的反饋。
10. 反饋
如果你想要參與Google Summer of Code, 告訴我你的故事,我可以將其添加到成功地示例中。如果你有其他的建議請告訴我。
10.1 Web Page: Riyadh BAGHDADI
10.2 Email: riyadh.baghdadi [AT] inria.fr