今年開放源碼界 (open source community) 發生過開放源碼名書 The Cathedral and the Bazaar 作者 ESR 被 Open Source Initiative mailing list 禁言。之後又發生過三位 pytest 的核心開發者因麻煩人參與而先後請辭,最後由餘下的核心開發者決定禁麻煩人參與,離開的三位才回到 pytest。
我亦曾聽過有人說:「我都支持 open source 架……blah blah blah」
又有聽過:「我都搞 open source 架……blah blah blah」
聽到有人講支持及搞 open source 固然好事,很高興。不過有時候再聽下去,或者後來觀察其行為,我會有疑問:「到底他的行為是否依 open source 而行呢?」
這情況絕不是香港獨有的情況,當 open source 流行起來,這世界便不斷發生一些對 open source 的誤解,或脫離原有的開源框架的行為,讓我這種老一輩開源人不禁回想 open source 本應是怎樣?
當今年我準備一個新計劃:incubator program,以類似 coaching 方式,幫助新貢獻者或project等投入開放源碼的project社群模式。其中一樣我認為要做的:讓新貢獻者或project owner重新思考開放源碼本應模式。這些經驗分享能幫助他們或projects的發展。
Open Source 不是只放 Source Code
第一,open source 並不是只放 source code 上 GitHub 出來就是 open source。至少你還要說明 source code 的「授權條款」(licensing),而該 license 必需合乎 OSI 或 FSF 所有 open source 授權要求才是 open source license。以一般例子比喻,只放圖片、媒體檔、presentation slides上網上 GitHub 不算是 open 開放給大眾,你也必需以例如共享創意 (Creative Commons) 授權條款才是 open 放給大眾。
Pull Requests 不是你想就入
當 open source 出來後,也許有用家尋找到你的 project,試過合用,然後用家社群可能擴大起來,就多了機會有用家給contributions(pull requests)。
當有 pull requests 時,由 project owner 決定合併 (merge) 或是拒絕 (decline)。並不是每次有人願意 contribute 就獲得接納而 merge,project owner 會依據當時不同因素而決定是否接納。每個 contributor 都會覺得自己有心 contribute,有理據有經驗有技能去 make this contribution,但這是否合乎 project owner 要求、觀點、取態、目標、roadmap……?這些就由 project owner 依據他的經驗去判斷把關,沒有絕對的對與錯。
行為守則與社群發展
現實中不同 open source projects 都有機會有人挑戰 project owner或其他 contributors 的決定,大多 open source projects 設有行為守則 Code of Conduct 去做一個正面態度既社群 (positive environment)。
The GNOME project 行為守則 Code of Conduct 中的 Community Guidelines,就有寫明 Be considerate. Remember that decisions are often a difficult choice between competing priorities. Focus on what is best for the community. 意譯就是:落決定通常唔係一件容易既事,通常都係比較唔同輕重,為社群的最好來著想。
創始人創立一個 open source project,亦是這 project 的 project owner 及最終決策人,他做得好,project就會成長擴大,繼續走下去,很難想像一個創立好project的創始人不為社群的最好來著想。直到創始人決定退出,就可能交棒由新決策人成為 project owner,或是沒有人再 maintain project 就完結任務。當有新決策人,就會有新的作風,那麼project的發展就自然跟原有的不同,屬另一個發展,對社群發展是好事還是壞事就要看前因後果和發展情況了。
最後一招: Fork but not f__k
決策人作出最後決定,你還是對 project 不滿?你可以 fork 而不是 f__k﹐或是開一個新 project。
當你對當事人 f__k、對別人 f__k、在公眾場合 f__k、或是自以為對空氣 f__k,這些行為都是有違 open source 的原則,也不是恰當、不是 positive 的行為。當然你可以抒發個人情緒,你可以心裡 f__k,你也可以在私人地方對著願意讓你抒發個人情緒的人 f__k。
Think positive, be considerate 是參與 open source 的應有態度。
講一句「支持 open source,搞 open source」很易,門檻很低,做起來還是要靠自身的實作、經驗和堅穩的信念。如果人錯你對,有心人何不 fork 或另起來做呢?
兄弟爬山,各自努力,互相包容,才能創造出最好的 open source 環境。