How to become a MediaWiki hacker/pt

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 - .

Perspetiva geral
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
Comece por se registar para  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

 * 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

 * Requisitos de 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 do Git.
 * — Prossiga com a instalação e a configuração inicial.
 * Configure os vários modos de despiste de erros no seu ambiente para apresentarem os alertas e erros cedo.

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


Recomendações gerais
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:

 
 * 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.
 * Convenções de código e quaisquer subpáginas relevantes para a sua tarefa (,, ,...)
 * Seguindo as diretrizes para mensagens de integração de código, especialmente a secção Exemplo abaixo, adicionará automaticamente uma notificação sobre a sua alteração ao relatório correspondente no . Deixou de existir a necessidade de adicionar o comentário "Please review" no relatório.
 * Verifique o seu código contra a lista de pré-integração de código. Não salte este passo ; ficará feliz por não o ter feito.
 * Obter revisões de código. Procure e adicione pessoas como possíveis revisores das suas alterações.
 * Emendar uma alteração. Não crie uma nova alteração no Gerrit para corrigir uma alteração sua anterior!
 * Na maioria dos casos em que estiver a trabalhar no MediaWiki, não quer mexer no núcleo central do MediaWiki a menos que saiba verdadeiramente o que está a fazer.

Comentários, perguntas e assistência
 
 * É 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, 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 . 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.
 * You can ask at the weekly Technical Advice IRC Meeting on #wikimedia-tech

Comunique que está a trabalhar na reparação de um erro
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
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:
 * Desenvolver extensões — Como escrever uma extensão para o MediaWiki.
 * Escrever extensões para lançamento — Se pretender ter a sua extensão lançada nos sites da Wikimedia (incluindo possivelmente a Wikipédia), é necessário um escrutínio adicional em termos de desempenho e segurança.
 * Guia prático de criação de extensões


 * Recursos de extensões do MediaWiki:
 * Melhoras práticas para extensões
 * Lista de extensões simples — Uma forma simples de se familiarizar com a forma como as extensões funcionam.
 * Uma introdução breve ao desenvolvimento de extensões MediaWiki — Um vídeo de apresentação acerca de como criar extensões MediaWiki (slides).
 * Criar uma extensão do MediaWiki — Cobre como desenvolver uma extensão para o MediaWiki, melhores práticas, e como integrar-se na comunidade MediaWiki. Desde Fevereiro de 2011.
 * Modelo de páginas especiais — Adicione uma página especial para mostrar informações úteis.
 * Expandir a notação wiki — Adicione um hook ao analisador sintático para modificar o conteúdo do texto wiki.

PHP
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 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:
 * O manual PHP — Disponível em diferentes línguas.
 * Convenções de codificação em PHP dentro da comunidade MediaWiki.


 * Coisas para saber:
 * O script  em MediaWiki dispõe de um interpretador básico de PHP com objectos e classes MediaWiki carregados.

Base de dados
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
 * Tutorial MySQL — Do Manual de referência do MySQL 5.0.
 * MySQL at Wikibooks.


 * Recursos MySQL/MariaDB.
 * Manuais de referência de MySQL. — Disponível em várias línguas diferentes.
 * MariaDB Base de Conhecimento (Knowledge Base).
 * Convenções para codificação de base de dados na comunidade MediaWiki.


 * 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
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
 * JavaScript and CSS at Wikibooks.
 * Iniciando com jQuery — Um tutorial jQuery.


 * Recursos de JavaScript e CSS
 * Convenções de codificação em JavaScript dentro da comunidade MediaWiki.
 * Convenções de codificação em CSS dentro da comunidade MediaWiki.

MediaWiki
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:
 * Arquitectura do MediaWiki — Um perspectiva de alto-nível dos componentes principais do MediaWiki e como estes funcionam uns com outros.
 *  — Uma perspectiva de porquê e como escrever um código seguro.


 * Recursos MediaWiki:
 * — Uma lista importante de ficheiros e ligações para informações mais detalhadas.
 * — Uma lista de hooks (ganchos). Se estiver a tentar encontrar a funcionalidade de determinada parte do código base (codebase), geralmente um bom lugar para iniciar é procurando por hooks relacionados.
 * — Uma perspectiva geral de convenções de codificação dentro da comunidade MediaWiki.
 * — Formas de hackear o MediaWiki, das preferências do utilizador para extensões e o código base.
 * Documentação do código — Documentação automaticamente gerada do código e dos comentários sobre o código.
 * — Um guia para depurar o MediaWiki.
 * — Uma ferramenta para interagir com a ciclos de vida dos objectos de MediaWiki.

Ver também

 * – Se tiver lido sequencialmente a informação neste artigo, é tempo para mover para a informação na mesa redonda do desenvolvedor (developer hub).
 * MediaWiki Virtual Library (MVL) books; this page forms also part of the MediaWiki Developers Guide.
 * – Se tiver lido sequencialmente a informação neste artigo, é tempo para mover para a informação na mesa redonda do desenvolvedor (developer hub).
 * MediaWiki Virtual Library (MVL) books; this page forms also part of the MediaWiki Developers Guide.