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

Исключения

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

Не-а.

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

Расширения

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

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

Альтернативы

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

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

Смотрите также

  • {{Extension by patch warning }} — шаблон для добавления на страницы расширения, которым необходимы модификации ядра MediaWiki.