Phabricator/Code/pt-br

Este documento descreve o processo de desenvolvimento para a instância do Phabricator da Wikimedia. O Phabricator é escrito em PHP, exatamente como o MediaWiki, o que pode ajudar na iniciação ao desenvolvimento. Neste documento, primeiramente veremos como a Wikimedia está usando o Phabricator e o que esperar durante o desenvolvimento. Em seguida, há algumas notas sobre como começar com o desenvolvimento real.

Phabricator no Wikimedia
A Wikimedia usa uma instância do Phabricator com alterações mínimas da versão do autor. A razão para isso é o ritmo alto de desenvolvimento dos desenvolvedores originais – a manutenção de correções locais é complicado. As exceções são as extensões, que ficam em um diretório separado e, portanto, não precisam de fusões regulares. Quaisquer outras alterações, assim, têm de passar pela versão do autor. Isso soa como um grande obstáculo, mas, na prática, os mantenedores estão prontos para responder a sugestões.

Fluxo de trabalho de bugs no Wikimedia Phabricator
É útil para entender o ciclo de vida de um bug antes de assumir uma das tarefas. Existem dois projetos: #phabricator para bugs específicos da Wikimedia Foundation e #phabricator.org para bugs gerais do Phabricator. Bugs de software e pedidos de melhorias normalmente recaem nesta segunda categoria. To prevent disappointment, please do not start with the implementation until it's clear either upstream or the WMF maintainers will accept your patch.
 * 1) New bugs in #phabricator.org then move to a discussion stage to clarify the request.
 * 2) The request is then 'upstreamed' (copied to the phabricator.org bug tracker)
 * Only high-priority requests are marked with the #wikimedia tag.
 * 1) The upstream developers then respond with their assessment, and suggestions for how the feature should be implemented.
 * At this point one can start with the implementation.
 * 1) In some cases, the upstream developers will decide a feature does not fit into their plans. In this case, the bug is moved from #phabricator.org to #phabricator, and ends up back into the discussion stage: is this feature important enough to maintain local patches?
 * Once this has been decided, the patch will move to 'Ready to go', and one can start with the implementation.

Mudanças locais
As mentioned in the previous section, we try to keep local patches to a minimum. There are limited resources available to maintain patches, and to merge them with changes from upstream. Any local patches therefore have to be discussed within the #phabricator project.

The current locally-maintained parts are:
 * The MediaWiki OAuth extension (in the process of being upstreamed; see the Differential revisions and commits at https://secure.phabricator.com/T5096).
 * Security extension (Wikimedia's specific development while upstream implements their solution for private projects).
 * MediaWiki Userpage field

Configuração do site
Most of the configuration is set through the web interface. Defaults (shared between https://phabricator.wikimedia.org and e.g. https://phab-01.wmflabs.org) are set using the puppet maniphest

Configurando
A maneira mais fácil de se configurar é usando o Vagrant. Seguir esses passos deve ajudá-lo a começar:


 * Obtenha o Git
 * Obtenha o NFS se ele ainda não estiver instalado. Geralmente ele já vem instalado no MacOS X. No Ubuntu, use.
 * Obtenha a versão mais recente do VirtualBox
 * Obtenha a versão mais recente do Vagrant
 * Run the following commands in a shell:
 * Wait until the VM is built. You can then visit your Phabricator instance at http://127.0.0.1:8080, and ssh to the VM on ssh://vagrant:vagrant@127.0.0.1:2222.
 * The Phabricator install is located in `/phabricator/instances/dev/phabricator` on the VM. To edit and submit a patch:

Parabéns, você enviou sua primeira correção!

Usando uma máquina virtual do Labs
If you know how to spin up a VM on Labs, and have the rights to do so, you can create an instance with the `phabricator::labs` role. This should give you a basic setup with the same configuration as https://phab-01.wmflabs.org.

Código de migração do Bugzilla/RT para o Phabricator
Os scripts que a Wikimedia utilizou para migrar os dados do Bugzilla e do RT estão disponíveis. Note que o código de migração não está livre de bugs e que foi escrito e utilizado apenas para as configurações específicas das ferramentas da Wikimedia.