YodaOS: 一個(gè)屬于 Node.js 社區(qū)的操作系統(tǒng)

大家好候醒,很開心在這里宣布 YodaOS 開源了。他將承載 Rokid 4年以來對(duì)于人工智能和語音交互領(lǐng)域的沉淀一睁,并選擇 Node.js 作為操作系統(tǒng)的一等開發(fā)公民冈闭,全部開放給社區(qū)。

YodaOS 的架構(gòu)跟 Android 類似册招,從下至上岔激,由 Linux Kernel、系統(tǒng)服務(wù)和應(yīng)用框架組成是掰。不過 YodaOS 有以下不同:

開發(fā)者可以直接使用 JavaScript / Node.js 來開發(fā)本地應(yīng)用(技能)虑鼎;

封裝了 AI 抽象層,可以通過 JavaScript 直接調(diào)用到諸如語音激活键痛、語音識(shí)別炫彩、人臉識(shí)別等接口;

除了支持默認(rèn)的 Node.js API 外絮短,YodaOS 還提供:

內(nèi)置的語音激活和語音識(shí)別 API江兢,真正做到了開箱即用(開發(fā))的語音交互系統(tǒng);

對(duì)音量控制丁频、電源管理杉允、藍(lán)牙、多媒體播放席里、LED 燈效和 OTA 等都進(jìn)行了接口封裝叔磷;

對(duì)物聯(lián)網(wǎng)開發(fā)者來說,內(nèi)置了標(biāo)準(zhǔn)化的 WebSocket奖磁、MQTT 等物聯(lián)網(wǎng)協(xié)議的客戶端實(shí)現(xiàn)改基;

YodaOS 也支持 npm 倉庫,開發(fā)者可以根據(jù)自己的需要在 OS 中運(yùn)行所需的模塊署穗,不過并不推薦使用一些實(shí)現(xiàn)起來很重的模塊寥裂,因?yàn)?YodaOS 需要支持中低端設(shè)備,所以有時(shí)候也需要考慮到性能方面的因素案疲。

如果遇到一些 npm 倉庫確實(shí)實(shí)現(xiàn)很重封恰,但又不得不用的時(shí)候,在 YodaOS 上褐啡,我們一般的做法是使用 N-API 橋接 C/C++ 模塊诺舔,然后保證 JavaScript API 與對(duì)應(yīng)的 npm 包一致。

同時(shí)借助于 N-API,開發(fā)者可以將任何 Linux 的庫移植到 YodaOS 上低飒,并通過 N-API 以 JavaScript API 方式使用许昨,可以這么理解,N-API 之于 YodaOS褥赊,就像 JNI 之于 Android糕档。

為什么是 Node.js

前面提到了 YodaOS 選擇擁抱 Node.js 和 Node.js 開發(fā)者,最大的一個(gè)原因就是在過去將近10年的時(shí)間拌喉,從最開始 Ryan Dahl 定義的速那,一個(gè)輕量級(jí)的 Web 服務(wù)器框架,到如今的 Express尿背、Loopback端仰、Koajs、Midway 和 Egg Framework田藐,在 Web 服務(wù)器框架領(lǐng)域已經(jīng)漸漸成熟荔烧。

依托于 Node.js 提供的運(yùn)行時(shí),從 Grunt汽久、Gulp 到現(xiàn)在的 Webpack 和 Parcel鹤竭,在構(gòu)建工具領(lǐng)域,社區(qū)也不斷涌現(xiàn)出非常卓越的開源項(xiàng)目來回窘。Node.js 正在發(fā)揮每位開發(fā)者的想象力诺擅,社區(qū)中幾乎有你需要的一切,甚至于在社區(qū)中啡直,有一句流傳已久的名言:

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

——Atwood’s Law

意思就是說,只要能被 JavaScript 來編寫的程序苍碟,終將使用 JavaScript 實(shí)現(xiàn)酒觅。那為什么不用 JavaScript 來寫一個(gè)操作系統(tǒng)呢?

當(dāng)然上面的只是一個(gè)有趣的引子微峰,Rokid 真正想做的是讓 Node.js 開發(fā)者能夠以更低的門檻進(jìn)入語音交互和嵌入式領(lǐng)域舷丹。

Node.js 與 ShadowNode

YodaOS 雖然跟 Android 的架構(gòu)相似,不過解決的問題蜓肆,及目標(biāo)設(shè)備并不盡然相同颜凯,對(duì)于現(xiàn)在越來越便宜的手機(jī),Android 開發(fā)者幾乎不用擔(dān)心系統(tǒng)性能的問題仗扬。然而對(duì)于像智能音響症概、IoT 終端以及其他嵌入式設(shè)備,通常硬件資源都是非常緊缺的早芭,在這種情況下彼城,OS 就要解決開發(fā)者“既要節(jié)省資源、又要便于開發(fā)”的問題。

于是針對(duì)中低端硬件產(chǎn)品(內(nèi)存介于 128MB 到 256MB 之間)募壕,我們創(chuàng)造了 ShadowNode 來解決這個(gè)問題调炬,它是 Rokid 基于三星 IoT.js 二次開發(fā)的一款 Node.js 運(yùn)行時(shí),它具備更快的啟動(dòng)速度和更低的資源占用舱馅,相比 IoT.js缰泡,它:

提供了更好的錯(cuò)誤棧信息和性能調(diào)試工具;

支持了基于 N-API 的跨運(yùn)行時(shí)模塊執(zhí)行代嗤;

針對(duì)特定芯片的性能優(yōu)化棘钞,比如 AmLogic A113 和 Kamino18;

借助于 N-API 的 ABI 兼容特性资溃,我們實(shí)現(xiàn)了 OS 上層框架和應(yīng)用的運(yùn)行時(shí)兼容性武翎。比如開發(fā)者完全可以選擇在更高級(jí)的設(shè)備上運(yùn)行 YodaOS,此時(shí)內(nèi)存和 Flash 不再是瓶頸溶锭,開發(fā)者只需要更換系統(tǒng)中的 Node.js 運(yùn)行時(shí)宝恶,即可獲得更快的執(zhí)行速度,不需要修改一行上層代碼趴捅。

最后

我們希望借助 YodaOS垫毙,為 Node.js 社區(qū)補(bǔ)全終端開發(fā)這一版圖,讓我們用這門親切的語言拱绑,再次回到我們熟悉的“端”的開發(fā)综芥。

如果想一起加入 YodaOS,可以在 GitHub 上關(guān)注我們猎拨,項(xiàng)目地址:https://github.com/yodaos-project/yodaos膀藐。


關(guān)于 YodaOS:

YodaOS 是 Rokid 公司研發(fā)的首個(gè)全棧開源 AI 操作系統(tǒng),由 Linux 內(nèi)核红省、硬件抽象層额各、AI 抽象層和 JavaScript 框架組成,專為下一代人機(jī)交互設(shè)備開發(fā)吧恃,可用于智能音箱虾啦、智能家居、智能穿戴和車載等多種設(shè)備和場景痕寓。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末傲醉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子呻率,更是在濱河造成了極大的恐慌硬毕,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件筷凤,死亡現(xiàn)場離奇詭異昭殉,居然都是意外死亡苞七,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門挪丢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蹂风,“玉大人,你說我怎么就攤上這事乾蓬』葑模” “怎么了?”我有些...
    開封第一講書人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵任内,是天一觀的道長撵渡。 經(jīng)常有香客問我,道長死嗦,這世上最難降的妖魔是什么趋距? 我笑而不...
    開封第一講書人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮越除,結(jié)果婚禮上节腐,老公的妹妹穿的比我還像新娘。我一直安慰自己摘盆,他們只是感情好翼雀,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著孩擂,像睡著了一般狼渊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上类垦,一...
    開封第一講書人閱讀 52,268評(píng)論 1 309
  • 那天狈邑,我揣著相機(jī)與錄音,去河邊找鬼蚤认。 笑死官地,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的烙懦。 我是一名探鬼主播,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼赤炒,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼氯析!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起莺褒,我...
    開封第一講書人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤掩缓,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后遵岩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體你辣,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡巡通,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了舍哄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宴凉。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖表悬,靈堂內(nèi)的尸體忽然破棺而出弥锄,到底是詐尸還是另有隱情,我是刑警寧澤蟆沫,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布籽暇,位于F島的核電站,受9級(jí)特大地震影響饭庞,放射性物質(zhì)發(fā)生泄漏戒悠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一舟山、第九天 我趴在偏房一處隱蔽的房頂上張望绸狐。 院中可真熱鬧,春花似錦捏顺、人聲如沸六孵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽劫窒。三九已至,卻和暖如春拆座,著一層夾襖步出監(jiān)牢的瞬間主巍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來泰國打工挪凑, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留孕索,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓躏碳,卻偏偏與公主長得像搞旭,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子菇绵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 很多Node.js初學(xué)者都會(huì)有這樣的疑惑肄渗,Node.js到底是單線程的還是多線程的?通過本章的學(xué)習(xí)咬最,能夠讓讀者較為...
    越努力越幸運(yùn)_952c閱讀 3,653評(píng)論 4 36
  • Node.js是目前非臭岬眨火熱的技術(shù),但是它的誕生經(jīng)歷卻很奇特永乌。 眾所周知惑申,在Netscape設(shè)計(jì)出JavaScri...
    w_zhuan閱讀 3,617評(píng)論 2 41
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5具伍? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 27,513評(píng)論 1 45
  • Node.js是目前非橙ν眨火熱的技術(shù)人芽,但是它的誕生經(jīng)歷卻很奇特。 眾所周知碗脊,在Netscape設(shè)計(jì)出JavaScri...
    Myselfyan閱讀 4,075評(píng)論 2 58
  • 進(jìn)入八月也有些日子了啼肩,精神有些恍惚,眼神有些游離衙伶,可能是天氣忒熱的緣故吧祈坠,來疆將近十年的時(shí)間了,但是依然忍受不了南...
    在西域取經(jīng)的路上閱讀 264評(píng)論 0 0