月度归档:2012年06月

给教师的 Moodle 2 功能向导

两年前曾经有一个很火的《Moodle Tool Guide for Teachers》,被翻译为 12 种语言,可以很方便地帮助教师根据想做的事情找到最适合的工具。最近 Gavin Henrick 针对 Moodle 2 改编了它,原文在此。这么好的东西不译成中文实在太可惜了,所以,请下载,并欢迎纠错!

下面是第一页预览图(原文件有两页)

新安装 Moodle 应该选择哪个版本

Moodle 从 2.0 开始,采用了新的开发过程。从用户角度看,最大的变化是版本发布的频度提升了。现在,每年6月和12月左右会各发布一个新的 2.x 版;每 1-2 个月会为最近的 3 个 2.x 分支各自发布新的稳定版,也就是 2.x.x 版;每星期还会为每个分支发布一个 2.x.x+ 版,包含最新的更新。比如现在(2012/6/12)在官方下载页面就可以看到 2.0.9、2.0.9+、2.1.6、2.1.6+、2.2.3 和 2.2.3+ 六个版本(1.9.x 系特例,本文不讨论),而且它们都在被继续维护。其中最新的 2.n.x 分支叫做“Current stable”,次新的 2.n-1.x 分支叫做“Other supported stable”,最旧的但还维护的 2.n-2.x 分支叫做“Security fixes only”。为方便起见,后文就称它们为 C、C+、O、O+、S 和 S+ 版。更老的版本官方已停止支持,不建议使用,就不涉及了。

多数新安装 Moodle 的用户都会自然地选择版本号最高的 C+ 版。如果只是试试、玩玩,或者只提供短期、小用户量服务,那么这个选择无可厚非。但如果面向的是长期、大用户量服务,我建议您一定认真做一下评估。要知道,以前 Moodle 会在 C+ 后面标注“新安装的最佳版本”,但最近已经悄然删除了此话。原因就脑补吧。

下面我结合我的经验,先谈谈不同版本的特点,然后再谈谈如何选择最适合的初装版本,最后谈维护过程中如何决定是否升级。

版本间比较

从功能性角度看,显然 C+ >= C > O+ >= O > S+ = S。其中 X+ 和 X 之前的差异随着时间的推移逐渐加大,但最大时也不会有多少喜人的改变,待到小版本号提升,就又回到同一起跑线。例外是 S+ 和 S 之间只有安全相关的更新,所以功能上没有区别。它们之间的功能差异,可以看 Release notes

从安全性角度看,排序是 S+ > S > O+ > O > C+ > C。一般来说,低版本有的漏洞,高版本往往也有,一旦发现就会一起修复。而高版本新增功能引入的漏洞,在低版本未必存在。所以大方向上看,版本越低,安全性就越好。但 X+ 版因为包含最新的安全修复补丁,而且新增功能也不激进,所以通常比 X 版更安全。

从稳定性角度看,排序是 S+ > S > O > O+ > C > C+。S 版虽然声称只修补安全漏洞,但据我观察,很严重的 bug 也会被修复,所以 S+ > S。O+ 每周都会更新几十个补丁,其中大多数都是修 bug。C+ 版初期每周会有近百甚至过百的补丁,后期和 O+ 基本持平。从表面看,有这么多补丁,稳定性应该是提升的。理论上确实如此,但实际感受却不一样。

每个 bug 的修复,可能还会引入新的 bug。bug 修复得多,虽然整体上让软件更加稳定,但某些局部可能反倒更糟糕。比如说,某软件有十个功能,我只用其中两个,那么其余功能的 bug 与我无关,但如果恰好这两个功能引入了新的大 bug,会严重让我感到更不稳定。最近大半年,乐学网一直在用 2.1 分支。从它是 C+ 状态时开始,现在已降到 O+。一开始,我每周都是第一时间更新 + 版,但没多久就变保守了,总要等上几天,而且养成了 review 与常用功能相关的补丁的习惯。坦率地说,+版的补丁多数和乐学网关系不大,有关的里面又大多数没有问题,所以我仍坚持每周更新。但只要出现一个与我有关的小问题,就会狠狠折腾我一下。出新问题的频度有多大呢?印象中 Moodle 2.1 过去一年至少有三次 emergency release,就是刚发布新版本,24小时内又发布一个,修复严重 bug。这是 bug 严重到 Moodle HQ 很重视才会发生的情况。有些 bug 重视度不够,就修补得不及时了。比如我发现的这个 bug,把条件表达式里的“or”写成了“of”,很是吓人。在 release 后 4 小时我就提交了报告,但要一周后才修复。

