主頁 > 作業系統 > 魏永明: MiniGUI的涅槃重生之路

魏永明: MiniGUI的涅槃重生之路

2020-10-06 14:13:57 作業系統

本文系轉載,著作權歸作者所有,
商業轉載請聯系作者獲得授權,非商業轉載請注明出處,

作者: 魏永明

來源: 微信公眾號linux閱碼場(id: linuxdev)

file

本文背景

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/

file

自上面這篇文章發布以來,又有八年時間過去了,斗轉星移,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 產品的成熟性,目前,張作為技術專家供職于阿里巴巴,呂在互聯網領域創業,

file

上面提到的這些曾供職于飛漫軟體的前同事,為 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 的軟體堆疊當中,應重點做好如下三方面的作業:

  1. 在底層,為適配最新的硬體和 Linux 內核技術(主要指 GPU、OpenGL ES、Open VG 和 Direct Rendering Manager),做一些相關的作業,MiniGUI 3.0 當中,以視窗為單位,MiniGUI 支持虛擬緩沖區渲染,以行程為單位,通過使用特定的圖形引擎,可以將單個行程顯示在單獨的顯示平面(Surface)上,在這兩點基礎上結合 GPU 渲染,就可以實作 Android、iOS 等智能手機作業系統的 UI 效果了,
  2. 為方便MiniGUI應用的開發,需要發展集成開發環境,可以探索更高級的編程介面封裝,甚至使用腳本語言來撰寫 MiniGUI 應用程式甚至一般的嵌入式應用程式,董在飛漫作業期間發展的 mGNCS 和 miniStudio 是一個非常好的嘗試,可以作為繼續發展的基礎,但由于這幾年移動互聯網的大力發展,導致 C/C++ 開發者越來越稀缺,如果新的編程框架仍然使用 C/C++ 作為編程語言,則會對產品或技術的推廣造成很大的影響,作為工具,需要考慮降低開發者的入門門檻,另外,新的編程介面封裝,不應該僅僅限于 GUI 編程,而應該在一個統一的應用開發模型下,將嵌入式、物聯網設備開發的其他部分也有機整合起來,這方面,近幾年發展起來的服務器端 JavaScript 框架 Node.js 是一個可以參考的成功案例,當然,嵌入式或者物聯網設備的開發有資源受限的問題,在開發效率和程式性能方面需要作出一些權衡,這有難度,但這也許就是可以創新的地方,
  3. 和其他開源專案合作,將 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)

file

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/159440.html

標籤:Linux

上一篇:神舟筆記本Hasee安裝Ubuntu Desktop和Gnome

