14

YodaOS:一个属于 Node.js 社区的操作系统

 5 years ago
source link: https://segmentfault.com/a/1190000018043517?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

大家好,很开心在这里宣布 YodaOS 开源了。他将承载 Rokid 4年以来对于人工智能和语音交互领域的沉淀,并选择 Node.js 作为操作系统的一等开发公民,全部开放给社区。

mQFRv2E.png!web

YodaOS 的架构跟 Android 类似,从下至上,由 Linux Kernel、系统服务和应用框架组成。不过 YodaOS 有以下不同:

  • 开发者可以直接使用 JavaScript / Node.js 来开发本地应用(技能);
  • 封装了 AI 抽象层,可以通过 JavaScript 直接调用到诸如语音激活、语音识别、人脸识别等接口;

除了支持默认的 Node.js API 外,YodaOS 还提供:

  • 内置的语音激活和语音识别 API,真正做到了开箱即用(开发)的语音交互系统;
  • 对音量控制、电源管理、蓝牙、多媒体播放、LED 灯效和 OTA 等都进行了接口封装;
  • 对物联网开发者来说,内置了标准化的 WebSocket、MQTT 等物联网协议的客户端实现;

YodaOS 也支持 npm 仓库,开发者可以根据自己的需要在 OS 中运行所需的模块,不过并不推荐使用一些实现起来很重的模块,因为 YodaOS 需要支持中低端设备,所以有时候也需要考虑到性能方面的因素。

如果遇到一些 npm 仓库确实实现很重,但又不得不用的时候,在 YodaOS 上,我们一般的做法是使用 N-API 桥接 C/C++ 模块,然后保证 JavaScript API 与对应的 npm 包一致。

同时借助于 N-API,开发者可以将任何 Linux 的库移植到 YodaOS 上,并通过 N-API 以 JavaScript API 方式使用,可以这么理解,N-API 之于 YodaOS,就像 JNI 之于 Android。

J3i6zaJ.png!web

为什么是 Node.js

前面提到了 YodaOS 选择拥抱 Node.js 和 Node.js 开发者,最大的一个原因就是在过去将近10年的时间,从最开始 Ryan Dahl 定义的,一个轻量级的 Web 服务器框架,到如今的 Express、Loopback、Koajs、Midway 和 Egg Framework,在 Web 服务器框架领域已经渐渐成熟。

依托于 Node.js 提供的运行时,从 Grunt、Gulp 到现在的 Webpack 和 Parcel,在构建工具领域,社区也不断涌现出非常卓越的开源项目来。Node.js 正在发挥每位开发者的想象力,社区中几乎有你需要的一切,甚至于在社区中,有一句流传已久的名言:

“any application that can be written in JavaScript, will eventually be

written in JavaScript”

——Atwood’s Law

意思就是说,只要能被 JavaScript 来编写的程序,终将使用 JavaScript 实现。那为什么不用 JavaScript 来写一个操作系统呢?

当然上面的只是一个有趣的引子,Rokid 真正想做的是让 Node.js 开发者能够以更低的门槛进入语音交互和嵌入式领域。

Node.js 与 ShadowNode

YodaOS 虽然跟 Android 的架构相似,不过解决的问题,及目标设备并不尽然相同,对于现在越来越便宜的手机,Android 开发者几乎不用担心系统性能的问题。然而对于像智能音响、IoT 终端以及其他嵌入式设备,通常硬件资源都是非常紧缺的,在这种情况下,OS 就要解决开发者“既要节省资源、又要便于开发”的问题。

于是针对中低端硬件产品(内存介于 128MB 到 256MB 之间),我们创造了 ShadowNode 来解决这个问题,它是 Rokid 基于三星 IoT.js 二次开发的一款 Node.js 运行时,它具备更快的启动速度和更低的资源占用,相比 IoT.js,它:

提供了更好的错误栈信息和性能调试工具;

支持了基于 N-API 的跨运行时模块执行;

针对特定芯片的性能优化,比如 AmLogic A113 和 Kamino18;

借助于 N-API 的 ABI 兼容特性,我们实现了 OS 上层框架和应用的运行时兼容性。比如开发者完全可以选择在更高级的设备上运行 YodaOS,此时内存和 Flash 不再是瓶颈,开发者只需要更换系统中的 Node.js 运行时,即可获得更快的执行速度,不需要修改一行上层代码。

最后

我们希望借助 YodaOS,为 Node.js 社区补全终端开发这一版图,让我们用这门亲切的语言,再次回到我们熟悉的“端”的开发。

如果想一起加入 YodaOS,可以在 GitHub 上关注我们,项目地址: https://github.com/yodaos-pro...

3iAjiua.jpg!web

关于 YodaOS:

YodaOS 是 Rokid 研发的首个全栈开源 AI 操作系统,由 Linux 内核、硬件抽象层、AI 抽象层和 JavaScript 框架组成,专为下一代人机交互设备开发,可用于智能音箱、智能家居、智能穿戴和车载等多种设备和场景。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK