Leo 要停止开发了
早上在邮件列表里面读到EKR的一封信:
Leo 6.6 may be the last substantial release in Leo's history. At present, the 6.6 to-do list contains five items. There are no items at present on the 6.7 to-do list. Many open items remain, but I have little desire to do any of them. Expect 6.6 final in a month or so.
The leojs project now seems like the future of Leo. Indeed, it melds Leo with vs code, an unbeatable combination imo.
作为Leo Editor的老用户, 在这里缅怀下。 EKR在邮件中还给leojs做了一个广告。 让人不禁想起了:
Anything that can be Written in JavaScript, will Eventually be Written in JavaScript
Leo 回忆
我曾经有一段时间使用Leo做知识管理。 记录大大小小的项目信息,写文档,写会议记录,记笔记。
还对它做过一些扩展:
- 增加了Git Add, Commit 和 GitHub Push的快捷键, 一键将Leo的文件自动提交本地git库,并Push到GitHub上的一个私有仓库做备份, 上面图片中的save-push按钮就是做这个的。
- 读取手机发来的xmpp消息,并在特定Leo节点下生成图片文件和文字信息。
- 对某一个节点的信息进行加解密。
- 增加了和simpletask todo.txt文件进行双向同步的功能。 可以在手机和电脑上同时管理一个todo清单。
后来转到VS Code的Foam之后, Leo逐渐就用的越来越少了。 Leo本身是一个Outliner, 可以把知识按照树状结构展示。每一个节点有topic,有内容。 节点有各种不同的类型,对应不同的展示方式。
在社区里有人用它写代码,Leo是一个比较大的Python工程,它本身的开发就是在Leo下进行的。 也有很多非软件专业人员用它来写文档,记事。
克隆操作,Leo的灵魂
Leo有一个特性让人印象深刻。 它可以给知识做视图(View)。 例如你在里面保存了很多小的知识片段。每个小段落都是一个Node。 当你有一个新的项目的时候, 可以建立一个节点,然后把系统中其他的节点克隆到这个项目下面。
这里的克隆是Leo 社区的叫法,实际叫引用更贴切一些。因为信息并没有被复制,而是在视图内被引用了。
如果把每一个子树看作一个项目视图,系统中同一个段落可以出现在不同的视图里面。 改一个地方,其它地方也会改变。 删除一个视图,不会影响其它地方。 只有当这个段落自身以及它所有的克隆都删除了,段落承载的信息才真正从系统删除。
这样随时可以按照场景, 按照项目,来给知识建立多种展现方式。
对于一段时间内需要集中处理的工作,可以很方便的建一个试图,把需要关注的节点都克隆进去。 工作结束后把视图节点删除就可以了。 工作成果已经反映在系统中其它节点里面了。
Leo内部是使用有向无环图(directed acyclic graph)的数据结构来存储节点,支持克隆操作。
上图中,在节点A和C下,都能看到节点D。之所以用无环图,是因为Leo有很多针对节点的命令都需要遍历所有子节点。例如,把一个节点生成PDF格式文件,所有子节点都是章节。无环图可以很好的支持这种场景。
未来
Leo功能强大,扩展性很好,开发社区也很友好。 问题是它作为编辑器,生态环境不够好,社区还是太小。
相信拥抱VS Code是正确的选择。用leojs把Leo的精髓作为插件带到VS Code里面去,和其它的插件来协同,给用户带来更丰富的功能。