RSS的兴起和消亡
RSS曾是互联网订阅的革命力量,让用户轻松聚合资讯,却因开发者分裂和社交平台的入侵,渐渐淡出视野。本文重溯其诞生、分叉与没落,警示开放标准易碎的真相。
大约十年前,大多数上网的人还对RSS有点印象。这种东西叫简易信息聚合,或者富站点摘要——具体叫啥,得看问谁——它是一种网站和播客能用来给用户推送内容流的规范,很多电脑程序都能轻松读懂它。现在,RSS虽然还在支撑不少网络应用,但对大多数人来说,它已经成了一个生僻的旧玩意儿。
这个故事其实是两条线缠在一起讲的。一条讲的是网络未来那场宏大的梦想,最终没能开花结果。另一条则是大家本想齐心协力改进一个热门规范,结果却闹成开源软件史上最激烈的分裂大战。
想想上世纪90年代末,那是从Netscape上市到互联网泡沫爆裂的疯狂日子,大家都觉得网络会变得更大更牛,只是没人知道怎么变。有人猜,信息聚合会彻底颠覆一切。网络本来只是客户端从一个服务器拉文件的简单买卖,但新规范一出,就能把整个网站的内容打包,通过各种渠道重新分发出去。Kevin Werbach当时在《Release 1.0》这本投资圈子里的热门通讯上写道,聚合“会变成互联网经济的中心模式,让企业和个人牢牢抓住自己的在线形象,还能享受大规模传播的好处”。
试想一下,击剑迷们不用直奔在线体育用品店或装备专卖,就能直接在自己喜欢的击剑网站上,通过嵌入的小电商工具买把新剑。就像电视网把节目卖给地方小台,网络上的聚合也能让公司和媒体通过无数中间站触达用户。这就等于,用户自己说了算,想什么时候、怎么和某个品牌打交道。
RSS就是这样一个承诺带来聚合未来的规范。在Werbach眼里,它是“轻量级聚合协议的头号例子”。同期还有篇文章说,RSS是第一个真正发挥XML潜力的协议。它本该让用户和聚合工具从网络上随心挑内容,拼出自己的专属频道。可二十年过去,社交媒体火了,Google关了Reader,RSS看起来像在慢慢咽气,只剩播客创作者、技术博主和偶尔几个记者在用。当然,总有铁杆粉丝死守RSS阅读器——哪怕到2018年,为博客加个RSS源,也像在公开宣战。那橘黄色的泡泡图标,成了对巨头垄断网络的怀旧反抗,离Werbach想象的聚合天堂差了十万八千里。
RSS的前途一度亮得刺眼,怎么就栽了跟头?是命中注定,还是那场开发者间的窝里斗,堵死了统一标准的路?
RSS其实被发明了两次。这就注定它没个明确的主人,争论和怨气没完没了。但也正说明,它是个水到渠成的好主意。
1998年,Netscape正为未来发愁。它的明星产品Netscape Navigator浏览器——一度占了八成用户——正被Microsoft的Internet Explorer抢饭碗。于是,Netscape决定换战场。五月,他们拉起一支团队,内部叫“Project 60”。两个月后,推出“My Netscape”门户,和Yahoo、MSN、Excite这些对手厮杀。
转年三月,Netscape又加码,推出“My Netscape Network”。用户现在能自定义门户页面,塞进“频道”——从网上拉最新头条。只要你喜欢的网站按Netscape的格式吐出个特殊文件,就能点“添加频道”按钮把网站加进去,网站上本该有个这样的按钮。然后,一个小盒子就蹦出来,里面列满带链接的头条。
那个特殊文件就是RSS文件。Netscape的公告说,RSS代表“资源描述框架站点摘要”。这名字有点扯。资源描述框架其实是描述各种资源属性的语法规则。1999年,世界万维网联盟正审它的草案——那是网络的标准制定机构。尽管RSS本该基于这个框架,但Netscape放出的示例文件里头,一个框架标签都没用。规格作者之一Dan Libby在附带文档里解释,“这次MNN发布,我们故意把RSS格式简化了”。版本号是0.90,意思是以后会逐步对齐XML规范和框架草案。
RSS是Libby和两个Netscape同事Eckart Walther、Ramanathan Guha搞出来的。Guha在邮件里告诉我,他和Walther先起草,Libby后来接手——AOL买下Netscape后,两人就走了。在此之前,Guha在Apple发明了元内容框架,用来标记从网页到本地文件的元数据。他还用HotSauce这个应用演示,把文件间的关系画成3D空间里悬浮的节点网。从Apple跳到Netscape,Guha和顾问Tim Bray合作,把框架改成XML版,后来成了联盟框架草案的基础。所以,Guha他们仨对RSS里塞框架特别上心。但Libby后来写,原计划的框架版RSS因为时间不够,加上觉得框架“对普通用户太复杂”,被砍得七零八落。
Netscape在“门户大战”里拼杀时,网络另一头,“博客”这股风潮正起步。Dave Winer就是先驱,他管着UserLand Software,开发早期内容管理系统,让不会编程的人也能轻松写博客。他自己的博客Scripting News,是网上最老的之一。早在Netscape公告前一年多,1997年12月15日,Winer发帖说,他的博客以后会同时支持XML和HTML。
Winer的XML格式后来叫Scripting News格式。据说它和Microsoft的频道定义格式挺像——那是1997年3月提交给联盟的“推送技术”标准——不过我没找到原文件验证。跟Netscape的RSS一样,它把博客内容结构化,好让其他软件读懂。Netscape出0.90后,Winer和UserLand开始支持两种格式。但Winer觉得Netscape版“糟糕透顶,缺了网络写手和读者最需要的东西”。它只能列链接,而Scripting News能放一串段落,每段里头还能嵌好几个链接。
1999年六月,Netscape公告两个月后,Winer推出Scripting News 2.0b1版。他说,他试着说服Netscape修0.90的毛病,但没人理,才自己干。新版在
下个月,Netscape赶紧放出RSS 0.91。这版大转弯:RSS不再是“资源描述框架站点摘要”,改成“富站点摘要”。框架的东西——本来也没多少——全剔干净了。好多Scripting News的标签都融进来了。Libby在规格说明里写道:“去掉框架引用。RSS本来是做网站摘要的元数据格式。现在清楚两点:一是提供方想要的不是元数据,而是更强的聚合;框架结构太严,得严格符合数据模型才算有效,不好读,也难做实用文件。二是框架的生成、验证和处理工具太少。所以,我们改用标准XML方式。”
Winer乐坏了,说0.91“比我想象的还好”。UserLand扔掉2.0b1,转而用它。一时间,看起来RSS终于有了一个大家认可的统一规格。
可一年后,0.91又露怯了。人们想用RSS干的很多事,规格里头都没提。还有些规定显得多余——比如每个频道最多15条内容。
到那时,RSS已经被好几家组织捡起来了。除了渐渐没动静的Netscape,大头有Winer的UserLand、O’Reilly的Meerkat聚合器,还有Moreover.com的新闻聚合器。这些组织的代表通过邮件列表,常聊怎么升级RSS 0.91。但他们对升级的方向意见分歧大得很。
聊天最多的地方是聚合邮件列表,那儿的存档到现在还看得到,简直是历史宝库,一步步记录了那些分歧怎么闹成社区大分裂。
分裂一边是Winer。他迫不及待想推进RSS,但只想小修小补。2000年六月,他在UserLand网站上发了自家版RSS 0.91,当作进一步开发的起点。跟Netscape版比,没啥大改。他在配的博文里说,这只是“清理”,记录RSS在野外怎么被用的——因为Netscape版没人管了。同篇文章里,他争辩说RSS成功靠的就是简单,要是加命名空间(用来明确区分不同RSS词汇的办法)或者塞回框架——列表里有人提过——它“会复杂一大截,在内容提供层,换来的好处几乎为零”。差不多时候,他给列表发邮件,暗示分叉可能躲不掉:“我还在想怎么推RSS前进。RSS2里肯定要加像ICE那样的订阅发布功能,但简洁我死也要守住。我喜欢可选元素。不想走命名空间、模式或者框架变种的路。明白别人想这么干,所以分叉大概跑不了。我对另一叉会去哪有自己的看法,但现在先不说。”
对面站着几个人,包括O’Reilly的Rael Dornfest、Ian Davis(Calaba搜索创业者)和一个14岁的天才Aaron Swartz——就是后来联手创Reddit、当黑客斗士的那个。(2000年,Davis邮件告诉我,他爸常陪他去科技聚会。)Dornfest、Davis和Swartz都觉得RSS得加命名空间,才能撑住大家想干的各种事。在O’Reilly另一个邮件列表上,Davis提议用命名空间建模块系统,说这样“能让RSS随我们心意扩展,而不是硬塞新功能把规格搞乱”。“命名空间派”相信,RSS很快就会超出博客帖子的聚合,所以命名空间不是麻烦,而是唯一办法,避免RSS随着用例增多变得乱套。
关于命名空间的争执,其实根子在更深的地方:RSS到底是干嘛的?Winer发明Scripting News是为了分发他博客的帖子。Netscape推出RSS作为“资源描述框架站点摘要”,是为了在My Netscape门户里重现网站的微缩版。有些人觉得该尊重Netscape的初心。Davis在列表里写,RSS“本来是建微型站点地图的”,现在他和别人想扩展它“涵盖不止简单新闻头条,还包括过去一年冒出来的新用法”。这话说得到位,因为Netscape的RSS项目起步时目标更高:Guha告诉我,他想做的不止网站频道,还包括像Madonna这样的任意实体馈送。继续开发RSS来实现这个,确实对得上原意。但Davis也夸大了Netscape当时的统一性:Libby邮件告诉我,内部早分成“建语义网”派和“让它简单好写”派。
Winer则说,Netscape的目标无关紧要,因为他的Scripting News才是第一个RSS,用途完全不同。既然连RSS核心开发者都对谁发明它、为什么发明分不清,分叉就不可避免了。
分叉就这么来了:Dornfest公布了拟RSS 1.0规格,组了RSS-DEV工作组——里面有Davis、Swartz和其他人,但没Winer——准备正式发布。拟规格里,RSS又叫“资源描述框架站点摘要”,因为嵌回了框架来标记某些RSS元素的元属性。规格里点名感谢Winer,说他通过“布道”普及了RSS。但也说,按Winer的路子没法改进RSS。要是不加伸展模块系统,光加元素就会“牺牲可扩展性”。然后,它定义了基于XML命名空间的模块系统。
Winer觉得“不公平”,RSS-DEV工作组自作主张用了“RSS 1.0”这个名。在另一个关于去中心化的列表里,他写“最近一个标准被大牌偷了”,大概指O’Reilly召的组。列表上其他人也觉得,工作组没得到社区共识就用RSS名,太过分。但组没让步。Dan Brickley,工作组另一成员,辩护说“拟的RSS 1.0牢牢扎根原RSS愿景,那愿景源头能溯到MCF(框架的前身)和相关规格”。他觉得1.0比Winer更有资格用RSS名,因为框架本来就是RSS一部分。十二月,组发了最终版。同月,Winer在UserLand网站上推了0.91的升级版RSS 0.92,加了几个小可选改进,比如
要是早点拉Winer进工作组,这分叉也许能避开。他明显该在里面:列表上活跃,RSS流行多亏他,组员自己都承认。但Davis邮件告诉我,Winer“想掌控RSS,当成自己的遗产,不愿跟我们合作”。Tim O’Reilly,O’Reilly创始人兼CEO,2000年九月在UserLand讨论组解释,Winer基本上拒绝参加:“一群RSS相关的人聚一起想它的未来进化。Dave在组里。组的共识往他不喜欢的方向走,他就退出,还说这是O’Reilly的阴谋抢他的RSS,尽管Rael Dornfest只是拟RSS 1.0规格的十二作者之一,好多人跟RSS的渊源至少跟他一样长。”
Winer回击:“公告前两周我见Dale,他没提叫RSS 1.0。公告前周五我跟Rael打电话,他也没说。头一遭知道是公开公告后。
我直问你。要是定RSS 1.0名的计划是私下里搞的,没预警、没咨询、没给列表成员机会同意或反对——不只我——你打算怎么着?
UserLand花大力气创、推、撑RSS。我们让了,让你们拿名。这是最上头的。要是我还想在网络聚合上干活,得用别的名。为啥、怎么回事Tim?”
我在聚合列表里没找到公告前讨论用RSS 1.0名的记录。Winer邮件告诉我,他不是想控制RSS,只是想在自家产品里用它。
2003年,RSS又分了一次。社区的吵架让好些开发者烦透了,他们决定从头搞个新格式。这些人创了Atom:扔掉框架,但拥抱XML命名空间。Atom后来成了IETF拟标准。Atom一出,就有三个RSS版本在抢地盘:Winer的0.92(2002年升到RSS 2.0,重叫“简易信息聚合”)、RSS-DEV的1.0,还有Atom。
这些竞争规格的泛滥,也许在其他方面也伤了RSS——我一会儿再说。但它没挡住RSS在2000年代的爆火。2004年,《纽约时报》开始用RSS推头条,还写了篇科普文,教老百姓RSS是啥、怎么用。2005年,百万用户上的Google Reader上线。到2013年,《纽约时报》在Aaron Swartz的讣告里说RSS“无处不在”。在Facebook吸走全球三分之一人口前,RSS就是很多人上网追新闻的标配。
《纽约时报》那篇讣告是2013年一月发的。但那时,RSS其实已经拐了个弯,正在变成冷门货。七月,Google关了Reader,说用户“这些年一直在掉”。好多家媒体跳出来宣称RSS死了。但其实,早好几年人们就在说RSS完了,甚至在Reader关门前。2009年五月,Steve Gillmor在TechCrunch上劝“该彻底甩掉RSS,转战Twitter了”,因为“RSS现在不顶用了”。他指出,Twitter基本上是个更好的RSS:不光给你文章,还秀别人对文章的看法。它让你追人,不是只追频道。Gillmor结尾引用Bob Dylan的《Forever Young》,劝大家让RSS退居二线。
今天,RSS没死。但它也没从前那么火了。好多人解释为什么RSS丢了大众缘。其中最有道理的,大概就是Gillmor 2009年说的。社交网络跟RSS一样,给最新网络资讯,但更好用——还给运营公司更多好处。有些人指责Google关Reader是为了推Google+。Google也许能从+上赚到钱,从Reader上永远赚不到。Instapaper的创作者Marco Arment在2013年博文里写:“Reader是Facebook无意中打响的那场仗的最新受害者:抢占一切。虽然Google‘拥有’Reader,能用它海量新闻和注意力数据,但这跟他们更要紧的Google+策略冲突:他们需要大家通过+读和分享一切,好跟Facebook抢广告数据、钱、增长和影响力。”
所以,用户和科技公司都觉得,从社交网络里收获更多,比RSS多。
还有种说法是,RSS从头就太 geek 了,不适合普通人。连《纽约时报》这种积极推RSS的,也在2006年抱怨RSS是“电脑 nerd 们”捏出来的“不怎么友好的”缩写。2004年RSS图标发明前,像时报这样的网站,用小橙盒标“XML”链接到RSS源,这肯定吓跑人——虽说准,因为点开是满屏XML。这条推特抓住了这说法的精髓:普通人从来没觉得RSS好上手;它不是为消费者设计的,门槛太多;一有更好的,就全跑了。
要是RSS继续发展,也许能克服这些短板。比如,扩展一下,让订阅同一个频道的朋友能互相推送对文章的看法。或者改善浏览器支持。但Facebook能“快速迭代、勇于打破”,RSS开发者社区却卡在求共识的泥潭里。求不来统一,力气就白费在重复造轮子上。Davis告诉我,要是列表上的人能妥协合作,Atom压根不用生,“那些清理工作都能用来强化RSS”。所以,为什么RSS不流行了?第一层答案,社交网络取代了它。第二层问,为什么能取代?因为让RSS成功的人,面对的难题比建Facebook难多了。Dornfest有次在列表上叹,“现在政治纠葛远比序列化复杂得多。”
结果,我们现在困在中心化的信息孤岛里。尽管如此,Werbach 1999年预言的聚合网络还是实现了,只是方式跟他想的不一样。毕竟,《The Onion》现在靠Facebook和Twitter分销内容,就像《Seinfeld》靠重播在结束原播后赚翻天。我问Werbach他的看法,他基本同意。一方面,RSS明显失败了,因为它现在不是“博客世界或内容世界的核心,也不是拼凑站点元素的工具”。另一方面,“整个社交媒体革命,部分就是关于聚合不同内容和资源”的能力,挺像RSS和他原先的聚合愿景。对他来说,“这是RSS的遗产,哪怕不是建在RSS上”。
可惜,今天的网络聚合还只通过少数渠道走,这意味着没人能像Werbach想象的那样“掌控自己的在线形象”。一个原因是公司贪心——开放的RSS不给它们数据和眼球的控制权,卖不了广告,所以不支持。但更接地气的原因是,中心化孤岛设计起来简单多了。共识难求,花时间,但没共识,被冷落的开发者就会跑去另起炉灶,搞竞争标准。这教训可能是:要是想看到更好、更开放的网络,我们得学会别互相坑。