Web Syndication

29th February 2020 at 5:16pm
Miscellaneous

Web Syndication (信息聚合)。一般跟 RSS 关联在一起。

Feed Reader

Feed reader(信息流阅读器),指对信息进行抓取和聚合并供给读者阅读的工具。流行的在线服务是 Feedly 及 Inoreader。流行的自建服务是 Tiny Tiny RSS。

RSSHub 的作者 DIYgod 推荐 使用自建的 Tiny Tiny RSS。我实际使用了下,觉得并不适合我:

  • 支持自定义 filter,即根据内容自动进行处理;这个功能在 Feedly 或 Inoreader 中都需要付费,但是我并不需要使用
  • 虽然有人做了 非常方便的 docker 部署,但由于它是个 php 程序,并需要用 Postgres 来存储数据,带来了额外的机器和运维成本(比如备份数据库文件)
  • 并没有提供我想要的「对订阅源写备注」的能力(虽然 Feedly 及 Inoreader 也没有)

目前我主力使用 Inoreader。

RSS v.s. Atom

这节讨论两个主要的 Web Syndication (信息聚合)格式,RSS 以及 Atom。

TL;DR: 比起用 RSS 格式你更应该用 Atom。

RSS

RSS 的历史比较混乱。Netscape, RSS-DEV Working Group 和 Dave Winter 都发布过 RSS 格式规范。

RSS 第一个版本 0.9 由 Netscape 的两位开发者发布于 1999 年 5 月。之后 RSS 的关键人物,当时供职于 UserLand Software 的 Dave Winer 又分别发布了 0.92~0.94 多个版本,但是版本之间有兼容性问题。RSS-DEV Working Group 在 2000 年 12 月发布了 RSS 1.0。Dave Winer 于 2002 年 9 月发布了 RSS 2.0,并且最终把 RSS 这个缩写定义为 Really Simple Syndicaton。最终 RSS 2.0 规范的所有权被 Winer 和 UserLand Software 赠予哈佛大学,并且规范被冻结,不再能有显著的更新。

2002 年 11 月,纽约时报开始为读者输出 RSS 流,Winer 称之为 RSS 格式的引爆点。

现在主流的 RSS 版本是 2.0。

Atom

由于 RSS 2.0 存在一些问题,并且它的规范被冻结,于是有一些人想制订一个新格式来解决这个问题。2003 年 12 月,Atom 0.3 发布并且被各种信息聚合工具接受,比如很多 Google 相关服务使用了这个协议。Google 的 GData 格式也是在 Atom 1.0 和 RSS 2.0 基础上加以改进。

2005 年 7 月,Atom 1.0 被 IETF 接受并在同年 12 月被标准化至 RFC 4287 中。

要让 feed reader 识别到你的网站有 Atom 输出,可以在网页中添加这行(其中 atom.xml 文件需要是你的网站程序有实际生成的文件):

<link href="atom.xml" type="application/atom+xml" rel="alternate" title="Sitewide ATOM Feed" />

RSS v.s. Atom

Atom 1.0 在几方面优于 RSS 2.0:

  • RSS 没有更新时间字段,这导致 feed reader 难以判断内容是否有更新
  • 模块化(或者扩展性):RSS 不是一个 XML 命名空间,不易做扩展,比如 dc:creator 这种标签无法被加进 RSS 中
  • RSS 无法使用相对 URI,导致不同的 feed readers 在这方面实现不一致,没有可互操作性(interoperability)
  • Atom 在国际化方面优于 RSS

Reddit 的 feed 格式 从 RSS 改为 Atom 时,提到了几点:

  • RSS 对 HTML 内容支持差,还可能导致 XSS 攻击
  • Feed reader 客户端对 Atom 的支持比 RSS 好

Jekyll 有一个 Issue 在讨论 应该使用哪种 Feed 格式,结论是选择(并且只选择) Atom 作为输出格式。

主流网络媒体使用的 RSS 这个词语是一种惯用法,它的网站可能输出的是 Atom 格式的 feed 流,也可能输出 RSS 的。

参考文献

  1. History of web syndication technology - Wikipedia
  2. RSS - Wikipedia
  3. Atom (standard) - Wikipedia
  4. RSS 2.0 And Atom 1.0 Compared
  5. Atom Syndication Format - Introduction
  6. What feed format is best? - Discussion on Jekyll Issues
  7. Reedit Switching from RSS 2.0 to Atom 1.0