沒有報酬,有多少開源專案維護者能堅持?

飛哥的咖啡發表於2017-09-21

【導讀】:James Long 是 Mozilla 的工程師。他在這篇文章討論了開源專案的兩種角色 starters(發起人)與 maintainers(維護者)。沒有報酬的情況下,有多少開源專案的維護者能持之以恆?

發起人與維護者

現在是週五的深夜,妻子已經睡著了,我終於能夠抽空看看那些釋出請求(pull request),這些釋出請求來自我去年放上 GitHub 的一箇舊專案。女兒早上七點半要起床,所以我最好不要熬夜太晚。

沒有報酬,有多少開源專案維護者能堅持?

自我上次檢視之後,新增了 9 個問題(issues),以及 2 個釋出請求。好訊息是大部分問題都可以關閉,而且釋出請求也無關緊要。呃,不好,有一些重大的更改。我不得不重新考慮這些更改,並將(帶著禮貌的態度)參與一場長時間的討論。這是一個突破性的更改,但他們並沒有更新文件,所以我們必須弄清楚,如何通知每位使用者去升級。

我應該給專案建立一個更好的(推送)方式,來通知使用者新的問題和釋出請求。但是仔細一想,騙誰呢,這隻會讓我更加精疲力竭。我根本沒有這麼多時間來回應這些(問題和釋出請求)。至少現在,當我在焦頭爛額忙著其他事情的時候,我可以假裝它並不存在。

我為什麼要這麼逼迫自己呢?

誠然,我的程式碼已經幫助了很多人,但隨之而來的維護負擔卻也十分嚴重,儘管它本身只是一個小專案。如果它變得更加流行,有更多的使用者來使用它哪?那麼要做的事情就更多了。(儘管我的 GitHub 個人部落格內容比較冷門,還不怎麼使用, 都已有超過 1000 顆星了,啊?!)從此它會變成一個每週 10 小時的工作。?

我非常佩服那些將大量時間免費貢獻給開源軟體(Open Source Software,簡寫 OSS)專案的人。我不敢想象有多少無趣的免費工作正在進行。人們非常樂於喜歡幫助別人和社群,這件事情本身很棒。

我也喜歡這樣做,但是有了妻子和女兒(而且馬上要有第二個女兒),再加上一個本已高強度的工作,基本不可能辦到這一點。我在 Mozilla 的工作基本上就是完全的 OSS 工作。

我認為自己能堅持下去的唯一理由,是因為我喜歡發起一件事。

每個人都喜歡做發起人,但我想做出點影響力,做出點貢獻。將作品放到 GitHub 上很容易,而且如果沒有人使用它,你都可以忽略它,但這樣做不會產生任何影響力。我想讓人們看看我做出的東西,能夠從中學到些什麼,甚至能夠使用它。通過編寫可以應用到生產環境到庫,我幫助人們學習 React、React-Router、感測器、健康的巨集、動畫等大量東西。

但這也會帶來負擔。

一旦人們在生產中使用你的程式碼,你還要繼續維護它嗎?

你可以說不,這是你的權力。但大多數時候,你想要看到你的想法不斷成長、進化。問題是,要維持這樣的動力,背後需要付出大量的工作。

任何一個專案都要有兩個角色:發起人和維護者。人們可能在生活中同時扮演著這兩個角色,但出於某種原因,我發現對於單一的專案而言,這兩個角色一般對應不同的人。發起人擅長在不一樣的角度(方向)邁出重要的一大步,而維護者擅長保持程式碼存活。

另一個很大的區別是,專案發起人往往只有一個,而最終會有多個專案維護者,這是因為單獨一人無法支撐起整個專案。隨著它越來越受歡迎,會出現越來越多的問題、釋出請求以及其他各種請求,兩者之間呈線性遞增的關係。當專案人氣到達了新的階段,就必須增加新的維護者,而理想的情況是來自現有的重度使用者。

正是因為一個人無法支撐起整個專案,所以發起人自一開始就容易陷入一個令人絕望的迴圈:他/她擁有所有這些好的想法,但隨著一些想法逐漸得到實現,會收到越來越多(來自他人的)噪音干擾,這使得未來的想法難以實現。關鍵是,你要不忘記現有的專案,要不為它們找到維護者,而後者通常不是一個能夠很快實現的任務。

我本人絕對是一個發起人。我對萬事萬物都存有興趣(好奇心),並不專注於幾個集中的領域。我維護庫的時間已經長達數年,但趕著在週五晚上處理積壓留存的問題,總是讓我懷有巨大的愧疚感。

從現在起,我清楚地表示,由於我放上 GitHub 的程式碼是實驗性的,我將不會迴應任何的問題或釋出請求。如果我確實釋出了一個可以應用到生產環境到庫,說明我已經想到了要請誰來維護。我不想再讓自己背上第二份工作了。:)

這是我想對所有維護者說的話:正是他們在幕後從事各種費力不討好的工作來保持程式碼存活,包括編寫文件、編輯版本、註冊域名等等。

哎,今晚要補救的問題還挺多的,也許我只要將廢棄宣告( DEPRECATED )新增到 README 中就能解決一切了。?

相關文章