引言
自《考鼎记》发表终章之后,业界除了因为华为的鸿蒙喧嚣了一阵子之外,并没有其他太多的热点事件。倒是前两天,魏森特发表了一篇文章叫《HVML 开发月报(2021年8月)》,说是要向关心 HVML 的朋友们汇报一下开发进展。不过,魏森特并没有开放已经完成的源代码。这让七爷我感觉有点困惑——“过程开源”这个词,好像是魏森特提出来的啊!
于是,我把魏森特请到良机酒家的阁楼上,聊了聊 HVML、开源和国产基础软件的那些事儿。本文就是这个访谈的实录。
访谈金句
摘录一些金句先睹为快:
“一个新东西要流行起来,首先要解决新的用户需求,开源只是促进了它的快速推广而已。拿 Git 来讲,它是全世界第一个针对大规模代码仓库在分布式开发模式中使用的这一特征开发的版本控制系统,跟 Linux 是第一个开源、免费且兼容 POSIX 的通用操作系统内核一样生逢其时。这样的技术或产品,准确抓住了市场的需求,不流行才怪。”
“我给个定性的估计:原先使用 Gtk+、Qt 等这类 Toolkit 库的应用,改用 HVML 之后,开发效率将提升至少十倍;如果考虑到自动化测试框架带来的好处,开发效率将提升至少百倍。而且吧,Gtk+、Qt 这类东西,有了 HVML,就可以扔到历史的垃圾堆里了。”
“牛还是要吹的,真要实现了呢?哈哈!再说,国内没啥技术突破的东西,牛都可以吹上天,前两天还有个文章说有大神把代码写成了史诗的样子……我们更要吹牛了,吹到全宇宙都是应该的!”
“我设计并组织团队开发 HVML,主要的出发点是为了给国产基础软件的开发者们打个样,告诉大家如何在基础软件领域做一些创新性的工作,另一方面,也是为了实践我自己提出的操作系统方法论,也就是为了实现我吹过的另外一个牛。”
“开源的好处大家已经谈得很多了,但任何事物都有两面性,开源也不例外。近几年,开源的坏处越来越多地表现了出来。比如,出现了大量低水平复制其他开源软件设计思想甚至代码的开源软件,质量参差不齐,我把这种东西叫做‘开源垃圾’;某些较为广泛使用的开源软件中,作者或者其他贡献者故意留出一些隐藏很深的缺陷或者漏洞;许多使用广泛的开源基础软件得不到良好的维护等等。”
“我以前就说过,中国的基础软件界最缺的是突破和创新,不论是技术上的还是产品上的。但我觉得根子上缺的是思想、认知以及方法上的突破和创新。”
“国家花大价钱支持国产操作系统为代表的国产基础软件领域,已经二十年了。总体而言,有进步。比如,用一堆开源软件攒出个操作系统的能力大有长进,各类操作系统如雨后春笋般冒出。但说实话,我们的竞争对手美国,也在进步,而且人家底子好,进步速度更快。我们在移植、适配、优化、集成、复制甚至抄袭开源软件的时候,人家在创造新的轮子。可以这么说,二十年前,我们落后美国二十年,二十年后,我们落后美国三十年!”
寒暄
立秋过了三天后,京城早晚的气温已经有了回落的感觉。早上九点多,我到了酒家的阁楼,开了空调,沏好了茶等魏森特的到来。等老魏过来的这时间,我仔细读了读他写的那第一篇《HVML 开发月报》,就算是为访谈做个准备吧。快十点时,我听到有人哐当几下从一楼爬到了阁楼。
“哐哐哐,你这是一步三个台阶跳上来的?!看来你这胳膊腿儿还挺灵光!”
“七爷啊,没听说过‘人老腿先老’的说法吗?您得向我学习锻炼起来啊。”
“哈哈,对,我也在琢磨这事儿呢。只是吧,我觉得跑步太枯燥了。”
“可能是您身体底子好,没感觉到身体走下坡路……我这几年算是体会到了,这岁月如杀猪刀……人到中年,不锻炼的话,毛病就找上门来了。不过还别说,锻炼的效果也很明显——身体好了,干啥都有劲儿了。”
“你老魏身上的担子重,压力大,工作强度高,的确需要多锻炼……改天我也锻炼起来,跟着你跑起来。”
“好,一言为定。”
“不废话了,快坐快坐,咱聊正题。你那第一篇《HVML 开发月报》我看了,一个月时间,看起来做了不少工作啊!你们几个人的开发团队啊?”
“七爷别急啊,我先喝口茶。”老魏坐到我对面的沙发里,倒了一杯茶抿了一口,“这茶不错……呃……没多少人,加上我才四个人,还有一个是兼职的。”说完话,老魏把嘴里的茶梗吐到了烟灰缸里边。
“对了,我戒烟了,七爷你不知道吧?都三个月了。”老魏看到烟灰缸,来了这么一句。
“啥?!二十年的烟龄,你居然就这么给戒了?”我嘴上这么说,心下却在琢磨:“据说不能跟成功戒烟的人深交,以后我得防着点你这老魏。”
“七爷你愿意抽就抽,我可以陪你抽一两根。”
听了这句话,我心想,看来这老魏并没有彻底戒烟,于是说道:“我不抽,馋死你,哈哈!”
“切……不抽更好!”
为什么设计 HVML?
“咱言归正传。仔细看了你文章中的 HVML 应用框架,我大概明白你的目标是啥。不过还是有点复杂。怎么能让一般人都能明白你设计 HVML 的初衷呢?”我问道。
老魏回答道:“七爷你是知道的,说起来我搞了二十多年的迷你龟(指 MiniGUI),但中间有几年我搞过移动互联网还有智能硬件,开发过很多网站和手机应用。后来物联网兴起,老美开始打压中国高科技产业,迷你龟的生意又回来了。但由奢入俭难啊,习惯了 Web 前端开发的便利性,就越来越难以接受使用 C、C++、Java 等语言来编写带有图形用户界面的应用程序——我发现使用 C、C++、Java 这类编程语言开发带龟(指 GUI)的应用,跟用牛刀杀鸡并无二致。就算有可视化的界面设计器帮助开发者,其开发效率也很难和网页前端技术相比。
“因此,这几年我一直在思考一个问题:能否将 Web 前端技术带到浏览器之外?比如可以让 C/C++/Java 程序,甚至 Python 这类脚本语言也能轻松地使用 Web 前端技术来开发带龟的应用。
“为了将 Web 前端技术引入到通用的带龟应用的开发中,开源社区也做了大量的探索性工作,比如 Electron 开源项目,就尝试用 Chromium + Node.js 来搞定一切。但这个项目未能流行起来,究其原因,跟 Web 前端技术本身的局限性有关:所有的一切都离不开浏览器,尤其是 JavaScript 编程语言。
“后来,我们在开源的浏览器引擎 WebKit 中,尝试引入了一些具有动态能力的标签,可以用来实现循环迭代、分支控制等功能。有了这个基础,我提出了一个大胆设想:何不干脆设计一种全新的标记语言?于是,就有了 HVML。
“简单来讲,HVML 尝试用一种新的思路来解决前面的那个问题:第一,将 Web 前端技术(主要是 DOM、CSS 等)引入到其他编程语言中,而不是用 JavaScript 替代其他编程语言。第二,采用类似 HTML 的描述式语言来操控 Web 页面中的元素、属性和样式,而非 JavaScript。
“在设计 HVML 的过程中,我有意使用了数据驱动的概念,使得 HVML 可以非常方便地和其他编程语言以及各种网络连接协议,如数据总线、消息协议等结合在一起。这样,开发者熟悉哪种编程语言,就使用这种编程语言来开发应用的非 GUI 部分,而所有操控 GUI 的功能,交给 HVML 来完成,它们之间,通过模块间流转的数据来驱动,而 HVML 提供了对数据流转过程的抽象处理能力。”
“很多技术上的变革最初就来自开发者对已有技术的不满,比如 Linus 当初对用于 Linux 内核版本控制的工具不满,所以后来开发了 Git,现在成了最流行的版本控制系统。听起来 HVML 也是。”我应道,“对了,原来那个版本控制系统叫啥来着?”
“BitKeeper。据说是免费授权给 Linux 内核使用的一套商业源代码版本控制系统,估计那老板是想通过 Linux 内核来宣传自己的产品。”老魏回答道。
“哦,对,我想起来了。”我应道。
喝了一口茶,我又问道:“当初 Linus 开发 Git,是因为就算是商业化的 BitKeeper 也让他不满,更不用说早期如 CVS、SVN 等开源、免费的版本控制系统了。Git 的出现,跟 Linus 要维护庞大的 Linux 内核源代码仓库有关,也跟 Linux 内核的分布式开发模式有关。也就是说,在 Linux 这个开源操作系统内核长大到一定规模之前,所有的版本控制系统,不管是开源的还是商业的,都没有敏锐地抓住这一新的需求。而 Linus 抓住了,而且也做到了。经过十多年的发展,Git 成了开源界最为流行的版本控制系统。”我大致梳理了一下 Git 能够成功的内在原因。
“七爷所言甚是。一个新东西要流行起来,首先要解决新的市场需求,开源只是促进了它的快速推广而已。拿 Git 来讲,它是全世界第一个针对大规模代码仓库在分布式开发模式中使用的这一特征开发的版本控制系统,跟 Linux 是第一个开源、免费且兼容 POSIX 的通用操作系统内核一样生逢其时。这样的技术或产品,准确抓住了市场的需求,不流行才怪。”显然,老魏道出了他一直以来的一个观点:开源只是推广新技术和新产品的一种手段,一项新技术或者新产品能否得到市场认同,归根结底还是要看这项技术或产品是否有用户价值。
HVML 的用户价值何在?
“我同意你那个‘用户价值第一,开源只是手段’的观点。我们再回头说 HVML,老魏你觉得 HVML 具有类似 Linux、Git 这种东西的优势吗?”
“七爷你这个问题很刁钻啊。”老魏笑道,“我要是说有,肯定有人会说自不量力;我要是说没有,那我还做它干嘛呢?”
“大胆说吧。国内基础软件圈子里的这帮人,技术水平也就那样。拿国家的钱搞了二十多年,连个自己的 GUI Toolkit 库都搞不出来。管他们说啥呢,你若是跟他们理论,那就是自贬身价了。”
“好,那我就谈谈 HVML 的优势。
“首先,围绕 HVML 形成的应用框架,和传统的 GUI 应用框架以及 Web 前端技术都有显著的不同。传统的 GUI 应用,代码设计模式无外乎直接调用 C/C++ 或其他编程语言提供的接口,在一个事件循环中完成创建界面元素、响应用户交互的工作。Web 前端技术和传统 GUI 应用的最大区别在于描述式的 HTML 和 CSS 语言,但程序的框架在本质上是一样的——事件循环,而且必须使用 JavaScript 语言。
“但 HVML 提供了一个完全不一样的应用框架。
“在完整的基于 HVML 的应用框架中,包含一个独立运行的图形用户界面渲染引擎,开发者通过撰写 HVML 程序来操控渲染引擎,而 HVML 程序在 HVML 解释器中运行,并可以和其他已有的编程语言的运行时环境结合在一起,接收由其他编程语言程序生成的数据,并按照 HVML 程序的指令,将其转换为图形用户界面的描述信息或者变更信息。通过这样的设计,我们将所有涉及到图形用户界面的应用程序分开成两个松散的模块:
“第一,一个和 GUI 无关的数据处理模块,开发者可以使用任何其熟悉的编程语言和开发工具开发这个模块。比如,涉及到人工智能处理时,开发者选择 Python;在 Python 代码中,除了装载 HVML 程序之外,开发者无需考虑任何和界面渲染及交互相关的东西,比如创建一个按钮或者点击一个菜单后完成某项工作等的这类工作,开发者只需要在 Python 代码中准备好渲染界面所需要的数据即可。
“第二,一个或者多个使用 HVML 语言编写的程序(HVML 程序),用来完成对用户界面的操控。HVML 程序根据数据处理模块提供的数据生成用户界面的描述信息,并根据用户的交互或者从数据处理模块中获得的计算结果来更新用户界面,或者根据用户的交互驱动数据处理模块完成某些工作。
“通过这样的设计,HVML 应用框架将操控界面元素的代码从原先调用 C、C++、Java、C# 等接口的设计模式中解放了出来,转而使用 HVML 代码来处理。而 HVML 使用类似 HTML 的描述式语言来操控 GUI 元素,通过隐藏大量细节,降低了直接使用低级编程语言操控界面元素带来的程序复杂度。
“另外,HVML 的应用框架中,有一个独立运行的图形用户界面渲染器。我们将这个渲染器设计为类似字符控制台的哑设备,这样,我们可以将 HVML 程序和应用的其他模块从控制界面元素展现行为的细节中解放出来。举个例子。我们在字符终端程序的开发中,可以使用一些转义控制指令来设置字符的颜色、是否闪烁等,而字符终端程序无需包含任何处理字符颜色以及闪烁的代码——因为这些细节字符控制台(可能是硬件,也可能是一个伪终端程序)帮我们默默处理了。HVML 的界面渲染器也遵循同样的设计思路,HVML 程序创建好一个按钮,至于这个按钮显示出来是什么样子的,用户如何跟它交互,这些统统无需 HVML 程序来操心——一切由渲染器在给定的描述式语言(如 HTML、CSS)的控制下运转。这带来另一个好处,由于在界面渲染器中不包含任何的应用运行逻辑代码和敏感的数据,从某种程度上讲,这带来了安全性的提高。
“有了这样的应用框架设计,HVML 可以让几乎所有的编程语言,不论是 C/C++ 这类传统编程语言,还是 Python 这类脚本语言,都可以使用统一的模式来开发带龟的应用。而在此之前,不同的编程语言有不同的 Toolkit 库,这些 Toolkit 库的能力不同,接口不同,渲染效果参差不齐。仅这一点,HVML 就足以成为一项变革性的技术。”
“这听起来有点意思。但带给开发者的具体会哪些好处呢?”我追问道。
“最大的好处就是提高带龟应用的开发效率。”老魏回道。
“愿闻其详。”
“首先,有了 HVML 作为传统编程语言和 Web 前端技术的粘合剂,我们开发带龟应用时,就可以用最合适的编程语言来开发相应的功能。具体来讲,操控龟时,我们使用 HVML 这种描述式的编程语言;实现各种算法时,我们使用 C、C++、Java、Python 这些编程语言。
“其次,HVML 不仅仅提供了对界面元素的操控能力,还提供了对各种数据获取协议、数据总线、消息通讯等长连接的支持,还提供有丰富的动态变量以及灵活的扩展能力。也就是说,HVML 将带龟应用的设计模式做了进一步的抽象和提升,形成数据驱动的全新应用框架。要知道数据可以来自真实世界,也可以让计算机按照某个规则自动生成。基于此,数据驱动极容易用来实现程序的自动化测试。最终,我们既可以快速开发带龟应用,还可以通过数据驱动的自动化测试框架来保证带龟应用的质量。”
“这听起来非常诱人啊!能否量化地描述你所说的开发效率提升情况?”
“目前我先给个定性的估计吧:原先使用 Gtk+、Qt 等这类 Toolkit 库的应用,改用 HVML 之后,开发效率将提升至少十倍;如果考虑到自动化测试框架带来的好处,开发效率将提升至少百倍。而且吧,Gtk+、Qt 这类东西,有了 HVML,就可以扔到历史的垃圾堆里了。”
“能有这么好?”
“牛还是要吹的,真要实现了呢?哈哈!”老魏爽朗地笑着,“再说,国内没啥技术突破的东西,牛都可以吹上天,前两天还有个文章说有大神把代码写成了史诗的样子……我们更要吹牛了,吹到全宇宙都是应该的!”
“哈哈,应该应该,不吹反倒好像我们不如人似的。”我也笑道。
“其实梦想也好,吹牛也罢,是一种给自己施压,爆发出自己内在洪荒之力的方法,牛逼的人会将压力转变成强大的动力。你看雷米的雷布斯,这两天不就说三年内要变成世界第一嘛。”
“明白了,以后我见你就问,你当年吹的牛如今实现了几成?就当是鞭策,哈哈。”
“让我们拭目以待。”
中场休息
“跟你聊天太烧脑了。咱换个轻松点的话题如何?”我伸了伸懒腰。
“行,你歇会儿,喝口茶,想个新话题,我去趟洗手间。”说完,老魏蹬蹬蹬下了楼。
一会儿的功夫,老魏又蹬蹬蹬跑了上来,冲我嚷嚷道:“外面挺凉快的,把空调关了,开窗吧。”
“你丫是想抽烟吧。”我反唇相讥,关了空调并起身开了窗户。
“我可以陪你抽一根。”老魏说。看来老魏这戒烟并不彻底。
于是我递给老魏一根烟,两人点上烟,吸了起来。
“一个人的时候,有烟我也不抽,我只抽别人给我的烟。嘿嘿。”老魏说道。
“嗯,这个状态其实也挺好。”
“酒也得戒了,起码不能喝猛酒,要限量。”
“哟,几天没见,换了个人似的。”
“前几日回老家,我老爸跟我说,酒可以喝,但不能喝太猛,你看那些年轻时喝猛酒的,那谁还有那谁,都早早死掉了。”老魏解释道。
我知道魏森特老爸八十岁高龄了,也喜欢喝酒,但身体还挺硬朗,至今还种着田,于是说道:“嗯,这可是魏大大的人生经验啊,要听,要听。”
围绕 HVML 的软件具体有哪些?
等魏森特掐了烟屁股,我问道:“围绕 HVML 估计要开发不少东西,说说都有哪些?”
“你就不能让我喝口茶?”老魏白了我一眼,慢条斯理地喝了几口茶,然后回答道:“围绕 HVML 的两款核心软件是 HVML 解释器和 GUI 渲染器。
“理论上,每个和 HVML 配合的编程语言,都应该有一个 HVML 的解释器实现。但我们实现了 C 语言的 HVML 解释器之后,其他编程语言的解释器就很好实现了。所以,我们优先开发的就是 HVML 解释器的 C 语言实现,称之为 PurC。
“另外一个核心软件是配合 HVML 解释器运行的 GUI 渲染器。我们正在开发的渲染器称为 xGUI,是一个跨平台的 HTML/XGML/CSS 渲染器,可运行在所有桌面操作系统以及合璧操作系统上。
“如果要在资源受限的嵌入式系统中使用,还需要开发一个小型的 GUI 渲染器。为此,我们设计了一个新的 XGML 标记语言,专门用于嵌入式设备,对应的渲染器称为 xGUI Lite。
“目前,因为尚处在开发阶段,我们未向公众开放 PurC 和 xGUI 的代码仓库,但我们提供围观的机会。有兴趣的朋友,可以申请围观我们的开发过程。看一个全新的世界级基础软件项目,是如何从无到有诞生的。
“上述几款软件是用于运行时的,在开发阶段,还需要开发及调试工具,自动化测试工具等等。
“还有啊,当 HVML 用于云应用时,还需要一个云应用服务器软件。当 HVML 应用于各种领域时,还需要针对各行各业的扩展插件库、HTML/XGML 模板……”
“这看起来就是一个生态啊!”我说道。
“那当然了。我们很多人对生态的理解,还仅仅停留在操作系统生态之上,但你看看,这几年围绕特定编程语言形成的生态也不在少数,比如 Python。”
这些软件会开源吗?
“是的。再说,就你和你那小团队,也不可能把所有的事儿都干了……对了,这些围绕 HVML 的软件会开源吗?”
“中国搞基础软件的,有个口头禅叫‘未来会开源’。我们也一样,这些软件也会在未来开源。”老魏说道,脸上露出了一丝狡猾的笑容。
“其实根本不用担心这点,我们早就做好了准备,目前我们开发的这些 HVML 相关软件,将来会采用商业友好的宽松许可证 LGPL 来发布。”老魏补充道。
“我记得你曾鼓吹过‘过程开源’……‘过程开源’这个说法好像也是你提出来的吧。为什么在 HVML 的开发中不遵循‘过程开源’?”我问了个尖锐的问题。
“‘过程开源’这个说法并不是我提出来的,是几年前杨清提出来的,他当时说‘过程开源’才是真开源。我觉得这个说法有一定道理,但仔细想想也不太通。有影响力的时候,你的一举一动都有人盯着,没有影响力的时候,开放过程给谁看呢?所以,咱还是先达到第一个目标再说。等有了初步成果,正式发布的时候搞个‘Big Bang’出来,这样的效果可能会更好。
“另外,要形成一个良性发展的生态,需要兼容并包各种可能的利益诉求。因此,我们欢迎商业化甚至闭源的 HVML 解释器以及 GUI 渲染器实现,还有商业化的开发和调试的工具、插件等等。但无论如何,HVML 相关的技术规范,已经开放而且将永远保持开放。”
打算如何靠 HVML 赚钱?
“嗯,明白了,老魏你是越来越老道了。不过,你投入这么多精力和资源设计、开发 HVML,有没有想过将来如何赚钱?”
“说实话,直接拿一个编程语言赚钱似乎不太现实,也没听说过任何成功案例。至于将来如何靠 HVML 赚钱,本人还没有想清楚。我想,还是先看 HVML 的用户价值吧。只有开发者认同了其价值,才有如何赚钱的问题,否则,就当是个未成功的尝试吧。失败并不可怕,可怕的是我们从不做这类的尝试。
“我设计并组织团队开发 HVML,主要的出发点是为了给国产基础软件的开发者们打个样,告诉大家如何在基础软件领域做一些创新性的工作,另一方面,也是为了实践我自己提出的操作系统方法论,也就是为了实现我吹过的另外一个牛。
“如果 HVML 技术得到大量开发者的认同,我相信找到合适的商业模式,也只是时间的问题。再说,我们未必要围绕 HVML 做个上市公司出来,有持续的收入,可以维持一个小团队自由自在干自己喜欢干的事儿,也是不错的,何苦要做很大的企业呢?”
“你这思想,看起来升华了啊!”
“命里无时莫强求。”老魏耸了耸肩膀。
“也对。如果 HVML 成功了,把那些传统的、基于接口调用的 Toolkit 库消灭掉,这成功,岂是金钱可以衡量的?”我说道。
“一切随缘吧。”老魏看了一眼天花板,接着道,“全世界都在谈论开源,新的开源软件层出不穷,令人眼花缭乱。这带来另一个有意思的现象:一方面,高科技公司投入到软件上的人力和财力越来越大,另一方面,软件的价值却越来越无法用直接的软件许可或者服务收入来衡量。这种拧巴的关系快到了一个临界点。”
老魏把话题转到了开源经济学上。
首提“开源垃圾”
“你说详细一点。”我追问道。
“开源的好处大家已经谈得很多了,但任何事物都有两面性,开源也不例外。近几年,开源的坏处越来越多地表现了出来。比如,出现了大量低水平复制其他开源软件设计思想甚至代码的开源软件,质量参差不齐,我把这种东西叫做‘开源垃圾’;某些较为广泛使用的开源软件中,作者或者其他贡献者故意留出一些隐藏很深的缺陷或者漏洞;许多使用广泛的开源基础软件得不到良好的维护等等。
“如果我们看看国际知名开源软件的情况,所有直接或间接被经济利益驱动的开源项目都发展得相对比较成功,如 Linux、Chromium、MySQL、Qt、MongoDB 等,而那些没有间接或直接的经济利益驱动的开源软件,典型的如 LibreOffice 和 FireFox,则发展缓慢,步履维艰。这揭示了一个非常重要的秘密:开源软件作为一项技术或产品,其发展也要遵循同样的市场竞争规律,单凭情怀和激情是难以为继的。因此,我非常不赞同现在言必谈开源,甚至忽悠大家为情怀而无偿贡献开源的说法和做法。
“本质上讲,开源只是一种软件的分发方式。如果你开发一个软件的目的是为了赚钱,那开源这个软件的行为,通常应该被定义为一种营销手段——希望通过开源的方式来让潜在用户或客户快速地用起来。但现实的情况是,我们强调开源以及所谓开源社区治理等等高大上的概念时,忘了一项技术或者一个产品,能否得到广泛应用,首先要考虑的是市场是否有这个需求,或者这项技术、这个产品,能否给用户带来切实的好处。其次是如何直接或者间接从这项技术或产品上获得开发和维护的资金。
“而说到基础软件,其本质是工具。因此,在基础软件领域,如果一项新的技术或者产品,不能用来提高生产效率,解放生产力,那一定不是好的技术或产品。因此,我给国内那些鼓吹开源的人们的建议是:少谈开源和社区治理,少开点会,少做些秀,多花些精力研究市场需求和用户价值,多花些功夫在技术和产品上。
“就比如说,前几年物联网很热闹,国内很多大厂纷纷推出了自己的物联网操作系统。但这些物联网操作系统,代码规模不大,技术路线雷同,乏善可陈。但仍然有一些社区或者开发者,乐此不疲地开发新的物联网操作系统,只为借开源和国产操作系统的营销风儿搞个噱头。这种做法,其结果一定是产生了更多的开源垃圾而已,并不能促进开源软件的进步和发展。”
“哈哈,我就知道你瞧不上国内这帮搞基础软件的。”我附和道。
“哼!国家花大价钱支持国产操作系统为代表的国产基础软件领域,已经二十年了。总体而言,有进步。比如,用一堆开源软件攒出个操作系统的能力大有长进,各类操作系统如雨后春笋般冒出。但说实话,我们的竞争对手美国,也在进步,而且人家底子好,进步速度更快。我们在移植、适配、优化、集成、复制甚至抄袭开源软件的时候,人家在创造新的轮子。可以这么说,二十年前,我们落后美国二十年,二十年后,我们落后美国三十年!”
国产基础软件行业最缺乏的是什么?
“革命尚未成功,同志仍需努力啊!”我套用了国父的名言,“那你认为国产基础软件行业最缺乏的是什么?”
“ 以前我就说过的,最缺的是突破和创新,不论是技术上的还是产品上的。但我觉得根子上缺的是思想、认知以及方法上的突破和创新。
“中国的科研有个顽疾:更重应用而非创新,这跟中国人讲求实用主义有关。我记得我读博士的时候,老师们曾经争论过‘集成能否算创新’的问题,结果是‘只要没人做过的集成,也可以算是创新’。基础软件行业更是如此——有那么多的开源软件可以免费用,移植、适配、优化、集成、复制甚至抄袭都来不及,还搞什么创新?举个例子,现在国内的基础软件有两大热点,一个是数据库,一个是操作系统,都有大厂参与。但这些基础软件,大多源自舶来的开源软件,技术上并没有多少突破,他们之间的竞争主要看的就是谁的营销做得好,谁的牛皮吹得大。
“我们搞基础软件的,还是要有对技术的敬畏之心,多拼技术而不是拼营销,急功近利的做法更加要不得。”
应该怎么办?
“那应该怎么做?”我问了最后一个问题。
“苹果有个广告词:Think Different,有人把它翻译为‘不同凡想’,其实掩盖了真实含义,我觉得直译为‘想想不同’更加贴切。我们可以学习这个精神,在设计和实现中,多思考一些不同的方法出来,就可能实现突破。比如 HVML 是‘全宇宙’第一个可编程的标记语言。再举个更加具体的例子,我们在开发 HVML 解释器的时候,需要一个 JSON 的解析器。一般人的做法,抄一个开源的就差不多了。但我们的实现可以让 JSON 具有动态能力,而解析一个动态的 JSON 表达,需要构造一个抽象的构建模型。我们如此做了,也做到了。这就是‘Think Different’的价值。”
访谈到此,我没有再问其他问题。阁楼里顿时安静了下来。我和老魏不约而同地望向窗外,院子里那几棵大榆树上的知了声此起彼伏,连绵不绝。
它们叫得正欢。
声明
本文人物源自中国第一部码农体长篇纪实小说《考鼎记》。这部小说尝试展现三十年来人们围绕着芯片和操作系统的国产化所走过的道路和经历过的挫折,由几名亲历这段历史的码农利用业余时间协作撰写并在线发表。
《考鼎录》则以《考鼎记》主角韦琦(七爷)访谈的形式,尝试展示新一代基础软件开发者的风采,让读者了解他们在充满挑战的创新道路上,如何大胆突破传统思想、认知和方法带给我们的禁锢。
欢迎提供访谈线索。
本文提到的产品、技术或者术语名称,涉及北京飞漫软件技术有限公司在中国或其他地区注册的如下商标:
- 飛漫
- FMSoft
- 合璧
- HybridOS
- HybridRun
- MiniGUI
- xGUI
- miniStudio
- HVML
- 呼噜猫
- Purring Cat
- PurC
- 考鼎
- 良机