Do not hack MediaWiki core/ru

While hacking MediaWiki core is often a solution proposed on other MediaWiki support forums, it is not an ideal solution. Generally, it will cause you more problems than it solves and will only make future upgrades more difficult to install.

For the purposes of this essay, "core" is meant to include all files that belong to the original MediaWiki installation. That is to say all files except LocalSettings.php, the ones in your "extensions" folder, or other folders which you have added since your installation.

Почему вам не следует изменять файлы ядра
Вне зависимости от того, насколько просто будет модифицировать MediaWiki так, чтобы она делала то, что вы хотите, не поддавайтесь искушению.


 * Сделав это, вы усложните ядро. Будет трудно, или даже почти невозможно устанавливать обновления, направленные на улучшение безопасности и исправление ошибок.
 * Вы осложните жизнь тем, кто после вас будет заниматься поддержкой сайта.
 * Вероятно, вы оставите свой сайт уязвимым для эксплойтов.
 * Другие разработчики будут менее благосклонно помогать вам, если вы взломаете своё ядро - нет другой причины, которая бы сделала понимание того, что вы сделали, настолько сложным.

Ядро MediaWiki было разработано с целью иметь модульную структуру, поэтому нет нужды взламывать его. Если есть какая-то функция, которая нужна вам и которая может быть реализована только модификацией ядра, рассмотрите возможность создать расширение, или предложите ваш хак в качестве патча. Отправьте сообщение об ошибке и расскажите сообществу о функции, которую вы хотите реализовать. Затем она будет протестирована, и ваша функция сможет стать частью ядра MediaWiki.

Проблемы, с которыми сталкиваются Вики-проекты со сломанным ядром

 * Время обновления MediaWiki возрастает с 30 минут до 6 часов, а то и 6 недель, если ваше изменение касается 13650 строк.
 * Возрастает число спам- и других нежелательных атак из-за возникших дыр в безопасности.
 * Отсутствуют новые функции из-за конфликтующих изменениях в файлах ядра.
 * Нет возможности использовать документацию MediaWiki.org - которая пишется в расчёте на то, что вы не будете модифицировать ваши файлы ядра (если, конечно, вы не напишете документацию конкретно о том, как работать с MediaWiki, в которой был использован определённый хак).
 * Повторим главную проблему: сообщение об ошибке - это более надёжный способ решить проблему, нежели взлом ядра - ведь лучше, когда группа разработчиков вникает в проблему и может найти необходимые изменения в коде, которые вы можете пропустить.
 * Вам придётся долго объяснять разработчикам о том, что ваши файлы ядра не работают - и не получать при этом особого сочувствия - если вы взломали файлы ядра. Эффективная техническая поддержка - это всё, но она будет невозможна.

Исключения
Есть ли исключения для этого правила?

Не-а.

Ладно, очень-очень редко. Но, как правило, хаки реализуются в специфичных Вики-проектах или пишутся теми людьми, которые польностью знакомы с кодовой базой MediaWiki, методикой разработки и моделью безопасности. Эти люди способны качественно задокументировать свои изменения и провести правильный контроль изменений в своём коде. Если вы хотите задать вопрос о ваших шансах - вам не следует этого делать.

Расширения
Имейте ввиду, что большая часть этой страницы также относится и к расширениям. Начинать взламывать непосредственно смысловые расширения MediaWiki, или любые другие расширения, используемые на Википедии и других сайтах фонда Викимедия - плохая идея.

Исключением могут служить расширения, которые обычно устанавливаются путём копирования кода из этого вики-проекта (вместо получения их из репозитория). Это означает, что они не очень серьёзно поддерживаются.

Альтернативы
Вместо взлома ядра MediaWiki, в большей или меньшей степени применимы альтернативные решения:


 * 1) MediaWiki - это сильный зверь из коробки, поэтому вы можете многое изменить в сообщениях интерфейса MediaWiki, например, MediaWiki:Sidebar|навигационную панель]] и многое другое, см. также другие страницы этого вики-проекта, например, JavaScript- и CSS-добавления и изменения.
 * 2) Разработайте расширение, чтобы осуществить то, что ваш хак должен был сделать, или попросту используйте одно из существующих решений.
 * 3) Отправьте сообщение об ошибке.
 * 4) Отправьте ваше улучшение ядра в репозиторий, чтобы другие люди могли воспользоваться вашим исправлением.