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

Se é um programador experiente, já 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á-la 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 erro, 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).


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 e-mails privados ou assistência a questões em nossos canais da mídia social.
  • Por favor seja paciente quando estiver a busca de entrada e comentários. No IRC, não pergunte em perguntas, apenas pergunte: a maioria das questões podem ser respondidas por outras comunidades membros igualmente, se você perguntar em um canal IRC. Se ninguém responde, por favor faça a pergunta na página de relato de erros relacionadas com o problema; não desista simplesmente da pergunta.
  • Aprenda mais em ComunicaçãoCommunication.
  • You can ask at the weekly Technical Advice IRC Meeting on #wikimedia-tech


Comunique que está a trabalhar na reparação de um erro[edit]

Não precisa de se definir como o responsável nos relatos de erros ou anunciar os seus planos antes de começar a trabalhar na reparação de um erro, mas seria de bom proveito se assim procedesse.

Em último, quando estiver prestes a criar um remendo para o erro, seria bom que anunciasse em um comentário que estiver a trabalhar. Seu anúncio também ajudará outros a não trabalhar na reparação do erro duplicadamente.

Também note que se o relato do erro estiver já um link recente com a rectificação do erro em Gerrit e tiver um projecto "Patch-For-Review" associado, você deve ao invés disso escolher um erro diferente para reparar - evite trabalhar duplicadamente em um erro. Se o remendo em Gerrit não tiver sido juntado e não for visto nenhuma mudança por um período extenso de tempo, você poderá também pegar neste remendo existente e tentar melhorá-lo.

Se parar de trabalhar em uma tarefa, deve remover-se (à si mesmo) como um signatário para a publicação do erro e restaurar a assinatura para o estado pré-definido de assinatura, de modos a que os outros saibam quem trabalha na reparação do erro e não criem expectativas sobre si em relação ao trabalho em questão.

Comunicando antecipadamente obterá mais atenção, retorno e ajuda dos membros da comunidade.


Trabalhando em extensões[edit]

Se escolher trabalhar em extensões de códigos do MediaWiki, os seguintes links fornecerão mais informações.

Inicialização em extensões do MediaWiki
Recursos de extensões do MediaWiki


Activo em sugestões[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++.

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 Andre Klapper or Quim Gil.

Apêndice[edit]

Colaboradores MediaWiki a trabalhar em Banglore, Índia.

PHP[edit]

MediaWiki é escrito em PHP, portanto você precisará de se familiarizar com PHP para hackear o fundamental do MediaWiki.

Aprenda PHP
  • Tutorial de PHP — Disponível em diferentes línguas. Se não tiver nenhum conhecimento sobre PHP mas sabe como programar em outra linguagem de programação orientada a objecto, PHP será fácil para si aprender.
  • PHP Programming at Wikibooks.
  • PHP topic at Wikiversity.
Recursos PHP
Coisas para saber
  • O script maintenance/eval.php em MediaWiki dispõe de um interpretador básico de PHP com objectos e classes MediaWiki carregados.

Base de dados[edit]

Várias características requerem alguma quantidade de manipulação de base de dados, portanto você geralmente precisará de se familiarizar com MySQL/MariaDB.

Aprenda MySQL/MariaDB
Recursos MySQL/MariaDB.
Coisas para saber
  • Teste o seu código com MySQL/MariaDB.
    • MediaWiki actualmente utiliza MySQL e MariaDB como uma base de dados primária para fins de funcionamento interno, isto é, do lado do servidor (back-end). Também suporta outros Gestores de Base de Dados (DBMSes), tal como PostgreSQL e SQLite Contudo, a maioria dos desenvolvedores utilizam MySQL/MariaDB e não testam outras base de dados (DBs), que consequentemente quebram regularmente. É portanto advertido a utilizar MySQL/MariaDB quando testar remendos, a menos que estiver especificamente a tentar melhorar um auxiliar para outra Base de dados (DB). No último caso, certifique-se de é cuidadoso para não quebrar MySQL/MariaDB (ou escrever linhas/queries que ineficientemente manipulem os dados ou a tornam ineficiente), pois MySQL/MariaDB é a que todas as outras pessoas usam.

JavaScript e CSS[edit]

JavaScript e CSS têm se tornado omnipresente no código externo, isto é, do lado do utilizador (front-end). Não deverá estar familiarizado com JavaScript, jQuery e CSS para trabalhar na MediaWiki, mas precisará, dependendo do seu grau de envolvimento com os códigos, isto é, com o que escolher trabalhar.

Aprenda JavaScript e CSS
Recursos de JavaScript e CSS

MediaWiki[edit]

O código base de MediaWiki é extenso e em algumas partes tremendo e intimidante; Não se perca nisto. Quando estiver a iniciar, foque-se em escrever funcionalidades ou repare erros que são limitados em pequenas regiões de código.

Inicializações e leituras-obrigatórias de MediaWiki
Recursos MediaWiki

Ver também[edit]