约 11530 字
预计阅读 24 分钟
小氯说02:Obsidian与开源
2024-10-22
小氯说
AI 摘要
109酱

各位老友们好,我是 Chlorine。鸽了许久的一篇文章,双手奉上。

本文属于对一个话题比较集中的探讨,因此被我归到了尘封许久的「小氯说」系列,大家当个杂文看看即可。

Obsidian,黑曜石,自然界中最锋利的岩石之一(黑曜石碎片比手术刀锋利 400 倍——这个数字来自小氯看过的一本野外生存手册,可能有夸张的成分)。曾经有人提到,Obsidian 这个名字让他们联想到《三体》中用来压平雪浪纸的黑曜石板(出自云天明讲的那三个故事)。虽然小氯在初中时几乎就能把《三体》倒背如流,但还真没往这方面想。这确实是一个很巧妙的联想。

有点跑题了,回来。相信能看到这个博客的老友多多少少都了解 Obsidian 这个神奇的软件,以及其在个人知识管理(PKM)领域的地位。如果答案是否定的,您可以先把这篇文章放到某个不会很容易地忘记的地方,然后前往 Obsidian 的官方网站Obsidian 官方中文论坛,作一点简单的了解。如果您对 Markdown 和 PKM 感兴趣,小氯相信您会喜欢上 Obsidian 的。

毫无疑问,Obsidian 是一个极其优秀的笔记软件:本地化存储,开放格式,顺滑的 Markdown 编辑体验,丰富的插件生态,超高的颜值(尤其是有主题加持的情况下),热闹的社区环境……光别的不说,对于中文 Markdown 使用者而言,一个 Easy Typing 插件的编辑体验就可以薄纱从 VS Code 到 Typora 的各种 Markdown 编辑器。

但是就在 Obsidian 的这一众诱人的优点中,有一个非常醒目的事实:Obsidian 是闭源软件。这就像是 Obsidian 这朵玫瑰花上一根尖锐的刺,让许多 FOSS 主义者望而却步。

当然,一如刺对玫瑰花一般,闭源对于 Obsidian(或者说,Obsidian 的开发团队)实际上是一个(在他们的看法中)在某些方面有用的特性——至少 Silver(Erica Xu)和 Licat(Shida Li)等 Obsidian 团队的核心成员已经不止一次地表达过这个观点,不管是在官方论坛还是别的什么地方。

我们说过,Obsidian 有一个极为庞大的社区,即使在其年轻时(发展初期)也是如此。人一多,就会有不同的观点,尤其是开不开源这种讨论度极高的话题。在 Obsidian 的官方论坛(不是官方中文论坛)上,有一个非常显眼的 thread1,专门讨论这个问题:Open Sourcing of Obsidian - Meta - Obsidian Forum

这个 thread 的总回复数达到了将近 300 条,或许是 Obsidian 论坛(English / 简体中文)最多的。讨论开始于大致四年前,那时 Obsidian 还非常年轻,如果我了解得没错,甚至还没有即时渲染;而其最后的活跃时间(截至我敲下这行字),是两天前。管理员甚至设置了一个限制:一天只能有一条回复。

由此可见,这条讨论的关注度高到了什么程度。小氯花了三个星期的时间,断断续续地看完了这个 thread,作为一个英语的外族语者,这是一个极其费力的工作。

老实说,这个线程有很多高质量的讨论,但是也充斥着许多无意义的重复、不明就里的晦涩语句、毫无根据的暴论甚至是不友好的争吵和指责。而且,到最后时,小氯感觉自己浪费了大量的时间,因为事实上能说的观点就那么多,到最后其实就是在翻来覆去地烙饼。

同时,很显然,Obsidian 团队即便再有耐心,面对这么多讨论也会不胜其烦。@ryanjamurphy 甚至直接来了一句:

Logseq is open source. Bye!

能看出来是真的很不想继续说了。也确实,小氯这个闲人看了这么多回复都感觉很累了,何况是还有开发工作的 Obsidian 团队呢。

——那既然我们早就讲不出什么新的东西了,小氯为什么还要在这里重复呢?

