Как да станете МедияУики хакер

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 66% 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 • ‎中文
Тази статия е написана с цел да помогне на разработчиците да придобият основните умения, нужни за допринасяне към развитието на МедияУики.

Ако сте опитен разработчик, който вече е запознат с употребата на МедияУики, вместо това по-добре посетете Developer hubDeveloper hub.

Преглед[edit]

МедияУики е софтуера зад Уикипедия, сродните й проекти и хиляди уикита по света. Той работи на повечето операционни системи, написан е на PHP, използва предимно сървърите за бази данни MySQL и MariaDB и използва jQuery като клиентска JavaScript библиотека. Разработването на МедияУики се поддържа основно от Фондация Уикимедия, макар че общността от доброволни разработчици също играе огромна роля.

Тази страница трябва да ви помогне да започнете пътя си да станете сътрудник на МедияУики. Това не е помощно ръководство; то просто ви насочва към различни места, където можете да научите каквото ви е необходимо.

Първи стъпки[edit]

Започнете като се регистрирате за Developer accessDeveloper access и прочетете ръководството за Gerrit. След това можете да преминете към изтеглянето на нашия код, извършването на промени, тестването им и изпращането на корекции. Има два начина за настройване на вашата среда за разработки: използване на предварително конфигурирана настройка на виртуална машина (vagrant) или ръчно.

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

  • Инсталиране на Vagrant - Тези стъпки ще инсталират МедияУики сървър с всички изисквания в Linux виртуална машина (може да се използва на Linux, Windows или Mac хостове)

Ръчно инсталиране[edit]

Не е необходимо да изтегляте дъмпове с бази данни на Уикимедия, за да се разработвате МедияУики функции. Всъщност в много случаи е по-лесно да се използва почти празна база данни с няколко специално изработени тестови страници. Ако обаче по някаква причина искате да имате копие на Уикипедия, можете да свалите дъмп.

Предложено четиво[edit]

Основни препоръки[edit]

Ако решите да работите върху доклад за грешка, който изисква писане или промяна на код, най-малко може да прочетете тези страници набързо:

Watch as a developer fixes a bug, including investigation, git commit, getting it reviewed and merged, and closing the Bugzilla ticket (now replaced by PhabricatorPhabricator).


Отзиви, въпроси и поддръжка[edit]

  • От вас се очаква първо да направите някои основни проучвания: Разгледайте кода, опитайте се да разберете какво трябва да направите, прочетете свързаната документация, опитайте се да намерите вероятното място (места), където трябва да направите промени за да поправите грешката.
  • Ако имате общи въпроси относно инфраструктурата, архитектурата на софтуера или работните потоци, които не са свързани с конкретната грешка, върху която искате да работите; използвайте създадените канали за комуникация като IRCIRC, пощенски списъци или уикибеседите. Например, ако имате проблем с Gerrit, беседата на Gerrit може да бъде подходящо място, на което да попитате.
  • Ако имате конкретен въпрос за самия бъг, коментирайте в съответния доклад на PhabricatorPhabricator. "Какво трябва да направя, за да отстраня този бъг?" не е добър въпрос за начало: Колкото по-конкретни са вашите въпроси, толкова по-вероятно е някой бързо да може да им отговори. Ако изобщо нямате представа как да отстраните грешката, може би този бъг не е (все още) за вас - моля, първо помислете за намирането на по-лесен.
  • When asking, elaborate what you have tried and found out already, so others can help at the right level. Опитайте се да бъдете конкретни - например, копирайте и поставете вашите команди и резултатите от тях (ако не са твърде дълги), вместо да перифразирате със собствени думи. Това избягва недоразуменията.
  • Избягвайте личен имейл или заявки за поддръжка в нашите социални медийни канали.
  • Моля, бъдете търпеливи, когато търсите информация и коментари. В IRC не питайте да попитате, просто попитайте: на повечето въпроси може да се отговори и от други членове на общността, ако попитате в IRC канал. Ако никой не отговори, моля, попитайте на доклада за грешки или страницата на уики, свързана с проблема; не оставяйте просто въпроса.
  • Научете повече на ОбщуванеCommunication.
  • You can ask at the weekly Technical Advice IRC Meeting on #wikimedia-tech


Комуникирайте, че работите върху бъг[edit]

Не е нужно да бъдете поставен като приемник на задачата в доклада за грешка или да обявите плановете си, преди да започнете да работите върху бъга; но би било добре.

