Como se tornar num hacker do MediaWiki

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 97% 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 • ‎中文
Este artigo está escrito para ajudar programadores a adquirirem as capacidades necessárias para contribuir para o desenvolvimento do MediaWiki.

Se já é um programador experiente, familiarizado com o uso do MediaWiki, visite antes o portal dos programadores - Developer hubDeveloper hub.

Perspetiva geral[edit]

O MediaWiki é o software da Wikipédia, os projetos relacionados com ela, e milhares de wikis em todo o mundo. Pode ser executado na maioria dos sistemas operativos, está escrito em PHP, usa sobretudo os servidores de base de dados MySQL e MariaDB, e usa o jQuery como biblioteca de JavaScript do cliente. O desenvolvimento do MediaWiki é apoiado principalmente pela Wikimedia Foundation, embora programadores voluntários da comunidade desempenhem também um papel muito importante.

Esta página pode ajudá-lo a iniciar o caminho para se tornar num colaborador do MediaWiki. Ela não é um guia prático; indica-lhe apenas os vários locais onde poderá aprender o que quer que seja necessário.

Começar[edit]

Comece por se registar para Developer accessDeveloper access e ler o Guia Prático do Gerrit.

Depois pode passar à frente e descarregar o nosso código, fazer alterações, testá-las e enviar modificações. Há duas formas de configurar o ambiente de desenvolvimento: usando o instalador de uma máquina virtual pré-configurada (vagrant), ou manualmente.

Máquina Virtual com Vagrant[edit]

  • Instalação do Vagrant - Estes passos instalarão o servidor MediaWiki com todos os requisitos dentro de uma máquina virtual Linux (pode ser usada em servidores Linux, Windows ou Mac)

Instalação manual[edit]

Não é necessário descarregar cópias em ficheiro da base de dados da Wikipédia para desenvolver funcionalidades do MediaWiki. Na verdade, muitas vezes é mais fácil usar uma base de dados quase vazia, só com poucas páginas de testes especificamente criadas. Contudo, se por alguma razão quiser ter uma cópia da Wikipédia, pode obter uma cópia em ficheiro.

Leitura sugerida[edit]

Recomendações gerais[edit]

Se escolher trabalhar num relatório de defeito que requira escrever ou alterar código, deve no mínimo ler por alto estas páginas antes:

Assista a como um programador corrige um defeito, incluindo a investigação, o commit no git, fazer com que ele seja revisto e integrado no código, e o encerramento do ticket no Bugzilla (agora substituído pelo PhabricatorPhabricator).
  • Os dois caminhos principais para se iniciar no desenvolvimento do MediaWiki são corrigir um defeito pequeno mas irritante no código existente, ou adicionar uma funcionalidade nova, geralmente através de uma extensão do MediaWiki.


Comentários, perguntas e assistência[edit]

  • É esperado que comece por fazer alguma investigação básica: analise o código, tente compreender o que este pretende fazer, leia a documentação relacionada, tente encontrar o sítio ou sítios no código onde provavelmente terá de efetuar alterações para corrigir o defeito.
  • Se tiver dúvidas gerais sobre a infraestrutura, a arquitectura do software ou fluxos de trabalho que não estão ligados ao defeito específico em que quer trabalhar, use canais genéricos como IRCIRC, listas de divulgação ou páginas de discussão. Por exemplo, se tem um problema com o Gerrit, a página de discussão do Gerrit poderá ser um bom lugar para perguntar.
  • Se tiver dúvidas específicas acerca do defeito, comente no relatório correspondente no PhabricatorPhabricator.

O que devo fazer para reparar este defeito? não é uma boa pergunta inicial: quanto mais específicas as suas perguntas forem, maior será a probabilidade de alguém conseguir responder rapidamente. Se não faz qualquer ideia de como reparar o defeito, talvez este defeito (ainda) não seja para si - tente encontrar outro mais fácil primeiro, por favor.

  • Ao colocar uma pergunta, descreva aquilo que já tentou e descobriu, para que os outros o possam ajudar ao nível adequado. Tente ser específico - por exemplo, copie e insira os seus comandos e os respetivos resultados (se não forem muito longos) em vez de parafrasear nas suas próprias palavras. Isto evita mal-entendidos.
  • Evite mensagens privadas ou pedidos de ajuda nos nossos canais nas redes sociais.
  • Seja paciente quando procura opiniões e comentários, por favor. No IRC, não pergunte se pode perguntar, apenas pergunte; a maioria das questões podem ser respondidas por outros membros da comunidade se forem colocadas num canal IRC. Se ninguém responder, coloque a pergunta na página do relato de defeito ou numa página wiki relacionada com o problema; não desista simplesmente da pergunta, por favor.
  • Aprenda mais em ComunicaçãoCommunication.
  • You can ask at the weekly Technical Advice IRC Meeting on #wikimedia-tech


Comunique que está a trabalhar na correção de um defeito[edit]

Não é preciso perguntar se pode trabalhar num defeito. Não é preciso estar atribuído como responsável por um relato de erros nem anunciar os seus planos antes de começar a corrigir um defeito, mas seria bom se o fizesse. O mais tardar quando estiver prestes a enviar uma correção para o defeito, é bom anunciar num comentário que está a trabalhar nesse defeito. O seu anúncio também ajuda os outros a não trabalharem na correção do mesmo defeito e desperdiçar esforço.

