关于笔记软件的比较研究

本文约 5100 字,阅读需 11 分钟。

一、引言

工作以来,如何高效地整理自己的信息这个问题一直困扰着我。经常会遇到这种情况, 自己需要记录一个信息,但依稀记得自己记录过类似的信息,却又半天找不到。 举个例子,我发现一个学习C++不错的网站,于是在"C++"分类下面记录了这个条目, 但是,不久之后发现之前在一个"资源收集"的分类下面也记录过。也就是说,这个学习C++的网站条目, 既可以认为是C++这个大类下面的一个子类(学习资源),也可以认为是资源这个大类下面的一个子类(C++方面的学习资源)。 知道最近,我才意思到这种树状的分类法是无法满足我的需要的,在后文“信息的拓扑结构”小节将会深入分析

在思维导图(Mind Map)中,这个问题也颇为明显,思维导图有一个中心起始节点, 鼓励使用者充分发散思维。但是,每个分支其实也是有可能存在联系的(比如因果关系), 所以,一些脑体就提供了一个所谓“联系”的功能,可以连接两个节点。“联系”可以处理一些简单的关系, 但是,如果信息足够庞大、彼此关系足够负责,这个功能也无法满足,因为脑图的中心是绝对的。

实际上,市场早就发现了这个问题,The Brain就是这样一个软件,如其名字所昭示的: 这个软件在以一种类似人脑的方式组织信息。

顺着这条线索,我也市面上相关的笔记软件都做了一遍了解,也系统地梳理了自己对于工具、笔记软件工具、 我的笔记软件工具这几个问题的思考。

以上是本文的背景。

二、关于工具的几点思考

2.1 为什么需要工具

假舆马者,非利足也,而致千里;假舟楫者,非能水也,而绝江河。君子生非异也,善假於物也。

《荀子·劝学》

我对于工具的理解非常简单:分担人的工作。农耕时代的各种工具很好地分担了人的体力工作, 而信息时代的各种工具则更注重于分担人的脑力工作。

比如日程管理和各种 TODO App,就很好地解放了大脑。计算机最初被发明出来也是为了完成人脑 所不能处理的庞大运算量,恰如农耕时代的牛耕。

虽然我们制造并使用工具的动机很简单,但是代替体力的工具和代替脑力的工具却存在着巨大的差异。 比如说车轮,应该不会有人用六边形的轮子,因为客观的实践已经证明了原型是最好的解决方案。 但是,到了脑力工具领域,这种客观性大大减弱,而主观意识大大增强。这也是为什么同样一个工具, 市面上会存在几十、甚至几百种对应软件的原因(当然也存在一些经济因素在其中)。

2.2 人用工具,而非工具用人

首先需要明确的一点是:使用工具的原始动机是提高自己的效率。如果过于追求工具的能力, 甚至为了使用工具的某些工具而主动去创造使用场景,这就是本末倒置了。事实上, 没有哪个工具和个体的人是完全匹配了,没有必要比理解、并熟练掌握工具的每一个功能。

2.3 好的工具可以适当地启发人

辩证地看,也不能完全排斥工具的一些“附加功能”,很多时候,工具的创造者其实是比使用者更了解这个领域的, 所以好的工具很多时候可以可以启发使用者,原来还可以这么做!

2.4 没有最好的工具,只有最合适的工具

由于每个的知识背景不同,对于解决同一个问题的认知和接受能力也不不一样的。 比如普通的职场白领,对于计算机的使用完全停留在应用层面,他们的只能接受Word这样的富文本编辑; 与之对应的,程序员则更喜欢用Markdown之类的标记语言来管理文档。而Typora则试图用一种Word 用户能接受的方式引入Markdown到普通电脑用户当中。

后文在讨论笔记软件的时候,也会讨论到类似的情况。

2.5 实用大于精致,合适大于逼格

继续上一个问题,在选择合适的工具这个问题上,有两个误区是要极力避免的。 一是不要过于追求精致,我观察到很多宣传notion的人会过于强调这款软件的精致, 我认为这样会破坏一些小白对于这个工具客观的认知。虽然美观很重要,但永远不应该是核心问题。 二是不要为了逼格而使用一个你不能驾驭的软件,我相信真有人以至于是方向键在Vim里面控制光标。 还是,那句话:合适自己的才是最好的。所谓合适,大概需要考虑以下几个问题:

  • 自己的学习能力和投入预期(时间成本),比如Vim、Emacs这种软件,即使是专业程序员也要经过长久的学习实践才能掌握
  • 自己的使用习惯,比如有的人(其实应该是大部分人)更习惯使用鼠标(如果你的Chrom扩展列表里有crxMouse之类的扩展), 有的人则更习惯使用键盘(如果你的Chrom扩展列表里有Vimium之类的扩展)完成一切操作。
  • 自己在对于目标工具的特定述求:付费、免费?在线、本地?美观?

