coding

回顧升大學時備審資料裡頭的讀書計畫,發現其實大部份的目標都已經完成了呢!這樣我至少可以對高中的我有所交代了吧,哈哈。只有「積極參與開放原始碼專案」,雖然一直想試試看,但至今仍不得其門而入。

〈大學回顧〉

一切的源頭

我接觸開放原始碼慨念的時間很早,或者應該說一開始其實先是嚮往開放原始碼的精神,所以才學起了程式。

小時候剛開始學電腦,是從網頁設計開始。還記得當年在知名的一些教學網站,像是「網站建置百寶箱」、「軟體大學」之類的地方學著 HTML、CSS、JavaScript 等等知識。當時國內一群先進正引入網誌撰寫的風氣,我也因此訂閱不少技術部落格,接觸了當時風起雲湧的 W3C 標準化議題,才知道 Mozilla,進入開放原始碼和 Linux 的世界的。後來又搭上想學英文的想望,故意看起了國外的網站,技術上的眼界又有了許多的突破。

雖說如此,我參與開放原始碼的道路仍舊坎坷,記得在〈從我的故事開始說起,自由行列實驗品:ibus-faft〉中寫到「在 2006 年升高中的暑假,我帶著想改進行列輸入法和成為 Linux 程式開發者的憧憬,開始學起了 C++,踏入了程式設計的道路。」然而即使花了數年斷斷續續的時間研究,還是一直沒有什麼成果。實際上光是要看懂酷音的程式碼就花了一番功夫,一直到 2010 年才真正寫出可以運作的輸入法。

相較於現在比較熟悉 GitHub 可以隨時送 pull requests 來提交修改的程式碼,當年對社群參與還是不太熟悉,總是一個人悶著寫。雖然在開發自由行列的過程中有修正一些酷音的程式,不過也沒有把這些修改送回上游,而自由行列後來也沒有持續維護下去了。

雖然偶爾也會搜尋如何參與開放原始碼的文章,或者在 GitHub 上搜尋適合的專案,但大學時間始終沒能成功的做出什麼貢獻。僅僅只是把自己的一些專案安靜的放在 GitHub 上罷了。時光飛逝,一下子就到了 2014 年。這年開始,終於有了新的突破。

新開始

在那年, g0v 設置了一個網頁用來鼓勵民眾打電話給立委表達自己立場。逛著逛著有了一些改進的想法,於是便送了一些 PRs,最後被成功接受。或許是因為有了這樣正面的鼓勵,不久之後我在用 gitbook 時,因為發現沒有 reference link 的支援,於是就稍微研究了一下,最後送了 PR 也成功被接受了。

有趣的是,大學期間我總是特意尋找 C++ 或者 Python 等等我比較熟悉的語言看看有什麼地方可以貢獻。但終於成功送出 PRs 時,竟然都是好久沒寫的 JavaScript。這時也才突然發現前端的世界已經突飛猛進,已非我小時候所了解的那般了。

同時也發現新酷音輸入法其實在 GitHub 上也有個 repository,雖然事過境遷人事已非,我還是勉強成功把當年修改的其中一個地方,透過 PR 送入了新酷音之中。

因為需求

在那之後的開放原始碼參與雖然還是比不上許多程式熱衷者的整面綠牆,但終於變得稍微頻繁一些。這段時間主要的貢獻都像是 gitbook 那次一樣,因為自己有用到某些專案,因此有了需求,所以透過修改這些專案來滿足自己的需求。這包含了:

後來因為寫了〈找出 GitHub 上和 Python 3 不相容的 Python 專案〉,意外掉進 porting 到 Python 3 的奇怪坑。也因此在 s3tools/s3cmd 和 brettcannon/caniusepython3 都發了一些 PRs。

注重細節

如果說這些年寫開放原始碼有什麼特別的體會的話,最有趣的觀察其實是對每個 commit 的注意細節:為了讓專案擁有者能順利的接受程式碼。往往不能讓太多東西集合在同一個 pull request 裡。同時也想要保持每個 commit 的邏輯,所以偶爾龜毛時會想要不斷重寫 commit 歷史以讓 pull request 變成自己想要的樣子。這跟自己一人專案時 commit 有時都亂寫是完全不同的。

雖然之前在 Google 和 Microsoft 時也因為是在修改上線的系統,而且有 code review,所以很注重某次修改的構成和被 deploy 的順序。但近年幾乎很少有機會在意這些議題了。所以很感謝有在開放原始碼專案稍微練習一下敏感度的機會。

最熱門

雖然在這期間也有偶爾放一些自己寫的小 projects,例如像是從 aNobii 搬家到 Goodreads 的 anobii2goodreads 或者之前提到的 py3tracker,不過少有像專業 open source 經營者分享的那種熱門專案:〈[心得] 我在 Github 上學習 Open Source〉

最熱門的專案反而是我之前把交資夢想的文章用 gitbook 整理而成的 csdream,雖然當初是想說這樣別人比較容易幫忙,不過實際上也很久沒有得到更新了。第二熱門的則是為了不要在翼之都每寫一篇文章就開一個 repository 所以把程式都放在一起的 experiments

繼續學習

雖然前輩說「如果想免費實習,就去參與 Open Source 活動吧」,不過實際上要在開放原始碼社群做出一點成績也是需要不少心力。 雖然到目前為止還是緩步前行,主要還是要先碰上需求才有辦法貢獻,但在 GitHub 的幫忙下,至少算是對當年寫下備審資料的自己有了些交待。之後也希望能繼續加油。