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

来源:https://www.cnblogs.com/linuxdev/archive/2019/10/28/11755803.html
-Advertisement-
Play Games

本文系轉載,著作權歸作者所有。 商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。 作者: 魏永明 來源: 微信公眾號linux閱碼場(id: linuxdev) 本文背景 MiniGUI是最負盛名的開源Linux圖形用戶界面支持系統之一。本文是魏永明老師於公元2017年9月1日最新原創的討論Min ...


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

作者: 魏永明

來源: 微信公眾號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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • (手機橫屏看源碼更方便) 註:java源碼分析部分如無特殊說明均基於 java8 版本。 註:線程池源碼部分如無特殊說明均指ThreadPoolExecutor類。 簡介 上一章我們一起重溫了下線程的生命周期(六種狀態還記得不?),但是你知不知道其實線程池也是有生命周期的呢?! 問題 (1)線程池的 ...
  • JPA是Spring Data框架的其中一個模塊,全稱為Java Persistence API,是一個持久層規範,Hibernate框架是JPA實現之一。 本文內容: (1)項目構建 (2)數據訪問層與業務層 (3)自定義數據存儲邏輯 (4)方法名查詢 (5)使用@Query註解 ...
  • [TOC] 軟體開發架構 C/S架構 client:客戶端 server:服務端 優點:軟體的使用穩定,網路資源占用少 缺點: 若需要使用多個軟體,需要下載多個客戶端 服務端更新後,用戶也需要跟著下載更新 B/S架構 browser:瀏覽器 server:服務端 優點:以瀏覽器充當客戶端,服務端更新 ...
  • 什麼是 PWM 在解釋 PWM 之前首先來瞭解一下電路中信號的概念,其中包括模擬信號和數字信號。 模擬信號 是一種連續的信號,與連續函數類似,在圖形上表現為一條不間斷的連續曲線。 數字信號 為只能取有限個數值的信號,比如電腦中的高電平(1)和低電平(0)。 PWM(Pulse Width Modu ...
  • 1.基本概念 多線程與非同步是兩個不同概念,之所以把這兩個放在一起學習,是因為這兩者雖然有區別,但也有一定聯繫。 多線程是一個技術概念,相對於單線程而言,多線程是多個單線程同時處理邏輯。例如,假如說一個人把水從A地提到B點可看作是單線程,那麼如果兩個人同時去做事(可以是相同的一件事,也可以是不同的一件 ...
  • 動手造輪子:實現一個簡單的依賴註入(零) Intro 依賴註入為我們寫程式帶來了諸多好處,在微軟的 .net core 出來的同時也發佈了微軟開發的依賴註入框架 "Microsoft.Extensions.DependencyInjection" ,大改傳統 asp.net 的開發模式,asp.ne ...
  • <ListView x:Name="lv"> <ListView.ItemsPanel> <ItemsPanelTemplate> <StackPanel Orientation="Vertical"/> </ItemsPanelTemplate> </ListView.ItemsPanel> <L... ...
  • 1.Install latest Chrome,Selenium.WebDriver, ChromeDriver Selenium.WebDriver 3.141.0; Selenium.WebDriver.ChromeDriver 78.0.3904.7000; Google Chrome Ver ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...