以服务于中国广大创业者为己任,立志于做最好的创业网站。

标签云创业博客联系我们

导航菜单

蛋解创业V5直播,蛋解创业官网

作者|熊普祥

出品| 《程序员》编辑部

放眼全球操作系统市场,从广义上看,可以分为三大板块:一是微软在桌面/PC端打造的Windows(桌面数字化);二是苹果和谷歌在手机上带来的iOS和Android(移动数字化);下一个时代的物联网(或未来物理世界一切的数字化)。这里有一个有趣的现象。上一代的霸主基本不会成为下一代的领头羊,或者说它有自己的原始基因,比如鼠标键盘操作的Windows,已经不能带入手机;安卓在手机上广泛而庞大,无法带入物联网。

不能理解的原因很简单。因为每一代人都会有自己的特点,会有适合它的完美伴侣。对于物联网时代来说,碎片化是一个突出的特征。从超小型计算单元到具有智能和边缘计算能力的高性能单元,都将涉及其中。物联网时代,需要一个适应性好的操作系统,这需要创新,也是强项。

RT-Thread始于2006年,是一款面向物联网的开源操作系统。本来是来自做项目时对嵌入式操作系统的要求,但是我当时对几个开源的嵌入式操作系统并不满意。我理想的嵌入式操作系统是,类UNIX系统有着优雅的代码风格,小写命名,包括操作系统内核和外设必需的和可修剪的组件,同时希望它容易获取、开放并兼容POSIX标准。因此,从一开始,RT-Thread的目标就是成为一个开放、易用的操作系统。

开放性

我们之所以选择开放,也与开源文化的影响密切相关。1998年,我第一次接触到Linux,了解到除了Windows之外还有这样一个开放系统:源码在手天下我有! 2000年,接触到一系列商用的封闭式实时操作系统(VxWorks、NucleusPLUS、ThreadX等)后。),我深深体会到,东西真的是好东西,稳定可靠,但不公开:

想找人交流,缺少相关技术社区;

我想在PC上写相关程序,但是不能放在这些嵌入式实时系统上执行;

在Linux上移植开源代码几乎是不可能的,所以坐在宝山俯视大海也是不可能的。

能做的就是完全基于自己的API从头开始写。但是,写一部分是好的,但是当你想实现全部或者任何事情的时候,你只能说“真的是无底洞”!

由于这个原因,开源在项目开始时就被执行了。第一个开源版本只有线程部分:可以实现多线程的优先级调度和上下文切换。基于开源,希望它有更多的开放性,让大家可以随意获取,同时接受你的反馈,倾听你的需求。

早期主要放在一些论坛上,代码由谷歌代码和SVN管理。后来在论坛上看到大量电子工程师在用ARM Cortex-M3芯片,所以我也很早就支持Cortex-M架构(对比UCOS-ii、ECOS、RTEMS等)。这是更早诞生的),这很快获得了大家的关注和尝试。

但开放模式往往意味着发散,因为参与群体来自各行各业,面临各种问题。最终,我们获得了很多支持

的芯片(有些是我们自己移植的,有些是社区贡献者移植的,有些甚至是芯片厂商移植的)和众多不同的工具,例如不同的工具链、不同的集成开发环境


在这种情况下,一个社区就必不可少,让大家在其中自由地进行交流,以 Issue、PR、代码的形式,通过线上/线下技术会友的方式进行交流。自 2009 年以来,我们就开始以 Git 的方式管理代码,在 GitHub 上进行协同开发。


图1 RT-Thread Star 增长历史


选择 Git 方式已经成为开源软件的必备:


  • 开源的本质是协同开发,不同于传统开发模式,它需要/可以接受来自远程线上各方的代码补丁;


  • 分布式的协同开发,只要希望合并到主干中,就可以生成 PR 提交,然后经过 Review、沟通、合并,最终出现在开发主干;而不需要自己手动的进行代码合并、比对。


  • 随着 CI(Continuous integration,持续集成)的出现,可以在 CI 中加入代码的检查,编译甚至是自动化测试,降低代码合并上的人工;


  • 在 GitHub 这样的开发者社区中,可以让大家更好的参与进来,对代码进行 Review、确认、提交 Issue/沟通。


易用性


参与到开源社区的一般都是工程师个体,RT-Thread 也是从工程师角度出发,首先通过面向对象设计的模式构造了核心基石,然后再辅以统一化的代码风格,进而形成规范化的开发体验。


对于使用者来说,一份好的文档是开发之路的明灯,从入门上手,到使用指南、注意事项。我们将文档中心按开源、协同开发的模式进行:


  • 以 Markdown 方式进行文本管理;


  • 以 Git 仓库方式接受社区小伙伴的提交;


  • 以Attribution-NonCommercial 4.0 International (CC BY-NC 4.0) 许可协议发布文档。


图2 可以 Fork 的 RT-Thread 文档中心


工具是把代码用好的另外一方面。RT-Thread 早期支持的 ARM Cortex-M 处理器,是基于 PC 上的交叉编译方式,所以也就延伸出工具链的问题。GNU GCC 交叉编译工具链,基于 Makefile 方式,免费但使用上缺乏调试器、仿真器;而一些商业的工具链,还可以附带集成开发环境,仿真器,基本上做到类似PC 上使用 VC++ 来编写、开发程序这样简单。所以如何支持好它们也是降低门槛的重点,对此,我们通过深度定制 SCons 的方式把代码的定制、裁剪和这些不同集成开发环境工程文件进行灵活的转换,来实现编译、调试效果。


