Как изучить МедиаВики

From MediaWiki.org
Jump to: navigation, search
This page is a translated version of the page How to become a MediaWiki hacker and the translation is 99% complete.

Outdated translations are marked like this.
Other languages:
العربية • ‎български • ‎dansk • ‎Deutsch • ‎Ελληνικά • ‎English • ‎español • ‎فارسی • ‎français • ‎magyar • ‎Bahasa Indonesia • ‎italiano • ‎日本語 • ‎한국어 • ‎Nederlands • ‎occitan • ‎ਪੰਜਾਬੀ • ‎polski • ‎português • ‎português do Brasil • ‎română • ‎русский • ‎српски / srpski • ‎svenska • ‎ไทย • ‎Türkçe • ‎Tiếng Việt • ‎中文
Эта статья поможет разработчикам обрести базовые навыки, необходимые для участия в развитии MediaWiki.

Если вы уже опытный разработчик и хорошо знакомы с особенностями MediaWiki, посетите Портал разработчиковDeveloper hub.

Обзор[edit]

МедиаВики - это программное обеспечение, на основе которой создана Википедия, её родственные проекты, а также тысячи вики по всему миру. Оно поддерживается большинством операционных систем, написано на PHP, использует в основном серверные базы данных MySQL и MariaDB, а также jQuery —клиентскую библиотеку для JavaScript. Разработка МедиаВики поддерживается главным образом организацией Wikimedia Foundation, сообщество добровольцев тоже играет огромную роль в развитии проекта.

Данная статья поможет вам внести собственный вклад в МедиаВики. Это не учебник. Здесь лишь указаны источники, из которых вы можете почерпнуть необходимые сведения.

С чего начать[edit]

Зарегистрируйтесь Доступ для разработчикаDeveloper access и прочтите Gerrit tutorial. Затем загрузите исходный код, вносите изменения, тестируйте, предлагайте исправления. Для разработки используйте уже настроенную виртуальную машину (vagrant) или установите всё необходимое сами.

Виртуальная машина с Vagrant[edit]

  • Установка Vagrant — Установка сервера МедиаВики со всем необходимым внутри виртуальной машины в Linux (возможно использование Linux, Windows или Mac хостов)

Самостоятельная установка[edit]

Нет необходимости в загрузке дампов базы данных Википедии для разработки МедиаВики. Зачастую проще использовать крошечную базу данных со специальными заготовками тестовых страниц. Если же вы хотите использовать копию Википедии, используйте дамп.

Рекомендовано для прочтения[edit]

Общие рекомендации[edit]

Для работы с отчетами об ошибках (bug report) и последующего внесения изменений, будет полезно сперва ознакомится с данными материалами:

Посмотрите за тем как разработчик исправляет баг, включая исследование, git коммит, изменения, закрытие Bugzilla ticket (в настоящее время заменено на PhabricatorPhabricator).

Улучшая движок, не вносите изменений в ядро МедиаВики, если не уверены в своих действиях на сто процентов.


Обратная связь, вопросы и поддержка[edit]

  • Для начала исследуйте код, попробуйте понять его, прочитайте документацию, исправьте баг.

Для общих вопросов об инфраструктуре, архитектуре или рабочем процессе, которые в свою очередь напрямую не связаны с багом, пользуйтесь IRCIRC, почтовой рассылкой или страницами для обсуждений на вики. Например, если возникают проблемы при работе с Gerrit, задавайте вопросы на странице обсуждения Gerrit.

  • Для конкретных вопросов о самом баге используйте комментарии в отчете PhabricatorPhabricator. "Как же мне исправить ошибку?", - не самый лучший вопрос. Подробность и детальность в вопросе помогут получить ответ быстрее. Правильно оценивайте свои способности на данный момент и не пытайтесь исправлять баг, который вам совершенно не понятен. Выберите другой, который проще для вас.
  • Отметьте в своём вопросе ваши наработки и идеи, чтобы другие понимали на каком этапе в решении проблемы вы находитесь. Скопируйте вашу последовательность действий, команд (если их не слишком много) вместо их словесного описания. Это поможет избежать недопонимания.
  • Используйте наши социальные медиа, не скрывайте email.

Наберитесь терпения. В чате IRC на большинство вопросов ответят такие же участники как и вы. Если ответа нет, спросите в комментариях баг отчета или на соответствующей вики, не оставляйте свой вопрос без ответа.


Дайте знать, что работаете над ошибкой[edit]

Это ее обязательно, но приветствуется.

В последствии, при создании патча, сообщите о своей работе в комментарии. Это поможет не совершать двойную работу другим участникам.

Вам также следует обращать внимание на подобные отметки. Если увидите "Patch-For_Review", связанный с баг отчетом, то выберите другой. Если патч в Gerrit не изменялся в течении долгого периода времени, попробуйте поработать над ним.

Если вы прекращаете работу над задачей, удалите отметку о себе как об ответственном (assignee) за неё, чтобы остальные участники могли заняться багом, зная что вы оставили свою работу над ним.

Чем раньше начнёте взаимодействовать с другими участниками, тем больше внимания и помощи получите.


Работа над расширениями[edit]

Следующие ссылки могут помочь вам в работе.

Руководства для разработки расширений МедиаВики
Прочие ресурсы


Практические рекомендации[edit]

В следующих разделах описаны примеры компонентов вики-движка, в развитие которых вы можете внести вклад; учтите, что только этими компонентами вас никто не ограничивает!

В верхнем правом углу задачи (отчёта об ошибке) на Phabricator можно увидеть продукт и компонент, содержащие проблему. Эти данные дают вам подсказку о том, в каком Git-хранилище расположен код, и о том, с какой из команд разработчиков вы могли бы связаться, если захотите обсудить проблему с более «широкой» стороны (комментарии на страницах отчётов об ошибках рекомендуется оставлять только по поводу той конкретной проблемы, описанной в отчёте).

Документация[edit]

Pywikibot[edit]

PyWikibot — основанная на Python платформа для написания ботов под MediaWiki. Общие вопросы по разработке следует задавать в рассылочном списке Pywikibot и IRC-канале #pywikibot.

Мультимедиа[edit]

Общие вопросы по разработке в области мультимедиа следует задавать в рассылочном списке мультимедиа и IRC-канале #wikimedia-multimedia.

Мобильные приложения[edit]

Существует большое число разработанных для мобильных устройств (Android, iOS, Windows Phone, …) приложений для доступа к вики Викимедиа. Читай Общую информацию разработки и задай свои вопросы в списке мобильной рассылки и также на #канал мобильная-викимедия IRC .

Чтение[edit]

Команда чтение создаёт программное обеспечение, которым пользуются наши читатели. Мы также руководим мобильными веб-испытаниями. Читай Общую информацию разработки и задай свои вопросы в списке мобильной рассылки и также на #канал мобильная-викимедия IRC .

Викиданные[edit]

Викиданные это ценрализированная база знаний для структурированных данных, таких как ссылок интервики и статистической информации. Задай вопросы об общем развитии в списке рассылки Викиданных, #канал викиданных IRC и в вики.

Huggle[edit]

Хаггл это настольное приложение для борьбы с вандализмом на проектах Викимедиа, написанный на C++.

Проверки Браузера и Обеспечение Качества[edit]

Автоматические проверки браузера помогают инженерам Викимедиа производить качественную облицовку программного обеспечения быстрее. Посмотрите страницу Проверка Браузера, чтобы больше узнать о том, какие технологии мы используем и как принять участие. Дополнительные сведения смотрите в разделе Контроль Качества.

===Языковое конструирование (Локализация/Перевод/Интернационализация)===

Ask your general Language Engineering development questions on the mediawiki-i18n mailing list and the #mediawiki-i18n IRC channel.

VisualEditor and Parsoid[edit]

VisualEditor is MediaWiki's WYSIWYG editor. Ask your general VisualEditor development questions on the wikitech mailing list and the #mediawiki-visualeditor IRC channel.

VisualEditor is powered by Parsoid, a wikitext parser and runtime. Ask your general Parsoid development questions on the wikitext mailing list and the #mediawiki-parsoid IRC channel.

Discovery / Search[edit]

The Discovery team builds the path of anonymous discovery to a trusted and relevant source of knowledge. Ask your general development questions on the Discovery mailing list and on the #wikimedia-discovery IRC channel.

Analytics[edit]

The Analytics team empowers and supports data-informed decision making in Wikimedia. Ask your general development questions on the Analytics mailing list.

