Do not hack MediaWiki core/ru

Category:Essays/ru

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

В целях данного эссе, под «ядром» понимаются все файлы, принадлежащие первоначальной установке MediaWiki. Это значит, что все файлы, кроме LocalSettings.php, docker-compose.override.yml, файлов в папках «extensions» или «skins» или других папках, которые вы добавили с момента установки. That is to say all files except LocalSettings.php, docker-compose.override.yml, the ones in your extensions or skins folder, or other folders which you have added since your installation.

Почему вам не следует изменять файлы ядра

Вне зависимости от того, насколько просто будет модифицировать 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.
Category:Essays/ru