前几天有一位网志(1)读者发来反馈,我的个人站点文章分类的分页功能出了问题。读者的意见不能不重视,于是花了一点时间修复了一下。作为国内少数还在使用 Movable Type (MT) 作为网志发布工具的用户,处理的过程中不由使我再次涌起迁移到 WordPress (WP)的冲动,到现在 MT 甚至都不具备一个良好的原生的分页机制,不得不再次借助于第三方的插件来做到。不管承认与否,Movable Type 已经被 WordPress 全方位的无情的超越。如今的 Movable Type,已经不像当年那样被人津津乐道,甚至被 VideoEgg 收购的消息都没引起多大的反响。这是怎么一回事? 这几年发生了什么?在这个时间回顾一下,或许别具意义。
Movable Type 是如何被 WordPress 超越的?
让我们回到 2001 年,短暂无业闲暇中的 Perl 工程师 Ben Trott 为了满足妻子 Mena Trott 在网上书写的热情而创作了 Movable Type,9 月份作为个人项目发布了 Movable Type(这个单词也是"活字印刷"的意思)初始版本,10月份发布了 1.0 版本(Refer)。很快,免费(严格来说是 Donation-Ware 的版权形式)而精致优雅的 Movable Type 赢得了不少用户,引起了业界广泛注意。Ben 夫妇的夫妻店名为 Six Apart , 这个名字的由来据说是因为两个人的生日相差六天,和什么"六度分割"理论没什么直接联系。2004 年拿到第二轮融资。2003 年,Ben 夫妇二人拿到了来自伊藤穰一(Joi Ito) 的第一笔风险投资,2004 年拿到第二轮融资。资本一旦进入,情况似乎就发生了变化。在 2004 年发布的 3.0 版本引发了轩然大波,Six Apart 短视的将 Movable Type 的版权进行了调整,打算开始收费,这一杀鸡取卵的举措引来了大量用户的不满与诟病,从而使得不少用户转投当时并不成熟的 WordPress 的怀抱。到现在为止,我们似乎得到了 Movable Type 落败的第一个原因:错误的时机采用了错误的收费策略。
WordPress 的最初发展过程似乎没有什么秘密可言,在维基百科上可以找到关于 WordPress 发展的方方面面的信息。当时只有 19 岁的的 Matt Mullenweg 在 b2/cafelog 的基础上开发了 WordPress,遵循 Web 标准,于 2003 年 5 月以 GPL 版权形式发布。随后的两年中,Matt 被 CNET 雇佣,退学,在几位 WordPress 开发者的努力下推出了 1.5 这个重要的版本,2005 年 Matt 从 CNET 离职而全力投入 WordPress 项目,正式成立了 Automattic,随后发布了 Akismet 项目(用以对抗垃圾信息), WordPress.com 相继正式对公共开放,看起来似乎是无心插柳柳成荫,其实是很大程度上依靠着开源社区的力量驱动。而 Movable Type 的版权形式让用户心怀芥蒂,直到 2007 年,Six Apart 才重新修改版权形式为 GPL (GPLv2) 。这个时候已经无法改变什么了。这几年中,Movable Type 几乎没有什么革新的功能出来,版本 3 和 Spam 较劲了许久,然后 4.0 解决了 Spam 问题后则是跟性能问题斗争,现在的版本 5 倒是有些中规中矩,只是时不我待。WordPress 的开发者分为 Lead Developer、Contributing Developer、Developer ,这种形式更能激发贡献者的热情,形成了一个相对更为健康的结构,而对于 Movable Type ,即使在开源后也几乎找不到这样的结构,只是知道目前日本的 Perl 技术社区承担了很大一部分开发改进工作。如果要总结一下 Movable Type 被 WordPress 超越的第二个原因:WordPress 吸引了开源社区的力量。
如果说语言决定运势,似乎有些技术巫婆的味道。Ben Trott 用 Perl 语言开发的 Movable Type ,而 WordPress 则是用 PHP 进行开发。很不幸的是,Perl 差不多是过去 10 年最让人扼腕的一门语言,从 Perl 5 之后一直停滞不前,直到去年 Perl 6 才姗姗来迟,Perl 没有凤凰涅槃,终究彻彻底底的成为了一门小众语言。Perl 功能超级强大,但有个相当大的弊端,那就是一个人写出来的程序,换一个人很难读懂。这意味着 Perl 写出来的 Movable Type 很难借助于群体的力量而继续改进,终究将 MT 变成属于小众群体的工具。2003 年的时候,PHP 还不够先进,但是 PHP 一直在迅速进化,而 PHP 用户群也越来越大,PHP 语言越来越流行2。WordPress 尽管开始粗糙,但是经过不断的改进后最终变得功能强大甚至完美。很多国内 Blogger 应该记忆犹新,选择 Movable Type 的话,必须要找能够支持 Perl 环境的虚拟主机,而虚拟主机支持 PHP 则几乎是"标配"。语言的选择决定了一个产品的基因,从某种程度上也决定了产品的命运。这是两种技术文化的碰撞,这是 Movable Type 被 WordPress 超越的第三个原因:选择 Perl 是一种错误。
Six Apart 步步抢得先机,却总是被后发的 WordPress 超过。Six Apart 在 2003 年就正式推出了 TypePad 这个 Blog 托管平台,远比 WordPress.com 起步早。做平台,非常关键的一点是需要一个好的生态来维系。Movable Type 想从软件 License 中赚钱的想法实际上已经注定了构建不出这样相对开放的生态。而 WordPress 则不然,始终坚持开源,团结技术社区。WordPress 逐步发展成为最流行的网志发布工具,而广泛的用户群则给 WordPress 带来了大量有价值的反馈,技术爱好者则进一步贡献了数不清的插件,很多用户因为 WordPress 有着这么多的插件而放弃 Movable Type,也难怪,到现在 MT 还没有一个合适的插件让用户很方便的显示相关文章,而 WordPress 下面类似的插件比比皆是,只是有的写的糟糕,有的写得精致而已。不难看出,WordPress 走了一条农村包围城市的路线,逐渐培养了大量的基础用户。时至今日,WordPress.com 是全球前 20 名的网站,而 TypePad 排名是 200 左右。 Movable Type 被 WordPress 超越的第四个原因:WordPress 构建了一个更好的产品生态,进而培育了一个成功的平台。
关于"生态",我想说一下国内的一些开源产品,比如 Discuz!,较少得到来自技术社区的贡献,说是开源,仅仅是把代码公开,缺乏与技术社区良好的互动,形成不了良好的技术生态。
不知是不是 Ben Trott 最初单枪匹马写出来的 MT 的缘故,Six Apart 团队另一个特别的地方是没有出现有影响力的技术明星。在 2005 年,Six Apart 收购了 LiveJournal 背后的公司 Danga 。Danga 这个技术团队在 Web 2.0 历史上是值得纪念的,给业界贡献了 Memcached 、MogileFS 这样经典的开源产品,让无数创业团队受益,相信今天很多公司都在使用 Danga 团队开源的产品或是从 Memcached 中借鉴了 Key-Value 产品的设计理念。甚至那篇 LiveJournal's Backend 也给了国内很多技术人员以启迪,我甚至认为这是 Web 2.0 技术大潮中最重要的 PPT 之一。遗憾的是,Brad Fitzpatrick 这位大牛没多久就离开了 Six Apart ,加入了 Google。这一次收购似乎没有给 Six Apart 带来什么。除此之外,业界很少有优秀的 Perl 为主导的技术团队了。后来, Six Apart 又有几次收购,似乎也都是为了技术团队而进行的。反观 Automattic ,迄今为止只进行过两三次收购而已,而且都是为了完善 WordPress 产品功能。第五个原因,Six Apart 的收购没有做到价值最大化。在雅虎的收购上我们也看到了类似的失败的做法。
抛开这两个产品的其它方面不谈,一个成功的产品和一个走向没落的产品之间的差异是一点一点产生的。我们能看到结局,但回到 2001 年的时候,没有人能预料到这些。当然,今天的 Movable Type 绝非一无是处,尤其是模板结构,现在也要比 WordPress 优秀,但是没办法,WordPress 好的模板主题更多。另外,MT 的 静态(3)页面发布功能依然是一个不可替代的优秀特性,虽说 WordPress 启用了 Cache 之后,MT 这一点已经不具备多大的优势了。当然,难以割舍的还有习惯和一种别样的感情,所以,至今国内仍有不少出色的网志是构建在 Movable Type 之上的。
两个产品似乎从没很少剑拔弩张相向过,但我想 WordPress 至少是将 Movable Type 作为一个对手并一步一步将其超越的。我知道,作为 Movable Type 或是 WordPress 忠实用户的你,一定还有其它看法。
Movable Type is Dead, Long Live Movable Type.
--EOF--
注1: 为了纪念过去的一些原则上的争论,这里"Blog"一律译作"网志"。
注2: 关于 Perl 和 PHP 的那一段言论会引发争论。请原谅我的偏见和无知吧。
注3: MT 的静态发布,对于单个页面的访问,Web 服务器来说减轻了压力,但是对于需要频繁交互的应用需求,比如类似留言这样的操作,MT 就太慢了。