Най-късно може да съобщите в коментар, че работите върху бъга, когато сте близо до създаването на поправката. Вашето съобщение също помага и на другите да не работят едновременно по грешката и да не дублират работата си.

Също така имайте предвид, че ако докладът за грешка има скорошна препратка към пач в Gerrit и е асоцииран с проекта "Patch-For-Review", вместо това трябва да изберете различен бъг - избягвайте дублирането на работата. If the patch in Gerrit has not been merged and has not seen any changes for a long time, you could also pick up that existing patch and try to improve it.

If you stop working on a task you should remove yourself as the assignee of a bug report and reset the assignee to the default assignee, so others know that they can work on the bug report and don't expect you to still work on it.

By communicating early you will get more attention, feedback and help from community members.


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

Ако решите да работите върху код за разширения на МедияУики, следните препратки предоставят повече информация.

Примери за МедияУики разширения
Ресурси за разширения за МедияУики


Hands-on suggestions[edit]

Следващите раздели описват някои примерни области, в които можете да допринасяте, но не се чувствайте ограничени само в тях!

В десния панел на дадена задача (доклад за грешки) в Инкубатор, можете да видите продукта и елемента, които съдържат проблема. Това ви дава представа за Git хранилището, в което е локализиран кода, и за екипа, с който бихте могли да се свържете, ако искате да обсъдите проблема в "по-широк" план (като коментарите към докладите за грешки е за предпочитане да се отнасят само за конкретния проблем, описан в доклада).

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

Pywikibot[edit]

PyWikibot е фреймуърк, базиран на Python, за писане на ботове за MediaWiki. Задайте въпросите си за разработките на пощенския списък за Pywikibot и в IRC канала #pywikibot.

Мултимедийни файлове[edit]

Задайте въпросите си за разработките на мултимедийните файлове на пощенския списък за мултимедия или в IRC канала #wikimedia-multimedia.

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

Има голям брой приложения за мобилни устройства (Android, IOS, Windows Phone, ...) за достъп до уикитата на Уикимедия. Прочетете информацията за общото развитие и задайте въпросите си на "Мобилния" пощенски списък и в IRC канала #wikimedia-mobile.

Четене[edit]

Екипът за четене изгражда софтуера, който служи на читателите ни. Ние също така работим с мобилните уеб практики. Прочетете информацията за развитието и задайте въпросите си на "Мобилния" пощенски списък и в IRC канала #wikimedia-mobile.

Уикиданни[edit]

Уикиданни е централизирана база за знания на структурирани данни, като например междуезикови препратки и статистическа информация. Задайте въпросите си за разработките на пощенския списък на Уикиданни, в IRC канала и уикито.

Huggle[edit]

Huggle е десктоп приложение, написано на C++, за справяне с вандализми в проектите на Уикимедия.

Браузърно тестване и контрол на качество[edit]

Автоматизираните браузърни тестове помагат на инженерите на Уикимедия по-бързо да подобряват качеството на софтуера, насочен към потребителя. Вижте страницата на браузърното тестване за повече информация относно технологиите, които използваме и как да се включим. За по-обща информация, вижте контрол на качеството.

Езиков инженеринг (Локализация/Превод/Интернационализация)[edit]

Задайте въпросите си за разработките на езиковия инженеринг на пощенския списък mediawiki-i18n и в IRC канала #mediawiki-i18n.

Визуален редактор и Parsoid[edit]

Визуалният редактор е MediaWiki WYSIWYG редактор. Задайте въпросите си за разработките на Визуалния редактор на wikitech пощенския списък на техническия екип на уики и в IRC канала #mediawiki-visualeditor.

Визуалният редактор е задвижван от Parsoid, уикитекстов анализатор и среда за изпълнение. Задайте въпросите си за общото разработване на Parsoid на пощенския списък за уикитекст и в IRC канала #mediawiki-parsoid.

Откриване/ Търсене[edit]

Екипът за открития разработва пътища за анонимно откриване на надежден и свързан източник на знания. Задайте въпросите си за разработките на пощенския списък на екипа за открития и в IRC канала #wikimedia-discovery.

Анализ[edit]

Екипът за анализи упълномощава и поддържа информираното вземане на решения в Уикимедия. Задайте въпросите си за разработките на пощенския списък на екипа за анализи.

Оформление[edit]

Фиксирането на грешки или заявки относно оформлението изисква съществуващи графични умения за работа с Vector graphics приложения (например Inkscape). Основни познания за CSS могат да бъдат полезни при интегрирането. Задайте въпросите си за разработките на пощенския списък на екипа за оформление и в IRC канала #wikimedia-design.

