魏永明: MiniGUI的涅槃重生之路
http://www.elecfans.com/d/544139.html
本文背景
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 及其产品,获得了一定意义上的成功,期间也有很多经验教训。
自上面这篇文章发布以来,又有八年时间过去了,斗转星移,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 等基础软件创业团队参考:
-
使用 Apache许可证发布基础软件(比如操作系统、函数库等),不要再使用 GPL/LGPL 等条款发布。这样可以迅速获得最大程度的商业应用,扩大市场占有率。要知道,假如 Android 使用 GPL 许可证发布,是绝对不可能获得如此大的成功的。
-
提供收费的开发工具,比如 MiniGUI 的集成开发环境miniStudio,并按开发人员数量及使用年限提供许可。开源这类工具软件的意义不大,但这类工具软件运行在桌面电脑上,所以可以通过云端来控制其许可证,还可以通过云端来分发一些收费的模块或者提供技术支持服务。这样的模式下,工具软件的销售成本就会变得非常低,用户甚至可以在网页上实现在线下单,并通过邮件获得许可证。
假如采取以上的商业模式,通过适当推广,每年在全球范围内发展和保持 500 名付费开发者,则基本上可以养活一个 15人规模的小软件公司。假如推广得力,达到一千万元的年销售规模也是可能的。