“在開源社區中成長”——第十二屆中國開源黑客松參與者真實感受

2021第十二屆中國開源黑客松於5月28日在北京正式舉行。舉行地在丁章衚衕的金融客咖啡,是一座古色古香的四合院,據說張作霖、張學良都曾把這裏作爲大元帥府和少帥府,也是溥儀辦公和養老之地。

在個充滿了故事的四合院裏,我與Greenplum開源社區的小夥伴一起,在其他13個開源項目,超過15個開源社區的陪伴下,經歷了兩天的高強度的代碼。這是我第一次參加可以自己上手的活動,感謝Greenplum中文社區給我提供的機會,不得不說收穫很多。

從接觸Greenplum以及其他開源軟件後,我開始對開源軟件的源代碼產生了濃厚的興趣,非常渴望瞭解軟件如何能跑起來,如何能組成一個工程。在活動中,我們學會了如何使用GDB。在活動開始前,Greenplum原廠導師呂正華老師介紹說,學會了用GDB調試開源軟件,任何開源軟件都不再有”祕密”了。我用GDB的經驗不多,唯一的經驗就是在操作系統課程實驗中用GDB+Qemu調試了linux內核啓動過程。當時的我也只會跟蹤一些代碼,而不會調試以及找錯,此次活動受益良多。

參加黑客松之前我還有點忐忑,擔心自己的基礎不夠好。但從四合院門口進入會場的那一刻,我便深刻感覺到Greenplum社區真的非常友好。第一天上午是講解部分,呂正華老師詳細的講解了相關理論知識和上手步驟。講解過後便是實操環節。第一次參與真實的issue(GPDB issue #12061)的解決的我並不是很有頭緒,想着從查詢的運行開始。但由於查詢是一個assert error,所以跟蹤到assert之後就停止了,跟蹤不到錯誤的位置,似乎斷了線索。呂正華老師和張桓老師提醒我可以去根據assert錯誤條件然後去跟蹤變量。每次跟蹤沒有線索之後,Greenplum的導師,以及社區的小夥伴們都很願意幫助我。大家一起嘗試跟蹤變量,一起記住程序崩潰的位置,一起出謀劃策跟蹤。通過一個下午的努力,我們成功的定位了代碼出錯所在行,並且通過社區小夥伴們會後、晚上的努力,在第二天早上活動開始之前提交了Pull Request。

我和社區中的許多小夥伴一樣,都是第一次參與開源項目,對於提交的流程和內容也說不上熟悉,在這種狀況下,能夠獲得鼓勵真的很開心。在Greenplum導師的帶領下,我們成功完成了添加測試用例、完成測試、精簡測試、並最終提交了PR。Greenplum社區的PR提出真的非常詳細,從發現問題,分析問題,解決問題,加測試,整個PR提交非常工整有序。讓我非常感動的是一個細節。由於社區中一部分小夥伴是第一次在項目中進行Pull Request,我們提的Pull Request格式上還是不太規範,但Greenplum社區回覆的第一句話仍然是“感謝您對社區的貢獻”。

除了自己上手的環節之外,在茶歇中還有不少開源社區進行演講。從程序員、工程師角度看問題使我第一次感受到了開源軟件的精彩。與之前一些介紹性的演講不同,我可以聽到更多算法層面、架構層面的東西,這些是難能可貴的。

這次黑客馬拉松,對我來說,是學習,是考驗,更重要的是,能夠融入開源大家庭、Greenplum開源社區,能感受到互幫互助帶來的快樂,在社區中成長。

——————

項目名稱: Hacking Greenplum

任務目標

  1. 修復一個真實的Community Issue,成爲Greenplum內核代碼貢獻者(commit message,test,comments,code review)
  2. 深入理解Greenplum的MPP架構,開發探索性特性,修改SQL建表語法,完整支持qd only table功能

完成情況

1、任務1

  • 全員都順利搭建起來Greenplum開發環境
  • 順利掌握用GDB定位診斷bug
  • 組員用開源工具SQLsmith發現buggy code
  • 組員投石問路,用注入代碼並跑測試,鎖定更簡單復現辦法
  • 組員提交commit完成pr
  • 任務一順利完成

2、 任務2

  • 修改gram文件添加新語法distributed only_master;
  • 完成DML語句和join的支持
  • 任務二順利探索

後續安排:

  • 任務一即將merge進Greenplum的master branch
  • 任務二是試驗性,進一步在社區內溝通,測試性能和發掘用法,推進

貢獻者以及貢獻:

  • 1 PR
  • 2 commits
  • 代碼百行++ —(但涉及診斷思考的過程,還是比較複雜的,也有了很多工具和技巧)
  • 特性1個
  • Bug修復1個
  • 項目者:參與全員用Greenplum的結對編程(pair programming)辦法解決問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章