我如何构建我的数字花园
在web2.0早期的时代,我想第一次打开互联网的人都会有一个想法:我如何才能让我的信息发布在网络上?
所以我们开始使用贴吧去和孙笑川争论,使用土豆网发布诺基亚手机录制的无聊的视频。这些信息在发布以后,都会在互联网上被搜索引擎收录,所有人都有可能看见。
随着移动互联网时代的到来,这种情况有了改变,由于人们发现了这些普通用户发布的信息背后巨大的商业价值,所以逐渐让这些信息变得封闭,你发送的信息会被审核,会被无缘无故的删除(百度贴吧删除了实名认证之前的所有信息),同时也不可能在公开的搜索引擎上被检索,不能在其他的网页上被引用。这个时候我们才发现,原来我发送的这些信息不属于我自己。
什么是数字花园?
所以这个时候技术圈里面又开始流行起了web1.0时代的东西,就是每一个人自己开办一个博客网站,然后在网站上发布信息。而在这个过程当中就产生了一种新的个人网站的形式: 数字花园。关于它到底是一个什么东西,我想没有什么比下面这一篇文章讲的更透彻。
文章里提到了“溪流”和“花园”两个隐喻,我们当今使用的大部分的服务,例如小红书,今日头条,推特,包括个人博客,都是一种线性的信息流,信息流经你的脑袋,然后就被遗忘,并且永远不会再提起,因为这些信息之间只通过一个与信息本身毫不相关的时间轴串联在一起。而花园则是由许多的元素构成,你会不断的在花园里面种植新的花朵,修剪老去的叶片,你会修建很多错综复杂的小路,方便你在花园里观赏每一朵花。如果以比较抽象的计算机理论来描述这两种形式,信息流就是由链表表达,而数字花园则是一个图( Graph)。
笔记软件和数字花园
这些年笔记软件是软件领域一个非常活跃的类目,几年时间内涌现了非常多各有特色的笔记产品。有北欧左人公司开发的anytype,网红开源项目Logseq, 美国创业公司推出的 SaaS笔记服务 Notion, 赛里斯创业公司开发的 AFFiNE, 基于 Markdown 格式文件的 Obsidian等等。这些笔记软件和传统的笔记软件最大的区别就是都支持很方便的互相引用功能,这使得本来像溪流一样线性流动的笔记,变得像花园一样通过一些错综复杂的小路连接起来。这也就更加方便了数字花园的构建, 这些笔记软件都有一些官方的或者社区支持的工具,可以将你的笔记很轻松地发 布在互联网上,这样你的笔记就和互联网上的一个网站一一对应起来,你通过编辑笔记来更新网站内容,而你所有的信息都在你的笔记里文件里面,不再属于任何大型技术公司。
在这些笔记软件之中,我是 Obsidian 的忠实用户,他虽然不开源,但是提供免费版本,且该软件用户体验较好,有丰富的插件生态。最关键的是他基于 Markdown 格式,通过操作系统的文件夹组织你的数据,不会将你的文件转换成特殊格式存入专用的数据库内。这样一来,就算某天不再使用这个软件,你只需要把它用于保存应用数据的那个文件夹删掉,你的笔记文件依然是可以用通用的文本编辑器打开操作的。相比而言其他开源产品有些是使用了自己的特殊数据格式,有些则是客户端用户体验奇差无比,有些是无法做到全平台通用,还有很大的进步空间。
溪流旁边的花园
溪流和花园之间并不是东风压倒西风,也不是西风压倒东风,而是各有其优势和侧重点。当你在使用溪流类的互联网媒体的时候,你主要是在发布自己的观点和见解、阅读新鲜有趣的内容; 而当你开始构建一个花园,你更加倾向于去学习互联网上有用的的知识,收集有价值的信息。在此之前我有一个个人的静态博客,是通过Docusaurus搭建的, 这个框架本来是一个文档网站生成工具, 自带一个博客插件,而我则主要使用了它的博客功能。如果同时将其文档功能充分利用,那么由树形结构管理的文档,实际上就已经有了一些花园的雏形。因此,我基于这个博客构建了一个溪流旁边的花园。
这个花园实际上离真正的花园还有一定的距离,因为Docusaurus这个工具并没有实现构建花园比较需要的双向链接功能,也许在某一天会被官方实现,但是在这之前,我只能减少对双向链接的依赖。如果页面上出现了双链语法,则不能正常跳转,可以使用双层方括号中的关键字对站点进行搜索到达目标页面。
使用 Quartz 构建全功能的数字花园
Quartz是一个专用的数字花园构建工具,你只需要提供一个用文件夹组织好的 Markdown 笔记,存入 Quartz 的指定目录下,然后对它进行一定的个性化设置,就可以通过一条命令构建出一个静态网页形式的数字花园,然后你就可以将这些构建出来的静态网页部署到任何地方去。
构建和部署
为了同时支持Quartz和Docusaurus,我在一个Github Repo里面同时存储了这两个静态网站生成程序的代码,然后将自己的笔记文件夹推送到Github Repo, 将笔记Repo添加为程序Repo的子模块,通过一些构建脚本,将目录文件进行合理转换,两者就都可以正常的构建出静态网页文件。 然后我选择将两者都部署到 Cloudflare,因为这样可以利用其提供的CDN能力,增强网站可访问性。