1.2.5 文件 (夹) 名称 ID 化,是否与本地化的初衷渐行渐远?

本贴最后更新于 1065 天前,其中的信息可能已经东海扬尘
  • 每次大本版更新,都是提心吊胆,因为新特性总是在负面影响甚至破坏已有的工作流
  • 1.2.5 最大的改动便是文件名 ID 化,这直接导致
    • 除思源外任何工具对思源文件的管理不具备可读性和可操作性性
    • 系统资源管理器几乎变为资源管理空气
    • 文件级,文件夹级拷贝分享变的异常艰难,以至不可能
    • 第三方同步盘的同步日志变得没有丝毫可读性,同样文件级的版本恢复变得异常艰难(特别是思源自身的同步仍然只能作为 plan B, 即便一直改进,应该也无法和专业软件(坚果云)比肩)
  • 对系统工具,对第三方工具的友好性,不正是本地化的一大便利么(另一大便利是安全)
  • 如果 ID 化是子文档的代价的话,那真是子文档的一个最糟糕的本地化实现,更何况子文档也丝毫不会对笔记带来本质的提升。纯在线的 ID 化无所谓,用户根本不关心这个。可用思源就是冲着本地来的
  • 特性的引入伴随思源一直在收紧自由度,从资源的统一管理到文档名的 ID 化,收紧的方向正常,但方法真是一言难尽
  • “思源用户不关心本地文件名,软件能打开就行”,但还是有一部分用户关心文件名的,越是深度用户越关心,随着笔记的数量提升,协作需求的提升,也许会有越来越多的用户看到这一串 ID 而苦恼吧
  • 实现同样的功能,应该有比文件名 ID 化更高效,更平和的实现吧?希望两位主创能考虑下这个问题
  • 思源笔记

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

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

    20156 引用 • 77717 回帖

相关帖子

