最近又在 GitHub 練功改程式,我平常滿喜歡作這事的。GitHub 是一個程式碼存放、合作的網路服務。它上面有許多開放的程式專案,可以自由下載、追蹤、討論、修改、貢獻、編譯程式。每個人可以建立自己的帳號,儲存自己喜愛的程式專案。也可以貢獻自己的程式,GitHub 都會有記錄,小到幾行 codes 都算。
GitHub 這種服務很適合服務開放原始碼。我開發的 apps 多多少少會使用開放原始碼,由於它容易取得的特性。而且有許多高品質的開原程式,讓我能快速的開發多功能的 apps。但程式難免會有 bugs 或不合自己使用,開原的好處就是遇到 bugs 時我們較有機會查清程式哪個部分造成的,進一步小 bugs 可以自行修正,但大 bugs 往往還是要向原作者尋求協助。自行修正後,可以把它貢獻至 GitHub 幫助別人,展現自己的實力😄,這可是頗有成就感。
我尤其喜歡在 GitHub 修別人程式的 bugs,因為沒有壓力,不像工作上有時程限制、高品質要求,客戶要的功能要如期做完、不能一堆 bugs。而在 GitHub 上,就沒有那麼重的壓力,只要發覺某程式有 bug,也不必整個程式都看完(程式可能很大),用自己修改的程式能解決問題,我認為就可以貢獻給原作者。因為原作者通常會審合修改的程式,沒問題,才會合併至原程式。有時放膽去改別人程式,就可能有收獲。
我最近就成功在兩個開原程式專案 – electron-builder, AppImageLauncher 作出貢獻、被採納🙂:
https://github.com/electron-userland/electron-builder/pull/6841
https://github.com/TheAssassin/AppImageLauncher/pull/510
其中在 electron-builder 的貢獻,就是放膽去改出新功能。另一個 AppImageLauncher 的貢獻是參考基於別人相關的問題研究、解決方案,提出相似的解決方案。其中在 electron-builder 的貢獻我比較得意一點,因為是提出新作法。提新作法能被接納比修正 bugs 有時難多了,一來”新作法”可能跟原系統不太合、或風格不合,可能就不被接納。但 bugs 往往就是比較客觀的東西,它的修正比較容易被接納。
總結我的參與開放原始碼開發的樂趣在於找到自己有興趣的主題、增強與展現自己的實力,又沒什麼壓力。