源起

2009 年,飞漫软件围绕其核心技术 MiniGUI 的业务走上巅峰时,危机也随之而来。自 2007 年谷歌宣布开源 Android 之后,Android 的发展势如破竹。当我在深圳随便一个写字楼的电梯间都能听到人们在谈论 Android 的时候,我的心情难于言表——MiniGUI 的业务怕是难以为继了。

 Android 的崛起,将一众围绕手机做业务的软件公司打翻在地,大如做浏览器的爱可信、小如做图形系统的飞漫软件。曾在 2006 年委托飞漫开发基于 Java 的手机方案,后来又投资飞漫的王总有一次跟我讲:“Android 搞掉了一个产业,飞漫算个啥。”听到这话,我内心稍有安慰。

作为一个自救策略,飞漫内部在 2009 年前后也启动了一个操作系统项目,称为HybridOS,中文名为“合璧”。这个项目其实没有做实质性的开发。我们做了一些预研,写了几页 PPT,然后找王总聊。王总说,可以到市场上找人聊聊,看看有没有人愿意为此买单,如果有人愿意买单,就可以做。当然,结果就是几乎得不到任何积极的市场反馈,于是作罢。此后过了两年,飞漫申请注册的 HybridOS 和合璧这两个商标却都审批通过了。

当初这个操作系统之所以命名为 HybridOS,是因为它的主要技术特性就是整合了 Java和 Web 技术。开发者既可以用 Java 语言编程,也可以用 JavaScript 语言编程——给开发者的选择越多不是越好吗?历史总是惊人的相似。十年后,华为发布鸿蒙操作系统,在其PPT 中也提到,鸿蒙兼容 Android 和 Web App——前者使用 Java 语言,后者使用JavaScript 语言。

2009 年之后的十年间,为了生存,飞漫的研发团队做过 Android App 开发,定制过Android ROM,开发过网站。现实将我和一些骨干开发人员逼成了熟悉内核、各种基础库、服务器后端、网页前端、移动客户端等等技术在内的、啥都能干的全栈工程师。

随着我们对 Android、iOS 等操作系统的了解,我们发现,一个操作系统给最终应用开发者的东西并不是越多越好,而是越简单越好。另外,操作系统如果要在竞争中胜出,需要满足一些基本的条件,所以有了我一系列谈论操作系统方法论的文章,有兴趣的读者可以关注“考鼎录”公众号查看这些文章。

另一方面,操作系统是一项需要长期投入的项目,任何一家体量没有达到谷歌、苹果、华为这种规模的公司,都无法承受开发一个新操作系统对应的庞大而漫长的投资——回过头来看,当年我们想以飞漫几十号人的小团队去做一个操作系统,面对 Android 这辆战车,HybridOS 就是螳臂啊!

但是,在开源软件大行其道的今天,除了华为这种体量的公司有能力自行设计和开发操作系统之外,还有一条道路来发展我们的操作系统——开源协作。

第一,操作系统的开发投入长期而巨大,单个企业很难承受,协作有利于分散投资,降低风险。

第二,通过协作,可避免国内厂商在基础软件方面的重复投入。

第三,国内基础软件研发人才稀缺,协作是形成人才优势的唯一选择。

第四,基于基础软件的传统商业模式在国内的运营难度较大,协作有利于参与各方的知识产权保护。

因此,当 2018 年飞漫软件重启 HybridOS 项目时,我们赋予 HybridOS 的内涵也发生了重大变化:HybridOS 是协作的成果,而不是技术的堆砌。也就是说,“Hybrid/合璧”指的是联合、协作,而不是混合技术。正所谓:

鸿蒙初开,天地混沌;
合璧联珠,方能大成!

合璧的设计目标以及和鸿蒙的对比

HybridOS 的设计目标大致可以总结为如下几点:

  1. 基于 JavaScript 语言发展 API(应用编程接口)。和华为鸿蒙不同,我们使用JavaScript 作为唯一的应用开发语言。
  2. 在 HTML5 技术上提出 HVML 语言,兼容 WebApp 的同时,重点解决目前的 Web 前端开发技术适用智能设备、物联网环境的问题。
  3. 在以上两点基础上提供统一的 App 开发框架,使 HybridOS 或相关技术可用于开发跨操作系统应用,也就是所谓的“Universal App”。
  4. 提供灵活的物物互联支持,比如 HTTP、MQTT、CoAP等协议,同时发展 HybridOS自己的分布式安全消息协议,用于实现软件组件(单机环境或者联网环境下)的消息通讯,并和 HVML 恰当融合。
  5. 内置的安全机制。通过内置的安全机制来提供身份认证等服务,可考虑使用区块链技术来强化物物互联时的安全机制。
  6. 支持多种操作系统内核,包括 Linux 以及华为鸿蒙内核或者其他各种 RTOS。(注:Linux 是首选操作系统。)

有兴趣的读者可以访问如下网页了解 HybridOS 的主要设计思路:

https://github.com/FMSoftCN/hybridos

