Do not hack MediaWiki core/ru

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

В целях данного эссе, под ядром понимаются все файлы, принадлежащие первоначальной установке MediaWiki. Это значит, что все файлы, кроме LocalSettings.php, файлов в каталоге "extensions" или других категориях, которых вы добавили с момента установки.

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


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

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

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

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

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

Не-а.

Okay, very very rarely. But this is generally for specific wikis or implementations by people who are extremely familiar with the MediaWiki code base, development practices and security model. Those who properly document their changes and practice proper revision control with their code. If you have to ask, chances are you shouldn't.

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

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

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


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