How to become a MediaWiki hacker/pt

Este artigo é escrito para ajudar desenvolvedores iniciantes a aprender habilidades necessárias para contribuir com o desenvolvimento da MediaWiki.

Se você for um desenvolvedor experiente, visite ao invés disso, .

Perspectiva
MediaWiki é o software que potencia o Wikipedia, seus projectos irmãos e milhares de wikis ao redor do mundo. Isto roda na maioria de sistemas operativos, é escrito em PHP, primeiramente usa o servidor de base de dados MySQL e MariaDB, e usa o jQuery como livraria de JavaScript para o utilizador. Desenvolvimento do MediaWiki é primeiramente apoiada pela Wikimedia Foundation, embora a comunidade voluntária de desenvolvedores participem em grande medida também.

Esta página poderia ajudar a levá-lo ao caminho para se tornar em um colaborador do MediaWiki. Isto não é um tutorial; Isto apenas indica-o a vários locais onde você ir aprender o quer que seja necessário.

Iniciando
Primeiro de tudo, obtenha o  and Gerrit tutorial para descarregar o nosso código, teste e comece por submeter as correcções. Existe duas formas de configurar o ambiente de desenvolvimento: usando o instalador pré-configurado da máquina virtual (vagrant), ou manual.

Máquina Virtual com Vagrant

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

Instalação Manual

 * requisitos da instalação — Verifique os requisitos de hardware, e instale um dos servidores LAMP, MAMP ou WAMP (Linux, Mac ou Windows, mais Apache, MySQL/MariaDB e PHP).
 * — Descarregue o último código fonte de Git.
 * — Continue com a instalação e a configuração inicial.
 * Configure o vários modos de depuração para visualizar alertas de erros antecipadamente.

Não é necessário descarregar a base de dados acumulada da Wikipedia para desenvolver características ou funcionalidades da MediaWiki. Na verdade, em vários casos é mais fácil uma base de dados quase vazia com poucas páginas de testes especificamente feitas. Contudo, se por alguma razão quiser ter a cópia do Wikipedia, poderá Obter um acúmulo.

Leituras sugeridas