2.6 商业还是开源

商业软件最大的好处的易用性,因为它只有足够易用才能被用户接受。但是,商业软件的局限性也很明显:

  • 存在风险:公司可能倒闭、产品可能停止维护、收费可能提高到你无法接受的水平,等等
  • 缺乏灵活性:因为商业软件做的事所有用户共同诉求的那个交集,并且尽可能降低使用门槛

有些方面,对于普通用户来说可能是商业软件的优势,但对于程序员来说,毫无优势:

  • 更好的服务:普通用户只能通过客服解决问题,但是程序员可以通过社区、Issue等很多方式获得帮助, 而且这种帮助可能质量更高:客服往往解决不了负责的问题,但是网络上却大神云集(如果他们愿意)
  • 更健壮的质量:我认为这是一种误解,实际上成熟的开源软件往往质量都非常高。

最会,开源软件还有一个巨大的优势就是你可以从用户变成开发者,从而深度改进自己的工具(当然了,这需要非常高的门槛)。

以上,就是我对于工具的基础认识。

笔记软件其实是一个信息整理的工具,所以,在讨论完工具后,有必要再谈一下信息管理。

三、对于信息整理的理解

3.1 信息的拓扑结构

初级的信息是孤立的节点,这种节点很容易被遗忘。

正常人肯定不会让信息分散在各处,所以大部分人会把信息分门别类地归纳好。但是, 前面提到过,信息的分类不是绝对的,只要把范围扩到足够大, 就很难找到一个满足“彼此独立,互相穷尽”的分类标准。而且,信息直接还存在着额外的关联。

此外,我们的大脑也不是如此工作的,我们的大脑依靠突触连接产生记忆,是一种 网状结构,这也是类似Roam Research、Obsidian之类的软件产生的原因。

3.2 信息与知识

需要注意的是,对于个体的人来说,信息的价值其实是有限的,因为你能获取到的大部分信息 其实都是公开的,只有把信息转化成了知识,才是有价值的的。

有些笔记软件会让人往一个错误的方向走:收集信息,却不升华成知识。比如, OneNote可以自动备份公众号文章、印象笔记可以备份网页。我不是说这些功能没有价值, 知识要注意所谓的信息陷阱。我曾经用OneNode收集了不少我觉得牛逼轰轰的文章,但之后 一遍也没有看过,事实上,这样的文章每天都在产生,收集他们并不会让我变得更强。

四、对于笔记软件的理解

讲完了工具和信息整理,终于可以讨论信息整理的工具:笔记软件了。

4.1 多设备协同 & 本地还是云端

一般来说,普通用户更喜欢云端协同编辑,这是使用门槛最低的方式,但是个人认为存在以下风险:

  • 云端的东西安全性、迁移性无法保障(有些流氓软件就是希望锁死你)
  • 如果我希望自己写一些脚本(比如统计字数、词频)放在云端是无法做到的
  • 如果没有网络,我就不能编辑

当然了,放在本地也会有一些问题:

  • 比如我在家里和公司各有一台电脑,我就得每天记得同步,否者无法衔接

手动做这个事情实在太痛苦了。

那么如何保持同步呢?我用过或者能想到的办法:

  1. 使用“微云同步助手”之类的工具(定制性差,比如我不想备份 .git 目录)
  2. 使用U盘(安全性差、而且需要定期做备份)
  3. 放在服务器,可以在任意设备编辑(粘贴图片、预览之类的操作会麻烦一些,需要折腾)
  4. 自己基于 rsync 写一个实时同步工具(看起来也不难,够用就行)
  5. 写一个脚本,每天定时同步(Git Push),也会有问题(万一哪天下班早,回家还得等同步?)

总的来说,我更看好思路4,应该有很多开源的实现了。

还有一个问题是多设备协同,大部分商用笔记软件其实会支持移动设备,我个人其实不是很执着于此, 因为移动设备的屏幕大小注定了无法提供PC等同的编辑体验。所以:如果需要编辑笔记,就做到电脑面前去。

4.2 版本管理

普通用户或许没有各个概念,但是对于程序员来说,最好是对笔记做版本管理, 可以大大降低笔记丢失的概率。