Облици[edit]

Облиците позволяват на потребителите да персонализират външния изглед и въздействието на MediaWiki. Полезни са основни познания за CSS и PHP. За повече информация за всеки отделен облик и информация за контакт, проверете страницата на проекта в Инкубатор.

Системни съобщения и проблеми при локализиране/превод[edit]

Системните съобщения в MediaWiki или неговите разширения често се нуждаят от малки корекции в текста на английски език, но кодът за изходния текст може да бъде променен от разработчиците, за разлика от текста на преводите. Това доведе до натрупването на голям брой лесно поправими грешки (които биха могли да бъдат коригирани толкова лесно, колкото поправката на печатна грешка).

Също така, много съобщения са неясни и изискват по-добра документация (вижте Localisation#Message documentation). Липсваща документация може да се добави просто чрез редактиране на подстраницата /qqq на съобщението на translatewiki.net, както всички други преводи, но може да се наложи известно изследване на кода, за да се разбере за какво е съобщението: тя е оптимална за започване на разбирането на кода и много полезна за преводачите (които не разполагат с такива умения).

Сътрудничество[edit]

Екипът за сътрудничество работи основно с Echo и Flow.

Задайте въпроси относно проектите на екипа за сътрудничество в IRC канала #wikimedia-collaboration.

MediaWiki[edit]

MediaWiki е ядрото на софтуера, който осигурява работата на основните уики функционалности. Той е сложен, написан на PHP, и е възможно някои части да нямат ясна поддръжка. Задайте въпросите си за разработките на пощенския списък на техническия екип и в IRC каналите #wikimedia-dev и #mediawiki.

Phlogiston[edit]

Инкубатор се използва от Уикипедия за управление на проекти, за доклади за грешки и заявки за функции за софтуера. Phlogiston е набор от SQL, Python, и R скриптове, използван за доклади от данни в Инкубатора, и по-специално за диаграми и прогнозиране.

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

И много други…[edit]

Все още ви липсват идеи? Можете да разгледате и други полета да работа - MediaWiki има стотици разширения и инструменти! Вижте пълния списък от грешки, препоръчани за нови сътрудници:

Ако изпитвате проблеми или имате въпроси, моля обърнете се за помощ чрез IRC канала или не се колебайте да се свържете с Андре Клапер или Кюм Джил.

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

Сътрудници на МедияУики на работа в Бангалор, Индия.

PHP[edit]

МедияУики е написан на PHP, така че ще трябва да се запознаете с PHP, за да се справите с основния код на МедияУики.

Научете PHP
  • Ръководство за PHP — Достъпно на много езици. Ако нямате познания за PHP, но знаете как да програмирате на други обектно-ориентирани езици за програмиране, PHP ще бъде лесен за научаване за вас.
  • PHP Programming at Wikibooks.
  • PHP topic at Wikiversity.
Ресурси за PHP
Неща, които трябва да знаете
  • The script maintenance/eval.php in MediaWiki provides a basic PHP interpreter with MediaWiki objects and classes loaded.

База данни[edit]

Many features require some amount of database manipulation, so you'll often need to be familiar with MySQL/MariaDB.

Научете MySQL/MariaDB
Ресурси за MySQL/MariaDB
Неща, които трябва да знаете
  • Тествайте кода си с MySQL/MariaDB.
    • MediaWiki currently uses MySQL and MariaDB as the primary database back-end. It also supports other DBMSes, such as PostgreSQL and SQLite. However, almost all developers use MySQL/MariaDB and don't test other DBs, which consequently break on a regular basis. You're therefore advised to use MySQL/MariaDB when testing patches, unless you're specifically trying to improve support for another DB. In the latter case, make sure you're careful not to break MySQL/MariaDB (or write queries that are horribly inefficient in it), since MySQL/MariaDB is what everybody else uses.

JavaScript и CSS[edit]

JavaScript and CSS have become omnipresent in front-end code. You don't have to be familiar with JavaScript, jQuery and CSS to work on MediaWiki, but you might need to, depending on what you choose to work on.

Научете JavaScript и CSS
Ресурси за JavaScript и CSS

MediaWiki[edit]

The MediaWiki code base is large and some parts are ugly; don't be overwhelmed by it. When you're first starting off, aim to write features or fix bugs which are constrained to a small region of code.

MediaWiki primers and must-reads
Ресурси за МедияУики

Вижте също[edit]