Skip to content

Instantly share code, notes, and snippets.

@yaodong
Last active August 29, 2015 13:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yaodong/9461731 to your computer and use it in GitHub Desktop.
Save yaodong/9461731 to your computer and use it in GitHub Desktop.
2012-12-24-goodby-xoops.md

是时候说再见了,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,再见!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment