Developer hub/ru

Это общий обзор материалов о разработке MediaWiki, включающий ссылки на основные документы, ресурсы и инструменты для разработчиков MediaWiki. Они ориентированы на квалифицированных разработчиков LAMP, имеющих опыт использования MediaWiki.


 * Если вы хотите использовать веб-API проектов Викимедиа, посетите Web APIs hub (в процессе создания).
 * Если вы хотите внести свой вклад в разработку программного обеспечения Викимедиа, см. New Developers.
 * Вводное руководство по разработке MediaWiki можно почерпнуть на странице «Как стать хакером MediaWiki» (eng.).

Обзор
MediaWiki is the software that powers Wikipedia, its sister projects and thousands of wikis all over the world.

MediaWiki is written in the PHP programming language. It uses jQuery as the client JavaScript library.

MediaWiki is primarily written for the LAMP platform and runs on most operating systems. MediaWiki primarily uses the MySQL and MariaDB database servers.

MediaWiki разрабатывается в стиле открытого ПО, is largely coordinated online, and supported by the Wikimedia Foundation, though volunteer community developers play a huge part as well.


 * Обсуждения разработки происходят в различных почтовых рассылках и IRC-каналах. Основной список рассылки разработчиков — это wikitech-l. Основной IRC-канал разработчиков — это #mediawiki и #wikimedia-dev.
 * Управление исходным кодом осуществляется посредством системы контроля версий Git.
 * Проверка кода выполняется с помощью, см. все подробности на странице этого руководства (eng.).
 * Bug reports and tasks for most projects are managed on Phabricator.
 * Разработчикам расширений и интерфейса MediaWiki (в отличие от работающих над кодом ядра), предоставляется несколько удобных точек расширения, в том числе API, система обработчиков (Hooks) и стилей или «шкурок» оформления (Skins) — см. обзор в разделе #Расширение MediaWiki на этой странице.

Основные документы


Код, разработка и стиль

 * Принципы разработки (eng.) — обзор основных правил разработки.
 * Соглашения по кодированию — о том, как научиться писать код в стиле MediaWiki.
 * Вопросы безопасности для разработчиков (eng.) — о том, как сохранять безопасность MediaWiki.
 * Контрольный список проверок кода перед отправкой (eng.) — изучите этот контрольный список перед отправкой кода.
 * Руководство по проверке кода — руководство по анализу дополнений к исходному коду MediaWiki.
 * Запросы комментариев (Requests for Comment, RfC) — прочесть о новых функциях и возможностях экосистемы MediaWiki или предложить свои идеи.

Отладка и тестирование

 * Как выполнять отладку — руководство по отладке MediaWiki.
 * Ошибки и их симптомы — обзор типичных ошибок MediaWiki и соответствующих им симптомов.
 *  – о том, как научиться писать UI-тесты для MediaWiki, используя Selenium.
 * Юнит-тесты — о том, ка научиться писать юнит-тесты для MediaWiki, используя PHPUnit.
 *  — вопросы безопасности, о которых приходят сообщения на [mailto:security@wikimedia.org security@wikimedia.org].



Архитектура

 * Manual:Код — обзор основных частей исходного кода MediaWiki.
 * Формат базы данных — обзор схемы БД MediaWiki.
 * Объекты, определяемые глобальными переменными — неполный список основных глобальных переменных.
 * Локализация — для изучения системы интернационализации MediaWiki.
 * Manual — пространство имён в этой вики, где располагается документация для разработчиков.
 * [//doc.wikimedia.org/mediawiki-core/master/php/ Документация к классам MediaWiki (MediaWiki Class Reference)] (eng.) — автоматически генерируемая техническая документация на классы и другие функции, используемые в MediaWiki. (Замечание: Документация классов весьма обширна, так что страницы могут загружаться довольно медленно.)
 *  – справочники, руководства, коллекция избранных статей.

Подсистемы

 * API – API MediaWiki обеспечивает прямой высокоуровневый доступ к данным, содержащимся в базах данных MediaWiki.
 * ContentHandler – MediaWiki's framework for supporting custom types of page content.
 *  – обзор использования БД в MediaWiki, включая краткое руководство по работе на уровне абстракции БД (database abstraction layer).
 *  – специальный компонент MediaWiki's для асинхронного выполнения долгоиграющих задач.
 *  – компонента MediaWiki для предоставления локализованных сообщений движка в PHP или JavaScript.

Расширение MediaWiki
MediaWiki была спроектирована так, чтобы позволить вносить изменения без изменения основного кода. Это облегчает обновление при переходе на новую версию MediaWiki, так как исчезает необходимость при обновлении вручную править код существующих модулей расширения, заново приводя их в соответствие с основным кодом. Предусмотрено шесть основных способов, позволяющих разработчикам MediaWiki добавлять новые возможности, а также изменять существующие. Способы расширения следующие:


 * API — доступ к данным и метаданным конкретной инсталляции MediaWiki через его высокопроизводительный веб-API "Action".
 * Перехваты — каждый раз, когда происходит какое-то событие, выполняется нечто...
 * Функции парсера — создание новой команды наподобие:
 * Шкурки («скины») — изменение стиля оформления MediaWiki.
 * Служебные страницы — добавление новой служебной страницы.
 * Расширения тэгов — создание нового тэга наподобие:
 * Extending wiki markup – add a parser hook to modify the content of wikitext.

Помощь создателям расширений

 * Manual:Developing extensions (eng.) — руководство по разработке расширений.
 * Project:WikiProject Extensions (eng.)
 * Extensions FAQ (eng.)
 * Матрица расширений — автоматически генерируемый список расширений. См. также Category:Extensions, менее полный перечень существующих расширений.
 * Manual:$wgExtensionFunctions – использовать отложенную установку (или не запускать другие функции обратного вызова) для расширений, пока ядро MediaWiki устанавливается.
 * Extension:BoilerPlate - пустой шаблон расширения

Помощь разработчикам стилей оформления

 * Manual:Skinning Part 1 (eng.) — инструкции по созданию стилей оформления MediaWiki.
 * Manual:Skin configuration (eng.) — руководство по настройке стилей оформления вики-сайта.

Справка по повторному использованию кода библиотек

 * – руководство по подготовке сторонних библиотек для использования в MediaWiki

Использование собственных вики

 * — для корпоративных вики
 * — для учебных вики