Как стать MediaWiki хакером

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

Outdated translations are marked like this.
Other languages:
Bahasa Indonesia • ‎Deutsch • ‎English • ‎Nederlands • ‎Tiếng Việt • ‎Türkçe • ‎dansk • ‎español • ‎français • ‎interlingua • ‎italiano • ‎magyar • ‎occitan • ‎polski • ‎português • ‎português do Brasil • ‎română • ‎svenska • ‎Ελληνικά • ‎български • ‎русский • ‎српски / srpski • ‎العربية • ‎فارسی • ‎हिन्दी • ‎বাংলা • ‎ਪੰਜਾਬੀ • ‎ไทย • ‎中文 • ‎日本語 • ‎한국어

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

Чтобы начать разработку Wikimedia, основное, с чего нужно начать, это вносить вклад в проекты Wikimedia в которых есть наставничество. В качестве альтернативы (без наставничества) можно исправлять небольшие раздражающие ошибки.

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

Чтобы участвовать в развитии Wikimedia по другим направлениям, смотрите Как сделать свой вкладHow to contribute.

Обзор

MediaWiki — это программное обеспечение, на основе которого создана Википедия, её родственные проекты, а также тысячи вики по всему миру.

MediaWiki написана на языке PHP [1]. Использует jQuery в качестве клиента к библиотеке JavaScript.

MediaWiki изначально написана для платформы LAMP [2] и работает в большинстве операционных систем. MediaWiki изначально использует сервера баз данных MySQL и MariaDB.[3]

Разработка ведется в стиле открытого исходного кода[4], в основном координируется онлайн и поддерживается Wikimedia Foundation. Тем не менее волонтеры, сообщество, разработчики также играют огромную роль.

  • Обсуждение по разработке происходит в различных почтовых рассылках и IRC-каналах. Основной список почтовой рассылки для разработчиков — wikitech-l. Основные IRC-каналы для разработчиков — #mediawiki и #wikimedia-dev.
  • Исходный код управляется с помощью системы контроля ревизий Git.[5]
  • Проверка кода происходит на GerritGerrit. Следуйте этому руководству, которое поможет настроить Git и Gerrit для отправки патчей.
  • Bug reports (сообщения об ошибках) и задачи управляются с помощью Phabricator.

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

Настройка среды разработки

В большинстве проектов используются Git и Gerrit. Следуйте инструкциям в руководстве по Gerrit, чтобы создать и настроить свою учётную запись разработчика. Затем загрузите исходный код, вносите изменения, тестируйте, предлагайте исправления.

Есть два способа настроить окружение разработчика: использование уже настроенной виртуальную машину (vagrant) или установите всё необходимое сами.

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

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

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

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

Рекомендуется прочесть

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


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

  • Предполагается, что для начала вы сделаете некоторые базовые исследования: исследуйте на код; попробуйте понять что он делает; прочитайте документацию; попробуйте найти вероятное место(а) где необходимо внести изменения, чтобы исправить ошибку.

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

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

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



Сообщите о том, что работаете над задачей

Вам не нужно спрашивать можно ли вам работать над заданием. Вам не нужно объявлять свои планы, прежде чем приступать к работе над ошибкой, но это будет весьма полезно. Вы можете указать себя как ответственного за задачу: используйте выпадающее меню Add Action… → Assign/Claim в Phabricator.

В последствии, при создании патча, сообщите о своей работе в комментарии.

Ваше объявление поможет другим не работать над ошибкой в одно и то же время и не дублировать работу.

Также обратите внимание, что если в задаче уже есть ссылка на патч в Gerrit и есть проект "Patch-For-Review", связанный с Phabricator, выберите другую задачу для работы - избегайте дублирования работы. Если патч в Gerrit не был принят и не изменялся в течении длительного времени, то вы также можете взять этот патч и улучшить его, учитывая обратную связь на Gerrit и в задаче.

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

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


Приложение

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

PHP

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

Учите PHP
  • Учебник PHP — Доступен на многих языках. Если вы не знаете PHP, но умеете программировать на других объектно-ориентированных языках программирования, то изучение PHP для вас будет несложным.
  • PHP Programming at Wikibooks.
  • PHP topic at Wikiversity.
Источники по PHP
Что нужно знать
  • Сценарий maintenance/eval.php содержит базовый интерпретатор с объектами и классами MediaWiki.
  • Also, the script maintenance/shell.php in MediaWiki is a replacement of maintenance/eval.php based on PsySH, see Manual:Shell.php.


Базы данных

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

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

JavaScript и CSS

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

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

MediaWiki

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

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

Расширения MediaWiki

Если вы хотите работать над кодом расширений MediaWiki, следующие ссылки могут помочь вам в работе.

Основа MediaWiki расширений
Прочие ресурсы

См. также

  1. Не всё в MediaWiki написано на PHP. Некоторые вспомогательные утилиты написаны на других языках, включая пакетные файлы, сценарии командной строки, makefiles и Python.
  2. MediaWiki работает на большинстве платформ, которые поддерживают PHP, однако отсутствие определенных утилит или функций операционной системы может ограничить функциональность или производительность MediaWiki на платформах, отличных от LAMP.
  3. В MediaWiki кроме поддержки MySQL и MariaDB есть поддержка DBMS включая Oracle, PostgreSQL, SQLite и Microsoft SQL Server.
  4. В число девелоперов входят волонтеры и оплачиваемый персонал (или контрактные рабочие) из различных организаций. Полный список работающих на кодом MediaWiki смотрите в статье DevelopersDevelopers.
  5. Посмотрите исходный код и ревизии в репозиториях кода https://phabricator.wikimedia.org/diffusion/ или загрузите исходный код на вашу систему используя Gerrit.