很抱歉,小氯酱也在想这个问题。写长文(指时间跨度和文章长度)的时候常常遇到这种问题,写着写着都要忘了自己为什么要写了。

如果要用一篇文章把小氯对于开源、自由软件这些概念的看法讲完,那是不可能的——想想看《大教堂与集市》写了多长,即使小氯现在的开源阅历还极其浅薄。所以小氯做了一个决定:本文只是一个带有发散的「就事论事」。至于以后更多的思考,请容小氯留到以后再写。

同时,本文不是任何形式的谴责或者批评,但是的确包括很多分析和批判(这里的批判并不是日常中的意思,而是接近于哲学领域的「批判」或者是《政治经济学批判》中的「批判」——当然我不是说我写了篇哲学文章,小氯还没那个水平)。Obsidian 是 Obsidian 团队的智力成果,最终是否开源也是 Obsidian 团队的自由。大家可以从最后的立场看出,如果 Obsidian 开源,小氯会非常高兴,但是如果不开源,小氯至多只会表示一定程度的遗憾。

虽说 Obsidian 的使用许可堪称互联网善人,但是 Obsidian 的开发团队(Dynalist Inc.)毕竟是一家公司,考虑商业利益是很正常的事情。由于 Obsidian 似乎还没有公布任何形式的财报,我们可以大胆地设想和总结一下,Obsidian 到底有哪些收入来源。

目前为止,Obsidian 对个人完全免费,没有任何广告,没有接受融资,(按照开发团队的说法)不收集任何用户信息,自然也不会出售。假设这些说法都是可信的,那么其收入来源就是:

  • Catalyst 个人许可证(Obsidian 的个人赞助者许可证)
  • 商用许可证
  • Obsidian Sync 和 Obsidian Publish

让我们思考一下,如果 Obsidian 转变为开源,这些收入会不会遇到什么影响。

首先的首先,First and foremost,需要澄清一件事:Free in free speech, not free in free beer. 开源软件、自由软件和完全免费的软件(gratis)完全是两回事。如果您认为 Obsidian 开源了就不能盈利,那小氯可能需要委婉地指出,您在这个领域缺少最基本的常识。

首先,Sync 和 Publish 应当不会有影响——或者至少不会有负面影响,因为它们本质上和 Obsidian 没有关系——前者是帮助你把一堆 Markdown 从一台设备搬运到另一台设备,后者是帮助你把一堆 Markdown 从本地搬运到公网。而且,目前 Obsidian 官方也没有对第三方同步方法做任何限制——不管是 Remotely Save,Remotely Sync 还是 Obsidian LiveSync。甚至可以说,如果 Obsidian Sync 和 Publish(特别是 Sync)开源,那么愿意用的人恐怕还会变多。至于发布,那更不用说。各位可以猜猜小氯的博客是用什么写的。

其次,Catalyst 很可能会不减反增。对于那些不关心 Obsidian 是否开源的人,Obsidian 开源与否不会影响他们的赞助决策(小氯相信,排斥 Obsidian 开源并且能拿出让自己长期信服的理由使得在 Obsidian 开源后放弃对 Obsidian 的支持或者是这方面的想法的人是极少的);而对于 FOSS 软件的爱好者,Obsidian 开源绝对是一个非常大的 extra mile,会吸引许多本来还在犹豫观望的 FOSS 爱好者投入 Obsidian 的怀抱,而其中必然会有一部分人乐意以这种相当实际又带点情怀的方式向 Obsidian 的开发者们致意(或许也可能是 Sync 和 Publish?)。已知后者不但存在,而且数量并不少,因此我们有理由断定 Catalyst 的收入会增加——很可能还会有小氯的一份。

那么最后,就是商用许可证的问题了。小氯觉得,这个也并不是问题,您所需要的只是一个严格一些的开源许可证。可能有人会说,那如果有商业公司直接把代码拿走以逃避商业许可证的限制呢?你说得对,但是现在的 Obsidian 就能避免这个问题吗?就现在的情况而言,无论是商用却不购买许可,还是试图把 Obsidian 解包后自己做产品(这个涉及更复杂的法务问题),其难度并不比开源大多少。所以,我不认为这是一个足以支撑闭源的理由。

