How to become a MediaWiki hacker/pt-br

Este artigo foi escrito para ajudar os desenvolvedores iniciantes a aprender as habilidades necessárias para contribuir para o desenvolvimento do MediaWiki.

Se você é um desenvolvedor experiente, visite Developer hub em vez disso.

Visão geral
O software MediaWiki é escrito em PHP e usa o banco de dados MySQL. Ambos têm sido portado para uma variedade de sistemas operacionais, incluindo, mas não só, a maioria das variantes Unix: (Linux, Mac OS X, etc) e Microsoft Windows. É possível instalar e usar o MediaWiki no Linux, Mac OS X e Windows. Nota: se você usar o Windows, alguns recursos envolvendo utilitários externos ficarão indisponíveis ou disponíveis apenas com downloads especiais e configuração. Você vai ver, por vezes, bugs de sistema operacional, por isso é melhor ter algum conhecimento da diferença entre as várias plataformas, independentemente em qual sistema operacional que você desenvolve.

Aqui você tem uma idéia inicial da arquitetura MediaWiki.

Obtendo ajuda
A maneira mais rápida de obter ajuda neste início é em nosso canal no IRC,.

A linguagem PHP
Se você não tem conhecimento de PHP (PHP significa "PHP: Hypertext Preprocessor"), mas sabe como programar em outras línguas orientadas a objetos, não se preocupe, o PHP será fácil para você aprender.

Se você não tem conhecimento de PHP ou outras linguagens de programação orientada a objetos, você deve se familiarizar com conceitos como classes, objetos, métodos, eventos e herança.

Se você não tem conhecimento de qualquer linguagem de programação, PHP é uma linguagem boa para começar, como é razoavelmente semelhante a outras linguagens modernas, embora seja específica na forma como é executado.

Scripts PHP podem ser executados a partir da linha de comando, ou um gerenciador de janelas é suficiente para enviar para o interpretador. por exemplo, (no Linux / UNIX):

/usr/bin/php -q < phpshell.php

O script maintenance/eval.php do MediaWiki fornece um interpretador de PHP básico com objetos MediaWiki e as classes carregadas.

Normalmente, para websites, um script PHP é executado quando você solicitar um arquivo com a extensão  (entre outros) a partir de um servidor web. Enquanto você faz isso, o servidor web, no nosso caso, Apache, chama o interpretador PHP (que pode ser incorporado no servidor web), interpreta o arquivo PHP e retorna o resultado ao seu navegador. O arquivo PHP pode conter código regulares HTML e PHP, o que torna relativamente simples de adicionar funcionalidade dinâmica a uma página estática.

Links relacionados

 * Tutorial de PHP (disponível em diversos idiomas)
 * Manual PHP (disponível em diversos idiomas)
 * PHP no Wikibooks

Base de dados
O MediaWiki atualmente usa o MySQL como backend de banco de dados primário. Ele também suporta outros SGBDs, como PostgreSQL e SQLite. No entanto, quase todos os desenvolvedores usam o MySQL e não testam outros DBs, o que, consequentemente, termina em uma base regular. É, portanto, aconselhável a utilização do MySQL ao testar patches, a menos que você especificamente tentando melhorar o suporte para outro DB. Neste último caso, certifique-se de tomar cuidado para não interromper o MySQL (ou escrever consultas que são terrivelmente ineficientes no mesmo), já que é o que todo mundo usa.

Embora a Fundação Wikimedia tenha mudado a partir do MySQL 4.0, é importante não interromper intencionalmente o suporte ao MySQL 4.0. O MySQL 4.0 carece de muitos recursos de versões posteriores do MySQL (não importando outros SGDBs): se você não tiver certeza, verifique no manual primeiro! O recurso mais comumente usado em falta do MySQL 4.0 são as subconsultas, não use os que estão fora do código específico para um SGBD que não seja MySQL.

Instalação do MediaWiki
Receba as últimas fontes do Subversion, o nosso sistema de controle de origem, antes de criar patches. Veja Download do SVN para saber como obter as fontes do SVN.

Siga as instruções do arquivo INSTALL na fonte. Você também pode ler o guia de instalação.

Não é necessário fazer o download de cópias de segurança da Wikipedia, a fim de desenvolver características do MediaWiki. De fato, em muitos casos é mais fácil de usar um banco de dados quase vazio, com algumas páginas especialmente criadas para teste. No entanto, se por algum motivo você quiser ter uma cópia do Wikipedia, você pode obter uma cópia no Meta em data dumps.

Você também pode achar que descobriu um erro, se queixando de que seu acesso ao banco de dados wiki foi negado. Certifique-se de que você tenha criado um arquivo AdminSettings.php em seu de diretório de instalação de nível alto do MediaWiki (o mesmo lugar em que LocalSettings.php é encontrado). Um arquivo AdminSettings.sample é fornecido para que você personalize - certifique-se de que seu nome de usuário e senha de administrador do MySQL está configurado corretamente. Veja Manual:Upgrading para mais detalhes.

