我在开发本地版「语雀」(上)

我在开发本地版「语雀」(上)

💡 原文中文,约3100字,阅读约需8分钟。
📝

内容提要

作者开发了一个基于Web的知识管理GUI应用,用于管理本地文件和数据,具有知识库、多应用、信息订阅和可扩展性等功能。与其他知识管理工具相比,该应用有独特的动机和需求。

🔎

延伸解读

数据自主:为何要开发本地知识管理工具

作者基于近20年网龄的体验,指出公有云服务不可信:平台初期免费吸引用户,后期可能收费、限制资源,甚至无通知封禁或删除数据,服务下线也不提前告知。因此,将个人数据视为重要资产,选择本地管理可避免被平台挟持,确保数据控制权。

以「人」为维度的信息订阅:打破平台孤岛

当前内容平台和社交媒体形成封闭的信息孤岛,用户只能通过关注账号获取更新。作者提出以「人」为维度聚合多个平台账号或网站feed,例如订阅「欧雷」这个虚拟人格,即可接收其在语雀、知乎、掘金、微博等平台的内容更新,无需分别关注,提升信息获取效率。

多应用架构:数据隔离与跨应用读取

该GUI应用中的「应用」类似语雀的「空间」,每个应用对应本地Git仓库,实现数据隔离。应用内的可变操作不能影响其他应用,但一个应用的数据可作为其他应用的外部数据源读取。例如,书影音应用的数据可被「外脑」应用引用,用于记录观看进度,实现数据关联而不破坏隔离性。

可扩展性:定制界面与功能

作为开源免费的Web应用,它提供多种定制点:界面风格主题(字体、颜色、布局)、知识库的列表页/表单页/详情页展示形态、数据CRUD钩子与操作自定义,以及首页小部件。知识库相关扩展可打包成「模板」安装,满足个性化需求,增强工具适应性。

❓

Q&A

为什么作者要开发一个本地版的知识管理工具?

作者认为公有云不可信,用户数据应被视为重要资产,而云服务可能收费、限制资源甚至突然关停,导致数据丢失。此外,当前内容平台形成封闭的信息孤岛,传统文件管理存在查找和编辑不便等痛点,因此需要一种能管理本地文件并实现数据关联的工具。

这个知识管理应用有哪些核心功能?

核心功能包括:知识库(管理本地文件,可视化修改元数据)、多应用(类似语雀空间,支持数据隔离和跨应用读取)、信息订阅(以“人”为维度聚合多平台内容更新)、扩展市场(支持界面风格、知识库展示形态、CRUD钩子等定制)。

应用中的“知识库”是如何管理本地文件的?

以用户设置的本地文件夹作为数据源,按QiiDB数据规范遍历子文件夹并读取文件内容,在界面中以列表页呈现。每条记录对应真实的YAML、Markdown、图片等文件,界面中的增删改查操作实际是对文件的读写。此外,还能可视化修改元数据,如定义字段名称、数据类型、校验规则,以及配置列表页、表单页、详情页等展示形态。

“多应用”功能是如何实现数据隔离和跨应用读取的?

每个“应用”类似语雀的“空间”,对应一个本地Git仓库,起到数据隔离作用。界面中对数据的修改和删除等操作限制在某个应用内,不能变更其他应用的数据;但某个应用的数据可以作为其他应用的外部数据源被读取。例如,在“外脑”应用中添加书影音应用为外部数据源,即可读取并标记《绝命毒师》的观看进度。

信息订阅功能有什么特别之处?

信息订阅以“人”为维度,而不是以平台账号为维度。这里的“人”指虚拟身份背后可被识别的具有同一性的存在,可以是个人或组织。在应用中订阅某个“人”,就能收到该“人”在多个平台(如网站、知乎、掘金等)的内容更新推送,打破平台孤岛。

这个应用的可扩展性体现在哪些方面?

可扩展性体现在:界面风格主题(字体、颜色、间距、布局等)可定制;知识库的列表页、表单页、详情页等展示形态可配置;知识库数据的CRUD钩子与界面操作可自定义;首页可展示小部件(参考iOS、macOS)。知识库相关的扩展可打包成“模板”安装。

🏷️

标签

➡️

继续阅读