成为 MediaWiki 的贡献者

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page How to become a MediaWiki hacker and the translation is 87% complete.
Other languages:
Bahasa Indonesia • ‎Deutsch • ‎English • ‎Nederlands • ‎Tiếng Việt • ‎Türkçe • ‎dansk • ‎español • ‎français • ‎interlingua • ‎italiano • ‎português • ‎português do Brasil • ‎română • ‎čeština • ‎Ελληνικά • ‎български • ‎русский • ‎українська • ‎বাংলা • ‎ไทย • ‎中文 • ‎日本語 • ‎한국어

这篇文章用以帮助开发者学习开发MediaWik 内核和MediaWiki扩展的基础技能。 请注意,多数情况下,你并不想去随便删改MediaWiki的内核,除非你真的知道你在干什么!

入门Wikimedia开发的主要方式就是给那些有新手指导的Wikimedia项目做贡献。另一种毋须指导的替代方案则是去debug

如果你是一个有经验的开发者,已经熟悉了使用MediaWiki,请访问开发人员中心

对于其他的方式涉足维基媒体社区,参见如何貢獻

概覽

MediaWiki是维基百科,與其姐妹项目,还有世界各地数以千计的维基网站使用的软件。

MediaWiki由PHP语言编写。[1] 它使用jQuery作为JavaScript的客户端库。

MediaWiki首先是为LAMP平台编写[2] ,并且在多数操作系统中是可用的。 MediaWiki首要使用MySQL与MariaDB数据库服务器.[3]

MediaWiki在开源环境下开发[4]。代码的调整大多在网上完成,并受到维基媒体基金会的支持,不过志愿者为之付出甚多。

本页可以帮助您成为MediaWiki的贡献者。 此入門教學,而是引導您至不同任何您覺得必要學習的內容。

配置您的开发环境

大多数项目使用Git和Gerrit。按照Gerrit指南来创建您的开发者帐号。 然後你可以去下載我們的代碼,做出改變,測試他們,然後提交補丁。 有两种方法配置您的开发环境:使用预配置的虚拟机安装(Vagrant或Docker),或手动配置途径。

虛擬機器與Vargant

  • 安裝Vagrant——這些步驟會安裝MediaWiki伺服器於所有符合需求的Linux虛擬機器(可用於Linux、Windows,或Mac hosts)

Docker开发环境

手动安装

  • 安裝需求 — 檢查硬體需求後,請安裝LAMP、MAMP或WAMP伺服器(Linux、Mac或Windows、plus Apache、MySQL/MariaDB與PHP)。
  • 从Git下载 — 於Git下載最新版的原始碼。
  • 手册:安装指南 — 繼續安裝與初始化設定。
  • 架設不同的偵錯模式於您的環境,以提早顯示警告與錯誤。

您不必下載維基百科數據庫資料即可開發MediaWiki功能。 實際上,大部分情況下使用一個幾乎為空的數據庫,裡面只有一些特定的測試頁,會更簡單。 然而,如果由於某種原因你仍想複製維基百科,你可以下載資料

推荐阅读

当一个开发者修复MediaWiki的漏洞时,你可以观察他,包括他如何开展调查,执行git commit命令,如何使漏洞被再查以及修复,如何关闭Bugzilla表单或者现在取代Bugzilla的Phabricator

回饋、問題與支援

  • 您应该首先自己做一些基础研究:查看代码、尝试了解它应该做什么、阅读相关文档、尝试找到您需要进行更改的可能位置以便修复bug。
  • 如果您有与您想要处理的特定任务无关的一般性问题,请使用维基媒体开发者支持、IRC或邮件列表等通用渠道,但不要使用特定任务。
  • 如果您对错误本身有特定问题,请在相应的错误报告中进行评论(通常是Phabricator 中的任务)。 “你能给我更多信息来解决这个错误吗?” 不是一个很好的问题:问题越具体,人们就越有可能快速回答。 如果您根本不知道如何修复错误,也许这个错误(还)不适合您,请考虑先找一个更简单的错误。
  • 在询问时,解释一下你已尝试过并已经发现的内容,以便其他人可以在适当的级别提供帮助。 具体例如,复制并粘贴您的命令及其输出结果(如果不是太长),而不是用您自己的话来复述。 这避免了误解。

不要在我们的社交频道使用私人电子邮件或者发布支持请求。

  • 在寻求意见和建议时要耐心等待。 在IRC上, 有什么问题直接问,无须问有没有人在: 在IRC上的多数问题通常也可以被其他社区成员解决(即使有人不在)。 如果没人回答,请基于漏洞报告与问题相关的维基页面继续提问,不要放弃。
  • 聯繫交流 了解更多。
  • 你也可以在Freenode IRC下#wikimedia-tech channel中的每周技术建议IRC会议上提出任何问题。


