关于思源笔记的一些看法

本贴最后更新于 837 天前,其中的信息可能已经东海扬尘

之前在思源三群发了个消息:

思源写作体验非常棒,算得上 PC 上 MD 笔记的写作体验的领头羊,唯一遗憾的默认存储格式不是.md,限制了玩法和使用场景,否则应该可以封神了。

然后有了如下对话:

萌新的化身[2] 2022/8/8 12:05:20
因果关系搞反了,就是因为打破了 md 的限制才有现在的思源

鸢尾 2022/8/8 12:44:28
果真 .md 格式总是成为大家对思源放不下心的原因

鸢尾 2022/8/8 12:45:17
军师 急需您写一条为什么思源不是.md 的说明

Evil Eyes 2022/8/8 12:46:59
“notion 也不是 md,有本事你去 notion 群里说啊”

Evil Eyes 2022/8/8 12:47:43
再回来的时候已经被骂得不成人形了

是 Dammy 不是 D 大 2022/8/8 12:48:34
MD 问题 D 大熟,我去翻翻 D 大语录看记下了吗,理解老深刻了

是 Dammy 不是 D 大 2022/8/8 12:50:07
坏了我没记

鸢尾 2022/8/8 12:55:05
D 大发的那个我也有点印象

有说大佬曾在群里深刻剖析过为啥不存储 md 的原因。但我进群的晚,没看到大佬的理解。不过呢,感觉对话中的两个理由都比较牵强。

首先我知道思源数据结构是基于内容块的,很多功能和复杂查询与数据关联都是基于这种特有的设计实现的,它就像一个数据库,甚至可以用类似 SQL 的语法进行查询,这种设计思路不错,不过这与最终是否存储为 MD 格式文件没有啥必然联系,因为保存现有格式的元数据与同时再生成一份 MD 文档并没有冲突,而且对直接存储 md 格式不放心的人毕竟是少数,没有啥放不放心,不行的话难道不能对是否存储 md 格式文档设置为用户可选项?

其次我个人认为思源现有的用户增量主要基于写作体验、开源、跨平台、官方同步等方面的原因,这些方面思源除了在移动端的的体验比较糟糕外其他都不错,所以用户的增长几乎是水到渠成的。但这个增速实话说却不是它应有的增速。还有大批人并不知道思源,不知道的原因除开官方推广外主要还是在于用户并没太大的主动意愿去做口碑传播,有些人知道,但用了不久又换其他笔记了,比如 ob。

刚开始我在一些平台回答笔记类的问答时也会推荐一下思源,但后来没有进行推荐了。主要原因有三:

第一、通常发问的人一般都找过许多笔记应用试用过,他们的需求一般是除写作之外的额外要求,否则 word 已是写作体验的天花板,他们也没必要发问,一些需求比较个性化,思源目前并不支持插件扩展,显然无法满足。

第二、md 笔记本身是些简单的标记格式,虽然简单,但也没到人人都懂的程度,懂得 md 语法,并且需要 md 笔记的人大多喜欢折腾,玩 nas、blog、web dev 的人居多,这些人对数据的敏感性高,同时又对数据的通用性有所要求,md 存储格式是其中一个指标,支持第三方同步也是一个指标。这两点不一定是比较重要的指标,但思源显然都不支持。

第三、推荐给一些人用了一段时间后,用的人最终大多还是没选择押宝思源,原因是多方面的,除了我前面说的那些,最主要的是偶发性的报错,思源版本更新很快,但同时也带来了一些问题,比如测试并不严谨,很多问题等新版发布一段时间后才会收到用户反馈,如果是通用型 BUG,恰好被新手体验到了,有些人会选择提交给官方,但更多的人怕是直接选择不用了。我用思源时也会经常遇到崩溃重建索引的情况,而且是连续几个新版本都存在这种偶发性错误,虽然似乎也没影响到数据,但也不太好跟人介绍了。

除上所述外还有一些其他问题,在此不一一列举。总之,思源有它独特的优势,第一眼就觉得惊艳,第二眼还是喜欢,但就目前而言尚未成熟,我知道思源是因为 Vditor,如果不是它,我可能至今也不晓得思源。这本身就是问题。