优质回帖
  • 88250 4 10 赞同

    你好,是时候和大家分享一些这方面我们的设计考虑了。

    从使用角度

    思源不是文本编辑器,而是知识管理系统。如果以编辑器的方式来使用,肯定会感到别扭的。

    • 同一层级下需要支持同名文档,这样能将新建、重命名、移动等操作的同名阻断问题降低,使用起来更流畅
    • 子文档形式比文件夹形式效率更高,能够充分利用文档树的空间,从概念上也统一为文档,减少不必要的实体
    • 分享和协作不是思源现阶段的目标,现在就这样用的话是肯定不会好用的,协作大概在 v3 阶段会开始设计

    从技术实现角度

    优先考虑稳定性。

    • 通过文件实现易变数据的互操作性是一个糟糕和错误的方向,因为多个进程各自直接读写易变文件有概率会导致数据损坏。概括一点讲就是试图通过共享文件、共享内存来实现互操作性的方案都存在一致性问题,正确的方案是通过 API 进行交互,各进程内自己保证一致性
    • 使用人类可读的文本在跨系统平台时存在大小写问题,比如 Linux 上允许同时存在 SiYuansiyuan 文件,但是 Windows 上则不允许,该情况一旦发生数据就可能会被损坏

    寻求平衡

    我们一直在寻求对普通用户和对社区开发者都友好的平衡点。

    • 对普通用户尽量屏蔽底层细节,所以思源迟早要覆盖一些在文件系统上的常规操作,比如批量移动、删除文档,最终目标是用户不必关心文件结构,专注于使用
    • 对开发者而言,需要的是稳定的方案,如果某个方案可能存在某个问题,那么这个问题一定会在将来的某个时候发生

    忒修斯之船

    思源这样一直更新下去,还是当初的思源吗?

    在发布 v1.2.0 的时候我们说过,如果没有更好的替代方案,不会轻易删除已有特性,这次变更我们觉得并没有违背这个承诺。

    一个产品如果没有明确的产品方向和架构思路,这个产品就算做到能用也不会是个好产品。至于个性鲜明或者说思路清奇的产品能否被用户接受,这只能用市场来检验了。好产品无需推广,烂产品就算被骂死也不会有所改变。

    最后,我们作为主创团队,直接劝退用户的话不太礼貌,然后还会有人说:“你看他们,傲慢得不得了,容不得半点意见”。但这样的评价并不重要,重要的是我们觉得浪费了大家的时间精力,与其忍着用,不如早点换。

    以上。

    @participants

  • programfan 2 3 赞同

    说几点看法和期望:

    1. 如果关心修改历史,但又只关心文件名,这个只能说是“叶公好龙”。我不用思源的历史功能,也不用第三方同步的历史功能,自己建了一个 git 仓库,手工管理历史,清清楚楚。只要思源维持“本地 + 文本”这种技术路线,想要修改历史有无数种办法,为什么要纠结文件名?
    2. 如果确实对 id 和文件名的对应关系有需求,在 sy 文件里面有,随便找个 json 解析工具一提取就搞定了,只是稍微费一点功夫而已。
    3. 我们作为软件的用户,要区分软件的「内部实现」和「外部接口」的边界。简单地说,思源如何组织笔记文件、如何存储笔记数据,这个是软件的内部实现,本来就是会随软件发展不断变化的。但思源将笔记「按目录和文本文件组织为本地磁盘的数据」,这是软件给用户和开发者的保证,可以预期是不会急剧变化的,可以理解为是一种外部接口。我们搭建自己的工作流,要基于软件的「外部接口」而非「内部实现」。如果真要基于「内部实现」,就要做好持续跟随改变的准备,而不是不断给软件开发者提要求说「内部实现」变化不合理。
    4. 期望思源笔记尽快梳理出一个稳定的开发接口,包括数据格式、数据存储、查询修改等,在能给出稳定预期的地方,尽量给出稳定预期,这样大家知道什么会变,什么不变,搭建工作流和开发额外工具也就比较放心。
  • audiolabj 2 2 赞同

    深以为然!

    1. 文件名的纠结,我们实践里的理解是:习惯于一段内容在一个可见的文件里,然后以文件名看更新,以文件或文件夹移动或复制内容,习惯这样的话,文件名不用改成 ID,随便改动一些都会不好找;如果是以内容块来组织的话,移动,查找和复制都是块的内容(包括块的嵌套),习惯了这样,焦点就在内容里,而且是每个组织好的要点里(在 RemNote 里是一个 Rem),这对于知识的组织管理而言,是更顺畅的。文档名,只是应用内一个大容器块的标签管理,,如果需要文件级的交换,用导出 md 后的 pandoc 类的方法,转成 ppt 也行。
    2. 修改历史管理,我们也是用 git 来做的,而且是团队协作,十几个成员,从需求到设计到开发代码到测试,直到交付和销售支持材料,甚至开发者自己的学习笔记,都用思源做源头内容管理,3 个月时间我们用思源已经发布了两个产品都在 B 端客户进入部署阶段。git 管理协同,相对于飞书和语雀的在线历史管理,优势不仅在于可以管理到每个 commit 的每个要点,而且在于文档的发布范围,可以多分支管理,小组的 feature 开发的需求文档,和主版本分离,没啥问题。
    3. 思源的 json 格式,是我们团队选择思源并且每人购买会员的理由,不仅 ID 和标签的对应可以管理,而且节点间的关系,完全可以还原;如果改了数据库作为主存,反倒会引起我们很大担心,且不说如何用范式化 schema 适应 nosql 的定义场景,字段映射的管理,元数据和实际内容的对应查看,引用完整性的潜在风险这些坑,光是实时分享版本改动引起的数据字段结构和值域定义更新问题,就成了一个麻烦。
    4. 还是那句话,思源笔记作为知识管理工具,而不是编辑排版工具的方向,非常认同;知识图谱的 schema,就是图;比起范式化的二维表,protege 这类知识定义 rdf 工具,是和 json 这种格式具有好得多的亲和力的,而且思源支持的 graphviz,可以直接和 protege 进行转换。
    5. 同样,也是期望思源尽快梳理出稳定的开发接口,sql 查询的数据库元数据和字典文档开放程度能更好一些,便于跟进;如果有一天,思源把主存储改为封闭数据库,不再坚持“本地 + 文本格式”,也希望及时告知,恕不能够继续一路升级同行了。
    6. 思源用户圈子建立很难得,大家场景不同,需求各异,求同存异不容易,一方面让开发者协调取舍,一方面多交流,理解,分享一些不改版本条件下解决问题的方法吧。

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • json 文件挺好的

  • 其他回帖
  • Achuan-2 1 赞同

    首先还是能定位文件的,所以你前面将资源管理器变成管理空气略显夸张。定位之后,如果需要分享,照样可以复制分享。或者直接导出 md 文件分享。

    image.png

    其次也打开 sy 文件也可以确定下文件名的

    image.png

    文件存储 ID 化应该不仅仅为了子文档才这样做的,因为用中文名照样可以实现。

    具体为何要 ID 化,我不好乱说,还是等官方来解释吧。

    如果 ID 化能更好保护隐私、能让思源的功能实现更加稳定,那我愿意支持 ID 化。

    并且这种 ID 化,于我来说,在分享层面应该不会有特别大的影响,依旧是通过思源定位文件位置,然后分享,如果愿意接受、习惯这些 id,应该不会对分享造成太大的麻烦才对。

    反而我觉得是管理文档层面不大方便,例如我需要将几个文档移到另外一个笔记本下,可能就需要反复查看 id,移动的时候因为思源会锁文件又需要关闭思源,就会非常麻烦。不过这点等官方支持跨笔记本移动文档,和批量拖动移动文档后会得到解决

    3 回复
    1 操作
    Achuan-2 在 2021-08-22 10:58:38 更新了该回帖
  • 支持并理解 D 大的部分想法,但并不完全认同,子文档是挺精致的,也好看,但是没有配套的措施出来前,无法凸显出它的好处(如何更好的利用好原来的文件夹)。

    当然,因为每个人的工作流不同,所以肯定会误伤部分用户,所以其实重大更新前可以来个预告。

    支持知识主帖作者认为的思源逐渐丧失了本地资源管理的功能的观点,因为在某个版本把 asset 文件统一合并的时候,我就体会到了,包括现在,打开本地文件夹,打开的全是一堆 id 化的文件,很难轻易区分哪个是哪个了。
    那这样会不会有大的影响呢?个人认为,要想用户接受,思源需要做到的是,不断提升稳定性和对附件管理的更友好地支持,以及便利好用的导出功能。这样我不管理文件夹其实无所谓。

    那么,似乎 1.2 后,思源的确不太有丢图片的情况了(这也是我当初不支持 asset 文件统一的原因,因为丢图了在当前文件夹,我还能找到并补救)

    另外,附件,我觉得目前而言,思源的附件管理并不很方便,可能我倾向的是为知笔记那种管理方式。

    最后,导出的话,应该也是一致需要努力的方向,因为很多问题容易反复。

    总之,希望思源越来越好,也希望大家保持沟通,不要轻易离开或指责,大家一起为更好的知识管理而努力!

  • fgdl30458df 1 赞同

    我们是用户不是开发者 OK? 是体验使用和消费者.

    不方便这一点就足够说明问题了,

    我们只需要反馈,和等待最终的结果,来决定是否继续支持这款笔记软件

    至于我说的"无法实现",你非要将问题隐隐提上到技术层面来讲,那么还真是有非常多方法可以"实现"的

    但是有必要吗? 作为用户我只需要"使用"和消费,难道我需要自己写个工具吗?

    至于提出需求, 我们是可以提出需求,但最终实现是未知的,可能并不是自己想要的,也可能被忽略,这都是有可能的

    1 回复
    1 操作
    fgdl30458df 在 2021-08-22 20:42:08 更新了该回帖
  • 查看全部回帖