甚至我们也可以说,开源会帮助 Obsidian 省去某些费用。正如用户 @EuriNaiz 说的,Obsidian 的论坛本身建立在 Discourse 上,而 Discourse 官方事实上为开源软件提供免费的托管服务……

综上所述,在会计学的层面来说,开源对 Obsidian 来说,至少不会有显性意义的收入减少。

那小氯能保证 Obsidian 开源就会生存得更好吗?不能,原因很简单,小氯不是神明或者先知。但是现在,我们也同样无法保证,或者至少是做出更多的肯定,Obsidian 闭源就会生存得更好。此外,小氯自认为从理性和逻辑的角度,以上论证没有明显的矛盾和错误。

这是个极其微妙的问题。毫无疑问,Obsidian 的开发团队在道德上是非常令人放心的,即使是因为隐私问题希望 Obsidian 开源的人大部分也不会否定这一点。

那让我们来分析一个问题吧:Obsidian 闭源的情况下当然也可以通过沙箱的方式保护隐私,但这么做是否意味着我们不信任 Obsidian 的开发团队?毕竟「我断掉了网络连接,因此你无法窃取并传回我的任何数据」和「我相信你不会窃取并传回我的任何数据」是两回事。那么 Obsidian 的独立审计是否足够可靠?我们依然可以怀疑,怀疑审计者,怀疑这次审计是否真的独立。那么开源条件下的社区审计呢?依然可以怀疑。怀疑的种子一旦种下,必然会在一个不太远的时间引发一场思想的雪崩,进而引发无穷无尽的麻烦。

小氯不想在这个问题上说太多,因为小氯也说不明白。同时,希望各位老友尽可能不要在讨论中涉及道德问题,这会引起许多的麻烦。

如果 Obsidian 不开源,就不能保证隐私性了吗?

答案是否定的,开源是隐私的既不充分也不必要条件。

这其实涉及到一个非常关键的问题。我们说开源软件(这里我们不考虑那些源代码开放但是广为流传的二进制分发闭源的产品,例如 VS Code)一般在隐私方面都值得信任,其依据主要是由于其源代码开放,因此任何人都可以自行审查其中是否有不受欢迎的部分。但是,这虽然理论可行,但是在实践中显然门槛极高。且不说世界上绝大部分的人都是「赛博文盲」,别说看懂代码了,甚至就连电脑怎么用都是迷迷糊糊(当然,这样的人一般也不会为开源、隐私这些事情担忧)。世界上能够对(任何类型的)计算机科学知识有了解的人,恐怕千分之一都是乐观的估计。