HybridOS发起.png

从上图看出,合璧和鸿蒙在设计思路和开发模式上有很大不同。但这并不意味着两者就是你死我活的竞争关系,相反,合璧和鸿蒙将会是一种竞合关系。

鸿蒙的开发自下而上,以内核、工具等方面的创新为主,合璧的开发自上而下,以应用框架创新为主。合璧会支持鸿蒙微内核,而鸿蒙也许会采用合璧的应用框架。

协作目标

我将协作目标确定为:“开源、创新、协作、商业友好”。

这里的“开源”强调两点。第一,要充分利用已有的开源软件以及开源生态。第二,回馈开源社区。比如操作系统的某个组件,已经有相应的成熟开源软件了,我们就应该使用这个组件;如果我们修改了其中的某个缺陷或者增强了某个功能,我们应该回馈给该软件,或者以相同的许可证维护一份自己的版本。

“创新”自然不必说,没有创新的技术堆砌无法形成有效竞争力。

“协作”指通过参与者各方的通力合作来完成整个操作系统的开发和迭代,并将建立一个开源协作的中国典范作为协作本身的目标来实施。也就是说,协作不仅仅是手段,也是一个目标。

如此定义这个目标,是为了走出“一个中国人是一条龙,三个中国人是一条虫”这个怪圈。这需要各方参与者通过恪守共同的原则或准则来保障之,就如同《华为基本法》一样,最好能够形成一个书面的公开文件,并不断完善和修正。

“商业友好”是指参与者以及操作系统的上下游用户,都能获得相应的收益。这一目标和“协作”目标互为保障——没有利益的协作无法长久,良好的协作应充分保障各方利益。

协作模型

协作的基本模型,是建立一个跨企业的虚拟研发团队。初期,参与者的角色大致可以分为如下两类:

  • 发起人:负责整个系统的架构以及关键技术的研发,负责管理整个虚拟研发团队。
  • 会员:提供资金支持和/或人力资源支持。会员可获得如下收益:
    • 核心知识产权许可费或授权使用费的免除或优惠。
    • 会员间的知识产权分享或者共享机制。
    • 深度参与 HybridOS 开发过程,缩短自身产品的开发周期。
    • 人才培养、学术研究、社区荣誉。

虚拟团队的初期建设目标和开发目标

到 2020 年第二季度,我们预期建设一个如下规模的虚拟开发团队:

  • 发起人,10 人规模的开发及管理团队。
  • 会员单位,10 家,总共 20 名或更多的开发工程师。

第一步执行目标是在 2020 年年底,发布 HybridOS 1.0 版本。有兴趣成为会员单位的,可参考下面列出的 HybridOS 1.0 主要开发任务:

  1. hiWebKit,用于支持 HVML,基于 WebKit 开发。hiWebKit 将支持设备端以及 Windows、macOS、Linux 等桌面客户端,以及 Android、iOS 移动客户端。
  2. 设备端
    • 多协议支持框架。通过该框架,任何 HybridOS 应用只要开发一次,就可以同时支持多种应用层协议,比如 HTTP、CoAP 等。
    • 多协议支持框架下的 HTTP 服务器、CoAP 服务器、WebSocket 服务器、流媒体服务器、MQTT 代理等。
    • 日志服务器、安全服务器。
    • 其他标准服务器以及守护进程。
  3. 客户端:
    • hiWebKit 针对各客户端操作系统的移植以及运行环境。
  4. 云端:
    • 设备注册及认证服务。
    • 在线固件升级服务。
    • 系统服务及特定应用的在线升级服务。
    • MQTT 服务器。
    • 身份认证服务。

我们欢迎如下类型的企业成为会员单位:

  • 芯片公司。芯片公司要花费大量人力来支持某个特定的操作系统,开发对应的 BSP,即板级支持包,深度参与合璧开发,将有利于芯片的定义并缩短上市时间
  • 硬件产品公司。任何一个操作系统开发出来,主要就是给硬件产品公司用的。
  • 互联网公司。合璧提供的技术将有助于互联网公司开发跨操作系统的统一 App。
  • 云计算公司。合璧需要特定的云端服务。
  • 基础软件公司。
  • 高校。

要成为会员单位,请联系魏永明(如果有其联系方式的话),或者致信:hybridos@fmsoft.cn。

总策划人介绍

魏永明,获清华大学工学学士、硕士学位。其主持的 MiniGUI 自由软件项目,是国内知名的几大开源软件项目之一,广泛应用于功能手机、数码相框、智能硬件等嵌入式/物联网产品中。魏永明于 2002 年创立北京飞漫软件有限公司,成功实践了围绕开源软件的双许可证商业模式。魏永明为 Linux 及开源软件在中国的普及和应用做了大量工作,翻译或编著若干技术著作(《Linux 实用教程》、《Linux 设备驱动程序》等);2012 年,鉴于他在开源软件领域做出的突出贡献,被“中国开源软件推进联盟”评选为“开源软件杰出贡献人物”。


加载对话