期待几年后的思源能够建立真正的 md 笔记生态,适用更多的场景,特别是深层次的插件支持,很多功能官方可以说一万个不做的理由,但对于需求者来说,只需要一个理由,扩展插件的意义就在于:你不做,我做。
我会随时关注,期待它超越 ob 的时候!

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    22353 引用 • 89444 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • Bard 1 评论

    一个核心问题:如何在 MD 文件中唯一定位到一个块

    当然,要说 md 文档没有内容块的说法,这个确实是,但没有办法解决吗?当然不是,要从 MD 文档反解析数据结构为内容块,那直接定义一套规则即可,既然思源已经将#号作为划分内容块的标记,那么按照这个规则拆分文档内容存储内容块即可,多级嵌套可以理解为多级集合,较为麻烦的是内容块 ID 标记,得找一个不影响 MD 文档展示的隐藏元素来存储内容块的唯一 ID,解决了这个问题,MD 文档作为主数据源自然不是事了。至于怎样解决,方法还是不止一种的,各有优劣,选择题罢了。
    shileiye
  • 其他回帖
  • GuangDai

    哦对,再提一嘴什么是开源。

    开源就是这些源码是公布的,有效的,所有人都可以看、下载、修改和编译的,你自己可以在约定的规则下编译、修改和使用的。

    那么之所以 D 大和 V 大哪怕把项目删了,都无所谓,就是代码是完全公开的,这个项目不是像 QQ、WX、Word、WPS 那种私有的,代码完全不公开,这几个公司没了这软件就不能用的。而 Siyuan 你完全可以自己编译,或者用 Github 编译,都是你的自由。你也可以感觉 Siyuan 那里写的不好,不随你的心意,只要 Fork 一下,你就有一份随便你使用的 Siyuan 代码,随便改。

    Siyuan 自带的同步是官方同步,但这个文件夹就在我本地,我随时都可以访问,明文存储,我想备份到哪都可以,我就是直接备份到我的 Github 私有项目。我这两年都来来回回重装十几次系统了,Linux、Windows、MacOS 都用过,Linux 发行版我都用过五六个,要么直接复制粘贴,要么直接 git pull 一下,都没有一点影响 Siyuan。

    所以,支持开源,相信开源。

  • Bard 1 评论

    所谓生态就是围绕一个关键因素建立的应用关联,你只看到了笔记一个场景,却忽略了整个大环境,目前 MD 文档正在成为富文本外的第二选择,许多应用系统集成了 MD 文档的直接应用,比如一些博客系统、一些文档管理系统、一些办公系统、一些信息发布系统、一些阅读系统、一些 IDE 开发工具等等,更不用说让 MD 源远流长的 Git 代码库了。你想到的只是满足个人写笔记,却没看到那些 MD 正在肆虐的地方,符合标准的 MD 文档正在成为主流。而原因,正是因为它的简洁与复杂,不矛盾,用简洁的语法实现复杂的效果,这就是 MD 的魅力,而你居然把它的优势看成一种劣势,着实有些以己度人。论复杂,请问你为啥不用富文本、HTML 写笔记?

    作者:shileiye
    链接: 关于思源笔记的一些看法
    来源:链滴
    协议:CC BY-SA 4.0 https://creativecommons.org/licenses/by-sa/4.0/

    “MD 语法”和 “MD 文档”并不能相提并论

    我相信 “MD 语法”正在成为富文本外的第二选择

    不认可“MD 文档”正在成为…

    “MD 肆虐的地方”与思源可以完美融入,因为开发者本身就是 MD 开发专家,支持最标准的 MD 规范

    在就像之前已经说过的,MD 简洁是排版的魅力,不是知识管理的魅力

    在知识管理和笔记软件的角度来看 MD 就是一种劣势

    “论复杂度”并不代表“MD 简单不能用,json 复杂而可以用”,意思是“当前知识管理的场景下,MD 简单到不能用”

    我都不想再辩了,如你所说,MD 文档是 MD 语法数据的载体,我只想用 MD 文档来存放 MD 文本,其他乱七八糟的格式,尤其是非明文的格式我不喜欢,仅此而已。
    shileiye
  • shileiye
    作者

    首先,这种设计是没问题的,为了支持复杂的应用场景,纯 MD 格式肯定是很难的,但哪怕是用到再复杂的数据结构,甚至直接用数据库也不妨碍同时生成一份 MD 文档,以及反解析 MD 文档为特定数据结构,如果是为了满足知识管理、块管理等,关联特定数据结构即可,没必要彻底放弃 MD 存储格式。

    其次,所谓的唯一写入其实是伪需求,目的只是为了防止内容冲突不好合并,但如果笔记有协作需求,那思源目前来讲绝不是一个好的解决方案,除协作需求外可能产生写入冲突的地方应该是在第三方同步和其他软件直接修改 MD 文档上对吧?

    这涉及到以特定数据结构为主数据还是 MD 文档本身为主数据的问题,用特定结构数据的话自然可以更加方便的管理数据,第三方软件对 MD 文件的写入对主数据并无影响,也就是说思源打开这个 MD 文档还是会恢复为主数据库存储的数据,但这显然有些违反直觉。因此以 MD 文档为主,特定结构数据为辅未尝不可。

    结构数据的生成由 MD 决定,本身思源目前的原理也是这样,扫描 MD 文档的改动并重新建立结构数据用于各种辅助功能和查询,MD 文档作为主要数据生成的载体是可行的,因此不存在说无法实现思源目前的功能以及数据结构的问题,因为 MD 文档的普适性,决定了它的应用场景不仅仅是笔记,它是一个生态,比如市面上基于 MD 文档的各类管理系统,其数据源文件就是 MD 格式,比如在移动端一些写作体验较好的应用源文件格式也是 MD,在思源移动端体验依旧跟不上的情况下,使用第三方 MD 编辑器直接编辑 MD 文件也是最好的选择,另外第三方同步读写 MD 也比被思源锁定的特有格式有优势,唯一要解决的就是版本冲突合并罢了。就像代码协作提交前处理代码冲突,对代码进行合并,这并不是什么难事,这本身就是多端同步协作逻辑上肯定会发生的问题,不应为避免冲突而强制它不冲突,而是在冲突时给个解决方案,无论是强制覆盖,还是内容合并,或者是放弃更改,都应该是交给用户,而不是程序。

    1 回复
  • 查看全部回帖