下一篇:解決zabbix監控因php問題導致圖形界面中文亂碼方法

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • CA和證書

    1、在 CentOS7 中使用 gpg 創建 RSA 非對稱密鑰對 gpg --gen-key #Centos上生成公鑰/密鑰對(存放在家目錄.gnupg/) 2、將 CentOS7 匯出的公鑰,拷貝到 CentOS8 中,在 CentOS8 中使用 CentOS7 的公鑰加密一個檔案 gpg -a ......

    uj5u.com 2020-09-10 00:09:53 more
  • Kubernetes K8S之資源控制器Job和CronJob詳解

    Kubernetes的資源控制器Job和CronJob詳解與示例 ......

    uj5u.com 2020-09-10 00:10:45 more
  • VMware下安裝CentOS

    VMware下安裝CentOS 一、軟硬體準備 1 Centos鏡像準備 1.1 CentOS鏡像下載地址 下載地址 1.2 CentOS鏡像下載程序 點擊下載地址進入如下圖的網站,選擇需要下載的版本,這里選擇的是Centos8,點擊如圖所示。 決定選擇Centos8后,選擇想要的鏡像源進行下載,此 ......

    uj5u.com 2020-09-10 00:12:10 more
  • 如何使用Grep命令查找多個字串

    如何使用Grep 命令查找多個字串 大家好,我是良許! 今天向大家介紹一個非常有用的技巧,那就是使用 grep 命令查找多個字串。 簡單介紹一下,grep 命令可以理解為是一個功能強大的命令列工具,可以用它在一個或多個輸入檔案中搜索與正則運算式相匹配的文本,然后再將每個匹配的文本用標準輸出的格式 ......

    uj5u.com 2020-09-10 00:12:28 more
  • git配置http代理

    git配置http代理 經常遇到克隆 github 慢的問題,這里記錄一下幾種配置 git 代理的方法,解決 clone github 過慢。 目錄 git配置代理 git單獨配置github代理 git配置全域代理 配置終端環境變數 git配置代理 主要使用 git config 命令 git單獨 ......

    uj5u.com 2020-09-10 00:12:33 more
  • Linux npm install 裝包時提示Error EACCES permission denied解

    npm install 裝包時提示Error EACCES permission denied解決辦法 ......

    uj5u.com 2020-09-10 00:12:53 more
  • Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包

    Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包。 18 (flaskApi) [root@67 flaskDemo]# yum -y install nginx 19 已加載插件:fastestmirror, langpacks 20 Loading ......

    uj5u.com 2020-09-10 00:13:13 more
  • Linux查看服務器暴力破解ssh IP

    在公網的服務器上經常遇到別人爆破你服務器的22埠,用來挖礦或者干其他嘿嘿嘿的事情~ 這種情況下正確的做法是: 修改默認ssh的22埠 使用設定密鑰登錄或者白名單ip登錄 建議服務器密碼為復雜密碼 創建普通用戶登錄服務器(root權限過大) 建立堡壘機,實作統一管理服務器 統計爆破IP [root ......

    uj5u.com 2020-09-10 00:13:17 more
  • CentOS 7系統常見快捷鍵操作方式

    Linux系統中一些常見的快捷方式,可有效提高操作效率,在某些時刻也能避免操作失誤帶來的問題。 ......

    uj5u.com 2020-09-10 00:13:31 more
  • CentOS 7作業系統目錄結構介紹

    作業系統存在著大量的資料檔案資訊,相應檔案資訊會存在于系統相應目錄中,為了更好的管理資料資訊,會將系統進行一些目錄規劃,不同目錄存放不同的資源。 ......

    uj5u.com 2020-09-10 00:13:35 more
最新发布
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:43:21 more
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:42:36 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:26:53 more
  • 設定Windows主機的瀏覽器為wls2的默認瀏覽器

    這里以Chrome為例。 1. 準備作業 wsl是可以使用Windows主機上安裝的exe程式,出于安全考慮,默認情況下改功能是無法使用。要使用的話,終端需要以管理員權限啟動。 我這里以Windows Terminal為例,介紹如何默認使用管理員權限打開終端,具體操作如下圖所示: 2. 操作 wsl ......

    uj5u.com 2023-04-19 09:25:49 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:19:04 more
  • Linux學習筆記

    IP地址和主機名 IP地址 ifconfig可以用來查詢本機的IP地址,如果不能使用,可以通過install net-tools安裝。 Centos系統下ens33表示主網卡;inet后表示IP地址;lo表示本地回環網卡; 127.0.0.1表示代指本機;0.0.0.0可以用于代指本機,同時在放行設 ......

    uj5u.com 2023-04-18 06:52:01 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:50 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:01 more
  • 你是不是暴露了?

    作者:袁首京 原創文章,轉載時請保留此宣告,并給出原文連接。 如果您是計算機相關從業人員,那么應該經歷不止一次網路安全專項檢查了,你肯定是收到過資訊系統技術檢測報告,要求你加強風險監測,確保你提供的系統服務堅實可靠了。 沒檢測到問題還好,檢測到問題的話,有些處理起來還是挺麻煩的,尤其是線上正在運行的 ......

    uj5u.com 2023-04-05 16:52:56 more
  • 細節拉滿,80 張圖帶你一步一步推演 slab 記憶體池的設計與實作

    1. 前文回顧 在之前的幾篇記憶體管理系列文章中,筆者帶大家從宏觀角度完整地梳理了一遍 Linux 記憶體分配的整個鏈路,本文的主題依然是記憶體分配,這一次我們會從微觀的角度來探秘一下 Linux 內核中用于零散小記憶體塊分配的記憶體池 —— slab 分配器。 在本小節中,筆者還是按照以往的風格先帶大家簡單 ......

    uj5u.com 2023-04-05 16:44:11 more