提议弱化【笔记本】与【文档】的概念区分

一、当下文档树与笔记本的概念矛盾?

讨论文档树、笔记本的时候,需要明确这两个概念的底层逻辑。

参照《文件与文件夹的区别是什么?-常见问题-PHP 中文网》中的解释:

区别:文件是以计算机硬盘为载体存储在计算机上的信息集合,文件可以是文本文档、图片、程序等等。而文件夹是用来组织和管理磁盘文件的一种数据结构,相当于文件分类存储的“抽屉”;每一个文件夹对应一块磁盘空间,它提供了指向对应空间的地址。2

因此我们可以弄清楚两个概念范畴:一是文件是信息的集合,或者说是一种信息的容器,二是文件夹是组织数据的结构

那么讨论 文档树笔记本:

  1. 文档树 是用来描述多级目录的树形结构。

树型目录结构又称为多级目录结构,它是由根目录、多级目录以及数据文件组成的。在多级目录系统中(除最末一级外),任何一级目录的登记项可以对应一个目录文件,也可以对一个非目录文件,而信息文件一定在树叶上,这样,就构成了一个树型层次结构。

  1. 笔记本 是用来记录的本子1,在计算机里面概念就泛化成了记录信息的容器

我们抽象一点:文件 是信息的容器,笔记本 也是信息的容器,那么组织 文件目录 结构是 数据,组织 笔记本目录 结构也是 数据。因此我们可以抽象出两个简单概念的类:容器数据,这样在面向用户的时候,就更加简洁。

其实在讨论的过程中,笔记本 这个概念很有争议:拿纸质的日记本为例,如果把一页一页的日记看成文件可以吗?当然可以。那么这些一页页日记的集合的实体——日记本是文件还是文件的目录?或许都对吧。

为什么?从某种角度讲,日记本是文件,它是所有日记页面的集合,只是这个集合的名称叫做 日记本,是装载日记内容的容器;从另一个角度讲,日记本也可以是目录,它像一个柜子一样,按照一定的序列组织了日记。

回归本质:实体都可以简单描述成容器和内容的关系,为了研究容器与容器之间的关系,自然而然地引入一个新的容器或者集合的概念,反而让概念的理解更加复杂。


代入思源笔记的产品中进行讨论:文档树是什么?笔记本是什么?文件是什么?

就会发现 笔记本 扮演的角色有些尴尬。它既不是文件,也不是纯粹的目录,扮演者一个"国家边境线"的角色,虽然现在已经支持文档“移民”了。

实际:在用户界面上,功能的区分度并不是很明显,而在同一棵树上具有不同的操作交互,是不够友好的。

image.png

二、跳出离散文件夹的思维以数据库的思维看待笔记文档吧

传统的文件管理,总是跳不出微软的文件夹思维,而现实的信息、数据是复杂的立体网状结构,文件作为信息的容器,聚合了关联性极强的一堆信息,实际文件之间信息怎么关联是一个难题。

原始解决方案:文件夹

第一种解决方案:硬链接

第二种解决方案:微软的库

第三种解决方案:标签

第四种解决方案:Linux 的思想,玩物皆文件,但不是割裂的文件,而是可以相互索引的文件。

第五种解决方案(未来):文件式数据库 + 标签 + 网状图谱

第六种解决方案:未来的未来……

思源文档树的概念;就应当是第五种解决方案的一个实践。

之前大家包括我也讨论过思源 文件夹 式管理的一些体验问题,现在想来,我们更应该去深入思考 ID 式数据基础的构建,理解 D 大 文档树 概念的底层逻辑,支撑将来实现立体式的个人知识图谱管理系统的实现。

那么当下用户的习惯(包括我本人)依然是基于文件夹式管理的,所以实现从文件夹式导入思源系统,再以文件夹或文档式导出迁出思源系统才是完整的闭环。至于导入思源后的数据存储,或许用户不必太过纠结了。

总之:在思源笔记内,弱化传统文件夹式的使用思路,不要引入太多的冗余的概念。

三、总结

  1. 文件是信息的集合(容器)文件夹(目录)是组织数据的结构笔记本 不是本质的概念,回到只有一个隐藏的根节点的 文档树 来。
  2. 移除笔记本概念,统一文档树子节点及叶子节点操作逻辑

移除笔记本的概念后,原 笔记本 概念就变成了 第一级子节点,这样就解决了笔记本间文档互移的问题。同时也引出了新的问题:第一级子节点是否能够移动道其他第一级子节点下面?我的考虑是:能。

如有其他看法,也请各位参与讨论。


  1. 笔记本(用来记录的本子)_百度百科 (baidu.com)

  2. 文件与文件夹的区别是什么?-常见问题-PHP 中文网

1 操作
leiyuy 在 2021-09-06 15:53:50 更新了该帖

广告 我要投放

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • buzzingbee 1 1 赞同
    订阅者

    怎么会这么复杂?我感觉思源的目录树,以及文档与子档之间的关系很简单清楚啊。和传统目录看起来不同的地方主要在于父文档可以同时作为文件夹。这简值太妙了,在将多个卡片笔记汇总时,减少了传统文件夹一个(些)不必要的层级。在树形结构中,少爬一个层级,就少走一步路,大大提高效率啊。并且,似乎好多 json 数据结构就是这样的:每个节点有自己的一组 field,每个 field 的内容既可是叶子终点,也可以是一个 list。这个结构不断嵌套,生成一颗足够复杂的树,其每个单元又极其简单一致。

  • 其他回帖
  • 88250
    订阅者

    笔记本除了作为容器,还有一个非常重要的功能:数据索引。

    虽然对于用户来说数据索引应该是透明的,但是实际上目前的技术方案做不到透明,在数据量较大的情况下还是只能通过关闭不必要的笔记本来提升性能。另外,笔记本上也有一些功能性设置,这些设置如果放到文档上也不大合理。

    这部分我们近期就不再做变动了,感谢帮忙考虑 🙏

    1 回复
  • AcLeft
    订阅者

    最近使用中也感觉笔记本这一层级是有点奇怪,期待以后会有优化吧

  • leiyuy
    作者

    对。

    你说的这就是实际的使用场景。

    有的人会分笔记本,有的人 All in ONE。其实不论是那种情况,在使用上背后的底层逻辑没有区别。

    就跟磁盘分区一个原理。

    有的人四个分区分管四文件夹,有的人一个分区下四个文件夹,从技术角度上讲确实区别大了去了(但这不是本帖所关注的),关注的是使用上的逻辑有区别吗,没有区别,都是为了存数据并分割开,至于背后的存储逻辑就是黑盒子,也不需要给用户讲明白。

  • 查看全部回帖