誰是Ben?我代波蘭人上來深圳取開源源碼!

照片來源:Naomi ‘SexyCyborg’ Wu 的 YouTube 影片(CC BY)

早前波蘭開發者 Patrycja 發電郵向中國深圳公司 UMIDIGI 索取基於 Android 10 開發的 UMIDIGI F2 手機系統內核源碼,尤其 ft8719_dsi_fhdplus 顯示屏驅動程序。Android 10 的內核 Linux 和不少開源軟件都是以 General Public License 發佈程式和源碼,所以 Patrycja 是合理的。

但 UMIDIGI 一位署名 Ben 的人回覆 Patrycja,她可以在「辦公時間」上來「只會就中國國語」的深圳辦公室來「要求」索取源碼,還在括號中註明大多數都不是「自由」和由 MediaTek 擁有。

Patrycja 就張貼在 Twitter 帳戶上說:到目前為止,這是我「最喜愛」的企業溝通。然後有另一位開發者 cc 給深圳技術推廣者兼 YouTuber 機械妖姬 Naomi Wu(SexyCyborg)。

機械妖姬回覆杖義一試,並在 Twitter 向 UMIDIGI 預告,這星期她會親身上來深圳南山區的 UMIDIGI 辦公室,索取有關源碼並拍攝 YouTube 影片,向她的外國觀眾展示中國人並不會偷智識產權,亦會遵守開放源碼授權條款。

8月20號,機械妖姬在 Twitter 先發佈一段一分鐘短片,主要是她走入 UMIDIGI 辦公室內問誰是 Ben,她現在按照電郵上來拿取開源代碼。公司有員工說 Ben 已離開公司了,她問現在誰跟進這件事?

昨天(8月26號)機械妖姬再在 YouTube 發佈完整版,後來 UMIDIGI 的前台人員出來了解,前台人員請她留下 WeChat 微信帳號,並保證公司會聯絡她。而 UMIDIGI 最終亦有按照 GPL 向 Patrycja,Patrycja 在 Twitter 分享源碼能幫助她的開發工作。

Software Freedom Conservancy 亦為這事件發了一篇 “…Anyone???” 的網誌,亦說如果各公司也遵守開源授權條款中的承諾,這世界將會如何呢?

Flogo 建立物聯網開源生態

為促進物聯網應用開發,TIBCO 軟件公司以 Go 語言開發一套超輕型的開源專案 Flogo,以 BSD-3 授權釋出源碼,協助企業和開發者創造事件驅動程式,發展物聯網的開源生態。

Flogo 生態系統設計一套抽象事件驅動範式,讓開發者建立後,能應用在不同地方,處理任何已支援的程式行動。Flogo 包括核心 Core、微閘道 Microgateway、 事件串流Streams、規則 Rules、事件流 Flows。Flogo 亦可透過 Tensorflow 進行機器學習介入事件。

Flogo Core 是輕型應用內核,執行碼只有 10MB。它負責處理由 IoT 裝置傳送到雲端和 IoT Edge 應用程序的事件,應用程序透過行動 Actions 和扳機 Triggers 來處理基本事件,還可加上活動 Activities。

微閘道 Microgateway 可依照邏輯條件協助事件內容分流和限流,以至執行策略。Streams 可預先處理通訊管道中事件串流,方便行動 Actions 處理事件。Rules 偵測不同來源的事件形態和走向,來決定下一步行動。而 Flows 幫助活動 Activities 連接其他應用、數據庫和 API 應用程式介面。

除了 Go 語言外,Flogo 亦提供 Web 和指令介面,讓開發者簡單而輕鬆開發。亦可支援 Kafka 數據串流處理和 AWS Lambda 無伺服器計算。

Flogo 專案網站: https://www.flogo.io/
GitHub: https://github.com/tibcosoftware/flogo
TIBCO 網站: https://www.tibco.com/

開放數據及源碼與應用開發

筆者 7月6日到中學生創新創意科技節參與開幕禮和擔任首位講者,向老師和同學分享開放數據及源碼與應用開發。筆者先介紹開放數據和一些應用開發例子。筆者認為開發智慧城市和智慧生活應用時,開放數據理應是必需而重要的公共資源。同時,數據是現今應用程式最重要的部份,方便生活之餘亦幫助分析用家行為,從而進一步改善生活。

數據是王 Data is King

筆者先以 Data is King 來開場,引用美國哈佛大學甘迺迪政府學院公共政策學系講師 David Eaves 教授的政務開放數據的三個定律來介紹開放數據。再介紹萬維網(World Wide Web)發明人 Tim Berners-Lee 爵士設立的五星級開放數據分類,來讓會眾了解開放數據最基本要求:先是開放授權,然後是結構性的數據,到開放數據互連的終極目標。

然後筆者講解數據與程式在系統架構和傳遞的關係,介紹多個台灣和香港應用開放數據的例子。但世事總不是完美,筆者亦會說明沒有開放數據時,除了用不同方式向政府部門提出外,開發者如何準備數據。其中一個做法是 web scraping,筆者介紹 Python 編程語言有多套 web scraping 工具可用,並介紹 XPath 和 Regular Expression 兩種方法。

開放源碼 得著自由

筆者在第二部份介紹開放源碼與應用開發,先以得著自由來開場,開放源碼讓我們開發和使用軟件同樣得著自由。筆者先介紹開放源碼源自自由軟件,講解自由軟件定義四大自由。然後開始說歷史,80 年代部份使用 UNIX 的開發者創立自由軟件概念和 GNU 計劃,一步一步用自由軟件取化 UNIX 的程式。直到 Linux 內核出現而成為 GNU/Linux 操作系統,發展出不同 Linux 發行版本。同時 90 年代互聯網和萬維網發展,出現開放源碼的 Apache 網頁伺服器,同時為方便營銷而推出新名詞 Open Source(開放源碼)。然後開放源碼發展到不同領域,例如桌面環境 GNOME、網頁瀏覽器 Firefox,到近年在雲端、區塊鍵、人工智慧、DevOps、手機開發等。GitHub 亦蘊藏很多軟件,就像一個開源短短的金礦。不少開源的編程語言在20年間出現,讓開發者不需購買編程語言就能做不同類型應用開發。筆者亦建議會眾透過貢獻回饋社群,亦介紹香港教育界相關的開源軟件:合乎教育局小學常用字規範的自由香港字型,和學校管理系統 Gibbon。筆者在總結時,希望大家能得著科技和生活的自由。

開放數據及源碼與應用開發演講簡報檔案: https://docs.google.com/presentation/d/1atjRidVZ-QbydFUYaamteG7WAKP-ORoWy4utSTCjrFE/edit?usp=sharing

請成為 Patreon 會員支持森路歷程寫作及筆者的開源工作。 – https://www.patreon.com/sammyfung