No Silver Bullet.

谈知识管理必称笔记软件,但是人们在用什么工具记笔记这件事上似乎永远没有共识。

接触这些名词一年多,越用越迷茫。知识没有生产多少,反倒试了不少新玩具:Obsidian、Notion、Logseq、Anytype、Joplin……

今天读到阮一峰老师《关于Unix哲学》,豁然开朗。文中把 KISS(Keep it simple, stupid)总结为四条原则:

  • 清晰原则:代码尽可能清晰,易于维护;可维护性比性能更重要。
  • 模块原则:每个程序只做一件事
  • 组合原则:使用文本而非二进制通讯,因为文本更通用、更容易处理
  • 优化原则:「先求运行,再求正确,最后求快。」(Make it run, then make it right, then make it fast)

把「代码」简单地代换成「笔记」,非常直观。颇有一种「老祖宗早就在山顶等着」的感觉。回想一下之前的折腾之旅,很大程度上是在反其道而行之。复杂的笔记系统、All in one、非标准格式、沉迷工具……怪不得越折腾越懵逼。

作为单一产品的用户,我们的选择颇受限制。但是,以自部署、自动化为前提来思考,事情就有些不同。

  • 笔记一定是纯文本的
    • Github Flavored Markdown + Wiki links + Frontmatter:目前流行的,能兼顾简洁和功能性的格式
    • 内容结构不要过于复杂,应该在传统的文件夹-笔记结构下也基本可读
  • 前后端分离,模块化
    • Obsidian、Logseq、Silverbullet、VScode 甚至 Github 网页都可以用。重要的只有格式支持和编辑/阅读体验。(和类 Notion 说再见吧!)
    • 模块化实现各种需求,不要害怕自己动手编程
      • 通过 Webdav/Syncthing 同步
      • 通过 pre-commit-hooks 之类的流程完成 linting 等工作
      • 编程实现静态查询(类似 Dataview),把结果输出为纯文本,保证各平台可读
      • 和具有开放 API 的平台集成(Omnivore、Anki……)
      • ……

到这里也就明白 Emacs/Vim 如此受追捧的原因了。同理,也能理解 Obsidian 的成功——它为一般用户提供了客制化的权利。

向新的实践迈进吧!