Note também que se o relato do defeito já tem uma ligação recente com a correção do erro no Gerrit e tem associado o projeto "Patch-For-Review", deve escolher um defeito diferente para corrigir - evite trabalho em duplicado. Se a correção no Gerrit não tiver sido fundida e não sofre alterações há muito tempo, pode ficar com a correção existente e tentar melhorá-la.

Se parar de trabalhar numa tarefa, deve remover-se como responsável pelo relatório de defeito e restaurar o responsável para o estado pré-definido, de modo que os restantes saibam que podem trabalhar na correção desse defeito e não julguem que você o está a fazer.

Se comunicar cedo obterá mais atenção, comentários e ajuda dos membros da comunidade.


Trabalhar em extensões[edit]

Se escolher trabalhar no código das extensões do MediaWiki, os seguintes links fornecem mais informações.

Iniciação nas extensões do MediaWiki
Recursos de extensões do MediaWiki


Sugestões práticas[edit]

The following sections describe a few example areas in which you can contribute, but you are not limited to these areas!

In the upper right corner of a task (bug report) in Phabricator you can see the product and component that the problem is located in. This provides you a hint about the Git repository that the code is located in, and about the development team which you could contact if you want to discuss it in a "broader" way (as comments in bug reports should preferably refer to the specific problem described in the report only).

Documentation[edit]

Pywikibot[edit]

PyWikibot is a Python-based framework to write bots for MediaWiki. Ask your general development questions on the Pywikibot mailing list and the #pywikibot IRC channel.

Multimedia[edit]

Ask your general Multimedia development questions on the multimedia mailing list and the #wikimedia-multimedia IRC channel.

Mobile Apps[edit]

There are numerous applications for mobile devices (Android, iOS, Windows Phone, …) to access Wikimedia wikis. Read the general development information and ask your questions on the Mobile mailing list and the #wikimedia-mobile IRC channel.

Reading[edit]

The reading team builds the software that serves our readers. We also manage the mobile web experience. Read the general development information and ask your questions on the Mobile mailing list and the #wikimedia-mobile IRC channel.

Wikidata[edit]

Wikidata is a centralized knowledge base for structured data, such as interwiki references and statistical information. Ask your general development questions on the Wikidata mailing list, the #wikidata IRC channel and on the wiki.

Huggle[edit]

Huggle is a desktop application for dealing with vandalism on Wikimedia projects, written in C++ and QT.


Browser Tests & Quality Assurance[edit]

Automated browser tests help Wikimedia engineers produce quality user facing software faster. See the page on Browser testing for more on what technologies we use and how to get involved. For more general information, see Quality Assurance.

Language Engineering (Localization/Translation/Internationalization)[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 Srishti Sethi or Andre Klapper.

Apêndice[edit]

Colaboradores MediaWiki a trabalhar em Bangalore, Índia.

PHP[edit]

O MediaWiki está escrito em PHP, portanto tem de se familiarizar com o PHP para programar o núcleo central do MediaWiki.

Aprenda PHP
  • Guia prático de PHP — Disponível em muitas línguas diferentes. Se não tem nenhum conhecimento de PHP mas sabe programar noutras linguagens de programação orientada para objetos, será fácil para si aprender PHP.
  • PHP Programming at Wikibooks.
  • PHP topic at Wikiversity.
Recursos PHP
Coisas a saber
  • O script maintenance/eval.php no MediaWiki fornece um interpretador básico de PHP com objetos e classes MediaWiki carregados.

Base de dados[edit]

Muitas características requerem alguma manipulação da base de dados, portanto precisará frequentemente de estar familiarizado com MySQL ou MariaDB.

Aprender MySQL/MariaDB
Recursos MySQL/MariaDB.
Coisas a saber
  • Teste o seu código com MySQL/MariaDB.
    • O MediaWiki usa atualmente MySQL e MariaDB como servidor principal da base de dados. Também suporta outros Gestores de Base de Dados (DBMSes), tal como PostgreSQL e SQLite. Contudo, a maioria dos programadores utilizam MySQL/MariaDB e não testam outras bases de dados, que em consequência têm falhas constantes. É portanto aconselhado a utilizar MySQL/MariaDB quando testar correções, a menos que esteja especificamente a tentar melhorar o suporte de outra base de dados. Neste último caso, certifique-se de que não estraga MySQL/MariaDB (ou escreve consultas horrivelmente ineficientes nesta base de dados), pois MySQL/MariaDB é o que todas as outras pessoas usam.

JavaScript e CSS[edit]

JavaScript e CSS tornaram-se omnipresentes no código do lado do cliente. Não tem de estar familiarizado com JavaScript, jQuery e CSS para trabalhar no MediaWiki, mas precisará ser preciso, dependendo daquilo em que escolher trabalhar.

Aprenda JavaScript e CSS
Recursos de JavaScript e CSS

MediaWiki[edit]

O código do MediaWiki é extenso e algumas partes são feias; não se intimide. Quando está a começar, foque-se em criar funcionalidades ou corrigir defeitos restritos a pequenas regiões do código.

Iniciações e leituras obrigatórias do MediaWiki
Recursos MediaWiki

Ver também[edit]