Google Summer of Code 2011
此文件先前位於 wiki 上
什麼是 Google Summer of Code?
自 2005 年以來,Google 管理了 Google Summer of Code Program,以鼓勵學生參與開放原始碼開發。該計畫有幾個目標
- 啟發年輕開發人員開始參與開放原始碼開發
- 為電腦科學和相關領域的學生提供在夏季從事與其學術追求相關工作的機會
- 讓學生更多接觸真實世界的軟體開發情境(例如,分散式開發、軟體授權問題、郵寄清單禮儀等)
- 為所有人創建和發布更多開放原始碼
- 協助開放原始碼專案識別並引入新的開發人員和提交者
Google 將支付成功的學生貢獻者 5000 美元的津貼,使其能夠專注於為期三個月的程式碼專案。申請截止日期為2011 年 4 月 8 日。
當參與 Selenium - Google Summer of Code 計畫時,學生將學習到測試和建構自動化測試工具既有趣,又是交付高品質軟體不可或缺的一部分。與 Selenium 貢獻者的協作努力可以為您提供一套新的工具集,以開發和記錄數千人使用的一組組件。您將獲得寶貴的專業經驗,有助於您的職業發展,並最終幫助在各處推動更高品質的 Web 應用程式。
如有問題,請 電子郵件 GSoC 協調員 Adam Goucher
學生資格
- 截至 2010 年 4 月 26 日滿 18 歲或以上
- 目前就讀於認可的機構,例如學院、大學、碩士課程、博士課程和大學部課程
- 居住地和國籍非伊朗、敘利亞、古巴、蘇丹、北韓和緬甸(緬甸)等美國法律禁止與其進行商業活動的國家/地區
- 在以下部分或多個方面具備紮實技能:Web 應用程式開發、JavaScript、Python、Flash、iPhone / Android
- 自我導向、足智多謀、負責、善於溝通
- 能夠在 2010 年 5 月 24 日至 8 月 20 日期間全職工作(居住在舊金山灣區的學生可能有機會不時與我們的一些導師進行現場工作)
- 有關學生資格的更多資訊,請參閱此處
如果您符合上述要求,我們很樂意讓您申請今年 Selenium 的 Google Summer of Code。
後續步驟與截止日期
- 閱讀期望,以了解對您的期望。
- 閱讀申請,以了解您的申請中應包含哪些內容。
- 查看專案構想。如果您對任何構想感興趣,請隨時聯絡提案者以了解詳細資訊。您也可以與提及的人員討論您自己的專案構想,或在我們的開發人員郵寄清單或 freenode 上的 IRC #selenium 上討論。
- 在 2011 年 4 月 8 日之前,直接向 Google 提交您的申請。您可以在初次提交後,根據導師的回饋修改您的申請,您申請的最終版本將於 2011 年 4 月 23 日到期。
- Selenium GSoC 團隊將在 2011 年 4 月 23 日之前完成申請審查並將學生與導師配對。
- Google 將於 2011 年 4 月 26 日宣布錄取的學生。
如有問題,請 電子郵件 GSoC 協調員 Adam Goucher
專案構想
這些是導師提出的專案構想。如果您對此感興趣,請發布訊息至開發人員郵寄清單,或電子郵件 GSoC 協調員 Adam Goucher。
可編寫腳本的 Proxy
導師 Patrick Lightbody(?)
難度
<未知>
描述 Selenium 是一個瀏覽器控制框架,但有時您想要對/使用產生的流量執行操作。「正確」的方法是在中間放置一個 Proxy,並使用其 API 來獲取/處理流量資訊。此專案擴展了 BrowserMob Proxy,以新增 Selenium 使用者所需的 API。
標籤 Se-RC, Se2
基於圖像的定位器
導師
<未知>
難度
<未知>
描述 Sikuli 因其根據圖像與頁面上的項目互動的能力而廣受歡迎。此專案將基於圖像的定位器新增至可用定位器列表中。
標籤 Se-RC, Se2, Se-IDE
Selenese Runner
導師 Adam Goucher
難度
<未知>
描述 可以使用伺服器上的 -htmlSuite 選項在 Se-IDE 之外執行 Selenese 腳本。這樣做有很多缺點,例如需要不斷啟動/停止伺服器。此專案將為 Selenese 腳本建立一個獨立的「執行器」,以與伺服器互動 - 並從伺服器中移除相關程式碼。
標籤 Se-RC, Se, Se-IDE
潛在導師
如果您有興趣,現在申請成為導師還不算太晚,請在此處新增您的專案構想,並與Adam Goucher討論後勤事宜
期望
摘要
此頁面詳細介紹了 Google Summer of Code 學生在溝通方面的期望。這對於尚未編纂其期望的 Selenium 專案很有用 - 他們可以指向此文件並按原樣使用它。
Google Summer of Code 編碼期非常短。最重要的是,許多學生以前沒有做過很多真實世界的開發/工程工作;該計畫的主要目的之一是向學生介紹 F/OSS 和真實世界的開發情境。最重要的是,大多數導師和學生都位於不同的地點 - 因此面對面的時間很困難。因此,對於 GSoC 專案的成功而言,至關重要的是在學生於 5 月 26 日開始編碼之前指定所有期望。這應該是學生和導師之間長期頻繁溝通系列的第一步。
本文檔將逐步介紹學生和導師的各種期望,以及解決有效溝通的各種方法。
每週工作 40 小時
學生預計每週至少在 GSoC 專案上工作 40 小時。這基本上是一份全職工作。
GSoC 專案的好處是巨大的
- 長期成為專案社群一部分的機會 - 這可能會導致參與其他專案、社交網路、好朋友、寶貴資源等...
- 與真正的開發人員一起處理真實專案的機會
- 學生專案的最終成果可用於履歷表材料,供所有未來雇主查看
最後一點對於剛入門的開發人員來說非常重要。雇主在尋找潛在員工時,非常重視擁有可參考的工作成果。您的程式碼比在白板上進行任何數量的演算法更能說明您的能力。
當然,該計畫還將為您提供 5000 美元的收入和一件非常酷的 T 恤。
一些 GsoC 學生已成為著名的科技部落客、開放原始碼專案的提交者、會議演講者、其他學生的導師等等...
自我激勵與穩定排程
學生應具有自我激勵能力。導師可能會敦促學生精益求精,但如果學生沒有自我激勵去工作,那麼學生可能從參與中獲得的收益不多。學生應安排時間每天處理專案,並保持規律的排程。長時間無所事事,然後在截止日期前拉通宵是不可以接受的。這將在您的程式碼中體現出來。
與導師定期每週會議和頻繁溝通
與您的導師定期每週會議是必須的。計畫會議應涵蓋
- 您目前正在處理的內容
- 您已取得的進展
- 您如何實作它
- 您計畫接下來要處理的內容
- 出現了哪些問題
- 您如何解決這些問題
- 如果您遇到困難,是什麼阻礙了您
- 程式碼審查(如適用)
導師是 GSoC 專案最寶貴的資源之一。導師既是可靠的開發人員,又是可靠的工程師。導師可能在專案上工作了足夠長的時間,以了解決策歷史、事物的架構方式、涉及的其他人員、做事流程以及所有其他文化知識,這些知識將有助於學生取得最大的成功。
在 GSoC 專案開始之前,導師和學生應解決以下問題的答案
- 定期排定的溝通何時排程?每週?每兩天?週一、週三、週五?
- 定期排定的溝通最好使用哪種媒介?VOIP?電話?面對面?
- 非排程溝通最好使用哪種媒介?電子郵件?即時通訊軟體?
執行
- 考慮到您和您的導師的時間,並為您的定期會議做好計畫
- 考慮提前透過電子郵件發送上述議程的答案,以便您可以將時間有效率地用於提出解決方案、程式碼審查和規劃下一個里程碑。
- 在您的計畫會議之外,經常與郵寄清單/IRC 上的導師和開發人員交談
- 您的導師不是唯一可以幫助您並讓您保持進度的人,Selenium 有一個很好的社群,您也可以從其他人身上學到很多東西。
- 讓您的導師知道您的排程
- 您要去度假、搬家、為課程寫論文嗎?如果您的導師不知道您在哪裡或預期您的生產力會滯後,您的導師就無法幫助您糾正方向或相應地規劃。
避免
- 超過一週未與您的導師溝通
- 專案時間表不允許溝通中出現計畫外的中斷。
版本控制
學生應在其專案中使用版本控制。
執行
- 盡早提交/經常提交
- 這允許快速發現問題,並防止可怕的截止日期前一次性大量提交。
- 使用高品質的提交訊息
不良範例:修正了一個錯誤。調整。
良好範例:修正了在父 doohicky 釋放後 thingamajig 未被釋放的記憶體洩漏。透過變更用於重複移除的比較,修正了錯誤 #902(在 Google Code 上)。實作了 Joe 關於在單獨的緩衝區中渲染,然後在渲染完成後交換緩衝區的好主意。透過簡化表格改進了 HTML。
- 盡可能參考特定的錯誤編號、連結和問題
- 版本控制中的歷史記錄通常是發生了什麼、原因和誰做的最好的時間軸日誌。
避免
- 在一次大型提交中簽入多個不相關的變更
- 如果其中一個變更存在問題,並且有人需要將其回滾,則更難以執行。
- 簽入尚未經過測試的變更
與專案溝通
大多數 F/OSS 專案都有專案成員和社群的郵寄清單,和/或有 IRC 頻道進行溝通。這些溝通管道讓學生可以與其他專案成員保持聯繫,並且是非常寶貴的資源。專案的其他成員可能更精通專案的各個部分,如果導師無法使用,他們可能會提供備用方案,並且他們可能是找出功能特定行為的良好討論對象。您被分配了一位導師,但整個社群都在那裡幫助您學習。充分利用您可以使用的所有資源。
對於剛接觸開放原始碼開發的學生來說,害羞是一個常見的問題。在專案開始時,鼓勵學生向專案郵寄清單發送一封「您好!我是…,我正在處理一個關於…的 GSoC 專案,這是提案的連結。」電子郵件,並鼓勵登入並在 IRC 上說「嗨」。盡早打破僵局 - 這會讓專案的其餘部分更容易。如果您不知道在哪裡宣布自己,請諮詢您的導師。
專案郵寄清單
郵寄清單是制定功能規格和預期行為的好方法。
郵寄清單通常會被封存,而封存檔是關於先前討論、決策和技術勘誤的豐富資訊來源。
執行
- 在列表中提問之前,先搜尋封存檔以尋找答案
- 始終保持禮貌
- 具體說明
- 在討論技術問題時,盡可能引用資料、參考文獻並使用連結。
- 要有耐心
- 不要期望在幾分鐘或幾小時內得到答覆;人們通常每天閱讀一次郵寄清單訊息。
避免
- 粗魯無禮
- 由於大多數郵寄清單都會被封存或記錄,因此您說的任何內容都可能永遠供所有人查看;在生活的各個方面都要注意禮貌。
- 使用所有大寫字母和過多標點符號說話
- 這被認為是大喊大叫
- 捲入激烈的爭論
- 如果有人侮辱您,最好忽略它。
IRC
大多數 F/OSS 專案都有一個 IRC 頻道,有些專案有多個。來自專案及其社群的人們「閒逛」在這些頻道上,談論各種事情。一些專案會定期排定會議,以涵蓋專案的狀態、開發進度、主要阻礙錯誤的狀態、規劃未來計畫等...
如果專案有 IRC 頻道,在那裡閒逛是個好主意。這讓學生可以與社群互動,也是即時解決問題和構想的論壇。
執行
- 在處理專案時,在專案 IRC 頻道上閒逛
- 花時間與 IRC 頻道上的人互動 這可以建立社群,並且更容易從熟悉您的人那裡獲得幫助,而不是從不熟悉您的人那裡獲得幫助。
避免
- 使用所有大寫字母和過多標點符號說話 這被認為是大喊大叫。
- 語法不佳 這會讓其他人更難理解您想說什麼。
- 粗魯無禮
我們都是有真實感受的真人,如果您粗魯無禮,人們可能會減少與您互動和幫助您;此外,IRC 歷史記錄通常會被記錄和封存,供所有人永遠查看。
請參閱
設計文件
學生在 GSoC 專案期間維護設計文件是個好主意。這些設計文件應涵蓋
- 專案計畫,並提供更多細節以充實原始計畫申請
- 專案計畫的偏差以及原始設計計畫變更的方式和原因
- 任何無法解決或克服的問題
- 可能的未來方向
- 使用的任何資源或相關規格
學生和導師應共同制定在 GSoC 期間應維護哪些設計文件。
需要注意的一件事是,學生不應將所有時間都花在編寫設計文件上。追蹤設計很重要,但完成一些程式碼也很重要。導師應能夠幫助學生在這兩個目標之間取得平衡。
部落格
學生應養成至少每兩週撰寫一次關於其工作的部落格的習慣。從歷史上看,這樣做的學生學習速度更快、生產力更高,並且與社群建立了更牢固的聯繫。有些人繼續成為貢獻者,其他人則在會議上發表演講/簡報。您希望看到您的職業生涯如何發展?
申請
評估標準
我們認識到,很少有學生在學習期間接觸過 Selenium,因此將根據您的以下方面評估您
- 思考、學習和推理能力
- 才能(到目前為止您已完成的工作,包括程式設計和其他方面)
- 態度、溝通、與社群和您的導師良好合作的能力
- 在 GSoC 中取得成功的意願和承諾,以及持續參與社群的潛力
- 簡而言之,是什麼讓您成為領導該專案倡議的合適人選 :-)
只要您在 4 月 9 日之前提交申請,您就可以在 4 月 18 日之前與我們的導師微調您的提案。
準備您的提案
以下是一些幫助您入門的問題。您不必遵循它,您的申請仍將被考慮,但這是一個好的開始。
請隨時加入您認為重要的任何其他內容。單行答覆不太可能被考慮。同時,請隨時向社群自我介紹,並透過寫信給我們的開發人員郵寄清單來討論您的專案提案。
一般問題:
- 請簡短介紹一下自己。
- 我們可以聯絡您的電子郵件地址和電話號碼。
- 您正在學習什麼?您將於 2010 年 9 月升入幾年級?
- 您可以投入多少時間參與 Summer of Code?您今年夏天還在做什麼?
您的經驗:
- 您是如何開始接觸程式設計的?您從事程式設計多久了?您為什麼熱愛它?您可以向我們展示任何個人專案嗎?您是否參加過程式設計競賽/教導/指導過其他學生?
- 您對程式設計有什麼興趣?您是 C 語言高手 - 您喜歡深入研究 linux 核心嗎?您比同儕更了解 Java 嗎?或者您更像是 python/ruby 的人?JavaScript 呢?您知道,您的風格是什麼?
- 您以前是否在軟體公司擔任程式設計師?
- 您以前是否參與過開放原始碼專案?哪些專案?描述您的參與情況
- 您有部落格嗎?履歷表?
- 是什麼讓您成為 Google Summer of Code 的合適人選?您想從中獲得什麼?
專案問題:
- 您選擇了哪個構想?
- 詳細說明該構想,並描述您希望在夏季完成的工作。如果您有自己的構想而不是從我們的列表中選擇一個構想,則此問題尤其重要,因為我們希望充分了解您提出的內容,以便我們可以幫助您推進該構想。
- 簡要介紹您希望完成的工作的專案時程。在您的工作排程中包含思考時間(「調查」)是可以的。工作應包括
- 調查
- 程式設計
- 文件
- 傳播
- 您計畫如何測試您的程式碼?您計畫使用什麼版本控制和建置系統?
- 如果您的專案非常成功,您是否希望在 Google Summer of Code 完成後繼續為其貢獻?
提案大綱範例
一個好的提案將包含以下組件
- 姓名和聯絡資訊。包括電子郵件、電話、IM、Skype 等。
- 標題。一句話概括您的專案目標。
- 概要。簡短摘要,您的專案將做什麼?
- 對社群的好處。為什麼 Google 和 Selenium 會為贊助這項工作感到自豪?開放原始碼或整個社會將如何受益?
- 交付成果。我們想知道您有一個計畫,並且在夏季結束時,會交付一些成果。 :-) 提供一個簡潔明瞭的工作分解結構,其中包含里程碑和截止日期。請務必將交付成果標記為可選或必填。您可能想要計畫從製作某種白皮書或以傳統軟體工程風格規劃專案開始。在您的工作排程中包含思考時間(「調查」)是可以的。工作應包括
- 調查
- 程式設計
- 文件
- 傳播
- 描述。專案詳細資訊的小清單。您的導師可以為您提供一些指導,但首先讓我們知道您正在思考 :-)
- 粗略架構
- 您可能從中獲得啟發的平行專案連結
- 您計畫使用什麼版本控制和建置系統
- 您計畫如何測試
- 讓您的程式碼被接受的最佳實務等。
- 簡歷。您是誰?是什麼讓您成為從事此專案的最佳人選?
- 總結您的教育、工作和開放原始碼經驗。
- 列出您的技能並提供您資格的證據。說服我們您可以完成這項工作。
- 是否有任何已發表的論文、成功的開放原始碼專案等?請告訴我們!
- 請列出您夏季的任何非 Summer-of-Code 計畫,尤其是就業和課程。具體說明排程和時間承諾。