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-upstream para bugs gerais do Phabricator. Bugs de software e pedidos de melhorias normalmente recaem nesta segunda categoria.

The Phabricator-upstream workboard shows the process that tasks go through before being created upstream:


 * Backlog: This is where new tasks land by default. Stalled tasks can also be found here.
 * Ready to go: Tasks which could potentially go into the Phorge's bug tracker. When doing so, you must follow:
 * Phorge's guidelines for bug reports
 * Phorge's guidelines for feature requests

Feedback from Upstream: An upstream discussion is still required or still pending.
 * Upstreamed: Tasks which have been reported upstream. For some tasks this might refer to the old upstream (secure.phabricator.com until 2021), for some tasks this might refer to the current upstream (we.phorge.it).
 * Solved upstream: The related upstream Task has been closed, probably with a related commit. To reflect this specific change in Wikimedia Phabricator, it may be still necessary to plan an upgrade in Wikimedia.

Uma vez que uma tarefa foi montada, os desenvolvedores upstream respondem com sua avaliação e sugestões sobre como o recurso deve ser implementado. Neste ponto, um desenvolvedor pode começar com a implementação.

Em alguns casos, os desenvolvedores upstream vão decidir que um recurso não se encaixa em seus planos. Neste caso, a tarefa no Wikimedia Phabricator é movida do projeto # phabricator-upstream para o projeto #phabricator e acaba de volta ao estágio de discussão: esse recurso é importante o suficiente para manter os patches locais? Once this has been decided, one can start with the implementation.

To increase the chances that your code will be approved, and to avoid inconvenience, contact Phorge or the WMF maintainers to discuss about a possible implementation.

Contact Phorge (upstream)

 * Ask a new question about Phorge
 * Browse questions and answers about Phorge
 * See the Tag #affects-wikimedia in Phorge



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. It's significantly less work to maintain a phabricator extension, as long as care is taken in avoiding the use of particularly new / unstable APIs from phabricator's core. Although extensions don't require merging and potential code conflicts, they do require testing each time we pull in upstream changes. Phorge does not have any frozen APIs which are deemed safe to depend on.

The current code of the Wikimedia Phabricator instance itself:


 * https://gitlab.wikimedia.org/repos/phabricator/phabricator
 * https://gitlab.wikimedia.org/repos/phabricator/arcanist

The current locally-maintained extensions are:


 * Several customizations in one code repository, such as the MediaWiki OAuth extension (not upstreamed; see the Differential revisions and commits at https://secure.phabricator.com/T5096), Security related code, the MediaWiki Userpage field on Phabricator user pages, etc.
 * Antivandalism, still in Gerrit and to be moved to GitLab.



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.wmflabs.org) are set using either the puppet maniphest or the Scap template (see T239355).



Configurando
See Phabricator/Local Dev Environment.

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

http://phabricator.local.wmftest.net:8080/
 * Access the Phabricator instance at URL:
 * The Phabricator install is located in `/srv/phabricator/` (?) on the VM.



Usando uma máquina virtual do Labs
If you know how to spin up a VM on Cloud VPS, 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.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 [$git 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. Also note other migration scripts, e.g. the GStreamer project used a phill script by Emanuele Aina to import their data from Bugzilla into Phabricator in 2015.

Data was migrated from Mingle to Phabricator via a script available in P129.

The scripts to migrate data from Trello to Phabricator are available. See T821 for more information.