scratch3-adapter重构笔记
文章目录
近期在重构codelab-adapter,目前的最新版本是0.1.1, 我们计划在10月份发布0.2.0
这次重构带来的改变包括:
- 本地SSL安全证书
- 引入json-rpc,鼓励开发者使用json-rpc简化插件的开发
- 引入Scratch Link模式(目前scratch3-adapter在开发模式下允许切换为Scratch Link模式,与官方Scratch Link保持相同的架构,官方暂未开放Scratch Link,我做了逆向分析。)
- 允许在GUI面板上启停插件
- 发布不同平台的安装包(exe/dmg/Python package)
- 在跨平台软件分发这块,很多地方参考了mu
- 在插件方面,添加了优必选alpha系列机器人的支持
缘起
近期使用官方七月底发布的Scratch Link,我很喜欢这个软件,对它做了不少分析,Scratch Link有许多聪明的设计,准备把这些好的主意移植到scratch3-adapter上。当然也有一些我们不喜欢的地方,我们准备做些有趣的探索和调整。
目标
此次重构的主要目标是提升软件易用性,mu和Scratch Link在易用性方面都做得非常好,这两个软件是我们主要的学习对象。
重大变更
下边记录重构前后,发生的一些大的变更
本地SSL安全证书
我在为Scratch3.0设计的插件系统(下篇)中描述了codelab-adapter的架构设计,其中提到:scratch3-adapter中包含了一个websocket-server
逆向分析Scratch Link可以看到,它内部也包含了一个websocket-server,使用的是Telegraph
当我们从https网站访问本地websocket-server服务时,如果本地websocket-server服务没有采用SSL安全证书,会给用户增加操作步骤(需要用户确认继续访问),体验不够友好,问题的描述和解决方案我都写在本地https/wss服务与SSL安全证书
引入json-rpc
scratch3-adapter受ROS影响很深,ROS本质上是一个消息系统。
我很喜欢Smalltalk的设计原则中的这条:
计算应该被视为可通过发送消息来统一调用的对象的内在功能。
Scratch的第一个版本由Smalltalk的方言Squeak写成,受Smalltalk影响极深。可以看到Scratch3.0依然保持着这条设计原则。
我希望scratch3-adapter能延续Smalltalk的设计原则。所以消息会一直作为核心要素。
我相信这条原则是scratch3-adapter达成它的目标将万物积木化
的核心所在。
但原始的消息对于大多开发者来说,可能过于原始了,所以我们决定学习Scratch Link,在消息之上抽象出RPC,方便开发者写自定义的插件。当然这个特性是可选的,是否使用json-rpc由开发者自行决定。我原本计划在消息之上添加自定义协议,后来发现json-rpc就是我想要的,所以就不重造轮子了。
Scratch Link模式
Scratch Link本身非常简单,我大约使用100代码实现了它的功能。这部分作为Scratch Link模式,开发模式下可以启用,Scratch Link模式很简单,不包含ZeroMQ,它的核心是websocket-server
+ json-rpc
。
我们来演示scratch3-adapter的Scratch Link模式下,如何完美替代官方的Scratch Link。
我们让scratch3-adapter模拟成Scratch Link,欺骗前端说它已经搜索到了micro:bit。实际上我们连电脑的蓝牙都没打开。
接着让我们点击连接,再次成功骗过前端
我比较坚持引入ZeroMQ,所以scratch3-adapter默认不采用Scratch Link模式,而将ZeroMQ作为架构的核心部分(默认模式)。对于异步任务、分布式组件、协同控制,ZeroMQ都能帮上大忙。ZeroMQ会让scratch3-adapter极为灵活,如果之后要引入复杂的机器人、AI、飞行器矩阵,ZeroMQ会让这些事变得简单。我希望提供一个强大、灵活而开放的架构。
jupyter架构的核心元素之一便是ZeroMQ,jupyter如此健壮的原因之一便是ZeroMQ。我在jupyter notebook架构分析做了讨论
允许在GUI面板上启停插件
重写了插件管理系统,支持线程管理。于是可以在GUI面板上随意启停插件。而不必反复重启软件
软件安装包
为了让软件更加易于使用,我们决定提供各个平台的安装包,windows下为exe,macOS下为dmg,linux下可以选择python package或者打包好的软件。
这部分主要学习了mu-editor
参考
文章作者 种瓜
上次更新 2018-09-16