Не взламывайте ядро MediaWiki
This is an essay. It expresses the opinions and ideas of some MediaWiki.org users, but may not have wide support. Feel free to update this page as needed, or use the discussion page to propose major changes. |
![]() | This page in a nutshell: В то время, как всем разработчиком рекомендуется отправлять улучшения ядра MediaWiki в репозиторий, изменение файлов отдельного установленного ядра MediaWiki часто ведёт больше к проблемам, нежели к их решениям. Использование расширения или отправка вашего улучшения в репозиторий - более проверенное и надёжное решение. |
Пока взлом ядра MediaWiki - частое решение, предлагаемое на других форумах поддержки MediaWiki, это не идеальное решение. В целом, это будет вызывать больше проблем, чем может решить, и затруднит будущие обновления.
В целях данного эссе, под ядром понимаются все файлы, принадлежащие первоначальной установке MediaWiki. Это значит, что все файлы, кроме LocalSettings.php, файлов в каталоге "extensions" или других категориях, которых вы добавили с момента установки.
Почему вам не следует изменять файлы ядра
Вне зависимости от того, насколько просто будет модифицировать MediaWiki так, чтобы она делала то, что вы хотите, не поддавайтесь искушению.
- Сделав это, вы усложните ядро. Будет трудно, или даже почти невозможно устанавливать обновления, направленные на улучшение безопасности и исправление ошибок.
- Вы осложните жизнь тем, кто после вас будет заниматься поддержкой сайта.
- Вероятно, вы оставите свой сайт уязвимым для эксплойтов.
- Другие разработчики будут менее благосклонно помогать вам, если вы взломаете своё ядро - нет другой причины, которая бы сделала понимание того, что вы сделали, настолько сложным.
Ядро MediaWiki было разработано с целью иметь модульную структуру, поэтому нет нужды взламывать его. Если есть какая-то функция, которая нужна вам и которая может быть реализована только модификацией ядра, рассмотрите возможность создать расширение, или предложите ваш хак в качестве патча. Отправьте сообщение об ошибке и расскажите сообществу о функции, которую вы хотите реализовать. Затем она будет протестирована, и ваша функция сможет стать частью ядра MediaWiki.
Проблемы, с которыми сталкиваются вики-проекты со сломанным ядром
- Время обновления MediaWiki возрастает с 30 минут до 6 часов, а то и 6 недель, если ваше изменение (
diff
) касается 13650 строк. - Возрастает число спама и других нежелательных атак из-за возникших дыр в безопасности.
- Отсутствуют новые функции из-за конфликтующих изменениях в файлах ядра.
- Нет возможности использовать документацию MediaWiki.org - которая пишется в расчёте на то, что вы не будете модифицировать ваши файлы ядра (если, конечно, вы не напишете документацию конкретно о том, как работать с MediaWiki, в которой был использован определённый хак).
- Повторим главную проблему: сообщение об ошибке - это более надёжный способ решить проблему, нежели взлом ядра - ведь лучше, когда группа разработчиков вникает в проблему и может найти необходимые изменения в коде, которые вы можете пропустить.
- Вам придётся долго объяснять разработчикам о том, что ваши файлы ядра не работают - и не получать при этом особого сочувствия - если вы взломали файлы ядра. Эффективная техническая поддержка - это всё, но она будет невозможна.
Исключения
Есть ли исключения для этого правила?
Не-а.
Ладно, очень-очень редко. Но, как правило, хаки реализуются в специфичных Вики-проектах или пишутся теми людьми, которые очень хорошо знакомы с кодовой базой MediaWiki, методикой разработки и моделью безопасности. Эти люди способны качественно задокументировать свои изменения и провести правильный контроль изменений в своём коде. Если вы хотите задать вопрос о ваших шансах — вам не следует этого делать.
Расширения
Имейте ввиду, что большая часть этой страницы также относится и к расширениям. Начинать взламывать непосредственно смысловые расширения MediaWiki, или любые другие расширения, используемые на Википедии и других сайтах фонда Викимедия - плохая идея.
Исключением могут служить расширения, которые обычно устанавливаются путём копирования кода из этого вики-проекта (вместо получения их из репозитория). Это означает, что они не очень серьёзно поддерживаются.
Альтернативы
Вместо взлома ядра MediaWiki, в большей или меньшей степени применимы альтернативные решения:
- MediaWiki - это сильный зверь из коробки, поэтому вы можете многое изменить в сообщениях интерфейса MediaWiki, например,
MediaWiki:Sidebar
и многое другое. Смотрите также другие страницы этого вики-проекта, например, JavaScript и CSS-добавления и изменения. - Разработайте расширение, чтобы осуществить то, что ваш хак должен был сделать, или попросту используйте одно из существующих решений.
- Отправьте сообщение об ошибке.
- Отправьте ваше улучшение ядра в репозиторий, чтобы другие люди могли воспользоваться вашим исправлением.
Смотрите также
- {{Extension by patch warning}} – шаблон для добавления на страницы расширения, которым необходимы модификации ядра MediaWiki.