Design[edit]

Fixing design bugs or requests requires existing graphics skills working with a Vector graphics application (e.g. Inkscape). Basic knowledge of CSS can also be helpful for integration. Ask your general development questions on the Design mailing list and the #wikimedia-design IRC channel.

Skins[edit]

Skins allow users to customize the look and feel of MediaWiki. Basic knowledge of CSS and PHP is helpful. Check the project page in Phabricator for more information on each skin and contact information.

System messages and localization/translation problems[edit]

System messages in MediaWiki or its extensions often need small corrections to the English text, but the source text can only be changed in the code by developers, contrary to translations. This has grown into a large backlog of usually very easy fixes (which might be as easy as fixing a typo).

Also, many messages are unclear and require better documentation (see Localisation#Message documentation). Missing documentation can also be added by just editing the /qqq subpage of the message on translatewiki.net, like all translations, but may require some study of the code to understand what a message is for: it's therefore optimal to start understanding the code, and very useful for the translators (who do not have such skills).

Collaboration[edit]

The Collaboration team mainly works on Echo and Flow.

Ask questions regarding Collaboration team projects on the #wikimedia-collaboration IRC channel.

MediaWiki[edit]

MediaWiki is the core software which provides basic wiki functionality. It is complex, written in PHP, and some areas might not have clear maintainership. Ask your general development questions on the wikitech mailing list and the #wikimedia-dev and #mediawiki IRC channels.

Phlogiston[edit]

Phabricator is used by Wikimedia for project management, software bug reporting and feature requests. Phlogiston is a set of SQL, Python, and R scripts to report on Phabricator data, particularly burnup reports and forecasting.

Semantic MediaWiki[edit]

Semantic MediaWiki is one of the biggest and most popular MediaWiki extensions.

Maps[edit]

Maps is a popular MediaWiki extension that allows for, amongst other things, embedding of dynamic maps into wiki pages

And many more…[edit]

Still not enough ideas? There are more fields you can explore - MediaWiki has hundreds of extensions and tools! Check out the complete list of bugs recommended for new contributors:

If you have any trouble or questions, please ask for help via IRC or feel free to contact Andre Klapper or Quim Gil.

Приложение[edit]

Участники МедиаВики за работой в Бангалоре, Индия.

PHP[edit]

МедиаВики написан на PHP, соответственно он необходим для работы над ядром движка.

Учите PHP
  • Учебник PHP — Доступен на многих языках. Если вы знаете другие языки, использующие объектно-ориентированную парадигму, но не PHP, то обучение будет несложным.
  • PHP Programming at Wikibooks.
  • PHP topic at Wikiversity.
Источники по PHP
Что нужно знать
  • Сценарий maintenance/eval.php содержит базовый интерпретатор с объектами и классами МедиаВики.

Базы данных[edit]

Зачастую необходимы знания базы данных MySQL/MariaDB.

Учите MySQL/MariaDB
Материалы по MySQL/MariaDB
Что нужно знать
  • Тестируйте код с MySQL/MariaDB.
    • МедиаВики использует MySQL and MariaDB в качестве основных баз данных. Также поддерживаются и другие:
PostgreSQL и SQLite. Однако почти все разработчики используют MySQL/MariaDB и проводят тесты только используя их, вследствие этого другие базы данных при тестах часто выходят из строя. Поэтому, если вы целенаправленно не занимаетесь улучшением поддержки для других баз данных, то используйте MySQL/MariaDB. Если да, то убедитесь в правильности работы с MySQL/MariaDB (и в эффективности запросов), так как их используют почти все остальные разработчики.

JavaScript и CSS[edit]

JavaScript и CSS стали стандартом в разработке фронтенда. Вы не должны быть знакомы с JavaScript, jQuery и CSS для разработки МедиаВики, но соответствующие знания могут понадобиться.

Учите JavaScript и CSS
Материалы по JavaScript и CSS

MediaWiki[edit]

Кодовая база МедиаВики достаточно велика и местами трудна для понимания, не перестарайтесь. Начинайте работать с исправления или создания новых возможностей касающихся небольших участков кода.

Материалы МедиаВики, необходимые к прочтению
Ресуры МедиаВики

Смотрите также[edit]