本文系轉載,著作權歸作者所有。 商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。 作者: 魏永明 來源: 微信公眾號linux閱碼場(id: linuxdev) 本文背景 MiniGUI是最負盛名的開源Linux圖形用戶界面支持系統之一。本文是魏永明老師於公元2017年9月1日最新原創的討論Min ...
本文系轉載,著作權歸作者所有。
商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。
作者: 魏永明
來源: 微信公眾號linux閱碼場(id: linuxdev)
本文背景
MiniGUI是最負盛名的開源Linux圖形用戶界面支持系統之一。本文是魏永明老師於公元2017年9月1日最新原創的討論MiniGUI的涅槃重生之路的文章。
作者簡介
魏永明,獲清華大學工學學士、碩士學位。其主持的 MiniGUI 項目,是早期國內最知名的幾大開源軟體項目之一,曾廣泛應用於功能手機、數位相框等嵌入式產品中。魏永明於2002年創立北京飛漫軟體有限公司,成功實踐了圍繞開源軟體的雙許可證商業模式;於2015年10月聯合創辦北京玖柏圖技術股份有限公司並擔任 CEO。魏永明為 Linux 及開源軟體在中國的普及和應用做了大量工作,翻譯或編著若幹技術著作(《Linux 實用教程》、《Linux 設備驅動程式》等);2013年,鑒於他在開源軟體領域做出的突出貢獻,被“中國開源軟體推進聯盟”評選為“開源軟體傑出貢獻人物”。
前段時間去深圳出差,約了幾個飛漫的前同事一起吃飯喝酒,其中高總目前供職於深圳一家數控系統開發廠商。2000年開始,高總就在 TCL 和創維力推 Linux + MiniGUI 的智能電視方案,甚至還基於 MiniGUI 開發了自己的瀏覽器。然而大家都知道,智能電視這一類產品在十年之後(2010年)才獲得了市場的認同並得到了大的發展和普及,其中 Android 從技術上保證了智能電視這類產品的成功,高總力推的方案在當時得不到產品部門的認同,其實無關技術,而是市場還不成熟。大家談起這些往事,各個唏噓不已。
MiniGUI 作為生長於國內土壤的一款開源軟體,1999年發佈了第一個版本,2003年左右成熟起來,併在嵌入式產品類型蓬勃發展的 2000年到2010年之間獲得了大量的應用,廣泛應用於工業控制系統、功能手機、數位相框等類型的產品中,其中尤以華為的數位相框、聯芯的功能手機方案、RDA 的功能手機方案為代表。本人於 2002 年成立了飛漫軟體,嘗試利用開源和商業並舉的方式(雙許可證模式)運營 MiniGUI 及其產品,獲得了一定意義上的成功,期間也有很多經驗教訓。有關詳情,大家可以在網上搜索本人在 2009 年發表的《MiniGUI 十年回顧》這篇文章:
http://www.fmsoft.cn/zhcn/about/blog/minigui/
自上面這篇文章發佈以來,又有八年時間過去了,鬥轉星移,AI 成為下一個高科技領域的競爭焦點。在操作系統及基礎軟體領域,Android 已經占據了除蘋果之外的所有智能手機的市場份額,但並沒有完全替代所有基於 Linux 的智能設備以及其他更多的嵌入式實時系統,仍然有很多客戶在使用 MiniGUI 開發各類智能設備;另一方面,MiniGUI 當年的競爭對手 Qt 幾易其主,但仍然在頑強生存著。當年時興的“嵌入式系統”字眼,已被“物聯網”取代,華為的 liteOS以及其他本土開發人員發展起來的 RT-Thread、SylixOS 等 RTOS(實時操作系統)產品,獲得了政府部門甚至資本市場的支持,從而獲得了新的發展契機。
作為 MiniGUI 的原創者,本人對這款軟體的感情自不必說。但是,除了我本人之外,還有更多的飛漫軟體同事(包括高總這些 MiniGUI 的早期用戶及開發者)為 MiniGUI 的發展傾註了諸多心血。
萬目前供職於深圳一家明星企業,是當年飛漫深圳研發團隊的負責人,侯是架構師,現在珠海創業。2007年,飛漫深圳團隊在萬和侯的領導下,開始負責 MiniGUI 的維護工作。在2009年左右,這個團隊為 MiniGUI 開發了一整套的動畫支持框架和界面開發技術。若沒有 Android 的橫空出世,這些技術本可以應用於功能手機的升級改造中,為功能手機提供優秀的 UI/UX 解決方案。但 Android 的開源免費,Google 的大力推廣,卻讓這些技術喪失了應用和發展的機會。
董目前供職於小米,是 miniStudio 產品的主要開發者。miniStudio 是一個基於 Eclipse 的集成開發環境,提供了“所見即所得”的 GUI 界面編輯工具。為了實現GUI 應用的編程便利性,董改造了 MiniGUI 控制項的編程框架,開發了 mGNCS(新控制項集)組件,並且引入外觀渲染器這樣一種高級的 UI 定製體系和方案,領導團隊開發了 miniStudio 產品。時隔多年的今天,當我從伺服器找到 miniStudio 1.0.8 for Windows 版本,安裝到電腦上並運行時,我仍然驚訝於這款軟體提供的可視化編程能力,就算在今天,也是難能可貴的!但飛漫軟體並沒有花精力推廣和發展 miniStudio,也沒有基於 miniStudio 發展出可以良性迴圈的商業模式出來,不禁令人扼腕嘆息。
mDolphin 是基於 WebKit的瀏覽器產品,張、呂為前後兩名主力開發人員,該產品的開發歷時多年持續演進,甚至成功應用於聯芯的功能手機方案當中。mDolphin 是 MiniGUI 上的一款典型的大型應用軟體,除了其本身的應用價值之外,也有力地證明瞭 MiniGUI 產品的成熟性。目前,張作為技術專家供職於阿裡巴巴,呂在互聯網領域創業。
上面提到的這些曾供職於飛漫軟體的前同事,為 MiniGUI 的發展付出了自己的青春年華,他們的技術能力也得到了極大的提升和鍛煉。不論他們後來從事什麼行業,或打工或創業,在飛漫軟體圍繞 MiniGUI 所做的開發工作,仍然是其履歷中重要的一筆。除了他們之外,在長達十多年的發展歷程中,飛漫軟體前後為業界培養了近百名優秀的高級軟體工程師,限於篇幅不能一一列舉。他們有的供職於騰訊、阿裡等大型互聯網公司的關鍵技術崗位,有的在移動互聯網等領域創業,他們圍繞著 MiniGUI 所做的開發和維護工作,讓他們受益一生。
上周去深圳,當萬在其供職的企業熟練地向他當前的同事演示和講述 MiniGUI 之上的動畫框架和相關技術時,我才深切感受到,高、萬、侯、董以及其他為 MiniGUI 的發展傾註過精力的開發人員對 MiniGUI 的感情並不比我差多少。
和高總他們吃飯的時候,高總提到 MiniGUI 仍然有很旺盛的需求,仍然可以繼續發展。其實就這個問題,幾乎每次到深圳和高、侯他們吃飯喝酒,都會拿出來爭論一番。他們認為 MiniGUI 仍然有旺盛的市場需求,應該繼續發展,就這麼丟下不管實在可惜;我則認為每個產品都有自己的生命周期,MiniGUI 從 1999 年到現在都已經十多年了,生命周期差不多到頭了。
本人從 2010 年開始,領導原飛漫軟體的團隊開發過 Android 上的工具類 App(領航桌面、鎖屏等),定製過智能電視方案,現在則另起爐竈在智能硬體和移動互聯網領域創業。大概從2012 年開始,MiniGUI 的開發處於停滯狀態,除了將萬、侯他們開發的最新版本以及 mDolphin 開源發佈之外,幾乎沒有再做過大的更新。但從2015年開始,MiniGUI 的需求又變得旺盛起來,每年都會有客戶主動找飛漫軟體獲得 MiniGUI 的商業授權。
折騰多年以後,回過頭來反思 MiniGUI 和飛漫軟體走過的路,我之所以認為 MiniGUI 的生命周期已到,大致是由於飛漫軟體未能取得心目中的成功。換句話說,我把技術和生意搞混淆了。一個生意可能無法持續按照單一的模式去運營,但技術卻不會輕易過時。
舉個典型的例子 MySQL。MySQL的早期運營公司使用雙許可證模式,獲得了一定程度上的商業成功,後來被 Oracle 收購,雙許可證模式基本已經完成了它的歷史使命,但 MySQL 的應用卻隨著互聯網、移動互聯網、雲服務的發展而越發普及,就算後來出現了諸多 NoSQL 資料庫,但 MySQL 仍然展現著其旺盛的生命力。
再比如 OpenGL 這類規範或者基礎設施,發展了幾十年,從未見過其過時。Apache、X Window 等等技術或開項目,幾乎是開源世界的常青樹,Linux 內核就更不用說了。
顯然,只要是有市場需求和用戶基礎的基礎軟體,持續發展才是其主旋律;容易過時的是生意,而不是技術本身。
作為一款開源軟體作品,MiniGUI 在技術上是成熟的,成功的;失敗的只是生意:飛漫軟體並沒有因為 MiniGUI 而獲得大的發展。我相信拋開生意,仍然有可能找到一種方法可以讓 MiniGUI 繼續發展下去。
就如何發展 MiniGUI 的問題,最近集中思考了幾天。後來在宋寶華老師(知名 Linux 內核專家)的微信群里,宋老師找我約稿,我才確定了本文的題目:《MiniGUI 的涅槃重生之路》。
一、先談最容易談的:技術方面
技術方面,在圍繞 MiniGUI 的軟體棧當中,應重點做好如下三方面的工作:
- 在底層,為適配最新的硬體和 Linux 內核技術(主要指 GPU、OpenGL ES、Open VG 和 Direct Rendering Manager),做一些相關的工作。MiniGUI 3.0 當中,以視窗為單位,MiniGUI 支持虛擬緩衝區渲染,以進程為單位,通過使用特定的圖形引擎,可以將單個進程顯示在單獨的顯示平面(Surface)上。在這兩點基礎上結合 GPU 渲染,就可以實現 Android、iOS 等智能手機操作系統的 UI 效果了。
- 為方便MiniGUI應用的開發,需要發展集成開發環境,可以探索更高級的編程介面封裝,甚至使用腳本語言來編寫 MiniGUI 應用程式甚至一般的嵌入式應用程式。董在飛漫工作期間發展的 mGNCS 和 miniStudio 是一個非常好的嘗試,可以作為繼續發展的基礎。但由於這幾年移動互聯網的大力發展,導致 C/C++ 開發者越來越稀缺,如果新的編程框架仍然使用 C/C++ 作為編程語言,則會對產品或技術的推廣造成很大的影響。作為工具,需要考慮降低開發者的入門門檻。另外,新的編程介面封裝,不應該僅僅限於 GUI 編程,而應該在一個統一的應用開發模型下,將嵌入式、物聯網設備開發的其他部分也有機整合起來。這方面,近幾年發展起來的伺服器端 JavaScript 框架 Node.js 是一個可以參考的成功案例。當然,嵌入式或者物聯網設備的開發有資源受限的問題,在開發效率和程式性能方面需要作出一些權衡,這有難度,但這也許就是可以創新的地方。
- 和其他開源項目合作,將 MiniGUI 作為其原生支持選項,比如 WebKit。此舉可一方面發展 MiniGUI 之上的關鍵應用軟體,另一方面可以擴大 MiniGUI 的生態體系,得到更多人的關註。
以上技術方面的未盡事宜,只要有開發者,假以時日,都是可以做出來的。但最麻煩的是誰來養這些開發者,或者,說白了錢從哪兒來?
二、如果是生意,該如何做?
這麼多年靠技術創業,我發現單純靠技術做生意是最難的,要難過任何一種傳統的生意模式,比如開飯館,做代理等等。大家都知道,在中國市場,軟體的價值往往會被低估,通過賣軟體副本來賺錢的時代也已經一去不復返,所以中國這篇土壤上從來沒有孕育出微軟這樣的巨頭。在這樣的一個大環境下,飛漫之所以能夠依靠 MiniGUI 這樣一個單一業務堅持十多年,在 MiniGUI 停止更新後還能有一些收入,可以說完全是因為運氣。但任何事情都有雙面性,中國企業在互聯網商業模式方面的探索,促進了騰訊、阿裡等企業的飛速發展。所以,這裡我可以探討一個假設:假如能夠重來,我會選擇什麼樣的模式來做 MiniGUI 這個生意?
首先,我不會天真地認為 MiniGUI 這個生意可以做到每年上億的營業收入,我認為一千萬元的年收入規模對這樣一個軟體來講就已經很好了。
其次,我認為 2010 年之前飛漫軟體採取的雙許可證商業模式是正確的,是當時條件下的正確選擇,為飛漫軟體的進一步發展積累了資金。但在 2010 年或更早,應該作出商業模式上的調整(當然,前提是本人不認為 MiniGUI 的生命周期已結束,這是眼界的局限性問題)。
最後,圍繞 MinIGUI 的生意模式,正確的做法應該是:利用開源軟體優勢,持續擴大用戶(開發者)群體,維持一個小規模(10到15人左右)的軟體公司,在確保公司可以長期生存的情況下,靜候市場發生變化,尋找爆發的機會或者被收購。
就我目前的狀況,我的精力不允許再組建一個完整的團隊來運營MiniGUI,將其作為一個生意來做。但在這裡,我可以給出一個供參考的商業模式,當然,這個商業模式亦可供 RT-Thread、SylixOS 等基礎軟體創業團隊參考:
A. 使用 Apache許可證發佈基礎軟體(比如操作系統、函數庫等),不要再使用 GPL/LGPL 等條款發佈。這樣可以迅速獲得最大程度的商業應用,擴大市場占有率。要知道,假如 Android 使用 GPL 許可證發佈,是絕對不可能獲得如此大的成功的。
B. 提供收費的開發工具,比如 MiniGUI 的集成開發環境miniStudio,並按開發人員數量及使用年限提供許可。開源這類工具軟體的意義不大,但這類工具軟體運行在桌面電腦上,所以可以通過雲端來控制其許可證,還可以通過雲端來分發一些收費的模塊或者提供技術支持服務。這樣的模式下,工具軟體的銷售成本就會變得非常低,用戶甚至可以在網頁上實現線上下單,並通過郵件獲得許可證。
假如採取以上的商業模式,通過適當推廣,每年在全球範圍內發展和保持 500 名付費開發者,則基本上可以養活一個 15人規模的小軟體公司。假如推廣得力,達到一千萬元的年銷售規模也是可能的。
更多精彩更新中……歡迎關註賬號:linux閱碼場(id: linuxdev)