附录B:选对用对模块

 

      要从2000多个且每日都在不断添加的模块中,寻找到满足你特定任务的贡献模块可能是个艰巨的过程。贯穿全书,作者都尽量把Drupal建站中常用到的 “必备”的,特别是结构性的模块重点突出出来和指点出来。我们也努力把那些经得起检验并且可能继续使用的模块囊括进来。

      但是,每一个网站项目的需求都是独一无二的,这可能超出本书覆盖的范围,而且贡献模块的视野是不断转换的。那些曾经称得上挑剔的建站区块模块有可能停工流产,或者被更高级的替代者取代。而且新出的模块很可能将老模块打个落花流水。

      所以,本附录试图突出那些被“知道内情”者所采用的用来评估和选择模块的一些最好做法。要记住的是,不是简单的一套准则——包括它们——能够告诉你一个模 块的全部。记住一点是很重要的,那就是在你准备将一项任务托付给那些模块时先评估,这能防止你在将来的道路上碰到不愉快的意外。

寻找模块

      选用符合你需要的模块的第一步是实际的找到它。幸运的是,所有的模块(只有极少数例外)都直接位于Drupal.org站中,所有只有一个寻找它们的资源。方式如下。

      浏览模块列表

      模块列表页位于 http://drupal.org/project/Modules ,如图B-1,分别按类别(如CCK或邮件相关模块)、名称字母顺序和最近更新日期排列模块。浏览类别页面对查明特定领域的模块很有帮助,留意那些经常出现在日期列表顶部的模块有助于搞清楚哪些模块有着较为活跃的维护者。

Drupal 5.x 的模块不适用于Drupal 6.x,反过来亦是。要看精确列表,请修改“Filter by Drupal Core compatibility”过滤器过滤显示适合你站点版本的模块。你只有登录到Drupal.org才能使用这项过滤。获得账户很简单也是免费的,同时 还能开放很多有用的工具给你。

