框架早期由阿里集團(tuán)淘系工程團(tuán)隊(duì)及螞蟻集團(tuán)體驗(yàn)技術(shù)部、研發(fā)效能團(tuán)隊(duì)聯(lián)合發(fā)起,共同研發(fā)的 IDE 標(biāo)準(zhǔn)化研發(fā)框架。它基于?TypeScript?+?React?進(jìn)行編碼,實(shí)現(xiàn)了包含資源管理器、編輯器、調(diào)試、Git 面板、搜索面板等核心功能模塊,開發(fā)者只要基于我們的起步項(xiàng)目進(jìn)行簡(jiǎn)單配置,便可以快速地搭建屬于自己的本地或云端 IDE 產(chǎn)品,框架自身兼容 VS Code 插件生態(tài),主流 VS Code 插件均可無縫在基于 OpenSumi 研發(fā)的產(chǎn)品中運(yùn)行,同時(shí),框架也為開發(fā)者提供多種低成本,高定制的視圖定制能力,能滿足 IDE 場(chǎng)景下絕大多數(shù)的視圖定制場(chǎng)景。
對(duì)于 IDE 研發(fā),現(xiàn)今市面上已有了?code-server、Theia?等開源方案,我們?yōu)槭裁催x擇自研實(shí)現(xiàn)?自 2019 年開始,我們便發(fā)現(xiàn)了阿里及螞蟻集團(tuán)內(nèi)部已經(jīng)有了許多 IDE 產(chǎn)品,大部分產(chǎn)品對(duì)于 IDE 產(chǎn)品的前期建設(shè)大抵相同,但是這部分前期建設(shè)工作占用的則是一個(gè)團(tuán)隊(duì)少則幾個(gè)月,多則半年一年的時(shí)間,存在著大量的重復(fù)勞動(dòng)問題,而在部分團(tuán)隊(duì)使用開源方案的過程中,大家也或多或少遇到了一些問題,如定制能力有限、源碼依賴深、維護(hù)困難、無法滿足內(nèi)部能力需求等問題。最終,我們決心集合多個(gè)團(tuán)隊(duì)的力量走上自研實(shí)現(xiàn)的道路。
相信關(guān)注過 IDE 框架的同學(xué)對(duì)?Theia?一定不陌生,Theia 作為一款兼容 VS Code 插件的 IDE 框架,確實(shí)兼容了一部分 VS Code 插件能力,但對(duì)于后續(xù) VS Code API 的兼容已經(jīng)越來越少,基本依賴社區(qū)開發(fā)者的發(fā)現(xiàn)貢獻(xiàn)。
OpenSumi 設(shè)計(jì)之初就是要兼容 VS Code 插件生態(tài),故我們對(duì)于框架會(huì)有持續(xù)性的要求,開源之后,我們計(jì)劃每三個(gè)月時(shí)間去完成一次 VS Code 插件 API 的適配工作,適配計(jì)劃的制定,將會(huì)由相應(yīng)的版本管理人員組織在討論區(qū)進(jìn)行,當(dāng)前已適配至 VS Code v1.60.0 版本標(biāo)準(zhǔn) API, 進(jìn)度可見?適配計(jì)劃?。
三? OpenSumi 與市面主流框架的區(qū)別
我們?cè)谠O(shè)計(jì)初期便對(duì)?VS Code?、Theia?的源碼進(jìn)行了深入的學(xué)習(xí),實(shí)現(xiàn)過程中,為了兼容 VS Code 插件生態(tài),同時(shí)兼容主流編輯器的一些功能及體驗(yàn),部分設(shè)計(jì)及實(shí)現(xiàn)上我們有部分源碼也參考了兩位老師的實(shí)現(xiàn),對(duì)應(yīng)代碼區(qū)塊已標(biāo)注了版權(quán)頭信息。
1? 與 VS Code 的關(guān)系
VS Code 作為市場(chǎng)占用率較大的 IDE,其核心為一個(gè) IDE 產(chǎn)品,本質(zhì)上與我們的?框架?屬性存在區(qū)別,整體上是一個(gè) ToC 的產(chǎn)品,開發(fā)者進(jìn)行定制的門檻及成本較高,可自定義的內(nèi)容也比較有限,大部分是通過?插件?的形式進(jìn)行有限拓展。
而我們的框架主要是服務(wù)用戶為 ToB 用戶,對(duì)那些需要通過 IDE 框架搭建自有的 CloudIDE / 本地 IDE 產(chǎn)品而又沒有充足技術(shù)研發(fā)能力的中小企業(yè)是一個(gè)簡(jiǎn)單、便捷的開發(fā)選項(xiàng)之一。
2? 與 Theia 的關(guān)系
Theia 作為后起之秀,借鑒 VS Code 的一些設(shè)計(jì)理念,經(jīng)過近幾年的發(fā)展逐步成熟,社區(qū)也相對(duì)繁榮,背靠 Eclipse 基金會(huì),也是 IDE 開發(fā)者一個(gè)不錯(cuò)的開發(fā)選項(xiàng),與我們的 OpenSumi 框架是存在競(jìng)爭(zhēng)關(guān)系的。
Theia 本身提供了一種模塊化構(gòu)建 IDE 產(chǎn)品的能力,大部分視圖上的定制絕大部分可通過?模塊?的方式去進(jìn)行拓展的(這點(diǎn)在我們的 OpenSumi 中也有借鑒相應(yīng)思路),在?插件?能力上兼容了大部分的 VS Code 插件,提供了一份 VS Code 插件 API 的子集能力,部分插件 API (如 debug、language 等)并沒有完全實(shí)現(xiàn)且也無后續(xù)持續(xù)性的跟進(jìn)計(jì)劃。
基于上面這些點(diǎn)上, OpenSumi 框架不僅支持了基礎(chǔ)的?模塊?方式拓展,在?插件?層面上,我們有持續(xù)性跟進(jìn) VS Code 標(biāo)準(zhǔn) API 的規(guī)劃 (當(dāng)前已實(shí)現(xiàn) VS Code 1.16.0 版本 API),同時(shí),我們基于實(shí)現(xiàn)了一個(gè)前端沙箱,提供了一系列的?sumi?API 用與通過?插件?的方式自由地拓展我們的視圖能力,熟悉?React?的前端同學(xué)可以直接上手進(jìn)行前端組件的編寫,通過我們提供的豐富的 API 去實(shí)現(xiàn)相應(yīng)的功能視圖。
四? 為什么要開源?
IDE 產(chǎn)品的研發(fā),一直以來都是一件門檻較高,費(fèi)時(shí)費(fèi)力的事情,我們希望通過開源 OpenSumi 幫助對(duì) IDE 有興趣的開發(fā)者更好的了解并掌握 IDE 研發(fā)這項(xiàng)技術(shù),讓更多的開發(fā)者可以以一種低門檻的方式去研發(fā)自己的 IDE 產(chǎn)品,通過社區(qū)中開發(fā)者的使用,也可以幫助我們更好的改進(jìn)我們的框架,獲得更多的需求場(chǎng)景輸入,同時(shí),通過社區(qū)的影響力讓框架獲得更加長(zhǎng)遠(yuǎn)的發(fā)展。