Blog

Blog

PHODAL

云研发 IDE Uncode:演示版发布(欢迎加入开发)

花仲马,五一在加班,我便只得找点事情做。

还记得 Uncode 吗?用于落地我构思的整个云研发体系的 IDE,如果不记得的话,请访问『流程即代码:低代码 & 云研发 IDE —— Uncode』。它来了,现在来了。

Uncode 架构

我,也许擅长 IDE 的插件开发,还有阅读了大量 Intellij IDEA Community 的源码,但也说不上擅长 IDE 的设计 —— 有太多的坑值得去探。特别是在五一之前,我尝试用 Druid 去构建一个编辑器,便发现这并不是容易的事情。所以,我走回了 WebView + Monaco 的路线,然后用 Rust 作为系统的核心:

Uncode Architecture

上图是当前 Uncode 的架构图:

  • 基于 Tauri,所以使用的是原生的 WebView 构建。选择 Tauri 的原因是:对 Rust 支持更友好。
  • UI。TypeScript + React,选 React 而不是 Angular 的一个原因在于:1. 好久没用 React 了。 2. 外加国内的 Angular 用户变小了。
  • App。Tauri 基本上作为是一个 Proxy 在运行 + 系统接口的访问,将核心功能下沉至 uncode。
  • Uncode Core。主要工作:1. 提供众多 DSL 的解析和处理。 2. 封装众多工具,以提供分析功能,用于支撑反应反馈。 3. RPC 支持 —— Tauri 太麻烦了。

或许,你还注意到了 Golang。

Uncode 使用 Rust 来实现各类的 DSL 的解析,以及各类的代码生成。但是,Rust 还缺少一个重要的工具,Antlr(至少还不稳定)。依旧是那个老问题,Antlr 官方提供了大量的现有编程语言的语法,这个重要的特性由于支持我们做静态分析。所以,我们将使用 Golang 来暂时实现这样的功能。

Uncode 的第一个小目标

考虑到 Uncode 不是一件容易的事情:

  • 设计一系列 DSL 来将设计和流程等代码化
  • 设计一个语言(即 Datum,原来的 Charj)来转换不同的语言
  • 设计一系列接口来集成其它一系列工具
  • ……

所以,Uncode 的第一个目标,相当的简单:可以用 Uncode 来编写 Uncode 的编辑器。

IDE 的复杂性。变身为一个 IDE 是一件非常复杂的事情。在那之前,需要准备好稳定可靠的 UI 接口 + 良好的交互性。当然了,还有对于诸多工具的集成。

Uncode 演示版

所以,在五天里(加上 4.30 号),我开发了演示版本的 Uncode,除了不能写代码,它似乎什么也能做。

需求即代码

需求代码化,即将软件开发需求抽象为特定的领域语言,并使用管理代码一样的方式来管理需求,追踪需求的变化 。同时,为通过新的 API 来对接版本管理系统,以可视化需求,演变为看板代码化。

需求即代码』作为 Uncode 的第一个部分,在演示版里,我实现得比较简单,读取代码库里的 story,解析其中 cucmber 的语法,然后展示到 Uncode 里。对应的 DSL 也还在早期(因为还得改 Cucumber 对应语法的解析器)。

# status: backlog
Feature: 架构守护 DSL 设计
  作为一个架构师,我希望在设计通过类似于 ArchUnit 这样的 DSL 来设定调用规则等。

  Scenario: 开发人员违反规则时,无法提交代码
    # Enter steps here

由于,使用的 Kanban 库不是很完善,所以并没有创建对应的编辑功能。对应的功能截图如下:

设计即代码

设计即代码就稍微复杂一些,分为这么四部分:

  • 架构描述语言。此处是有一个 DSL,只是我还在设计中。
  • Modeling。说是建模,但是也说不上,模型的双向绑定。即扫描代码,生成 UML,然后展示;修改 UML 的话,会修改对应的代码。(前半部分支持,后半部分暂不支持)。
  • 架构适应度函数。第一个功能是架构守护,即基于 Arch Unit 的 DSL 抽象。其它的暂时懒得写了。
  • UI Design。即我在去年设计的:https://github.com/phodal/design ,可以实现简单的 DSL 转换为设计图,以及 DSL 转换为 UI 组件。

UI 依旧很丑。

代码的代码化

我承认,这就是一个带目录功能的编辑器。哦,不,暂时还支持保存文件,但是基本可用。

其它

Todoing。

就这么五天,你还想要什么自行车。

小结

GitHub 下载预览版:https://github.com/inherd/uncode/releases

如果你擅长又或者是对以下的内容感兴趣:

  • React
  • Monaco Editor
  • Rust
  • Tauri
  • 对 UI 有美感

人生苦短,欢迎加入 Uncode 的开发:https://github.com/inherd/uncode

关于我

Github: @phodal     微博:@phodal     知乎:@phodal    

微信公众号(Phodal)

围观我的Github Idea墙, 也许,你会遇到心仪的项目

QQ技术交流群: 321689806
comment

Feeds

RSS / Atom

最近文章

关于作者

Phodal Huang

Developer, Consultant, Writer, Designer

ThoughtWorks 高级咨询师

工程师 / 咨询师 / 作家 / 设计学徒

开源深度爱好者

出版有《前端架构:从入门到微前端》、《自己动手设计物联网》、《全栈应用开发:精益实践》

联系我: h@phodal.com

微信公众号: 与我沟通

标签

最近的一些事

  • 最近我和我的同事们,一起在创建一个新的编程语言:Charj 。它是一个使用 Rust 编写的描述式、中间编程语言。GitHub: https://github.com/datum-lang/datum

    Nov. 14, 2020, 9:27 p.m. | China