4.3 纯文本还是富文本

如果使用了版本管理,那么做好用纯文本,因为版本管理工具无法很好地管理二进制形式的富文本。 此外,大部分工具也对纯文本有更好的兼容性。

4.4 二进制资源

笔记不可能只有问题,对于图片、视频类的资源,我认为应该和笔记部分隔离开, 通过相对路径或者超链接的形式引用。

五、已知笔记软件的比较

以下,是我基于自身诉求对各种笔记软件的比较,每个人的出发点、认知不一样,仅作参考。

5.1 印象笔记、有道笔记、谷歌文档

这类笔记我基本放弃了,原因:

  • 商业收费
  • 编辑器太弱(重度Vim用户)
  • 在线存储,没安全感

5.2 The Brain / Notion

The Brain理由同上,而且不是一般的贵。而且感觉因为太贵,导致用户不多,没有社区可言。

Notion的在线、非Vim、商业收费都是我无法接受的。

5.3 Obsidian / Roam Research

正式对Obsidian的了解,使我发现了原来网状结构已经被这么多软件实现了。但是,我还是放弃了这两款软件。 Obsidian的对于我来说,虽然也有Vim插件,但相比evil还过于简陋,而且Markdown的表达力还是过于局限了,只适合一些简单的记录。 Roam Research没有深入研究,因为我发现一个它的开源替代品(Org-roam)就是我想要的。

也是从这里开始,我知道树状分类的局限性:

5.4 TiddlyWiki

结合TiddlyMap + ReLink,我一度已经计划用TiddlyWiki作为自己的笔记软件了。 只是恰好发现了Obsidian即Org-roam,才重新做了选择。 TiddlyMap正式让我眼前一亮, Tidder的概念也和卡片式笔记不谋而合。 此外,我已经基于服务器实现了多设备同步(源文件放在服务器,然后启动一个Local Server, 然后通过ssh转发端口到本地,就可以直接编辑了)。 只是,TiddlyWiki的编辑器实在过于简陋,无法满足长时间的编辑,最终还是放弃了。

5.5 Logseq

按照官网解释,这个软件受了Roam Research, Org Mode, Tiddlywiki and Workflowy 的启发,Star数相当不错,而且是一个非常年轻的软件。

但我盲猜应该不支持Vim风格的编辑。

主要是,我已经看到了Org-mode的强大和生态,让我相信不需要去找Another Org-mode。

5.6 Org-roam

我是通过 Org-Brain(The Brain)的开源实现发现Org-roam, Org-Brain的最大问题是可视化做的不好,而Org-roam-ui则一下吸引了我。 Org-brain的作者也是使用过TiddlyWiki之后放弃了: org-brain

经过一晚上的学习之后,我已经能使用了,完全解决了我之前的一些痛点,这就是我要找的工具了。 读完Org-roam的使用手册之后,基本既可以使用了。其实,只要有诉求,就非常容易理解这些功能的作用了。 此外,像org-roam-bibtex这样的功能,基本确定是我不需要的,直接不关注即可。

一些教程和讨论:

由于我用的是 Spacemacs,它内置的Org-roam还没有升级到V2,结合作者的介绍(Releasing Org-roam v2)来看, 还是升级到V2再使用比较好,没必要学习一个行将淘汰的V1,于是折腾了一番: 主要讨论在这个帖子: V2 and spacemacs ,一开始用gnohz的方法(就是模仿Spacemac的配置, 见https://github.com/syl20bnr/spacemacs/blob/548edefcce52cf626927c7806c01796cf66b0410/layers/%2Bemacs/org/packages.el#L923),自定义Layer, 结果问题比较多,回来Gp741提供了一个方法,只需要修改 .spacemacs 即可, 于是采用了第二个方案。

六、研究结论

还有一些没讨论到的,比如 Foam,我也无需再研究了。回到开头的论断:合适就好,关键是要 确认是否真的合适。我的选择不不具有普适性的,毕竟大部分人没有Emacs、Vim的使用经验, 但是对于我来说,这是习以为常的,而且对于一个将使用十几年的笔记软件来说,强大与易用比学习门槛重要多了。

说来惭愧,我在找到TiddlyMap之前,还以为没有类似的软件,一度以为可以自己实现一个, 没想到拔出萝卜带出泥,这个领域早已经被各路大神和创业者玩烂了,只能说:

http://images.vimerzhao.top/brain-001.jpg

工具终究是工具,关键还是要有人的思考。

总阅读量次。