Не взламывайте ядро MediaWiki
Это эссе. Оно выражает мнения и идеи некоторых пользователей mediawiki.org, но может не иметь широкой поддержки. Не стесняйтесь обновлять эту страницу по мере необходимости или используйте страницу обсуждения, чтобы предложить серьезные изменения. |
Эта страница в двух словах: В то время, как всем разработчиком рекомендуется отправлять улучшения ядра MediaWiki в репозиторий, изменение файлов отдельного установленного ядра MediaWiki часто ведёт больше к проблемам, нежели к их решениям. Использование расширения или отправка вашего улучшения в репозиторий - более проверенное и надёжное решение. |
Пока взлом ядра 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, в большей или меньшей степени применимы альтернативные решения:
- MediaWiki - это сильный зверь из коробки, поэтому вы можете многое изменить в сообщениях интерфейса MediaWiki, например,
MediaWiki:Sidebar
и многое другое. Смотрите также другие страницы этого вики-проекта, например, JavaScript и CSS-добавления и изменения. - Разработайте расширение, чтобы осуществить то, что ваш хак должен был сделать, или попросту используйте одно из существующих решений.
- Отправьте сообщение об ошибке.
- Отправьте ваше улучшение ядра в репозиторий, чтобы другие люди могли воспользоваться вашим исправлением.
Смотрите также
- {{Extension by patch warning }} — шаблон для добавления на страницы расширения, которым необходимы модификации ядра MediaWiki.