推荐标签 标签

  • 单点登录

    单点登录(Single Sign On)是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

    9 引用 • 25 回帖 • 2 关注
  • FFmpeg

    FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

    23 引用 • 31 回帖 • 8 关注
  • ReactiveX

    ReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的 API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。

    1 引用 • 2 回帖 • 141 关注
  • 安全

    安全永远都不是一个小问题。

    191 引用 • 813 回帖 • 1 关注
  • 友情链接

    确认过眼神后的灵魂连接,站在链在!

    24 引用 • 373 回帖 • 1 关注
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖 • 65 关注
  • SVN

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

    29 引用 • 98 回帖 • 688 关注
  • RabbitMQ

    RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种语言客户端,如:Python、Ruby、.NET、Java、C、PHP、ActionScript 等。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

    49 引用 • 60 回帖 • 396 关注
  • OnlyOffice
    4 引用 • 12 关注
  • HHKB

    HHKB 是富士通的 Happy Hacking 系列电容键盘。电容键盘即无接点静电电容式键盘(Capacitive Keyboard)。

    5 引用 • 74 回帖 • 430 关注
  • QQ

    1999 年 2 月腾讯正式推出“腾讯 QQ”,在线用户由 1999 年的 2 人(马化腾和张志东)到现在已经发展到上亿用户了,在线人数超过一亿,是目前使用最广泛的聊天软件之一。

    45 引用 • 557 回帖 • 160 关注
  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    30 引用 • 114 回帖 • 2 关注
  • JWT

    JWT(JSON Web Token)是一种用于双方之间传递信息的简洁的、安全的表述性声明规范。JWT 作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以 JSON 的形式安全的传递信息。

    20 引用 • 15 回帖 • 19 关注
  • LeetCode

    LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!

    209 引用 • 72 回帖
  • Kubernetes

    Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。

    109 引用 • 54 回帖 • 3 关注
  • 开源

    Open Source, Open Mind, Open Sight, Open Future!

    402 引用 • 3521 回帖 • 1 关注
  • API

    应用程序编程接口(Application Programming Interface)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

    76 引用 • 429 回帖
  • Swagger

    Swagger 是一款非常流行的 API 开发工具,它遵循 OpenAPI Specification(这是一种通用的、和编程语言无关的 API 描述规范)。Swagger 贯穿整个 API 生命周期,如 API 的设计、编写文档、测试和部署。

    26 引用 • 35 回帖
  • 程序员

    程序员是从事程序开发、程序维护的专业人员。

    544 引用 • 3531 回帖
  • Facebook

    Facebook 是一个联系朋友的社交工具。大家可以通过它和朋友、同事、同学以及周围的人保持互动交流,分享无限上传的图片,发布链接和视频,更可以增进对朋友的了解。

    4 引用 • 15 回帖 • 458 关注
  • 百度

    百度(Nasdaq:BIDU)是全球最大的中文搜索引擎、最大的中文网站。2000 年 1 月由李彦宏创立于北京中关村,致力于向人们提供“简单,可依赖”的信息获取方式。“百度”二字源于中国宋朝词人辛弃疾的《青玉案·元夕》词句“众里寻他千百度”,象征着百度对中文信息检索技术的执著追求。

    63 引用 • 785 回帖 • 237 关注
  • 机器学习

    机器学习(Machine Learning)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

    76 引用 • 37 回帖
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    311 引用 • 546 回帖
  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    328 引用 • 1715 回帖 • 4 关注
  • 生活

    生活是指人类生存过程中的各项活动的总和,范畴较广,一般指为幸福的意义而存在。生活实际上是对人生的一种诠释。生活包括人类在社会中与自己息息相关的日常活动和心理影射。

    230 引用 • 1454 回帖
  • GAE

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

    14 引用 • 42 回帖 • 705 关注
  • Maven

    Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

    186 引用 • 318 回帖 • 330 关注