Jump to content

请勿黑入MediaWiki核心

本頁使用了標題或全文手工轉換
From mediawiki.org
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核心的一部份。

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

  • 如果您的diff(差异)顯示有13650行已被更改,MediaWiki的升级時間将从半小时到六小时、或甚至六周。
  • 由于安全漏洞,垃圾邮件和其他有害攻击會增加。
  • 由于核心文件存在冲突而失去新功能。
  • 无法使用MediaWiki.org的文档--所有这些都是在假设您没有“黑”您的核心文件的情况下编写的(除了您在进行特定的修改时特地写了有关如何操作MediaWiki的文档)。
  • 原有的问题一再重覆--因为提交错误报告遠比黑入核心更是一种解决问题的可靠方法--若無其他原因,一组开发人员将深入調查該问题并可能會发现還有代码需要更改而您卻错过。
  • 你向开发人员抱怨你的核心文件不能運作--然後没有得到多少同情--如果你黑入了核心文件--有效的技术支持几乎就是沒了。

例外

这个规则有例外吗?

没有。

好吧,非常非常非常少。但这通常适用于特定的Wiki或由熟悉MediaWiki代码基礎、开发实践、和安全模型的人员來实现。那些人能正确记录其变更并使用其代码实施适当的版本控制。如果你一定要问的話,你的機會就像是被雷打中。

扩展

注意,此页面的大部分内容也同樣适用在重要的扩展。直接動手去黑Semantic MediaWiki的扩展、或任何在维基百科上使用的扩展及其他维基媒体网站上使用的扩展,都是愚公在移山(不是好主意)。

有一个可以算是例外,如果有一个扩展主要是复制本wiki的代码来安装的(而不是通过某個软件存储库)。这意味着它並沒把维护當一回事。

该怎么做才對

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

  1. MediaWiki是一頭强而有力的脫繮野兽,你可以利用MediaWiki的界面消息做很多事情,例如:MediaWiki:Sidebar 和其他許許多页面。您也可以参阅本维基上的其他页面,例如JavaScriptCSS的附加與變更。
  2. 开发一個扩展以实现您原本黑入時打算做到的事情、或者單純只是用某个现有的钩子就可以收工了。
  3. 提交错误报告
  4. 前人的您将核心的改进種在代码存储库這棵樹下,後人就可以在您的修复中乘涼

参见