Phabricator/Code/nl

Dit document beschrijft het ontwikkelproces van deze Wikimedia's Phabricator instantie. Phabricator is geschreven in PHP, net als MediaWiki, dat zou het starten met het ontwikkelen moeten helpen. We kijken eerst hoe Wikimedia Phabricator gebruikt en wat we bij de ontwikkeling verwachten. Achteraf maken we dan wat opmerkingen over hoe we beginnen met de actuele ontwikkeling.



Phabricator op de Wikimedia
Wikimedia gebruikt een Phorge (voorheen bekend als Phabricator) instantie met minimale wijzigingen van stroomopwaarts omdat het onderhouden van lokale patches omslachtig is. De uitzonderingen zijn de extensies, die in productie in een [|afzonderlijke repository] staan en dus niet regelmatig samengevoegd hoeven te worden. Alle andere wijzigingen worden dus via de upstream gedaan. Dit lijkt een beperking, maar in de praktijk reageren de upstream beheerders erg vlot op suggesties.



Wikimedia Phabricator werkschema fouten
Het is belangrijk om de levensduur van een bug te begrijpen voor aan een van de taken te beginnen. Er zijn twee projecten: #phabricator voor WMF-specifieke bugs en #phabricator-upstream voor algemene Phabricator/Phorge bugs. Software bugs en uitbreidingsverzoeken vallen in de tweede categorie.

Het Phabricator-upstream werkbord toont het proces dat door taken wordt doorlopen voordat ze upstream aangemaakt worden:


 * Backlog: dit is waar standaard de taken komen te staan. Geweigerde (stalled) taken staan daar ook.
 * Klaar om te gaan: taken die mogelijk in de upstream bug tracker kunnen gaan. Wanneer u dit doet, moet u de richtlijnen voor bugrapporten en de richtlijnen voor functieverzoeken volgen.
 * Upstreamed: Taken die upstream zijn gerapporteerd. Voor sommige taken kan dit verwijzen naar de oude upstream (secure.phabricator.com tot 2021), voor sommige taken kan dit verwijzen naar de huidige upstream (we.phorge.it).
 * Upstream opgelost
 * Feedback van Upstream

Nadat een taak is 'upstreamed', dan geeft die ontwikkelaar hun beoordeling door met suggesties over hoe de functie moet worden geïmplementeerd. De ontwikkelaar kan nu beginnen met de implementatie.

Een ontwikkelaar kan besluiten dat een functie niet in diens plannen past. De taak in Wikimedia Phabricator wordt dan verplaatst van het #phabricator-upstream project nar het #phabricator project, het eindigt dan in de de discussie fase: is die functie belangrijk genoeg om lokale patches te blijven krijgen? Als er een beslissing valt dat dat zo is, kan er iemand met de implementatie beginnen.

Start niet alvast met de implementatie voordat duidelijk is of upstream of de WMF beheerders uw patch zullen accepteren.



Lokale aanpassingen
Zoals eerder aangegeven proberen we de lokale patches tot een minimum te beperken. Er zijn beperkte bronnen beschikbaar om patches te onderhouden en ze samen te voegen met wijzigingen van upstream. Daarom moeten alle lokale patches eerst besproken worden in het project #phabricator. Het onderhouden van een phabricator extensie is veel minder werk,als tenminste het gebruik van nieuwe of onstabiele API's van de Phabricator's core wordt voorkomen. Ook al is er bij extensies geen spraken van het samenvoegen van code en mogelijke code conflicten, er is natuurlijk wel elke keer testen nodig bij wijzigingen in de upstream. Phorge heeft geen 'bevroren' API's waar u dus veilig van afhankelijk kan zijn omdat er geen aanpassingen meer aan worden gedaan. De huidige code van de Wikimedia Phabricator instantie zelf:
 * https://gitlab.wikimedia.org/repos/phabricator/phabricator
 * https://gitlab.wikimedia.org/repos/phabricator/arcanist

De huidige lokaal onderhouden extensies zijn:


 * Meerdere aanpassingen in een code repository, zoals de MediaWiki OAuth extensie (niet geüpstreamd; zie de verschillen in revisies en commits op https://secure.phabricator.com/T5096), code gerelateerd aan beveiliging, het velde MediaWiki Userpage op de Phabricator gebruikerspagina's, enz.
 * Antivandalisme, nog steeds in Gerrit en te verhuizen naar GitLab.



Website configuratie
De meeste configuratie kan via de webinterface worden gedaan. Standaardwaarden (gedeeld tussen https://phabricator.wikimedia.org en bijvoorbeeld https://phab.wmflabs.org) worden ingesteld met behulp van de puppet maniphest of het Scap sjabloon (zie T239355).



Instellen
Zie Phabricator/Local Dev Environment.

Een andere manier om het in te stellen is met gebruik van MediaWiki-Vagrant via de rol 'phabricator'. Volg de stappen op MediaWiki-Vagrant om dat te installeren, schakel daarna die phabricator rol in met


 * Toegang tot de Phabricator met de URL: http://phabricator.local.wmftest.net:8080/
 * De installatie van Phabricator staat op `/srv/phabricator/` (?) op de VM.



Cloud VPS VM gebruiken
Als u weet hoe een VM kunt draaien op Cloud VPS en daarvoor de rechten heeft, dan kunt u een instantie met de `phabricator::labs` rol aanmaken. Dan heeft u een basis instelling met dezelfde configuratie als https://phab.wmflabs.org.



Migratie code van Bugzilla, RT, Mingle, Trello naar Phabricator
De scripts die Wikimedia heeft gebruikt voor de migratie van gegevens van Bugzilla en RT naar Phabricator is beschikbaar. Deze migratie code is niet foutenvrij, het is alleen geschreven en gebruikt voor specifieke configuraties van Wikimedia's hulpmiddelen. Er zijn ook andere migratie scripts, bijvoorbeeld het project GStreamer gebruikte in 2015 een phill script van Emanuele Aina om hun gegevens te importeren uit Bugzilla in Phabricator.

Er zijn gegevens gemigreerd uit Mingle naar Phabricator met een script beschikbaar in P129.

Ook de scripts die gegevens uit Trello naar Phabricator overgezet hebben zijn beschikbaar. Zie T821 voor meer informatie.