為什麼要改一個字

蟲探理查
9分鐘風格

2020 年 3 月 8 日,日本的東京都知事-小池百合子,在 twitter 上感謝唐鳳協助他們東京都的防疫網站翻譯改一個字,因為先前唐鳳在日本已經爆紅,所以這件事情引起注意並傳回台灣:

唐鳳將繁「体」字改成繁「體」字
唐鳳將繁「体」字改成繁「體」字

有的人可能會覺得不解,阿不就修改一個字有什麼了不起,很難嗎?我覺得難不難不好說,不過我有興趣的問題是「不就一個字而已啊,為什麼要去改這一個字?」

先說一下什麼是 Github (不是談 Pornhub,不要太失望),它原本是一個給大家放程式碼,交流程式碼的地方,但也不是只能放程式碼,只要是用一個版本控制軟體 git 儲存的檔案 (也可以是一本書,或是幾個人一起合作解決一個問題的網路資源整理文件),都可以儲存在 Github 上。

另一個角度來說好了,Github 又很像是一個開發者世界裡的 facebook 或 twitter,大家可以放要合作的專案在上面,如果你寫的專案很受歡迎,就會獲得很多星星 (star)。如果你像我一樣,自己搞不出很受歡迎的專案,也可以對那種很受歡迎的專案給予貢獻 (contribution),這個貢獻就會顯示在你的頁面上。

我參與過一個專案的貢獻,叫 Gatsby,在 Github 上面有 5 萬顆星,用 twitter 來比喻的話,雖然可能不是 Obama, Justin Bieber, Katy Perry 這種最頂級的網紅,但是可能接近 Lebron James, Jennifer Lopez, Elon Musk 這種等級了。

貢獻這種等級的專案,就像我在路上看到野生的 Jennifer Lopez,哪怕只是遠遠錯位拍照打卡,讓大家羨慕一番一樣,如果我有任何機會我一定會開心的做出貢獻,哪怕只是對它的說明文件改一個錯字也是。

這正說明了,Gatsby 這樣免費開放原始碼的專案,為什麼程式 bug 少,連這個專案的使用說明文件的品質都非常的好。他們的說明文件不但作法和範例程式碼清楚明瞭,要找到拼字錯誤都不容易。

這次貢獻是這樣發生的,因為我個人的部落格是用 Gatsby 這個專案架設的,前一陣子弄訂閱電子報功能的時候,發現新文章並不會自動寄出電子報。

插播一個糗事,在檢查 Mailchimp 的電子信箱服務設定的時候,他們跳出問卷調查,我就勾選不好用啊,填上都不會自動寄發啊什麼的意見。結果才填完,就發現其實不是 Mailchimp的問題,根本是我自己的網站寫的 RSS 訂閱功能有問題啊 🤪。

後來我查了查我網站的 RSS 訂閱功能的 bug,發現非英文的網址要事先用 JavaScript 內建的函式先進行編碼,這樣才能符合規定的 RSS 訂閱格式。

後來我就把電子報的功能搞定了,理論上這件事情應該就此結束,但是我想到,這不就是我貢獻 Gatsby 的好機會嗎?

因為會有很多人想要對這種受歡迎專案做出貢獻,所以他們對於要如何貢獻專案都會有一些規範,所以我不能直接對專案亂搞一通,需要先去瀏覽一下這個專案的 How to Contribute 文件。

接著依這文件裡面寫的指引,我先去他們的 Github 上的 Discussions 區開一篇討論,具體寫出:

我想要更動adding-an-rss-feed.md這份文件,想更動的原因是因為我遇到範例程式碼遇到非純英語網址會產生的問題,我想在文件上增加一個範例程式碼,並增加一個可以驗證 RSS 訂閱功能是否正常使用的連結。這樣更改的好處是可以簡省非英語使用者的開發時間。

然後一個核心開發者就回覆說,聽起來很不錯,我們很樂意檢視一個 PR。

PR (pull request) 是整個貢獻過程中最重要的關鍵字,唐鳳當初就是向東京都的防疫網站專案提出一個 PR。PR 的意思就是,唐鳳對這個專案修改了一個字,請求防疫網站把這個修改的專案合併進這個專案中,東京都的專案人員同意合併後,唐鳳的 Github 上就會出現一個記錄,顯示他對這個防疫網站專案有貢獻。

我收到可以提 PR 的回覆後,很開心的向 Gatsby 專案開 PR,過程是把文章增加了我要增加的內容,然後把這個版本記錄存檔 (這個動作稱為commit)。存檔完發現專案上面又有很多更新了,於是我很自作聰明 😏 的把這些更新抓下來,和我修改的部份合併,又做了第二次的commit,然後就把這個 PR 推送出去了。

送出去之後,我看到這個專案的機器人把我第二次的commit擋下來,說我沒有合併的權限 😭。我原本沒管他,想說專案核心人員應該會幫我搞定吧,然後每天都帶著期待的心情去看一下我的 PR 過了沒。

結果過幾天都沒過,我想看來我還是得先想辦法通過機器人的檢查,最後我用git reset這個命令去把版本倒退成第一次的commit,來通過機器人的檢查。很快的,過幾個小時我就看到 Gatsby 的創辦人 Kyle Mathews 合併我的要求了 🎉 🎊。

pr被合併了
PR 被合併了

所以回到文章開頭的改一個字很難嗎?這個問題如上面所說的,可能會因人而異也因專案而異,不是貢獻每一個專案都要這麼麻煩,如果不是那麼大的專案,可能也沒有那麼多的 PR 規定,但是還是要會基本的 git 指令和 Github 操作才有辦法貢獻。

但是我更關心「為什麼改這一個字?」的問題,我覺得是開發者一個很棒的思維。

除了娛樂型的內容,我觀察到在 Facebook, Twitter...等社交媒體或新聞媒體上通常兩種類型的內容點閱率最高,一種是造鬼內容,從台灣進口疫苗落後啊、 Facebook 改版多難用啊、簡訊實聯制有什麼問題啊…,看多了覺得好像自己活在地獄啊。另一種是造神內容,從台灣防疫 No.1、Clubhouse 乾貨超多啊、簡訊實聯制萬能啊、狗狗幣上太空啊,看多了會以為人類已經超越造物神了。

在 Github 平台上,最受歡迎的專案都是要解決的問題最有意思或是最重要,大家關心的是這個專案是如何解決大家關心的問題。如果這個專案很神,重點也不是去造神,而是如何改進讓它更神。如果這個專案有問題,重點也不是去抱怨,而是如何改掉這個問題,讓這個專案的問題少一點。

而且上面講的都還不是我最最欣賞 Github 的一點,我最欣賞的是這種「怎麼把這個專案改的更好,哪怕只是改一個錯字」的心態並不是一種我好犧牲奉獻的辛苦心態,而是一種「我做出貢獻」和「我解決問題」可以是一種炫耀、好玩、有趣的文化,甚至像是一種生活習慣,刻在開發者的基因裡。

gatsby swag store
第一次貢獻 Gatsby 竟然還有紀念品可以拿喔,這是我挑的帽子

五月 30, 2021 更新