因为物联网场景碎片化,需要十分灵活的定制性缘故,也引入了开源中常用的 Kconfig 代码配置。字符界面下通过 menuconfig,可以对一些功能特性进行详细的配置,但是这引发了争议,甚至社区上还有反馈表示,“字符界面的配置?这个是科技的倒退吧。”在这样的背景下,以及希望工具层面有更佳配合真正达到开箱即用的出发点,我们后期也开发了专属 RT-Thread 的集成开发环境:RT-Thread Studio。


图3 RT-Thread Studio 集成开发环境


这系列过程中核心点是用户体验,而对于开源操作系统来说,这个就是开发体验:如何真正让开发者用起来顺、爽,真正让开发者喜爱上它。要把开发体验做好,用心倾听社区小伙伴的反馈是必不可少的:


  • 社区小伙伴有系列的吐槽。这时会去琢磨,怎么样才可以做得更好,然后加以改进;


  • 社区小伙伴有更好的点子,代码。这时会 Review 相关的代码/PR,琢磨这样是否确实是一条更好的路。


开源在于过程


开源代表的是协同开发,最大限度的避免重复发明轮子,让大家能够站在巨人的肩膀上创造更大价值。


开源可以有无数的社区小伙伴参与进来,有组织者领导这个项目;有实现代码的开发者,有使用者(同时兼顾测试)进行反馈/提出自己的需求(也有可能转换角色去实现它),还有文档贡献者编写文档或使用笔记;有社区运营,对项目进行运营、推广等。大家都参与其中,作为社区一员,从 0 代码,到大家都使用它,并爱护它。


开源是一种过程的反映,而不是结果:


  • 如果仅仅是一个公司抛出一个产品并开源它,这个并不是真正的开源。如果没有文档,没有后续的社区运营(支持、回复反馈等),这个也仅仅是一堆的代码,开源世界并不缺乏代码;


  • 开源的软件不在于它本身,而在于有多少人使用它。如 Apache 之道(Apache Way)的核心:“社区胜于代码”。代码是“死”的,人是活的,使用软件、代码的是人。


  • 开源也不是一种商业模式,因为它不反馈结果(可以获得多少收入利润),或者可以说开源是一种商业手段。


在开源的过程中,可能很多时候大家也会担心,代码都开源了,有人抄袭了怎么办?有人在这个基础上开新的分支怎么办?同样,不能以静态的方式看这个问题,关键看后续的发展上,谁可以发展得更好(也包括谁的社区会更好)。比较典型的案例有 FreeBSD/DragonFly BSD,NetBSD/OpenBSD,主干在持续推进,融入新功能,产品、社区都做得更棒时,Fork 分支完全不需要担心太多。当然另外一点,商标品牌也十分重要。


在我看来,开源过程持久化,也是 RT-Thread 得以成为常青树的核心:在十多年的时间中,持续地吸收现代化的技术,不断地向前迭代版本。从 MCU 上小巧的完备操作系统(内核、文件系统、网络协议栈),到智能手表上的炫酷人机交互界面(同时低功耗长待机),到现在最新版本,面向带 MMU 处理器架构,全进程版本的 RT-Thread Smart 微内核架构系统。RT-Thread 希望能够像一个火车头,驶向未来。


图4 RT-Thread 路线图,最新的 v5.0 版本将融合 smart 分支


开源与商业化


开源的商业化,这是近些年来大家提及,关注比较多的方面。目前提及的开源下的商业模式普遍来说有三种:


  • 提供服务的模式。类似 Red Hat 这样,代码都是全开源的,提供基于开源代码上的服务,任何相关的都可以算做服务中,例如培训、实施、技术支持等;


  • Open Core 的模式。即核心是开源的,并让更多人使用起来,而在这个核心基础之上是收费的,例如插件(WordPress),增值中间件等。


  • Hosting 模式。这也是和云兴起相关,代码是开源的,同时提供云的服务,云空间云服务是收费的。


这其中也出现过 GPL、商业双许可模式,这类通常来说在一定空间范围内也可以行得通,不过整体规模要铺大会比较难,这类最大的案例是 MySQL。而对于 Open-Core 模式来说,也会有个开源 vs 商业的边界:


结语


这篇文章主要是围绕着 10 多年来 RT-Thread 的历程谈及自己的一些想法。这个过程中也和自身的心态相起伏,从兴趣爱好,到创业的艰辛,及看到了开源的大方向及自身优势。在未来几年中,中国工程师的红利也必将推升中国在全球开源界的影响力,也会有更多来自中国的伟大开源项目,形成新时代的根。


熊谱翔,RT-Thread创始人,2000年毕业于重庆邮电学院,先后任职上海贝尔阿尔卡特、宇梦通信、Marvell,拥有丰富的嵌入式实时系统和3G/4G手机基带系统软件开发经验。于2006年创立了RT-Thread开源操作系统,并以开源社区的形式,带领中国国内优秀的工程师,融入实时面向对象设计开发了RT-Thread自主操作系统内核、微内核架构操作系统RT-Thread Smart及大量周边成熟、稳定软件组件,如文件系统,图形用户界面等。


从 Unix 开发者 Brian W. Kernighan 到 OpenCV 创始人 Gary Bradski,再到国内 PingCAP 联合创始人&CTO 黄东旭、Vue.js 作者尤雨溪……《程序员》2.0第一期以「开发者的黄金十年」为主题,与多位国内外知名的技术领袖和新锐代表进行了深度对话,希望为中国开发者打开新时代的「机遇之窗」。

除了技术引领,我们也希望透过技术对行业进行深入洞察。


因此,《程序员》2.0 第一期也邀请到了来自快手、滴滴、贝壳找房、作业帮等知名企业的技术负责人,用案例实践为读者阐述直播、出行、居住、在线教育等多个行业变革背后的技术架构和技术引擎。