推荐标签 标签

  • Ant-Design

    Ant Design 是服务于企业级产品的设计体系,基于确定和自然的设计价值观上的模块化解决方案,让设计者和开发者专注于更好的用户体验。

    17 引用 • 23 回帖
  • 数据库

    据说 99% 的性能瓶颈都在数据库。

    342 引用 • 708 回帖
  • GitBook

    GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。

    3 引用 • 8 回帖 • 4 关注
  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1063 引用 • 3453 回帖 • 203 关注
  • SVN

    SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。

    29 引用 • 98 回帖 • 680 关注
  • Openfire

    Openfire 是开源的、基于可拓展通讯和表示协议 (XMPP)、采用 Java 编程语言开发的实时协作服务器。Openfire 的效率很高,单台服务器可支持上万并发用户。

    6 引用 • 7 回帖 • 94 关注
  • SQLServer

    SQL Server 是由 [微软] 开发和推广的关系数据库管理系统(DBMS),它最初是由 微软、Sybase 和 Ashton-Tate 三家公司共同开发的,并于 1988 年推出了第一个 OS/2 版本。

    21 引用 • 31 回帖 • 1 关注
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    5 引用 • 7 回帖
  • Quicker

    Quicker 您的指尖工具箱!操作更少,收获更多!

    32 引用 • 131 回帖 • 1 关注
  • Kotlin

    Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,由 JetBrains 设计开发并开源。Kotlin 可以编译成 Java 字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。在 Google I/O 2017 中,Google 宣布 Kotlin 成为 Android 官方开发语言。

    19 引用 • 33 回帖 • 64 关注
  • InfluxDB

    InfluxDB 是一个开源的没有外部依赖的时间序列数据库。适用于记录度量,事件及实时分析。

    2 引用 • 73 关注
  • FreeMarker

    FreeMarker 是一款好用且功能强大的 Java 模版引擎。

    23 引用 • 20 回帖 • 462 关注
  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖 • 4 关注
  • Redis

    Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。从 2010 年 3 月 15 日起,Redis 的开发工作由 VMware 主持。从 2013 年 5 月开始,Redis 的开发由 Pivotal 赞助。

    286 引用 • 248 回帖 • 61 关注
  • 反馈

    Communication channel for makers and users.

    123 引用 • 911 回帖 • 245 关注
  • Chrome

    Chrome 又称 Google 浏览器,是一个由谷歌公司开发的网页浏览器。该浏览器是基于其他开源软件所编写,包括 WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。

    62 引用 • 289 回帖 • 1 关注
  • TextBundle

    TextBundle 文件格式旨在应用程序之间交换 Markdown 或 Fountain 之类的纯文本文件时,提供更无缝的用户体验。

    1 引用 • 2 回帖 • 49 关注
  • Log4j

    Log4j 是 Apache 开源的一款使用广泛的 Java 日志组件。

    20 引用 • 18 回帖 • 30 关注
  • GAE

    Google App Engine(GAE)是 Google 管理的数据中心中用于 WEB 应用程序的开发和托管的平台。2008 年 4 月 发布第一个测试版本。目前支持 Python、Java 和 Go 开发部署。全球已有数十万的开发者在其上开发了众多的应用。

    14 引用 • 42 回帖 • 764 关注
  • Thymeleaf

    Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。类似 Velocity、 FreeMarker 等,它也可以轻易的与 Spring 等 Web 框架进行集成作为 Web 应用的模板引擎。与其它模板引擎相比,Thymeleaf 最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个 Web 应用。

    11 引用 • 19 回帖 • 355 关注
  • GraphQL

    GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。

    4 引用 • 3 回帖 • 9 关注
  • ZeroNet

    ZeroNet 是一个基于比特币加密技术和 BT 网络技术的去中心化的、开放开源的网络和交流系统。

    1 引用 • 21 回帖 • 638 关注
  • 持续集成

    持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    15 引用 • 7 回帖 • 1 关注
  • 前端

    前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。

    247 引用 • 1348 回帖
  • 星云链

    星云链是一个开源公链,业内简单的将其称为区块链上的谷歌。其实它不仅仅是区块链搜索引擎,一个公链的所有功能,它基本都有,比如你可以用它来开发部署你的去中心化的 APP,你可以在上面编写智能合约,发送交易等等。3 分钟快速接入星云链 (NAS) 测试网

    3 引用 • 16 回帖 • 1 关注
  • Kafka

    Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是现代系统中许多功能的基础。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。

    36 引用 • 35 回帖 • 1 关注
  • V2EX

    V2EX 是创意工作者们的社区。这里目前汇聚了超过 400,000 名主要来自互联网行业、游戏行业和媒体行业的创意工作者。V2EX 希望能够成为创意工作者们的生活和事业的一部分。

    17 引用 • 236 回帖 • 328 关注