而就算是计算机知识比较充足的用户,也不一定就谙熟项目所用的技术栈;就算是谙熟,那也不一定有兴趣去看。所以我们可以认为,在开源软件的用户中,很少有人有能力看懂且会去看项目的源代码。所以,项目审查的重担实际上就是落在极少几个热心且技术力高超的用户(假设有)以及社区的审查员肩上(这甚至还需要我们近乎无条件地信任他们)。一般来说,一个开源项目的代码数量都大得惊人,而人眼观察、静态运行和调试的能力毕竟是有限的。因此,很多情况下,开源的「隐私性」实际上很大程度依赖于开发者自己的道德和良心。但是就如[[Ephemeralis-Weekly(8):七日漫谈#最小化但必要的监管|我们曾经说过的]],在进行任何技术实践时,都应以最坏的恶意度测人心。因此,开源项目的隐私性保障在实践中其实处于一个奇怪的真空态。

即使是说开源开发者一般都是有很高自觉性的谦谦君子,但是也难保会不会有一些别有用心的人提交一些不那么受欢迎的 PR。孙哥与我分享过一个很离谱的案例:一位黑客依靠一些贡献在开源社区取得了很高的威望,然后 TA(我不知道其性别)向一个项目贡献了一些代码,似乎还向 Ubuntu 官方提出了 PR 来着。这段恶意代码如果扩散开,可以取得所有安装 Ubuntu 的电脑的 SSH 权限。然后最后被发现了,原因是一位大神发现自己电脑的 SSH 慢了 0.5 s(是的你没听错,0.5 s),于是起了疑心,一步一步把这个东西挖出来了……

而闭源也并不一定意味着毫无隐私可言。虽说曾见过一个非常激进的说法「任何闭源软件的隐私协议都可以简化成一句话:我们可以在适当的时候以任何方式收集你的任何信息,并不必为此承担任何责任」,但是确实存在一些对隐私非常尊重的闭源软件,这点是不可否认的。

而且,理论上来说,不管一个软件(在隐私性上)有多么面目可憎,只要我们能够完全断掉其互联网权限,那么就算它能把你去年这个时候的前天和朋友去逛超市时买了哪个品牌什么口味的饼干或者是你刚刚给妈妈打电话时用的是哪只手的哪个手指的哪个部分触碰了拨打按钮多少毫秒都偷出来,那它也没办法让背后的服务提供者知道。我们还可以采取更激进(更保守?)的策略——直接把应用放到一个沙箱中,这样就算开发者手眼通天,能让应用搭上其他应用的网络连接,那也只能看着隔离环境干瞪眼。

我现在的 iPhone 就严格采取了这个方针——我的输入法是讯飞(因为 iPhone 的 Rime——仓输入法对我来说实在是太难用了),由于我现在 MacBook 已经全面采用了 Rime,因此我直接掐掉了讯飞的网络权限,你做好一个输入法的本分即可。此外,像 Light Player(我的本地音乐播放器)这样的应用,我也会在设置的 WLAN & Cellular 选择 Don’t Allow。

我们回来。总结一下,Obsidian 是否开源,其实和其(在实践中的)隐私保护没有什么必然的联系。如果想法不是要对开源项目贡献 PR,而只是希望其代码能被公开审查以确保隐私性(也就是后面会说的「源代码公共可见」),那么 Obsidian 的代码公开会增加一个理论上的、可以通过研究其内部机理而不是仅仅根据实验证据完全确保其隐私性的机会,小氯感觉这其实是一件象征意义大于实际的事。

此外,Obsidian 请了一个独立第三方做了一次审计,可以看这里

这里的「安全性」可以看作 bug 修复方面的事。如果 Obsidian 只公开代码而不允许社区协作,那么 bug 修复至少不会变慢(指的是投入相同的时间修复的 bug 多少。至于开源后的其他事情挤兑时间,那是另一个问题)。如果允许社区贡献,那甚至可能变快。虽然说重大的 bug 也很难被社区发现,但是小的 bug 不是这样的。退一步说,不论会不会变快,这条理由都不足以支撑闭源的决策。

可能有老友会问:闭源软件会不会因为要留住用户而转型使用封闭格式?

如果您的第一想法是这个,那小氯觉得您弄混了「闭源软件」和「商业软件」。不是说这件事没可能发生,而是说闭源软件和格式封闭性的相关性远远不如商业软件和格式封闭性的相关性强。Obsidian 是闭源软件,但是正如上面所说的,从 Dynalist 现在的态度上来说,和完全免费分发也基本没什么两样。而且,Obsidian 的格式开放性,在各大 PKM 工具上,应该算是首屈一指的——文件就是 Markdown,名字就是名字,文件夹就是文件夹,白板麻烦一点,.canvas 文件,实际上是 .json(参见 JSONCanvas 标准)。至于里面的语法,除了 wiki 链接(你也可以用正规 Markdown 链接代替)和 GFM 语法(现在 GFM 的兼容性已经非常高了),都是最标准的 Markdown。至于那些您自己嵌入的 dataview、iframe……很抱歉,开发者没有哪怕一点的道德和法律义务对此负责。

而且,至少在 PKM / 笔记软件这个领域,开源和开放格式也不是什么深度绑定甚至能称为比较相关的东西:Logseq 现在正在积极开发非 Markdown 版本;思源笔记采用 .sy(类似 JSON)作为存储格式,在文件系统层面上其文件夹和文件结构毫无人类可读性;至于 Appflowy,Affine,Anytype 等一众 Notion 的优秀替代品更是不用提,有的甚至连开放格式的导入和导出都不完善(当然,这件事也的确棘手)。

如果真要说最极致的兼容和开放,那么只能用纯粹的原始 Markdown 乃至纯文本,或者去找 VS Code,或者 Vim,Emacs 这样古神级别的编辑器了——甚至它们都不行,小氯不认为您使用 Obsidian,Typora,VS Code 或者是 Vim 打开 Org Mode 的文件时会有什么好甚至是基本的体验。

这很难说。无论是支持这个观点还是反对这个观点,都可以举出一大堆例子。我们只说一个很有趣的问题,就是开源是否会对风险灾备有好处。

具体来说:在这个 thread 创建时,Obsidian 应该还只有两位开发者,就是 Shida Li 和 Erica Xu。如果——我们说的是如果,Obsidian 遇到了非常严重的经济困难,不得不终止开发,或者被一个很有可能是 evil 的公司收购了,或者更严重的问题——例如开发者中的一位遭遇了不测,那么 Obsidian 在闭源状态下的开发是否会受到极大的、难以弥补的破坏?

对于第一个问题,这是个很现实的事情,举一个赛道极其相近的产品——Trilium。Trilium 在今年初宣布进入了维护模式,可以理解为开发已经基本停止了。然而 Trilium 并没有随风而逝,一个 community-driven 的项目——TriliumNext 接替了 Trilium 继续活跃地开发。而第二个问题典型的例子是 MySQL 和 MariaDB,OpenOffice 和 LibreOffice 等。如果 Obsidian 闭源,这个工作几乎是完全无法完成的。

一个非常常见的策略是:承诺在无法继续维护时开源。Erica 似乎也在这方面有一定的兴趣,其原文是:2

In summary, I think having a privacy statement and a pledge to open up code access if Obsidian discontinues are good ideas, but open sourcing does not make sense given the current circumstances.

对于最后一个问题……这是个非常严肃的事,尽管现在 Obsidian 的开发团队已经有了九个人(准确来说,八个人加一只猫),但是即使对于一个上百人的大团队,如果其主理人真的很不幸出了什么意外,除非这个团队是非中心化的,否则这真的是个非常棘手的问题。在这种情况下,开源至少不会造成什么损失,毕竟多几个对项目有一定了解的热心社区成员(可以肯定其存在)总归对恢复开放不会有任何负面影响。

这当然也不一定。Licat 和 Silver 等核心成员对自己闭源的解释里面很重要的原因就是他们认为闭源对自己的开发效率更有利。

小氯既没办法证明也没办法否定这个说法,因为 Obsidian 的开发效率是怎样的只有团队本身才知道。我们通常认为,开源带来的社区协作效应(对于 Obsidian 这种已经有了良好社区环境的软件,这个效应可能会非常明显。Obsidian 庞大的插件可以作为一个案例,尽管其和本体开发性质不完全相同)会大大提高开发的效率和活力,但是这不是什么普遍规律。毕竟,Obsidian 社区中希望贡献的大多数人(尽管他们已经是极少数了),其水平恐怕都无法超过、达到甚至接近 Obsidian 核心团队的水平。或许 Obsidian 的团队还是希望有一个精英化的核心,这不是什么问题。

此外,在 thread 中有这么一条回复,提到了另一个广受赞誉的软件—— Logseq

for everybody that wants an open source obsidian, check out logseq:

https://github.com/logseq/logseq/

I just started migrating. Its still in beta and early, but looks really promising and the community grows well. i love it so far. my guess is that because of them being os and having all the benefits that come with it, that they will surpass obsidian in the near future in popularity (fast dev cycles, pull requests, …)

这位用户并不算是一个成功的预言家。虽然 Logseq 和 Obsidian 在功能上有很多相似之处,但是至少就小氯写下这段话的时候,Logseq 并没有超越 Obsidian,甚至在许多方面依然落后于 Obsidian。

于是,有人用 Logseq 和 Obsidian 比较,说明开源实际上对开发效率不利。这显然是个荒谬的说法,至少是个不正确的论证,原因很简单——没学好控制变量法。这只能说明,对于开发来说,开源并不是一个 100% 的 game changer,而不是开源没有好处甚至有害。

——当然,小氯并不是说 Logseq 或者别的各位喜欢的 Markdown 笔记软件不好。Logseq 也是非常优秀的笔记软件,不论是大纲笔记,还是 Markdown 编辑,还是社区生态都非常出色。希望各位不要有什么误解。

很遗憾,这个事情必然存在,只是负担的大小。开源的确不是把代码扔到 GitHub 上就完事了,用 Silver 的话来说:

Doing open source right is a significant effort; it’s not just “putting code on GitHub”. There’s work in documentation, reply to issues, code reviews, help fellow developers get up to speed with the code base, etc. The cost to benefit ratio is very low for our small team of 2, and our plate is already full.

那如果不接受 PR 这类的社区协作呢?这的确可以摆脱许多负担,虽然说可能还会有一些极端的 FOSSist 质问「为什么不接受」,但是小氯相信大部分的开发者都不会揪着这一件事喋喋不休。当然,严格来说,这并不是开源。

恕我直言,无稽之谈。Linus Torvalds 开源了 Linux(一个更准确的说法可能是 GNU/Linux)的内核代码,难道这种情况下 Linus 就不是 Linux 的创造者了吗?还是说有人能够明目张胆地宣称,里面的某段代码是他/她写的,而不是 Linus Torvalds 写的?除非你采用的是 Unlicense 许可证,否则这段代码的版权永远属于你。

甚至即使是 Unlicense,你也并没有失去你的版权,你只是赋予了所有人完全自由地使用代码的权利。没有任何强制力量可以让你放弃版权,任何力量都不行。即使你真的对版权一点兴趣也没有,你觉得把代码放进公共领域是最好的归宿,那你是一位值得尊敬的开发者,但是,你的道德权利或者说是署名权,将作为一个纪念品一般的事物伴随你一生。如果你真的不喜欢(虽然说小氯还没有见过这样的人),当它不存在即可,要求人们使用时不要署上你的名字。

至于知识产权给作者带来收入,或者说叫「知识变现」的问题,小氯上面讲得很清楚了。

关于「不经过商用许可而商用产品」的问题,我们已经讲过了,此处只涉及「重新分发」一类的问题。

这个问题应当在世界各地都很普遍,只是程度不同。Licat 的原话是:

As a business, it’s really stressful if competitors can take your work, copy it and sell it as their own. Licenses don’t prevent copying, and lawsuits are expensive and time consuming.

这件事确实难办——无论现在窃取 Obsidian 代码的难度如何(小氯没有试过(这是当然的 🤣),所以不能发表意见),开源确实会降低窃取代码的难度。就算是一扇有点单薄和破旧的门,也比没有门要好。所以说,在考虑要不要开源或者是源代码公开时,法务是一个值得考虑的风险,尽管其期望并不如许多人想象的那么高。

小氯在线程中,不止一次看到这样或者与之相关的论述:

XXX 软件在业界享有盛誉,无数人都在使用它,但是 XXX 是闭源的。

各位有时间在这里争辩 Obsidian 的开源问题,那为什么不去问问 Google / Apple / MS / …… 他们为什么不开源?

前面一个论调的支持者甚至包括 Licat,其原文是:

The most popular, well designed, well tested, and well supported consumer applications are almost always close sourced:(下面的例子省略)

我们分别回答两个问题。

许多(甚至大部分)在业界首屈一指的应用都是闭源的,但是这与 Obsidian 有什么关系呢?Microsoft Office,Google Drive,Adobe Photoshop,确实都是闭源的,但是它们和 Obsidian 的商业模式完全不一样。随便举几个例子:Microsoft Office 在任何情况下都需要支付一笔不菲的许可费用或者订阅费,Google Drive 是一个纯云端、订阅制的存储产品。即使是对这些例子而言,也并不意味着闭源就一定比开源要有很大的优势——对于 Google Drive 和 OneDrive,我们有 NextCloud 和 OwnCloud;对于 PS,我们有 GIMP;对于 MS Office,我们有 LibreOffice 和 OpenOffice,这种例子不一而足。而且,Licat 说的这个论据从头到尾都没有涉及 Obsidian 闭源是否会对绝对或者相对的功能表现构成影响,所以我实在是理解不了这能证明什么。

第二个问题,答案很明显:没用。我们说的这些产品都是由极其庞大的科技巨头开发的,Google,Microsoft,Meta,Apple,或者别的什么公司。它们是什么样的?数十亿上百亿美元的市值,庞大到冗杂的客户服务部门和资源多得离谱的市场营销部门,客户和开发者之间的沟通闭塞(至少我没见过哪家的 CTO 能在论坛里和用户如此推心置腹地交流)。最重要的是:利润高于一切。大公司是理性(rational)的,它们永远不会有什么善心。如果把你从头到尾卖个干干净净能给它们带来大于损失的利益,那它们才不会在乎你怎么想、愿不愿意。

但是 Obsidian 不一样。这是一个规模不大的、锐意创新的、愿意和用户推心置腹交流的、愿意把营造社区生态作为自己的重大责任的、(在资金上完全,在扩展性上几乎完全,在宣传方面大部分)由社区驱动的、愿意真的尊重你的隐私的——「不作恶」的公司。

所以在这里讨论的理由依然是:我们认为 Obsidian 开源会对大家都很好,而且我们认为能够决定 Obsidian 未来前途的话事人真的会去听并且认真考虑(但是不一定采纳)我们的意见,所以会在这里这么说。这话听起来有点傲慢,但是这是小氯能想到的最好的表达。

好问题。从一个听者的角度而言,这无疑是个很令人恼火的表达,但是仔细想想,我们在生活中是不是也一直在使用这样的表达?

回答问题:因为我们真的很喜欢 Obsidian,我们希望它开源,这样(在我们看来)对开发者和我们都更好(尽管动机大概率还是后者),而且我们认为这个问题还有可以争辩的空间,因此我们用自己宝贵的生命在这里敲下这些字符。That’s it.

小氯还见过这样的说法:只要你打开 Obsidian 的调试台(和浏览器的方法一样),查看 app.js,就可以看到 Obsidian 到底在做什么。所以 Obsidian「事实上是开源的」。

小氯对这个说法持保留态度。引用 Obsidian 官方论坛(引用)的一句评论:

The code is minified/obfuscated/packed so most keys and words are replaced by numbers, one letter variables, self-calling functions etc (as it should for production code for performence reasons alone). So it would be little help to assess anything :wink: at most it can help debug stuff when things go wrong.

这感觉有点像是现在的 Thino(以前叫 Obsidian Memos),如果你查看其 main.js,你可以看到这个插件到底在做什么;但是如果你希望从 main.js 中获取到一个完整的执行逻辑或者是 UML 图,或者是希望用其进行二次开发,那小氯祝您好运。这种 dist 化的代码虽然是可见的,但是几乎不具备任何人类可读性,这就意味着其很难用于公开和审查,更别提是协作、分叉之类的更进一步的开源开发活动。

所以,从这个意义上认为 Obsidian 是「开源」或者是「实质开源」的,似乎与开源这件事本身的含义已经有些违和了。或者把话说得更重一点:这就像是国内的某些云盘号称「不限速」,实际上在其他方面对免费用户的下载体验多加掣肘一样,只是一种无聊的文字游戏。

这里涉及一个更加微妙的问题,也是一个开发社区(很可能是从计算机科学诞生开始)争执到现在的问题。

首先让我们严格区分几个概念,这几个概念非常容易弄混:源代码可见软件,源代码公共可见软件,开源软件和自由软件。

TL; DR:其范围依次递减。

  • 源代码可见(source code available):指的是对于一个特定的群体而言,其能够看到源代码——注意小氯的用词,特定群体。那么如果我只把代码给付费用户看行不行?可以,至少从条文上可以(各位应该知道小氯说的是哪个项目)。那只给开发团队看行不行?按照定义似乎可以,但是我们一般称其为闭源软件
  • 源代码公共可见(source code public available):指的是对于所有人而言都可以看到源代码。但是如果希望进行贡献?或者是按照你的意愿增添一个功能?或者是做一个 bug fix?不保证可以。注意此处的「人」并不是指所有自然人,森林里的原始人当然是自然人,但其看不到源代码。当然,这是因为其不具备基本的技术条件,而不是我们从条款上禁止其访问源代码。
  • 开源软件(open source):看起来开源和源代码公共可见甚至是源代码可见是同义词,但是在计算机科学这么多年的发展中,开源的定义被大大收窄了:不仅需要源代码公共可见,而且需要允许社区参与,例如各种 PR 和 issue。可以简单地认为:开源= 源代码公共可见 + 社区协作
  • 自由软件(free):Free in free speech, not free in free beer. 自由软件的范围最窄,不仅要求开源,连分发也必须自由。

开源软件和自由软件的界限通常不甚清晰,因此常被统称为自由开源软件(Free and open source software,简称 FOSS);而源代码公共可见和开源常常被混淆,这并不是一个很严谨的事情,尤其是在这个 thread 中。

显然,对于 Obsidian 的隐私问题而言,源代码公共可见就够了,同时这样也可以避免社区管理的压力;而开源可以更直接地收获社区的助力,但是同时也会有一些问题和负担。对小氯而言,前一个级别已经够了——虽然说小氯很愿意 contribute,但是目前来看,有心无力。

这是个非常好的想法,而且很有可行性。虽说大部分的讨论主要还是纠结于 Obsidian 本体,但是仔细想想,Obsidian Sync 也不是什么特别令人放心的事情。E2EE 确实很具有隐私性,但是我们无法确保——抱歉,我又涉及道德问题了。

而且,先开源一部分核心组件的管理压力比一下子开源所有代码小得多,可以当作一种「试水」(尽管 Obsidian 已经开源了几个项目了)。社区也提出了一些看起来比较合理的开源 roadmap,小氯不在此细说了。

我们说了很多很多,如果让小氯酱概括下到底说了什么,无非就是连篇累牍的推理和论证,(对 Obsidian 来说)开源是什么,开源不是什么,什么是开源,以及其他相关的问题,等等。

社区对这个问题已经谈了太多太多。喜欢开源的人,会更多地关注开源软件相对于闭源软件的优势,并且更多地使用开源软件中最杰出的那一批来塑造自己的观念;喜欢闭源的人反之。这是一种先发的认知偏差。小氯是个 FOSS 主义者,但是在前面的论述中,小氯在尽力避免立场带来的不客观,希望做得不算太差。

最后,可能有老友会问:既然你说过,很大程度上 Obsidian 开源(源代码公开)的象征意义更大,那么象征意义就那么重要吗?

尽管说小氯前面似乎看起来很理性地分析了一堆,但是如果从一个用户、一个个人的角度,允许我使用感性,那么我的答案是:是的,对于我们,真的很重要。小氯可以这么说:如果 Obsidian 有一天真的开放源代码了,那么小氯很可能这辈子都不会更换笔记软件了。但是现在,小氯还是只能对着各位老友半开玩笑地说:「在我的电脑上任何个人使用的第三方软件都是开源的——Obsidian 是少数的例外,它用实力争得了这个位置。」

虽然说,是否开源是 Obsidian 团队的自由,并且他们已经明确表示在可预见未来内不会开源,但是小氯还是有那么一份有点不切实际的愿望或者说是幻想:希望有那么一天,能够看到 Obsidian 真正成为「Your Last Stop of PKM」,HN 的头版头条能够铺满这一「惊人的壮举」,以及,FOSS 主义者们以各种方式向这个堪称世界上最优秀的 PKM 软件之一的杰作献上自己的崇高敬意。


  1. thread 一般被翻译为「线程」,其实就是论坛里一个单独的讨论区或者叫讨论进程。和 Reddit 的 subreddit 之类的东西没什么区别。 ↩︎

  2. 目前尚未找到 Obsidian 明确的官方说明。 ↩︎

小氯说02:Obsidian与开源
https://www.yoghurtlee.com/obsidian-and-open-source/
作者
Chlorine
发布于
2024-10-22