Recomendações gerais
Se escolher trabalhar em uma publicação de erro que requer escrever ou alterar o código, deverá querer no mínimo reduzir as páginas antes:

 
 * Os dois caminhos para iniciar com o desenvolvimento MediaWiki é reparar um erro pequeno e irritante em um código existente, ou adicionar uma nova característica, geralmente através de uma extensão da MediaWiki.
 * Convenção de códigos e qualquer sub-páginas relevantes para sua tarefa (,, ,...)
 * Following the linhas guias de mensagem de execução, especialmente a secção Exemplo abaixo, automaticamente adicionará notificações acerca de suas correcções à publicação correspondente em . Deste modo não haverá mais necessidade de adicionar o comentário "Please review" na publicação.
 * Verifique o seu código fronte a '''lista de pre-execução. Não salte este passo ; Ficará feliz por não o ter feito.
 * Obtendo códigos revistos. Procure e adicione pessoas como potenciais revisores para de suas correcções.
 * Emendar a alteração Não crie novas configurações de mudanças Gerrit para reparar a anterior!
 * Na maioria dos casos quando estiver a trabalhar com MediaWiki, você Não queira hackear as funcionalidades principais de MediaWiki a menos que realmente saiba o que está a fazer.

Comentários, perguntas e assistência
 
 * É esperado que faça pesquisas básicas por si mesmo primeiro: Verifique o código, tente obter alguma percepção do que é suposto ser, ler documentos relacionados, tente encontrar lugares prováveis onde se precisa de se efectuar alterações de formas a reparar os erros.
 * Se você tiver dúvidas gerais sobre a infraestrutura, a arquitectura de software ou fluxos de trabalho que não estão ligados a um erro específico que queira trabalhar nele, use canais genéricos como, mailing lists, ou páginas de discussão. Por exemplo, se tiver problemas com a Gerrit, a Página de discussão da Gerrit poderá ser um bom lugar para perguntar.
 * Se você tiver dúvidas específicas acerca do erro em si, comente na publicação correspondente . O que devo fazer para reparar este erro? não é um boa pergunta para começar: Quanto mais específico a sua pergunta for, mais probabilidade existirá de alguém poder respondê-la rapidamente. Se tiver não tiver ideia gera de como reparar o erro, este erro poderá (ainda) não ser para si - por favor considere procurar um mais fácil, primeiro.
 * Quando perguntar, elabore o que tentou e encontrou já, para que os outros o possam ajudar a um nível mais elevado. Tente ser específico - por exemplo, copie e cole os seus comandos e as respectivas saídas (se não forem muito longas) ao invés de pré-frasear em suas próprias palavras. Isto evita desentendimentos.
 * 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 publicações erros relacionadas com o problema; não desista simplesmente da pergunta.
 * Aprenda mais em.

Comunique que está a trabalhar na reparação de um erro
Não precisa de se estabelecer como assinante na publicação erros ou anunciar os seus planos antes de começar a trabalhar na reparação de um erro, mas seria bem vindo 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 a publicação do erro estiver já um link recente com o remendo 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 não for visto nenhuma mudança por um período de tempo extenso, você poderá também pegar um remendo existente e 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 normal 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
If you choose to work on MediaWiki extensions code, the following links provide more information.


 * MediaWiki extensions primers:
 * Developing extensions — How to write an extension for MediaWiki.
 * Writing an extension for deployment — If you intend to have your extension deployed on Wikimedia sites (including possibly Wikipedia), additional scrutiny is warranted in terms of performance and security.
 * Extension writing tutorial


 * MediaWiki extensions resources:
 * List of simple extensions — A simple way to become more familiar with how extensions work.
 * A brief introduction to MediaWiki extension development — A video presentation about how to create a MediaWiki extension (slides).
 * Making a MediaWiki extension — Covers how to develop an extension for Mediawiki, best practices, and how to engage the Mediawiki community. From February 2011.
 * Special page template — Add a special page to display some handy information.
 * Extending wiki markup — Add a parser hook to modify the content of wikitext.

PHP
MediaWiki is written in PHP, so you'll need to get familiar with PHP to hack MediaWiki's core.


 * Learn PHP
 * PHP tutorial — Available in many different languages. If you have no knowledge of PHP but know how to program in other object-oriented programming languages, PHP will be easy for you to learn.
 * PHP Programming at Wikibooks.
 * PHP topic at Wikiversity.


 * PHP resources:
 * The PHP manual — Available in many different languages.
 * PHP coding conventions within the MediaWiki community.


 * Stuff to know:
 * The script  in MediaWiki provides a basic PHP interpreter with MediaWiki objects and classes loaded.

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


 * Learn MySQL/MariaDB
 * MySQL tutorial — From the MySQL 5.0 reference manual.
 * MySQL at Wikibooks.


 * MySQL/MariaDB resources
 * MySQL Reference Manuals — Available in many different languages.
 * MariaDB Knowledge Base
 * Database coding conventions within the MediaWiki community.


 * Stuff to know:
 * Test your code with 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 and CSS
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.


 * Learn JavaScript and CSS
 * JavaScript and CSS at Wikibooks.
 * Getting Started with jQuery — A jQuery tutorial.


 * JavaScript and CSS resources
 * JavaScript coding conventions within the MediaWiki community.
 * CSS coding conventions within the MediaWiki community.

MediaWiki
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:
 * MediaWiki architecture — A high-level overview of the main components of MediaWiki and how they work with each other.
 *  — An overview of why and how to write secure code.


 * MediaWiki resources:
 * — A list of important files and links to more detailed information.
 * — A list of hooks. If you're trying to find what part of the codebase does something, often a good place to start is by searching for the related hooks.
 * — An overview of general coding conventions within the MediaWiki community.
 * Intro-to-MediaWiki workshop syllabus — Ways to hack MediaWiki, from user preferences to extensions and core.
 * Code documentation — Automatically generated documentation from the code and code comments.
 * — A guide to debugging MediaWiki.
 * — A tool to interact with MediaWiki objects live.