Drupal.org的另外一个办法是订阅RSS阅读器到 http://drupal.org/taxonomy/term/14 ,它将Drupal.org中新建的模块列出来。

 

      图B-1:Drupal.org中的模块浏览页

      关键词搜索

      Drupal.org同时提供了一个区块供你搜索站内的下载,还看图B-1。比如说,搜索“wiki”会将名称或描述中带有这个关键词的模块列出来。这样你能比通过浏览类别更快的探取到符合你特别需要的模块。

      Drupal.org 论坛

      Drupal.org的支持论坛 http://drupal.org/forum ,特别是”Before you start“论坛  http://drupal.org/forum/20 ,通过其他用户使用在自己项目上的模块的问题咨询,可以给你提供大量的信息。经常你会得到不光是目前你想实施的功能方面的很好的建议,还能得到你网站将来要考虑的一些东西的建议。”Drupal showcase“论坛 http://drupal.org/forum/25 也有很多的人在展示他们使用Drupal建立的站点——他们通常非常乐意分享他们是如何建设其网站的特殊部分的。

      案例研究

      无论是多么疯狂的研究案例,都不是坏事,其他的人可能已经解决了与你一样的问题。通过了解他们是如何处理那些问题,你可以极大的节省找寻模块的时间。Drupal手册中包含了一节案例研究的内容 http://drupal.org/cases 。里面有不少写得很详细的文章,通常是关于那些使用Drupal的大的网站,关于为什么选择Drupal以及如何建立的。一些比较全面的案例研究包括:

      Planet Drupal (Drupal星系)

      Planet Drupal (http://drupal.org/planet), 如图B-2,是Drupal贡献模块成员的博客聚合,是了解模块世界中新事物和热点的非常好的途径。模块教程、评论以及新闻通常都发布在这,planet Drupal也为你把脉这个更大社区提供了很好的慷慨的资源。

      图B-2:Planet Drupal,聚合Drupal公司和作者的博客内容

      第三方网站

      http://drupal.org/node/289913 提供了一个第三方网站列表——即,独立于Drupal.org——经常在评估模块方面提供有益的信息。比如, http://drupalmodules.com 提供用户对模块的评级和评论。 http://www.lullabot.com 发布各种文章、视频和音频,很多都在介绍一些流行模块以及它们的用法。

 

 

评定模块的健康值

      一个开源项目的力量来自于它的贡献者的能量,Drupal也不例外。尽管Drupal中每一行代码的添加和修改都要经过仔细的审核,但是贡献模块这里却更 像一个“狂野的西部”,在这里稍微会几下三脚猫功夫的任何一个人都能添加模块供人下载。Drupal社区试图设置一些障碍想让贡献代码回撤一点,尽可能的 慢下来以促进生长旺盛的Drupal开发社区健康成长。这种方法有利有弊,利在几乎所有问题,都有模块能帮你全部或部分解决问题,弊在开发者的水平参差不 齐,以至于贡献代码会有无效或安全问题,而且开发者有可能涉猎过多,不能持续维护他们的模块。

      模块维护得好与坏、它的整个代码的质量以及社区中的使用状况都是选择模块时需要考虑的几个重点因素。本节我们将从Drupal模块的首要面目:项目页开始,通过仔细审视Drupal.org提供的一些工具来确定这些因素。

      项目页

      在Drupal.org中,模块、主题、译本甚至Drupal内核自己通通都作为项目存在。每一个项目都有一个自己的页面http://drupal.org/project/file_name,里面包含不少可用来评估模块健康情况的信息。

      图B-3是模块项目页面的第一部分。这里你能找到模块维护者的名字(通常是原作者/或者模块的主要开发者)、项目首创日期、模块的功能简介,有时会有一张截图显示这个模块是干什么的。

      图B-3:Devel 模块的项目页

      项目首创日期在”时间考验法“中可能会有用处(如果一个模块是上周刚刚发布的,你最好等它再成熟一点再用它)。但是也要当心一些老模块可能被新的模块所取代。

      在往下,我们看到模块的发布列表(如图B-4),这个我们在第二章我们讨论过。有大量的信息为我们提供,包括代码最近更新日期、模块是否”正式发布“,这 表明这个版本是稳定版、每个发布后面有一个”发布说明“连接,告诉你修补了哪些bug,添加了哪些功能,底下还有一个连接”view all releases“,用来查看所有的发布版本——甚至那些老旧的、过期的。

      图B-4:一个典型模块的发布列表

      这个发布列表,截取于2008年9月7日,足以表明是个健康的项目。这个Date 模块对Drupal 5 和Drupal 6 都有稳定版本发布(尽管Drupal 6 版本还只是个候选版本,这表明这个版本已经接近完工并准备测试)。研发版中的日期表明这个模块的更新非常近,这意味着模块的维护者在积极的开发着这个项 目。点”View all releases“显示出模块可以回溯到Drupal 4.7,甚至还有Drupal 7的开发版,尽管Drupal 7到目前还在积极的开发之中还没有封闭发布。

      反过来说,在别的地方,要注意下列几处传出的信号:

  • 如果这里只有开发说明而没有正式版本发布,或者根本就没有发布列表,这就表明这个模块还处于开发过程中,还不足以在正式的网站中使用。
  • 如果最新版本的更新日期是在数月之前,这可能意味着维护者在这个模块上的兴趣和动力不足。它也可能表明你找到了一个近乎完美的模块,没有bug没有需要新增的功能,但这种情况很少。

      最后,在项目页面的底部是可选链接,包括项目外部主页、文档链接、演示站点等资源。添加这些链接很能说明这个维护者对这个模块充满激情,希望把它做的尽可能高质量。

      还有,不要忘了项目的使用统计,它对评估一个模块相对于其他模块的受欢迎程度上有着不可估量的价值。

      问题队列

      Drupal社区中的代码开发状态显示在项目的”问题队列“中,如 http://drupal.org/project/issues/3060 ,见图B-5。问题队列记录着这个项目的bug、功能请求、支持请求以及模块维护者使用于他们的公共工作空间的任务。社区中的每一个人都可以访问项目的问题记录,每一个人也都可以提供解决方案。

      图B-5:Drupal内核的问题队列,一个健康项目的例子

      你可以通过多种方式查看到项目的问题队列。最常用的是从项目页开始。你滚动屏幕到项目页的底部,你会支持、功能等各种连接。在这些链接中,最方便的一个是位于支持区域下面的”View open issues“链接。你也可以访问所有项目的问题队列主表 http://drupal.org/project/issues ,然后从项目下拉列表中选择你感兴趣的项目。

      因为问题队列能够敞开一个窗口让你看到某个项目在开发中存在的问题,所以能够进来读问题列表是在评估一个项目是否健康时的无价技巧。

      比如说,大多数人都推理认为一个有着大量问题的项目肯定是一个质量不高的项目,而只有少量问题的就是高质量项目。然而情况不总是这样,值得指出的是 Drupal自己目前就有5000多个开放问题,但是它的代码是高质量的。更为常见的是,问题队列中的问题数仅仅表明项目的受欢迎度,不一定就是质量不 高。

      而且,那些专门写就的详细问题反而是非常重要的。在图B-5中,我们看到不少表明项目健康的东西。有两个问题被标志为在过去24小时内修复了,有两个问题 已经派送给了开发者,这通常表明™将找到问题的解决方案。大部分的问题都被这种或那种方式给做出了代码标注:有两个准备进行更大范围的社区评估,有一个需 要更多工作,但最起码都开始想办法了。这就表明在这个项目上有一个健康的开发者群体。只有两个标志位”active“,还等着修复。

      图B-6则展示了另外一种情形。这个是Flexinode模块的问题列队,Flexinode是目前的CCK模块的前身。乍一看,与前面的Drupal问 题队列相似。无疑,这里多了几个”active“问题,并且当前没有一个被标上得到修复。但是还有几个问题附上了代码,甚至有一些被指派给了开发者。那, 有什么问题吗?

      问题出在”Last updated“一栏,那里说明这个问题最近什么时候有回复。在Drupal项目问题队列中,见图B-5,回复一般都是一到两个小时之内,最近的还有8分 钟之前的!这就意味着,几乎是每一个钟头,来自全世界的人在不断的奉献于这个项目。然而,Flexinode最近一个问题的反应是在18周以前,而对大多 数问题,都在一年以前。这是一个很明确的信号表明维护者已经失去了兴趣,把这个模块遗弃了。

      大多数模块都介于这两个极端之间,有些问题没人照看了,有些则更活跃些。现场抽查一两个问题,点开看看谁在真正的反应。是开发者,特别看看他发现什么了他何时来照看过这个问题,还是另外一些用户在那里叫唤,”是的,我也有同样的问题。怎么办?“

      图B-6:Flexinode的问题队列,一个遭到遗弃的项目

      代码

      所有Drupal的贡献模块都存储在一个中央代码库中 http://cvs
.drupal.org/viewvc.py/drupal/contributions/modules ,在下载之前,你可以在那里浏览模块的代码。很显然,有些PHP知识背景的人能够更有收获,但是一般来说谁都能发现一些基本的最佳做法。找那些书写清晰, 做好归档,按照标准代码样式进行组织的代码。不符合这个标准的代码更难维护,也更难以找到其他的开发者来帮助你。

代码背后的人

      Drupal的每一个贡献者都是独立的个体,他们有着自己的兴趣、专长、背景和动机。有些贡献者是吃喝拉撒睡满脑子都是代码的高级程序员,有些是 Drupal开发咨询公司的人,他们领着薪水维护模块,有些是些业余爱好者,他们自己运行着一个粉丝俱乐部网站,维护着一到两个在他们自己的社区中承担主 干作用的特殊模块。还有些纯粹是为助人为乐,因为他们这样感觉很好很乐意去做。也有一些人为满足自己的需要自己开发些代码,然后又把它抛弃,然后继续向更 大更绿色的方向前进。当然,还有一些人,或者部分或者全部或者完全不属于以上种种。

      故此,评估模块很重要的一块是要去多多了解代码背后的人。Drupal.org中有几个有用的工具可以提供帮助。

      维护者活跃度

      第一步来看位于项目页面(如 http://drupal.org/project/developers/3060 )底部的”Developers“链接,它将你带之一个表格,如图B-7,显示正在维护(或者曾经维护过)该项目的开发者。这里的数据显示是任何有权者发布的评论,或者对项目作出的代码变化。

      从这些信息中,你大致能看出在这个项目中谁工作最久,每一个贡献者活跃度如何,每一个人对项目的代码经验多与少。一个好的健康的项目会有很多近期的评论, 会有很多的贡献者(如果其原始作者不在的话)。如果这个名单很小,而且最近的评论发生在数月之前,特别是如果项目问题队列中出现了警告标识,那就可能需要 考虑寻找别的解决办法了,或者是给维护者付费重新激起他们的兴趣以作出你想要的修改。

 

      图B-7:Drupal项目的开发者,附带评论活动

      用户资料

      在Drupal.org中,任何时候你看到的一个用户名,你都可以点击它来查看该用户的资料(如,  http://drupal.org/user/35821 ),见图B-8。尽管这里的信息与其他网站的信息基本一样,像姓名、性别、兴趣爱好、国家等等,还有几个元素对那些想更深入了解代码之后的人别有用处。

      用户资料首先简要介绍该用户贡献给Drupal的东西。通常是提提他们编写的模块,以及他们加入的队伍机构,如文档小组或网站管理员小组,或者其他的一些数据。这些信息可以探查到该用户的动机和背景。

      图B-8:Drupal.org中的用户资料页面

      接着往下是一系列的“标识”,表明该用户是否参与了归档,是否提供用户支持,是否进行过模块开发,以及用户参加过哪些Drupal会议。打开每一个标识都 链接到一个页面显示其他同样选择了该标识的人。一个用户这样的标识越多,一般表明他比那些一个也没有的人与这个Drupal大社区的联系更紧密。顶部的几 个选项卡也很有用处。“Track”选项卡显示用户在Drupal.org上发布或回复的全部帖子。这能帮助判断他在Drupal社区的总体参与程度以及 活跃度,以及他对其他用户的总体态度。

      “Contact”选项卡,如果他启用了的话,能够通过邮件与该用户直接联络。

 尽管这可能引诱你使用这个联络表单直接向维护者问些支持问题或者报告他们模块的bug,但这种方式是不好的。一个维护者给你回信的时间,就是他用来进一步开发模块和帮助其他与你有着同样问题的用户的时间。

    通常请使用模块的问题队列来报告问题,因为这样其他使用该模块的用户都能做出回应,而不仅仅是维护者,而且结果能供其他人搜索。一般来说,使用维护者的联络表单主要用于私人话题,如雇佣邀请。

     联络表单也可以用来给那些完成的好的工作传达慷慨的“感谢”!大多数模块开发者总是听到来自用户的问题,所以这样可以使得维护者有一天能收到来自免费使用其代码的用户说点好话。

 

 

      用户资料页面再往下,就可以看到用户在Drupal.org注册了多长时间,以及用户在这期间所有承担过代码的项目,如图B-9。有些维护者有一到两个项 目,有的则有50多个以上。项目多的表明他不曾离开片刻并且明白自己所做的事情。而从另一方面来说,正因为他不曾离开片刻,他则可能涉猎过广,同时做的事 情太多,以至于他的所有模块都处于煎熬之中。

      图B-9:用户资料底部显示Drupal开发者承担的项目

参与进来

      至此为止,要想最先掌握哪些模块最有用,哪些模块能满足你的需要的最好的方法是亲身参与进来并提供力所能及的帮助。Drupal社区为每一个人提供了各种方法来回报这个社区,无论你是昨天刚刚首次安装Drupal的新手,还是代码界的老鸟,都可以。

      http://drupal.org/getting-involved 中的“Getting Involved”手册是寻找参与Drupal项目方法的起点。里面有几种方式适合非程序员:

      问题队列清理 Issue queue cleanup

          在你鉴定模块的时候,你或多或少很自然的要进入到问题队列中来。为什么不额外多花几分钟看看哪里你能够清理一下呢?如果有两个或更多的同类问题,不妨将较 高编号的问题标志为“重复问题”;看看一个问题报告是否还有效,如果没有了,将它标为“已修复”;如果你看到一个你能回答的支持请求,请回复它。其他人花 在此类活动上的每一分钟都会增加模块维护者在提升模块上的时间,所以这一类的贡献大受维护者欢迎。

      帮着做些用户支持

         如果你都会安装Drupal了,恭喜你,你现在正儿八经能够帮助其他人了。来到Drupal论坛,或 irc.freenode.net 上的#Drupal-support区来看看有没有其他用户需要你回答的问题。在这个过程中,你保证能学到不少东西。

      写出问题

        如果你碰到模块的问题,或者你觉得有个东西非常的酷,把它写成一个详细的bug 报告或者按照 http://drupal.org/node/317 提供的指南在模块问题队列中写成功能请求。在写下你自己的之前,记得先从问题队列顶部的“Advanced search”中找找看有没有人已经写了。

      文档整理

         你是否曾为找某个东西因为缺少文档或者文档有错误而花了半个小时?那就把它改正过来,避免下一个人遭遇你同样的命运。你也可以加入文档小组 http://drupal.org/contribute/documentation/join 在drupal的文档整理方面与其他人协同合作。
 

      捐款

没有时间投入进来,但手头有几个零钱?你可以捐赠给Drupal协会。Drupal协会是一个法律实体,负责提供服务器基础设施、组织Drupal会议,并在 http://association.drupal.org/donate 中为Drupal项目募资。很多开发者个人也很乐意接受捐助。如果某人的某模块为你省下了些钱,不妨拿出一点回报给他们表示“谢谢”。

      为什么要参与进来?除了“温暖的感觉”之外,还有些现实的理由:

  • 作为一般规则,如果你被项目的贡献者所熟悉的话,你的支持请求,你的错误报告,你的功能请求都将得到更多的注意。
  • 作为社区活跃的一员,还能建立关系,这有利于找到客户或雇主。
  • 通过参与进来,将你自己置身于讨论之中以及那些不如此而不会碰面的一个个人中,可以大大缩短你学习Drupal的时间。
  • 你还能帮助塑造模块甚至是Drupal自身的确切方向,以满足你的项目需求。
  • 这真是太有趣了。你将碰见来自世界各地的人,并可以跟着最优秀最聪明的头脑来学习网站设计。

      期待在Drupal.org中看到你。

小结

      本章中讲到的这些技巧和方法可以使你在本书过时很长时间之后助你识别那些“必备”的模块。通过评估项目维护者的活跃度、代码的归档及易读性好坏、项目用户 群的大小、等等事情可以使你在模块选择上作出聪明的、更有前途的选择。而直接参与到社区之中,你可以碰到很多决定Drupal方向和命运的优秀人物,然后 你自己也将变为其中的一员。

参考资料

      下列是本附录参考的一些资料:

 

Tags:

Comments

Post new comment

The content of this field is kept private and will not be shown publicly.
By submitting this form, you accept the Mollom privacy policy.