开发:概要

来自MoodleDocs
跳转至:导航、​搜索

许多人问Moodle的开发是如何运作的。这个页面会给你一个帮助理解许多其它的开发者文档的工作方式概要。

主要开发者

Martin Dougiamas
Martin是Moodle开发的领导者。通常他推动民主和精英管理体制,但是偶尔需要对事情作出实行的决定。
Moodle HQ
Catalyst
Open University

还有许多其它通过不同方式给Moodle做贡献的人,这些仅仅是目前核心开发的主要团队。

Moodle 版本

Moodle主要版本的发布周期大约6个月或更多分开的,没有确定的时间表。每个主要版本对版本号加0.1。在稳定运行的分支上的次要版本(没有新功能,仅仅调整)可在证明足够的错误调整是正确的任何时间发布。

当前的开发版本基于CVS的主干。

发布周期

通常一个发布周期是这样的:

快速开发
几个月的时间给Moodle的HEAD版本添加代码。同时,所有不影响数据库或者基本核心代码的修改参考最近稳定运行的两三个版本。
Head停止
有些时候Martin Dougiamas宣布新工作停止一段时间来稳定内核。所有数据库和核心的修改都需要Martin的直接许可。所有的开发者集中精力新特色的工作以及在新代码中修正错误。这个阶段要一到两周。
测试阶段
一旦HEAD版本基本稳定了,Martin发布一个测试版,命名为MOODEL_XX_BETA(如 MOODLE_19_BETA)为了得到更全面的测试和由追踪系统的反馈,安装包每日更新到最新版本。继续中止,测试和错误修正。这个阶段持续2到6周。
主要版本
内核通过所有的测试后我们可以发布了。MOODLE_XX_BETA提升为一个新的稳定版本:MOODLE_XX_STABLE。建立安装包,公布版本。

接着再一次开始这个周期。

质量控制

问题追踪是质量控制过程的一个重要部分。它包括问题(缺陷)的发布,新特点和发展的观点。跟私有软件不同的是,Moodle的结果发布和追踪信息对每个人公开。Moodle的问题追踪系统成为Tracker

鼓励所有的Moodle使用者在测试的时候积极参与。任何一个有Tracker用户帐号的人都可以创建,查看,评论,公认和监视错误。

测试者

测试者负责检测开发者所做的修改的正确性。Testers choose which bugs they want to test, according to their area of expertise, and use the QA Assignee field to identify themselves as the tester.

如果这个BUG通过了测试,测试者将bug的状态由“resolved”改为“closed”。如果没有通过测试,或者修正没有完成,测试人员重新开启这个bug。

一个Moodle版本将在所有模块的bug都被关闭的时候才被认为是准备好的。

代码标准

XMLDB

我们所有的数据库计划都由XML文件“install.php”创建,使用文件“upgrade.php”中的database-agnostic命令升级。照这样Moodle的任一版本的任一部分都可以平稳的升级至任一新版本。

XHTML

Moodle所有的输出必须遵循XHTML Strict 1.0,以及所有公共的易达到的指导(如W3C WAG)。

窗体

所有的窗体应尽量使用Moodleforms库。这样有一个标准的可理解的输出,且设计者可以持续设计。

参数

所有的参数都应使用require_param()和optional_param()检查。require_param()和optional_param()会安全的清除使用的输入数据并为你的代码提供默认的值。Moodleforms会自动为你做这些的。

输出

所有文本的输出必须是函数format_text和format_string的输出。这会保证文本会被适当的清除和过滤。

访问

所有的许可检查应使用“Access library”核对当前用户权限。你将会使用的最常用的函数是has_capability(),该函数可高效的核对当前用户是否允许做这个特别的修改。不要在你的代码中检查特殊角色(如 教师/学生),那样会使你的代码多余无用。

其它核心库

另外需要熟悉的主要的库是:

  1. moodlelib.php - 各种有用的函数和常量
  2. datalib.php - 所有与数据库操作的函数
  3. weblib.php - 建立和输出XHTML的所有函数

插件

Moodle有各种不同的插件。插件通常是独立的在一个可以在适当的位置加入到Moodle脚本目录中,包括脚本、图像、格式表和语言文件的一个包。然后管理员值需要访问管理页面就可以安装这些插件。

大多数插件以两种方式中的一种工作。或者是提供一个包含普通的函数和一些用标准名字的脚本的“lib.php”。或者是形成插件的一个子集,重写一部分方法函数以达到目标。(此处翻译不够精确)

学习最好的方法是从核心代码中选择一个跟你想要做的类似的例子并学习它。也有一些模板插件帮你开始。


开发过程

不是所有的Moodle开发都像这样一样,但是应该是这样。:)

主要开发

主要开发是新代码最重要的一块,给Moodle增加新的功能。

确保它是一个好想法

首先,你需要看看路标,同Moodle开发者讨论这个想法,看看是否已经有人在做了,其他人是否认为这个主要想法有意义。必要的话使用讨论区,或者任何可用的办法。如果你有客户,那么你需要跟他们一起设计出真正想要的东西。(事实上它可能不是一个Moodle新的开发)

在Moodle文档中建立一个说明书

在Moodle文档wiki中开始一个新的页面,类似于Development:Grades。你的页面应略述数据表设计,图形用户界面,方法及理由等等。包括尽可能多的细节描述(模仿的屏幕截图)但尽力保持简洁和逻辑性。

寻找采用一致的反馈

Using Moodle 发表一个新话题来吸引注意,并激励一些关于你的开发的讨论。得到的反馈越多越好,尤其是当它包括广泛的多样的用户(开发者,教师,学生等)。

对那些反馈对应在你的页面上作出编辑,或者邀请他们自己这么做。尽量使说明书发展成所有用户都喜欢的。有时候为了不增加另外的设置下寻找“最好”的办法更努力工作是值得的。

在Moodle追踪系统中设立新任务

一旦规格定了下来,是时候开始工作了。在Moodle追踪系统给自己建立一个新任务,给工作中所有不同的部分建立年月日顺序的子任务。不仅可以是你追踪自己到了那一步,也允许大家看你开发并在他们能帮忙的地方提供帮助。如果是不同的人负责不同的部分,可以将子任务分配给不同的人。一旦你熟悉了它,将会非常方便。

使用 CVS 并把提交链接给追踪系统

可能的话,在开放代码库中开发代码(更适合Moodle的CVS)。如果你需要CVS来开发的话,联系support@moodle.com(描述清楚想要的)。

在论坛和追踪系统中重要事件的评论

如果你发现了一个重要转折点,或者想让测试人员做点什么,那么大方的在“Using moodle”相应的论坛里面发布出来。吸引越多的人关注,你的代码会变的越好,相信我。

对缺陷报告的回应

当然你需要听听用户的意见(很多用户:-))。鼓励人们发现并调整缺陷。如果需要在缺陷追踪系统中建立一个工程分类的帮助联系support@moodle.com。这将会保证你所有的缺陷易于寻找和跟踪。

次要开发

在追踪系统中创建一个新问题

打补丁

发展补丁

如何成为一个Moodle开发者?