告訴別人你正在做这件事

不要问你是否可以完成任务。 在开始处理错误之前,您不需要宣布您的计划,但这将是受欢迎的。 欢迎您将自己设置为任务中的受让人:使用Phabricator中的下拉菜单“添加操作...→分配/声明”。 最近,当您即将为该任务提出补丁时,最好在评论中宣布您正在处理它。 您的宣告可以帮助其他人同时处理错误并且不会重复工作。

另请注意,如果任务已经有一个最新的Gerrit补丁链接,并且在Phabricator中关联了项目“Patch-For-Review”,请选择其他任务来处理以避免重复工作。 If an existing patch in Gerrit has not been merged and has not seen any changes for a long time, you could also pick up that existing patch and improve it, based on the feedback in Gerrit and in the task.

如果您停止处理任务,请将自己移除为任务的受让人,以便其他人知道他们可以处理该任务,并且不希望您仍在使用该任务。

通过早期沟通,您将获得社区成员的更多关注,反馈和帮助。


附录

MediaWiki贡献者在印度班加罗尔办公。

PHP

MediaWiki由PHP编写,所以你需要了解并熟悉PHP才可以熟练使用MediaWiki的核心代码。

學習PHP
  • PHP指导 — 在许多不同语言中都可用。 如果你不会用PHP且也不会用其他对象导向语言,PHP会这些语言中你容易学的。
  • PHP Programming at Wikibooks.
  • PHP topic at Wikiversity.
PHP资源
需要知道的员工
  • MediaWiki中的脚本maintenance/eval.php提供了一个基本的包含MediaWiki对象与分级的PHP编译器。
  • 此外,MediaWiki中的脚本maintenance/shell.php是基于PsySH的maintenance/eval.php的替代,参见Manual:Shell.php.

数据库

许多特性需要对数据库做出一定程度的修改,所以你常常需要熟悉MySQL/MariaDB。

学习MySQL或MariaDB
MySQL/MariaDB资源
要知道的东西
  • 用MySQL/MariaDB測試你的代碼。
    • MediaWiki目前使用MySQLMariaDB作为主数据库后端。 它同样支持其他DBMS,例如PostgreSQLSQLite。 但是,几乎所有开发人员都使用MySQL/MariaDB而不测试其他数据库,因此会定期中断。 因此,建议您在测试补丁时使用MySQL/MariaDB,除非您专门尝试改进对其他数据库的支持。 在后一种情况下,请确保您小心不要破坏MySQL/MariaDB(或编写非常低效的查询),因为MySQL/MariaDB是其他人使用的。

JavaScript和CSS

JavaScript和CSS在前端代码中无处不在。 您不必熟悉使用MediaWiki的JavaScript、jQuery和CSS,但您可能需要,具体取决于您选择的工作方式。

学习JavaScript和CSS
JavaScript和CSS资源

MediaWiki

MediaWiki代码库很大,有些部分很难看,不要被它淹没。 当您第一次开始时,目标是编写功能或修复只触及一小部分代码的错误。

MediaWiki basics and must-reads
MediaWiki资源
  • Manual:Code — A list of important files and links to more detailed information.
  • 手册:钩子 — A list of hooks. If you're trying to find what part of the codebase does something, often a good place to start is by searching for the related hooks.
  • 手册:代码编写约定 — An overview of general coding conventions within the MediaWiki community.
  • 代码文档 (類別參考) — Automatically generated documentation from the code and code comments.
  • 手册:如何调试 — A guide to debugging MediaWiki.
  • Manual:Eval.php — A tool to interact with MediaWiki objects live.

MediaWiki扩展

If you choose to work on MediaWiki extensions code, the following links provide more information.

MediaWiki extensions basics
MediaWiki扩展手册:

參見

  1. 但并不是所有Mediawiki内容都是如此。有些支持性工具由其他语言编写,他们包括批处理文件shell脚本makefilesPython
  2. MediaWiki在多数支持PHP的平台上都能运行,但在非LAMP上,MediaWiki的表现与功能可能会因为特定操作系统属性与特定实用工具的缺失大打折扣。
  3. MediaWiki此外支持DBMS,包括OraclePostgreSQLSQLite以及MSSQL等。
  4. 开发者中既有志愿者,也有如承包商之类各行各业的工薪者。他们的全部姓名被列在了Developers
  5. 可以在https://phabricator.wikimedia.org/diffusion/ 浏览源代码,修改代码库,或者你也可以用Gerrit下载源代码到你的电脑。