不要对MediaWiki核心做出黑客行为

This page is a translated version of the page Do not hack MediaWiki core and the translation is 100% complete.

虽然“骇入MediaWiki核心”通常是一个在其他MediaWiki支持论坛上提出的解决方案,但它并不是一个理想的解决方案。通常,它会给您带来跟多的问题而不是解决问题,并且只会使将来的升级更加难以安装。

在本文中的“核心”指包含属于原始MediaWiki安装的所有文件,也就是说除了LocalSettings.php和docker-compose.override.yml之外的所有文件、“extensions”或“skins”文件夹中的文件以及其他您在安装过程中添加的其他文件夹。

为什么您不应该修改核心文件

无论修改核心文件是多么容易,能让MediaWiki做你想做的事,请抵制诱惑

  • 这样做会使网站更新(如安全性和错误修复)变得复杂,困难或几乎不可能。
  • 您将会给那些其他网站维护人员带来困难。
  • 您可能会使您的网站容易受到攻击。
  • 一旦您修改了您的核心文件,其他开发人员不太倾向于帮助您 - 如果没有其他解释,他们将很难了解您已经做了什么改动。

MediaWiki核心设计为模块化,因此没有理由去更改它。如果存在您想要的功能,并且无法在修改核心之外完成,请考虑开发扩展或将您的修改内容作为补丁提交。提交错误报告并告知社区您要达到的特性。该特性将会被进行测试,您提交的特性可能会成为MediaWiki核心的一部分。

修改核心文件的维基所面临的问题

  • MediaWiki升级将持续从半小时到六小时或甚至六周,若您的diff(差异)存在13650行被更改。
  • 由于安全漏洞,垃圾邮件和其他有害攻击的增加。
  • 由于核心文件存在冲突而失去新特性。
  • 无法使用MediaWiki.org文档 - 所有这些都是在假设您没有“修改”您的核心文件的情况下编写的(除了您在进行特定的修改时特地写了有关如何操作MediaWiki的文档)。
  • 重复原有的问题 - 因为错误报告是解决问题的一种比修改核心更可靠的方法 - 如果不是出于其他原因,一组开发人员将分析问题并可能发现代码需要更改而您将错过。
  • 向开发人员抱怨你的核心文件不能工作 - 并且没有找到太多同情 - 如果你修改了核心文件 - 有效的技术支持几乎是不可能的。

例外

这个规则有例外吗?

没有。

好吧,很少很少。但这通常适用于特定的Wiki或由熟悉MediaWiki代码库,开发实践和安全模型的人员实现。那些人能正确记录其变更并使用其代码实施适当的版本控制。如果你一定要问,那么你很有可能不应该这样做。

扩展

注意,此页面的大部分内容也适用于重要扩展。直接开始修改Semantic MediaWiki扩展或在维基百科及其他维基媒体网站上使用的任何扩展程序都是不是好主意。

一个例外是,如果一个扩展主要通过在本wiki复制代码来安装而不是通过软件存储库来安装。这意味着它没有进行很好的维护。

该怎么做

除了去修改MediaWiki核心,这里还有有几种替代解决方案可以考虑,差不多按这个顺序:

  1. MediaWiki是一款功能强大的野兽,你可以用MediaWiki的界面消息做很多事情,例如:MediaWiki:Sidebar 和很多其他页面。您也可以参阅本维基上的其他页面,比如JavaScriptCSS及其他附加的更改。
  2. 开发扩展以实现您打算做到的事情,或者只是使用一个现有的钩子
  3. 提交错误报告
  4. 将您对核心的改进贡献给代码存储库,以便他人可以从您的修复中受益

参见