是时候说再见了,XOOPS。
今天是圣诞节,一个叫 Micheal 的玩家加入到我在 Clash of Clans 游戏中的联盟中。这个名字让我回想起 2011 年发生在 XOOPS Development 邮件组的一场争论。不管谁对谁错,经过这一次的分裂,对于 XOOPS 来说是一次重大的打击。
基于我个人的所见所闻,XOOPS 的死亡是注定的。
持续地分裂。2001年,XOOPS 分裂于古老的 PHP-Nuke。2005年5月28日,日本团队分裂出 XOOPS 成立了 XOOPS Cube;2007 年 XOOPS 分裂出 ImpressCMS;2010年分裂出 XOOPS Engine,还有 Simple-XOOPS,坚守旧架构的 XOOPS1,等等。不仅团队成员,版本也存在相同的问题。XOOPS 2.x 系列被分裂为 2.0.x 和 2.2.x 而且互不完全兼容。当 Drupal 在 2007 年初(Drupal 5.0, 2007-01-15)开始使用 JQuery 时,XOOPS 还期望 2008 年能合并 2.0 和 2.2.x 分支(The 2.3 branch is defined by core development team as "merging of XOOPS 2.0 and 2.2 branches".The XOOPS Project in 2008)。虽然后来的 XOOPS 2.3 完成了这个工作,但是从此 XOOPS 开始了 2.4.x 和 2.5.x 的数版本号生涯。
不断地难产。2007年10月19日 3.0 分支正式创建。至今(2012年12月24日)未发布过一次正式版。XOOPS 团队一次次地推翻上一个团队或者自己的工作,一遍遍地重构。虽然 XOOPS 团队在 2008年1月8日发表年度总结就提出 3.0 版本是 "social network in a box",却错过了随后的 SNS 大潮。
不停重构。XOOPS 3.0 在 2007 年开始创立分支,后来推翻了上一版本的3.0。2009年4月 还在考虑是使用 Yii 还是 Zend framework。2011年12月11日,因为对于底层 Zend Framework 1 的不恰当使用,从而导致无法升级 Zend Framework,于是提出基于 Zend Framework 2 重构。2011年中发布内部测试版本,开发了许多基础模块,随后内核被放弃,重构。2011年年底发布内部测试版本,也被放弃,重构。2012年,XOOPS 3.0 仍在不断地推翻重构。
混乱的代码管理。2011年年初使用 Trac 作为项目管理工具,之后反复使用了若干个 Trac 和 SVN 仓库。2012年2月15日,开始使用 AgileZen ,没多久放弃。后来使用 Trello。在此期间,因为“担心别人抄袭”所以一直不开放代码。到了 2011年初,因为准备要发布测试版,于是开始使用 Github 托管代码,但是随后和发布计划一起被放弃。再后来 XOOPS 陆续反复使用三四个代码仓库,每隔一段时间就会有新的仓库或者分支开始新的重构。最后,XOOPS 3.0 没有可用的开发文档、技术资料、甚至代码历史的积累。
混乱的团队管理。XOOPS 3.0 并没有一个良好的团队,大部分工作都是由一名主开发完成,基本没有交流和有效的讨论。即使是每次讨论的决议到最后也都不了了之,没有落实。对多语言的支持讨论若干次之后,给开发者使用的多语言调用函数就同时定义了七八个。在主开发专注于开发的同时,就无法照顾到外观、产品设计、文档和资料撰写等事务。于是团队希望并安排了专人写文档、做调研,由于脱离实际需求和没有明确的目标,最后这些工作也不了了之。团队还花了大量的人力和时间在架构设计、开源类库的调研、制作代码格式的自动审查工具、制定前后端代码风格标准、代码仓库管理工作分配、IDE的选择、版本管理工具的选择、项目管理工具的选择上。
忽视外观设计并拒绝新技术。XOOPS 2.x 一直到2011年才加入 JQuery,并且在 XOOPS 3.0 的 2011 年版本中仍旧使用过时的 Smarty。XOOPS 3.0 团队在2011年的时候还认为“界面是毫无技术含量的东西”、“我们不关心用户体验”。以至于 XOOPS 过时的界面设计一直持续到 2012 年年中开始统一使用 Bootstrap 和 JQuery 后才有较大改善。
忽略社区建设。社区基本得不到有关新版本开发的信息。经过一次又一次的跳票,社区已经将 XOOPS 3.0 的发布当作愚人节的玩笑了。社区的建议也被团队忽略。社区的运营也处于瘫痪状态,除了管理员偶尔删除一些违法帖子外几乎没有活动。那些熟悉的ID如 hiweed、bbchen、domecc、文明猪等都消失许久。丧失了社区,也就丧失了持续发展。
过于宏大的架构。XOOPS 3.0 希望成为一个平台(Web Application Platform)。于是 XOOPS 3.0 计划使用 PHP 单一技术来满足从个人博客到门户网站等的各种需求,从单一应用到跨服务器自动部署的分布式架构等的各种规模。最终导致一直停留在内核的不停重构和优化中。
2012 年上半年,XOOPS 3.0 的目标从一个 Web Application Platform 调整为“一个使用 Zend Framework 的类库”。于是团队又在 2012 年使用 Bootstrap 重写了后端,使用 Zend Framework 2 又重构了一次后端。
至此,原本期望已久的 XOOPS 3.0 已然成了一个噩梦。于是我在 2012 年年底离开了 XOOPS 团队。
如今,又到一个圣诞节。就这么结束吧。几年来,我受惠于 XOOPS 社区,受恩于 XOOPS 团队。他们所教会我的事情将能让我受益一生。
感谢,XOOPS,再见!