文章摘要
作者因好奇加入IndieWeb社区,发现其并非怀旧概念,而是有具体协议和活跃社区的运动。他采纳了适合自己网站的协议,改善了用户体验并享受过程。文章分享了实施经验、取舍原因及最有用的建议。
文章总结
我加入独立网络后的收获
出于好奇,我决定探究那些博客和Mastodon上频繁出现的"IndieWeb"标签究竟意味着什么。很快我发现,这并非空洞的概念或对90年代网络的怀旧情怀,而是一场拥有具体理念、协议和活跃社区的运动!阅读其维基百科时,我越来越理解他们的立场和提案的智慧。热情驱使下,我决定采纳他们的建议,为我的网站引入合适的协议。完成测试和调整后,我可以确认这次体验非常积极:我学到了很多,网站的UX有所改善,整个过程也充满乐趣。
因此,我决定整理过去几个月的笔记写成这篇文章,希望能帮助他人发现IndieWeb,并改善网络生态。对于好奇的读者,我还会分享我实施了哪些部分、放弃了哪些以及原因,还有哪些建议最为实用。
但首先,我们需要回答一个根本问题。
IndieWeb将自己定义为"以人为中心、对抗企业网络的替代方案"。它不提供特定软件或框架,而是建立意识形态基础,有意接纳多元化的方法和项目。正如其主页所说:"我们关注人,而非项目。"
这一切始于2010年,Aaron Parecki和Tantek Çelik参加波特兰联邦社交网络峰会后,认为需要不同的方法:更少的协议,更多的"创作者"。2011年首届IndieWebCamp在波特兰举办,此后每年在全球各地举行,同时还有家庭网站俱乐部聚会,人们聚在一起改进个人网站。
其三大支柱是: - 你的内容属于你:你在网络上发布的内容应归你所有,而非企业。太多公司倒闭时带走了用户数据。 - 你连接更广:你的文章可以分发到任何平台,来自其他服务的回应和点赞能回到你的网站,让你集中管理。 - 你掌控一切:你可以发布任何格式的内容,使用可读且永久的URL。
因此,可以说这是一个由共享这些承诺的个人独立网站组成的社区。
这也解释了为何它不禁止使用社交网络,但反对"围墙花园"。
敌人有名字:数据孤岛
整个IndieWeb词汇表都围绕一个概念构建:数据孤岛,也称围墙花园。维基将其定义为集中式网站,通常由营利性公司拥有,对你贡献的内容主张某些权利并以某种方式限制访问。其特征包括: - 要求创建特定网站的账户才能参与。 - 只允许与同一网站的其他账户互动。 - 通常附加:限制性服务条款、对你创作内容的许可声明、阻止索引的围墙、或导入导出内容的障碍。
为什么这是问题?因为数据孤岛会消亡,并带走你的内容。网站死亡页面记录了令人震惊的时间线: - GeoCities:雅虎于2009年10月26日关闭,2300万页面消失。 - MySpace:2019年服务器迁移中丢失了前12年上传的所有音乐,超过5000万首歌曲来自1400万艺术家。 - Google+:2019年4月关闭。 - Posterous、FriendFeed、Vine、Yahoo Groups、TinyLetter、Cohost... 列表不断增长,甚至包含"即将死亡"和收购部分,后者往往预示死亡。
数据孤岛甚至不需要死亡:网络默认是脆弱的。根据2024年皮尤研究,2013年存在的网页中有38%在十年后已无法访问。
IndieWeb的结论不是"不要使用社交网络",而是更微妙:使用你想要的任何平台,但确保内容的规范副本存在于你控制的域名上。
原则
社区遵循11条原则: 1. 拥有你的数据:你的内容、元数据和身份都在你的域名下,并随时间保持访问权限。 2. 使用并发布可见数据:优先为人类设计,其次为机器。如果HTML能承载数据,就不需要并行API。 3. 制作你需要的东西:为自己构建工具,而非假设的用户。"如果你为假设的用户设计,他们可能不存在;如果你为自己制作,你确实存在。" 4. 使用你制作的东西:每天使用你构建的东西。"如果你不依赖它,为什么别人应该依赖?" 5. 记录你的东西:你已有表达想法的空间,用它记录你的过程、想法和代码。这帮助他人和未来的自己。 6. 开源你的东西:非强制,但有助于他人更快进入独立网络。 7. 用户体验优先于协议:先考虑用户体验,然后是最简单、最少的协议来支持它。他们总结为"用户体验优先于管道"。 8. 模块化:小型、松散耦合的组件,不依赖特定设备、语言或平台。 9. 长寿:为长期网络构建。"如果人类社会能保存古代纸莎草、维多利亚照片和恐龙骨骼,我们应该能构建不需要每隔几年以进步之名摧毁一切的网络技术。" 10. 多元性:有意鼓励多样化方法使社区比任何单一文化更具韧性。 11. 最重要的是,享受乐趣:记住90年代的网络、GeoCities、嘈杂背景和动画GIF。"它可能丑陋且编码糟糕,但很有趣。保持网络的怪异和有趣。"
编号仅为参考,非优先级。社区不要求你全部实现,但希望你牢记在心。
但IndieWeb不仅依赖原则,还有一套标准帮助你的网站更开放、可互操作且不易消失。
技术部分
IndieWeb不发明平台,而是定义少量相互组合的小型标准。官方索引按年龄和实施广度排序。
起点:你的域名 这不是协议,但是一切的前提:使用你自己的域名作为在线主要身份。这是入门指南的第一步,也是社区认为"加入"IndieWeb的最低要求。如果你明天更换主机或CMS但保留域名,所有链接、读者和搜索排名都能存活。
microformats2:你的HTML就是你的API
microformats2解决一个问题:使你的内容机器可读,无需发布并行文件或构建API。实现优雅,使用CSS类添加到现有HTML中。前缀表示数据类型:h-*为根,p-*为纯文本,u-*为URL,dt-*为日期,e-*为嵌入HTML。两个基本词汇:
- h-card:你的身份,相当于在线名片。在主页上使用最少名称、URL和照片,读者会在帖子旁显示你的个人资料,应用程序能识别你。
- h-entry:内容单元,帖子的标记。维基称其为"IndieWeb的关键构建块"。
还有h-feed,将多个h-entry元素分组,将列表页面变成可直接从HTML订阅的源。
维基用一句话总结:"你的网站就是你的API"。读取用microformats,写入用Micropub。
rel-me是最简单的部分,效果最直接。链接上的属性表示"此链接的目标代表与当前页面相同的人":<a href="https://mastodon.social/@jane" rel="me">Mastodon</a>。验证需要互惠:你的网站链接到个人资料,个人资料链接回你的网站,两者都带rel="me"。这样就能实现分布式身份验证,无需中央权威。这正是Mastodon绿色验证勾的机制。Threads、PixelFed、GitHub、Keybase和Wikipedia也支持。
在rel-me之上是RelMeAuth:使用个人URL在服务上认证,将身份证明委托给你的主页链接的OAuth提供者(如GitHub)。这是IndieLogin等服务的基础。
Webmention:网站间的对话 Webmention是明星标准,自2017年1月12日起成为W3C推荐标准,是Pingback的现代继承者。它解决网站间的对话:评论、点赞、回复和转发,无需中间平台。许多人用它替代Disqus。
流程简单:
1. 我写一篇链接到你文章的帖子。
2. 我的服务器访问你的文章,寻找你的端点:HTTP头Link: <...>; rel="webmention"或HTML中的<link rel="webmention">。
3. 它发送POST,仅两个参数:source(我的帖子)和target(你的帖子)。
4. 你的服务器验证提及:规范要求下载source并检查它确实包含指向target的链接。没有此验证,任何人都可以伪造虚假提及。
5. 验证后,你的网站决定如何处理。通过解析源的h-entry,你知道它是回复、点赞还是转发,作者的h-card让你像评论部分一样显示他们的姓名和照片。
如果这听起来像社交网络,没错!每个网站都是网络中的节点,链接形成社交图谱。
它并非完美系统,存在与其他去中心化网络相同的问题,因此有几个扩展: - Vouch,对抗垃圾信息:webmention携带第三个参数,包含"担保人"的URL,即你已知的链接到发送者域名的网站。将过滤成本从接收者转移到发送者。 - Salmention,传播线程:如果有人回复我帖子上的评论,原始帖子通过重新发送更新webmention给所有参与者来获知。
你无法逃避垃圾信息或审核。但它是构建分布式评论系统的好基础。
如果你的网站没有后端?你也不会被排除:webmention.io代表你接收webmention。你在HTML中添加<link>指向该服务,它提供API查询和显示。这正是使用Hugo、Jekyll或Eleventy等静态网站生成器时所需的。
IndieAuth:你的域名作为登录凭证 IndieAuth回答这个问题:如果你的登录身份是你的URL,而不是"你在Google上"或"你在Facebook上"会怎样?技术上它是OAuth 2.0,认证和授权标准。用户和应用程序都由URL标识,消除了预先客户端注册的需要,PKCE是强制性的。
流程简述:你在登录表单中输入域名,服务获取你的页面并通过rel="indieauth-metadata"发现你的授权服务器,重定向你到那里,你以任何方式认证(密码、电子邮件、RelMeAuth),服务收到你控制该URL的确认。这是一个社区认为稳定的活跃标准。
Micropub:从任何客户端发布 Micropub自2017年5月起成为W3C推荐标准,将发布界面与网站软件分离:任何应用程序(Web、iOS、Android)都可以在你的域名上创建、编辑和删除帖子。它用通过IndieAuth获得的OAuth令牌取代了依赖共享密码的旧MetaWeblog和AtomPub。
其美妙之处在于词汇:它不发明新词汇,而是序列化的microformats。创建帖子是带h=entry和相同h-entry属性的POST。
WebSub:实时源 WebSub,以前称为PubSubHubbub,自2018年1月起成为W3C推荐标准,消除了源轮询:不是一千个读者每半小时询问你的服务器是否有新内容,而是你在发布时通知一个中心,中心立即通过webhooks通知所有订阅者。它减少服务器负载,更新无延迟到达。许多源阅读器和聚合器支持WebSub,如Feedly或NewsBlur。
Microsub:解耦的阅读器 Microsub是最年轻的标准,仍是草案。将其视为将所有内容整合到社交阅读应用程序中的基础设施。有两层:服务器处理管道(管理订阅、获取和解析源、标准化数据),客户端仅渲染阅读界面。这样客户端在UX上竞争,你的订阅可在它们之间移植。与Micropub结合从阅读器回复,Webmention通知,形成IndieWeb"社交阅读器"的完整架构。
发布策略:POSSE、PESOS和回馈
除了原则和协议,IndieWeb提供了与社交网络共存而不交出内容的思维模型:
POSSE(在自己的网站发布,在其他地方分发):先在自己的网站发布,然后推送副本到网络,每个副本都带有指向原件的链接。这是推荐技术。你的朋友继续在他们所在的地方阅读你,你保留规范副本,如果网络明天关闭或封禁你,你一无所失。该术语由Tantek Çelik于2012年创造,从Cory Doctorow到Molly White都在实践。维基的一个细节:从副本链接到原件也是"网络合气道",对抗复制帖子的垃圾信息发送者,因为他们也复制了归功于你的链接。
PESOS(在其他地方发布,分发到自己的网站):反向路径,在数据孤岛上发布,然后归档副本到自己的网站。维基诚实地承认其优势(孤岛应用非常精致,且异步:如果你的网站宕机,你仍可发布),但认为它较差:从第一秒起你就受孤岛条款约束,你的副本不是规范的,你继承其限制,如字符上限或t.co包装的链接。
回馈:交互的反向分发。你的POSSE副本在网络收到的点赞、回复和转发作为webmention回到你的原始帖子。这样完整对话归档在你的域名上,免受下一次孤岛死亡的影响。参考服务是Bridgy:它监控你在Mastodon、GitHub、Flickr、Reddit或Bluesky上的副本,并为每个交互发送webmention。
简而言之:你在自己的网站发布,分发到孤岛并带链接返回,反应作为webmention回到家中。
与Fediverse、RSS等的关系
IndieWeb并非与Fediverse隔绝。有趣的事实:Webmention、Micropub和WebSub等协议来自同一地方——W3C社交网络工作组。同一工作组也诞生了著名的ActivityPub,Fediverse的协议。它们是表亲,尽管遵循不同哲学。
Fediverse联合服务器:你的身份是@user@instance,如果你不运行自己的实例,你依赖他人。维基直言不讳:加入Mastodon实例意味着"从一个孤岛,到一个可能更开源、更支持开放标准的孤岛,但仍依赖另一个中央组织",加上管理员税的残酷成本。IndieWeb联合网站:你的身份是你的域名,联合只是另一个渠道。
然而,它们并非不兼容。Bridgy Fed是将你的h-card、h-entry和webmention转换为ActivityPub(以及Bluesky的AT协议)的桥梁,反之亦然。结果是你的域名成为Fediverse账户,人们可以从Mastodon找到并关注你,回复作为回馈回到你的帖子。Mastodon理解你的个人资料和帖子存在于你的网站。
RSS/Atom源则是另一回事,IndieWeb认为它们存在结构问题。论点是DRY原则:内容已在你的HTML中,维护并行XML副本是"维护税",单独的代码路径可能不同步,更重(有些Atom文件比其HTML等效文件大4.5倍),且当人类点击源链接时体验糟糕。他们的替代方案是h-feed:HTML本身作为源。但技术优越不意味着被接受。他们承认很少有阅读器支持microformats。因此,他们推荐h-feed用于IndieWeb,RSS/Atom用于其他。
如何开始
入门指南推荐以下步骤,按此顺序:
1. 获取你的域名,并将其用作在线主要身份。具体建议:考虑注册商的whois隐私选项,但仅当你完全信任提供商时,因为所有权纠纷在你未列为合法所有者时会变得复杂。
2. 设置托管:初学者使用托管服务(他们提到GitHub Pages、Netlify、Neocities...),有经验者自托管。
3. 创建页面:静态网站生成器、手写HTML或CMS,无所谓。没有官方技术,这是有意的(多元性原则)。
4. 分发到其他平台(POSSE),带链接返回原件。
5. 添加microformats:主页上指向个人资料的rel="me"链接和帖子上的h-entry标记。
6. 验证你的工作,使用IndieWebify.me逐步检查rel-me、h-card和h-entry。
7. 加入社区:分享你构建的内容,即使只是一个页面,并在维基上为下一个人记录。
对于想要更渐进路径的人,有IndieMark,一个级别量表,面向开发者的指南。
我实施的内容(以及未实施的)
我承诺过会分享我实施了哪些部分、放弃了哪些以及原因。以下是列表:
- ✅ Webmention,发送和接收。发送通过每日任务自动化,通知新文章的外部链接,有24小时修正错别字的余地。接收侧用于在每篇文章末尾包含参考列表。但我将其与评论分开,评论由电子邮件管理。
- ✅ 每篇文章的h-entry和主页上的h-card,通过mf2py验证。
- ✅ 页脚中的rel="me"指向Mastodon、GitHub和Org Social,带有相应的绿色验证勾。
- ❌ Micropub和IndieAuth:有意识决定。我的发布界面是编辑器和git;文章是版本化的markdown。发布端点对我没有意义。
- ❌ WebSub:评估后放弃。由于我的发布故意延迟24小时,"实时"不证明复杂性合理。
- ❌ h-feed:我的文章卡片在其他上下文中重用,如每篇文章内的建议,标记它们会为解析器生成模糊的h-entry。如果我最初设计模板时考虑到此结构,情况会不同。RSS很好地覆盖了该角色。
但对我帮助最大的建议不是技术性的,而是关于哲学和网页设计伦理。散布在维基中,无论是否使用IndieWeb都价值连城。我的选择: - 纯HTML是最持久的格式。你可以在不使用JavaScript的情况下阅读整个网络。 - 酷URI不会改变:设计你可以永久维护的永久链接。例如,我可以更改文章的slug,它仍然有效。 - 逐步承诺,逐个孤岛:无需迁移。你开始在自己的网站发布每种内容类型,都是拥有数据的一步。 - 考虑极端长寿:维基认真讨论你死后网站会发生什么,从"死亡开关"将密钥交给信任的人,到Peter Molnar总结的实际问题:"如果你不在了,谁为你的域名付费?"
还有...享受乐趣。一个不完美、怪异的个人网站比一个你厌倦维护的完美模板更有价值。
评论总结
根据评论内容,总结主要观点如下:
1. 对IndieWeb的积极评价与支持 - 多位用户赞赏IndieWeb的理念和实现,认为它提供了摆脱社交平台束缚的可行方案。 - 关键引用:rmdes "Good work! Both the explainer and the implementation!";myzek "This seems different. It embraces the modern web and tries to fit in, while still giving the creator full control over their yard."
2. 技术门槛与用户体验的争议 - 部分用户批评IndieWeb技术栈过于复杂,对普通用户不友好,认为其更像“极客网络”而非真正的独立网络。 - 关键引用:TheOtherHobbes "If IndieWeb wants content, burying it under a ton of tech soup is the exact opposite... this set of protocols is completely unworkable for 90% of users";nicbou "Make it a habit to share other blogs that you love... Be lavish in your praise and hearty in your approval"
3. 对内容与个人表达的思考 - 用户讨论IndieWeb应更注重内容创作和个人表达,而非技术细节,强调“使用自己构建的东西”这一原则的实践意义。 - 关键引用:xtiansimon "Having difficulty imagining this constraint... Does this rule suggest that I should ‘publish’ more?";exiguus "A self-determined workflow can be more important than being seen"
4. 与其他平台的比较与补充 - 用户提及Nostr、RSS/Atom等替代方案,认为IndieWeb应与这些工具互补,而非孤立存在。 - 关键引用:rjakobsson "Have you checked out Nostr as well? I prefer the mental model of Nostr";superkuh "Although not explicitly part of the indieweb protocols, RSS and Atom feeds are important too"
5. 对IndieWeb社区文化的观察 - 有用户指出IndieWeb社区存在“精英化”倾向,如过度强调专业背景和精致博客,与独立精神相悖。 - 关键引用:pibaker "I feel some uneasiness when I go to a website branded as 'indieweb,' and see a link to the author's CV prominently on the page... It feels like walking into a brightly lit clothing store in a fancy mall and seeing the anarchy symbol on all items"
6. 数据安全与历史教训 - 用户关注平台数据丢失风险(如MySpace事件),强调个人拥有数据的重要性。 - 关键引用:slmjkdbtl "How much of these are archived by third party? If not it's huge loss to humanity";newsomix9xl "What about all my content on Friendster? Man was I bummed."