开发人员中心
Outdated translations are marked like this.
MediaWiki开发说明,包括关键文件,资源和开发工具。它是为使用过MediaWiki的熟练LAMP(软件包) 程序员写的。
- 如果您想使用维基媒体web API,请访问API:Web APIs hub (正在制作)。
- 如果您希望贡献开发维基媒体软件,请参阅新开发者 。
- 要查找开发MediaWiki及其扩展的入门指导,请阅读成为 MediaWiki 的贡献者 。
- 如果您想与其他第三方MediaWiki用户合作,MediaWiki利益相關者組 (MWStake)是MediaWiki用户组,由MediaWiki开发人员、系统管理、用户、顾问和托管组成供应商。
概要
MediaWiki是维基百科與其姊妹项目,还有世界各地数以千计的维基网站使用的软件。
MediaWiki以PHP编程语言书写[1]。 它使用jQuery作为客户端JavaScript库。
MediaWiki主要为LAMP平台开发[2],并可以在大多数操作系统上运行。 MediaWiki首要使用MySQL与MariaDB数据库服务器。[3]
开发以开源形式进行[4], 儘管志願者社區開發人員也發揮了很大的作用,但它在很大程度上是在線協調的,並得到了Wikimedia基金會的支持。
主要开发者列表为wikitech-l,主要的开发者 IRC 频道为#mediawiki connect和$3。
- 源代码 使用Git版本控制系统进行管理。[5]
- 大多数项目代码审查在Gerrit 执行。参考这个入门以配置Git和Gerrit来提交补丁。
- 漏洞报告与任务是在Phabricator 中管理的。
- MediaWiki中的开发者扩展或接口(而不修改核心代码)有几种便捷的扩展方式,包括 API、钩子系统和皮肤——请参阅本页的Extending MediaWiki 段落了解概要。
主要文档
编码、开发和规范
- 开发方针 – 主要开发策略简介。
- 代码规范——学习MediaWiki中代码规范。
- Security for developers – 了解如何保持MediaWiki系统安全。
- Manual:Pre-commit checklist – 在提交代码前,请仔细根据核查表检查相关事项。
- 代码审查手册——MediaWiki代码审查手册,供审查人员使用。
- Technical Decision Making Process – read about the process to decide on making larger technical changes.
调试和测试
- 怎样调试——MediaWiki调试入门。
- Manual:Errors and symptoms – MediaWiki常见错误及解决办法参考。
- 浏览器测试 – 学习如何使用Selenium为MediaWiki写UI测试用例。
- 单元测试——学习用PHPUnit为MediaWiki开发单元测试用例。
- API集成测试 – 学习使用Mocha为MediaWiki编写API集成测试。
- Security for developers – 了解如何写安全代码。
架构
- MediaWiki architecture – an introduction to MediaWiki's architecture.
- Manual:Code – MediaWiki关键源码介绍。
- 手册:数据库布局 – 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实例的数据和元数据
- 手册:钩子 – 系统的执行挂钩。
- 解析器函数 – 添加自定义的指令,例如:
{{#if:...|...|...}}
。 - 外觀 – 自定义 MediaWiki 的外观。
- 手册:特殊页面 – 添加自定义的特殊页面。
- 標籤擴充功能 – 添加自定义的标签,例如:
<newtag>...</newtag>
。 - Extending wiki markup – 添加解析器钩子来修改维基文本的内容。
扩展开发人员的帮助文档
- 手册:开发扩展 – 扩展开发指南。
- Extensions FAQ
- 参见分類:擴充功能 以寻找现有扩展。
- Extension:BoilerPlate - a blank extension template.
皮肤开发人员的帮助文档
- Manual:How to make a MediaWiki skin——MediaWiki 皮肤创建教程。
- Manual:Skin configuration——在维基中皮肤配置指南。
库代码复用的帮助
- Manual:Developing libraries – 打包第三方库以用于MediaWiki上的指引
使用第三方维基站点
- Enterprise hub — 企业式维基
- 学术中心 — 学术式维基
备注
- ↑ 不是所有MediaWiki代码都由PHP书写。一些支持工具是用其他语言书写的,包括批处理文件、shell脚本、makefiles和Python。
- ↑ MediaWiki可以运行在大多数支持PHP的平台上,然而在非LAMP平台上,由于缺少某些实用工具或操作系统功能,可能会限制MediaWiki的功能或性能。
- ↑ MediaWiki此外支持DBMS,包括PostgreSQL以及SQLite等。
- ↑ 开发者是志愿者和多个组织的带薪职员(或承包商)的组合。有關使用MediaWiki代碼的人員的完整列表,請閱讀开发者 文章。
- ↑ 在phab:diffusion/浏览源代码和代码存储库的修订,或使用Gerrit下载源代码至您的系统。