所以,我认为在稳定性方面,从实际使用的体验看,O > O+,C > C+,除非 O 或 C 版中的某个 bug 会非常严重地影响使用。不过,对非 + 版也别太信任。比如我报告并全程参与的这个 bug,由一次 O 和 C 版的发行引入,影响面很广,优先级很高,但下一次发行也没解决。现在三个月过去了,仍然 open(倒不是开发者不上心,而是确实涉及面太广,所以非常慎重,reopen了若干次)。要不是有自制的山寨小补丁,还真顶不住。

所以,综合来看,S+ 版是最值得信赖的。

选择初装版本

初装的最佳版本就是当前的 S+ 版,原因有二:

  1. 最稳定、安全,如前述。所以日常维护的工作量最小,基本可以无负担每周更新。
  2. 从低版本升级到高版本如行云流水,数据都在;反之,几乎不可能。所以如果 S+ 不够用,随时可以升级。可一旦踏入高版本,发现不合适,想降级,可真没后悔药

当然,如果想得明白,考虑得周全,那么也可以直接装 O 或 C 版。先解释一下为什么不推荐 O+ 和 C+。首先是稳定性因素,当然选更稳定的(但如果某不能忍 bug 在+版修复了,可以升到 + 版,但后续还是尽量稳定到非 + 版)。其次看安全性。虽然 + 版更安全,但 Moodle 很负责,会先用 email 通知管理员一定要升级到最新的非 + 版,两周后才会公开安全漏洞细节,所以用非 + 版在大多情况下都是安全的。而且,漏洞这词听起来可怕,但实际上其中多数就算被黑客利用,也干不了太大坏事。如果有很严重漏洞,Moodle 会打破常规发行规律,马上更新非 + 版的。

好,接下来说选择 O 或 C 版的依据。

其实主要依据就一条:功能。这里主要考虑三个问题:

  1. 高版本是否有一定需要的新功能。比如 Moodle 2.2 有针对手机和平板设计的主题,如果很需要这个,就必须上,哪怕它还是 C 的状态(题外话,有 2.0/2.1 版可用的第三方移动主题,是 2.2 官方移动主题的前身。虽有问题,但凑合凑合也勉强能用)。
  2. 是否要做大量的定制开发。C、O 和 S 版之间的内部差异不能算很小,如果在它们之间升级,所有定制开发的东西都得或多或少地更新,搞不好还得重写。重新定制的工作量和日常维护的工作量相比较,当定制量比较大时,可以考虑上高版本,避免重复开发。
  3. 高版本的界面是否有巨大变化。这主要是从网站用户培训的角度考虑。Moodle 确实不是一个很容易掌握的东西。如果教师用户费劲巴力地刚勉强学会某版本,下学期一升级,又要重学,那可苦了他们了。本着“苦了我一个,幸福千万人”的精神,管理员得担起担子,优先选择高版本,减少用户的麻烦。

还有一个选择依据是安装的时间。比如在 5 月末安装,按 Moodle 路线图,很快有新的大版本发行,当前的 C 会降为 O,O 降为 S,而 S 被抛弃,不再维护。那么所有的选择就都可以向上提一格了。

升级规划

按照 Moodle 的发行周期,我们每半年就要做一次大升级。其间,如果使用 + 版,每周都要小升一次;非 + 版,每 1-2 个月小升一次。小升没得说,必升。大升得看当前状态。假如用的是不再维护的版本,得马上升;假如用的是仍在维护的版本,就得理智决定是否升级。理智的依据与新安装的选择依据倒是差不太多。

拿乐学网为例。1.9 版用了两年有余,仍可再坚持。但在 2.0 还是 O 状态的时候就冒进,纯因为 1.9 和 2.0 界面变化巨大,而预计很快就会有新用户井喷,所以选择了后天下之乐而乐。随后很快又升到 C 状态的 2.1,是为了少做一次定制开发。这些虽然让我整一年的维护都在提心吊胆中度过,隔不太久就要救一次火,但把所有人的工作量加到一起看,还是划算的。未来,我一定要等到 2.2 成为 S 时才做下一次大升级,虽然那些新功能都挺诱人的。

最后说一句经验之谈:一定要用 git 下载和管理源代码。初次接触 git 可能会遇到一些痛苦,但与日后长久的高效相比,这些痛苦不值一提。用任何其它方式下载代码,都是让痛苦成为日后的顽疾。