Reconstruir as tabelas link pode levar um longo tempo, especialmente se você tiver instalado o banco de dados da Wikipedia em inglês, que é bastante grande. (Note também que você pode ignorar a tabela antiga, se desejar). Veja Manual: Database layout no qual rebuildall.php é bom para isso.

Observe que se você deseja criar um mirror público da Wikipédia, essa provavelmente não é a melhor forma de fazê-lo. Se você definir um mirror dessa maneira, por favor ajuste o código para notar que você está olhando para um mirror e inclua links para o site principal. Veja Clones para mais informações.

Código base
O código base do MediaWiki é grande e feio. Não se desanime com isso. Se for sua primeira vez, escreva recursos ou corrija bugs que são restritos a pequenos trechos do código.

Navegue pela lista de arquivos importantes em Manual:Code. Para informações mais detalhadas, leia a documentação.

Sua primeira funcionalidade
Aqui estão algumas idéias:
 * Codifique algo que lhe interessa;
 * Escreva uma página para fornecer alguma informação útil;
 * Escreva uma extensão simples (video tutorial);
 * Escreva um parser hook;
 * Corrija aquele bugzinho chato.

Para sugestões mais específicas, por favor, venha e converse com os desenvolvedores sobre. Se você já tem uma idéia para um recurso que você deseja implementar, também é uma boa idéia falar com um desenvolvedor sênior antes de começar, especialmente se você não tem certeza de como o seu recurso vai afetar outras partes do código.

Faça as alterações no todo em Subversion, não apenas em uma parte, e tente seguir o manual Padrões de codificação (se você estiver escrevendo um arquivo novo, o endereço web stylize.php pode ajudar).

Quando você tiver uma funcionalidade pronta para executar, envie uma correção no Bugzilla, marque-o com as palavras-chave "patch" e "necessário revisão", e faça um ping para o Bugmeister para que seja revista e confirmada. Isto pode ser um processo mais lento do que apenas confirma-lo sozinho, mas por fazê-lo uma ou duas vezes você demonstra sua boa-fé, e sua capacidade de escrever código razoavelmente estável. Ligado a isso, antes de confirmar o seu recurso, verifique se ele pode ser desativado facilmente.

Quando você estiver pronto para escrever uma extensão MediaWiki nova e você gostaria de vê-la implantada nos servidores do projeto Wikimedia, leia Escrevendo uma extensão para implementação.

Testando
Use E_STRICT no  para ter advertências e avisos desnecessários relatados antecipadamente.

Ao adicionar funcionalidades, é vital verificar se você não interrompeu a funcionalidade existente. A ferramenta usual para isso são frameworks de testes automatizados. A suíte de testes do MediaWiki ainda é relativamente escassa. Temos três tipos de testes:


 * Testes de sintaxe (veja tests/parserTests.php), que apenas testa o analisador. Tente executar  para ver como funcionam. Tudo deve funcionar, em teoria. Você pode adicionar novos testes ou corrigir os já existentes, editando tests/parserTests.txt.
 * Testes de unidade baseados em PHPUnit no diretório tests/phpunit. Eles normalmente são executados através do script phpunit.php invocado a partir do diretório mencionado acima. Estes testestambém incluem testes de análise simples, embora parserTests.php</tt> provavelmente funcione mais rápido. Veja Manual:PHP unit testing para instruções de instalação do PHPUnit e mais detalhes.
 * Os testes do Selenium estão no diretório tests/selenium</tt>.

De qualquer forma, se você não puder escrever um teste automático, faça o teste manual. Se você causar a interrupção muitas vezes, as pessoas vão se irritar com você. No mínimo, espere indignação séria se você verificar erros de sintaxe - pelo menos, tente carregar o seu wiki, ou carregue isto: php maintenance/checkSyntax.php --modified</tt>.

Ativando o display_startup_errors
O display_startup_errors está desativado por padrão no toolserver. Ligá-lo dentro do programa em teste é arriscado demais! Então crie o seguinte stub e execute-o em vez disso:

Postando um patch
Se você criou e testou uma correção (por exemplo, para corrigir aquele bug inoportuno), obtenha um diff unificado do arquivo modificado, usando:

svn diff path/to/modified_file.php > my.patch

Então poste o patch como um anexo ao relatório de erro apropriado no Bugzilla, e adicione as palavras-chave  e   para que, assim, os desenvolvedores possam analisá-lo e responder pra você.

Veja também

 * Workshop "Aprenda como hackear o MediaWiki"
 * Developer hub – Quando você ler atentamente as informações contidas neste artigo, é hora de seguir em frente com a informação no centro do desenvolvedor.
 * Outros projetos Wikimedia que você pode contribuir