开发者中心
這是一個高级的MediaWiki开发的概述,包括关键文件的連結、资源、和MediaWiki开发者的可用工具。它是为已使用过MediaWiki的熟练LAMP 程序员写的。
- 如果您想「使用」维基媒体web API,请访问the Developer Portal。
- 如果您希望贡献开发维基媒体软件,请参阅新开发者 。
- 要查找开发MediaWiki及其扩展功能的入门指导,请阅读如何成为MediaWiki开发者 。
- 如果您想与其他第三方MediaWiki用户合作,MediaWiki利害關係者群組 (MWStake)是MediaWiki用户组,由MediaWiki开发人员、系统管理員、用户、顾问和托管供应商共同組成。
概要
MediaWiki是维基百科與其姊妹项目,还有世界各地数以千计的维基网站使用的软件。
MediaWiki以PHP编程语言书写[1]。 它使用jQuery作为客户端JavaScript库。
MediaWiki主要为LAMP平台开发[2],并可以在大多数操作系统上运行。 MediaWiki首要使用MySQL与MariaDB数据库服务器。[3]
开发以开源形式进行[4], 儘管志願者社區開發人員也發揮了很大的作用,但它在很大程度上是在線協調的,並得到了Wikimedia基金會的支持。
- 开发讨论可以在各种邮件列表和IRC 频道中。 主要开发者列表为wikitech-l,主要的开发者 IRC 频道为#mediawiki 連線。
- 源代码 使用Git版本控制系统进行管理。[5]
- 大多数项目代码审查在Gerrit 执行。参考这个入门以配置Git和Gerrit来提交补丁。
- 漏洞报告与任务是在Phabricator 中管理的。
- MediaWiki中的开发者扩展或接口(而不修改核心代码)有几种便捷的扩展方式,包括 API、钩子系统和皮肤——请参阅本页的Extending MediaWiki 段落了解概要。
主要文档
编码、开发和规范
- 开发方针 – 主要开发策略简介。
- 代码规范——学习MediaWiki中代码规范。
- Security for developers – 了解如何保持MediaWiki系统安全。
- Manual:Pre-commit checklist – 在提交代码前,请仔细根据核查表检查相关事项。
- 代码审查手册——MediaWiki代码审查手册,供审查人员使用。
- Technical Decision Making Process – 技术决策流程,在进行重大技术性更改时可以参考。
调试和测试
- 怎样调试——MediaWiki调试入门。
- Manual:Errors and symptoms – MediaWiki常见错误及解决办法参考。
- 浏览器测试 – 学习如何使用Selenium为MediaWiki写UI测试用例。
- 单元测试——学习用PHPUnit为MediaWiki开发单元测试用例。
- API集成测试 – 学习使用Mocha为MediaWiki编写API集成测试。
- Security for developers – 了解如何写安全代码。
架构
- MediaWiki架构 – MediaWiki架构介绍。
- 手册:代码结构 – MediaWiki关键源码介绍。
- Manual:数据库布局 – MediaWiki数据库设计。
- 手册:全域对象变量 – 部分全局变量说明。
- 本地化 – MediaWiki本地化系统设计说明。
- 该wiki上的手册名字空间——开发者文档。
- MediaWiki类参考手册——从MediaWiki源码生成的技术文档。 (注意:类参考手册很大,加载会比较慢。)
子系统
- API——MediaWiki的API对包含在MediaWiki数据库中的数据,提供了直接、高级别的访问。
- 内容处理器 – MediaWiki在支持页面內容的自定义型態的框架。
- 数据库访问 – 在MediaWiki中使用数据库的综述,包括一個数据库抽象层的简明指南。
- 手册:作业队列 – MediaWiki對长时间任务异步运行的框架。
- Messages API – MediaWiki在通过PHP或JavaScript提供本地化程序消息的框架。
扩展MediaWiki
MediaWiki已設計為允許修改但无须改动核心代码。这也使得用户可以很方便地升级MediaWiki而无须手动把自己的修改重新加入到舊的擴展功能的代码中。有六个主要的擴展點可以让开发人员改變或擴大MediaWiki所能做的事。这些扩展点分别是:
- API—通过其web API,访问MediaWiki实例的数据和元数据
- Hooks – 每次一個既定的事件發生時,會去做某些事。
- 解析器函数 – 添加自定义的指令,例如:
{{#if:...|...|...}}
。 - 皮肤 – 改變MediaWiki的外观和感覺。
- 特殊页面 – 添加一個新的特殊页面。
- 标签扩展 – 添加一個新的标签,例如:
<newtag>...</newtag>
。 - Extending wiki markup – 添加一個解析器钩子来修改维基文本的内容。
扩展功能的开发人员的帮助文档
- Manual:开发扩展 – 扩展功能的开发指南。
- Extensions FAQ
- 参见Category:扩展 现有扩展功能的列表。
- Extension:BoilerPlate - 一個空的扩展功能的模板。
皮肤的开发人员的帮助文档
- 手册:如何制作MediaWiki皮肤 – MediaWiki皮肤的创建教程。
- Manual:配置皮肤 – wiki的皮肤配置的指南。
函式庫代码重複利用的帮助文档
- Manual:Developing libraries – 打包第三方函式庫以用于MediaWiki上的指引
备注
- ↑ 不是所有MediaWiki代码都由PHP书写。一些支持工具是用其他语言书写的,包括批处理文件、shell脚本、makefiles和Python。
- ↑ MediaWiki可以运行在大多数支持PHP的平台上,然而在非LAMP平台上,由于缺少某些实用工具或操作系统功能,可能会限制MediaWiki的功能或性能。
- ↑ MediaWiki此外支持DBMS,包括PostgreSQL以及SQLite等。
- ↑ 开发者是志愿者和多个组织的带薪职员(或承包商)的组合。有關使用MediaWiki代碼的人員的完整列表,請閱讀开发人员 文章。
- ↑ 在Gerrit浏览源代码和代码存储库的修订,或使用Gerrit 下载源代码至您的系统。