IndieWeb 是一场旨在通过一系列原则和技术协议,帮助个人在自己的域名上拥有和控制其在线内容的运动,以此作为对企业控制的“内容筒仓”(silo)的一种替代方案。它不提供单一软件,而是倡导一套去中心化的实践,核心在于确保个人数据的所有权、增强互联互通并赋予用户完全的控制权。实践者可以通过在自己的网站上发布内容,然后分发到其他社交平台(POSSE 策略),并通过 Webmention 等技术将互动(如评论和点赞)聚合回自己的网站,从而建立一个更具弹性和个人化的网络。
什么是 IndieWeb?
IndieWeb 将自身定义为“以人为本的企业网络替代方案”。它并非一个具体的软件或框架,而是一个建立在多样的项目和方法之上的理念基础。其核心观点是,网络应该由独立的创作者组成,而不是被少数几个大公司所垄断。
我们关注的是人,而不是项目。
这场运动始于 2010 年,其发展基于三个核心支柱:
- 你的内容属于你: 当你在网上发布内容时,它应该归你所有,而不是公司。太多公司倒闭并带走了用户的全部数据。
- 你更好地连接: 你的文章可以分发到任何平台,而不仅仅是一个。来自其他服务的回复和点赞可以汇总回你的网站,让你将所有内容集中在一处。
- 你拥有控制权: 你可以用任何你想要的格式发布任何内容,并使用可读且永久的链接,确保它们永远有效。
主要的对立面:内容筒仓(Silo)
IndieWeb 的整个理念都建立在与“内容筒仓”(也称“围墙花园”)的对立之上。筒仓指的是那些通常由盈利性公司拥有、对用户贡献的内容声称拥有某些权利,并以某种方式限制访问的中心化网站。
其特点包括:
- 要求你创建特定于网站的账户才能参与。
- 只允许你与同一网站上的其他账户互动。
- 通常附加限制性服务条款、对用户创造内容的主权要求,以及阻碍内容导出或被外部索引的壁垒。
为什么这是一个问题?因为筒仓会消亡, 并且在消亡时会带走你的所有内容。历史充满了这样的例子:
- GeoCities: 2009 年被雅虎关闭,导致 2300 万个页面消失。
- MySpace: 在 2019 年的一次服务器迁移中,丢失了其头 12 年间上传的所有音乐,超过 5000 万首歌曲。
- Google+、Vine、TinyLetter 等等,这个名单还在不断增长。
IndieWeb 的结论并非“不要使用社交网络”,而是更微妙的建议:用你喜欢的任何平台,但要确保你的内容的权威副本存放在你控制的域名上。
指导原则
IndieWeb 社区遵循一系列原则来构建一个更具弹性的网络:
- 拥有你的数据: 你的内容、元数据和身份都应属于你的域名。
- 使用和发布可见数据: 优先为人类设计,其次才是机器。如果 HTML 本身可以承载数据,就不要创建并行的 API。
- 构建你所需要的: 为自己构建工具,而不是为某个假设的用户。
- 使用你所制作的: 每天使用你自己构建的东西。如果你自己都不依赖它,为什么别人要依赖呢?
- 记录你的东西: 用你的网站来记录你的流程、想法和代码。
- 开源你的东西: 这有助于其他人更快地加入独立网络。
- 用户体验优先于协议: 先考虑用户体验,再用最简单的协议来支持它。
- 模块化: 采用小而松散耦合的组件,不依赖于特定设备或平台。
- 长久性: 为长远的网络构建,避免为了“进步”而频繁推倒重来。
- 多元化: 鼓励多样化的方法,使社区比任何单一文化都更有弹性。
- 享受乐趣: 保持网络的怪异和趣味性。
技术实现
IndieWeb 不发明平台,而是定义了一系列可相互组合的小标准。
起点:你的域名
这是所有事情的前提:使用你自己的域名作为主要的在线身份。这能确保即使你更换托管服务或内容管理系统,所有的链接和读者关系都能得以保留。
microformats2:你的 HTML 就是你的 API
这个标准让你能在现有的 HTML 中添加特定的 CSS 类,使你的内容机器可读,而无需构建专门的 API。
- h-card: 你的在线名片,包含姓名、网址和照片,用于在不同网站上展示你的个人资料。
- h-entry: 内容的基本单位,用于标记一篇文章或一条帖子。
- h-feed: 将多个 h-entry 组合成一个信息流,使你的列表页面可以直接被订阅。
你的网站就是你的 API。
rel-me:验证你的多平台身份
这是一个简单的链接属性,表明链接的目标地址与当前页面代表同一个人。通过在你的网站和社交媒体个人资料之间建立双向的 rel="me" 链接,你可以实现分布式身份验证。这正是 Mastodon 个人资料域名验证的工作原理。
Webmention:网站之间的对话
这是一个 W3C 推荐标准,允许网站之间进行对话。当你的一篇文章链接到另一篇文章时,你的服务器可以自动通知对方的服务器。对方网站在验证链接后,可以根据你的文章内容(通过 microformats2 解析)将其显示为评论、点赞或转发。这 фактически 构建了一个去中心化的社交网络。
如果你的网站是静态的(如使用 Hugo 或 Jekyll),你可以使用 webmention.io 这样的第三方服务来代收和管理 Webmention。
其他标准
- IndieAuth: 允许你使用自己的域名作为登录凭据,而不是依赖谷歌或 Facebook 账户。
- Micropub: 一个允许任何客户端(网页、iOS、Android 应用)在你的域名上创建、编辑和删除内容的协议,将发布界面与网站后端分离。
- WebSub: 实时订阅推送服务,当你发布新内容时,它会立即通知订阅者,而不是让订阅者反复轮询。
发布策略:POSSE、PESOS 和 Backfeed
IndieWeb 提供了一个与社交网络共存的模型,同时不放弃对内容的控制权。
- POSSE (Publish on your Own Site, Syndicate Elsewhere): 这是推荐的策略。首先在你的个人网站上发布内容,然后将副本推送到其他社交网络,并在副本中附上指向原始文章的链接。
- PESOS (Publish Elsewhere, Syndicate to your Own Site): 相反的路径,先在社交网络上发布,然后将副本存档到你的网站。这种方式被认为是次优的,因为你从一开始就受制于平台的条款。
- Backfeed: 互动内容的反向同步。通过 Bridgy 等服务,将在社交网络上收到的点赞、回复和转发转换成 Webmention,并发送回你的原始文章。
简而言之,理想流程是:在你的网站上发布,将链接副本分发到各个平台,然后将平台上的互动聚合回你的网站。
如何开始
- 获取你的域名: 将其作为你的主要在线身份。
- 设置托管: 可以是 GitHub Pages、Netlify 等托管服务,也可以是自托管。
- 创建你的页面: 使用静态网站生成器、手写 HTML 或 CMS 均可。
- 分发内容 (POSSE): 将内容发布到其他平台,并链接回你的原始文章。
- 添加 microformats: 在主页上添加
rel="me"链接,并在文章中添加h-entry标记。 - 加入社区: 分享你的成果,并记录下来帮助他人。
作者的实践:采纳了什么,放弃了什么
✅ Webmention: 用于在文章末尾自动生成引用列表,但评论功能仍通过邮件管理。 ✅ h-entry 和 h-card: 在每篇文章和主页上都实现了。 ✅ rel="me": 在页脚链接到 Mastodon、GitHub 等,并获得了相应的验证标记。
❌ Micropub 和 IndieAuth: 作者的发布流程基于编辑器和 git,不需要外部发布端点。 ❌ WebSub: 由于发布有 24 小时延迟,实时推送的复杂性不值得。 ❌ h-feed: 由于模板设计原因,标记文章卡片会产生歧义,因此继续使用 RSS。
最终,最有价值的并非纯粹的技术,而是一种关于网页设计和网络伦理的哲学。
一个不完美但充满个性的个人网站,远比一个你早已厌倦维护的完美模板更有价值。