參與開放源碼本應的模式

今年開放源碼界 (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 環境。

圖片作者: Vkw.studiogood (CC BY-SA 4.0)



回望 Open Source Hong Kong 十幾年的經過

攝於美國加州灣區聖塔克拉拉

為了詳細一些重寫 Open Source Hong Kong 的成立經過,好讓大家多了解 OSHK 之餘,我也回望自己十幾年前開始 opensource.hk 這一段十幾年歷史。

根據 WHOIS,我在 2006 年註冊 opensource.hk 網址成為創辦人,因為當年香港的開源社群變得冷清,想用網站來宣傳開源軟件。然後我建立 opensource.hk 網站並存放在自己的伺服器上,發佈一些開源社群消息和文章。

使用 wayback machine 幫助自己仔細一些回憶:2007年,我開始不定期舉辦有關 GNOME、Linux、Mozilla 及其他自由及開源軟件的活動,並與本地和海外開源開發者和用家聚會。

到2011年,我和幾位開源朋友開始每年去 COSCUP 及其他海外開源會議和社群聚會,然後12月,我把不定期活動改為每月聚會。

2012年,我和 HKLUG 的 Haggen 主辦香港GNOME亞洲峰會2012。成功舉行亞洲級會議後,2013年我終於敢去創辦香港開源年會

到2014年,我將自己身份改為開源香港會長,然後成立首屆執行委員會,邀請 Calvin Tsang 和 Dick Tang 幫忙擔任副會長。我亦代表 OSHK 創辦香港創意開放科技協會 HKCOTA 並擔當創辦人和董事。同年,我亦開始主辦首次 Open Data Day 香港國際開放數據日黑客松。我亦用 Open Source Hong Kong 身份開始發表香港開放數據公開意見,及展開回應政府有關香港專營巴士續牌與開放巴士數據。

2015年,我創辦第二個會議 PyCon HK 來做一些新嘗試,Open Source Hong Kong 執行委員會亦提供支援。這急速發展下亦令開源香港需要根據香港社團條例 Cap.151 註冊為香港社團組織。

2016年,梁敬文的自由香港字型 FreeHKFonts 專案加入 Open Source Hong Kong。

到去年2019年,我幫 Open Source Hong Kong 加入 Open Source Initiative 成為 Affiliate Member。

然後,回顧這十幾年的經過,也是為了未來的發展。去年考慮退出一手創辦,經營七年的香港開源年會之時,到今天一直慢慢地思考過去,尋找新的出路,更上一層樓。

怎樣更上一層樓?留待遲些另文再述。

如何簡單自行測試寬頻速度:網上行 Netvigator

對上網寬頻速度有疑問時,用家如何能自行測試呢?筆者分享三個簡單而可靠的測試方法,只需用網頁瀏覽器,而這些測試方法並適用測試各間寬頻。本文數據來自筆者以電訊盈科網上行光纖入屋寬頻作示範測試。

OFCA Speed Test 速度測試網站

香港政府屬下的通訊事務管理局辦公室(OFCA)提供寬頻表現測試網站(Speed Test)。這網站的 javascript 在測試時,直接用香港互聯網中樞 HKIX 的 Speed Test 伺服器與用家的電腦作下載和上傳測試,所以能測試實時本地速度。

最真實的測試方式:直插

很多公司和家居已安裝無線router,如果想測試寬頻本身連接互聯網速度,就要暫時拔除無線router連接光纖寬頻機的網線,通常這條網線是Cat 6或Cat 5e以太網線(ethernet cable),用這條網線直接駁用家的電腦和光纖寬頻機。電腦成功直接連接互聯網後,便可進行 speed test 測試。

如果不是光纖入屋,便把電腦直駁寬頻插座或寬頻入屋的網線,這插座或網線應該是以太網(ethernet)類型的。

如使用如網上行 Netvigator 有其網絡電視(例如 NOW TV)的寬頻服務,也建議同時關掉網絡電視的電源,因為這些服務有可能共享寬頻的速度﹐而令到互聯網速度較慢。筆者做上圖的測試時,並沒有關掉 NOW TV 的機頂盒。

為何直插最真實?因為互聯網速度會因無線router的網線介面速度、無線速度及router裡的處理器、記憶體、底版設計等而有所影響。亦建議用家多作幾次測試來取得多個結果作參考。

測試完直插後,用家亦可考慮測試經無線router,以無線和有線方式連接互聯網的速度,來得知使用實況下的互聯網速度。

如何正確解讀寬頻速度測試數據?

首先,用家需了解寬頻速度是以位元(bit)為量度單位, 現今香港寬頻可達數百 Mbps 或以上。Mbps 是英文 Mega-bit per second,即是每秒中有多少兆的位元。這兩個 Mb 和 bit 有別於一般形容電腦文件大小、儲存裝置大小或數據用量等的量度單位 MB 和 bytes,MB 是 Mega-bytes,而一 bytes (位元組)是 8 bit。所以上圖 Download(下載)速度 451Mbps,大約 7 分鐘下載一隻約25GB的單面藍光電影。

寬頻服務計畫所訂明提供的速度是指安裝地點與機樓之間的速度,而速度測試及其他網站並非在寬頻公司內的網絡,所以實際速度測試的結果比服務計畫的速度為低。

開車出外會受到道路不同狀況影響速度,例如過海、過境、當區本地道路闊度、實際車流、因事故改道等等。實際互聯網的速度也跟開車出外一樣,會受到網絡道路上不同因素影響,例如跨海頻寬、伺服器所在地網絡速度、人流多少、因事故改道等。

外國速度測試網站 Speedtest by Speedcheck.org

Speedtest by Speedcheck.org 是另一個外國速度測試網站,可作其中一個外國速度測試參考。

老牌網絡速度測試網站 Speedtest by Ookla

Speedtest by Ookla 是另一個老牌網絡速度測試網站,可選擇不同的測試伺服器來測速。亦因為測試伺服器在不同的商業公司而非 HKIX,所以測試結果或有不同。建議用家選擇最接近的測試點,例如 Netvigator 網上行用家就可選擇 CSL。而這工具另一個賣點是可作測試海外互聯網速度,所以也值得用家試試。