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 de Phabricator met minimale aanpassingen op de upstream versie. De reden hiervoor is de grote ontwikkelingsstappen van de upstream ontwikkelaars, het onderhouden van lokale aanpassingen is lastig. 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 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.
 * Ready to go: taken in deze kolom wachten op iemand die ze kopieert naar de upstream bug tracker.
 * Upstreamed: een taak wordt in deze kolom gezet zodra is aangegeven is dat upstream zijn.
 * Solved upstream
 * Feedback from 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, dan zal de patch worden verplaatst naar 'Ready to go', er kan dan weer 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. Phabricator heeft geen 'bevroren' API's waar je dus veilig van afhankelijk kan zijn omdat er geen aanpassingen meer aan worden gedaan. The current code of the Wikimedia Phabricator instance itself:
 * 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.
 * Antivandalism, still in Gerrit and to be moved to GitLab.



Website configuratie
De meeste configuratie kan via de webinterface worden gedaan. De standaarden (gedeeld tussen https://phabricator.wikimedia.org en bijvoorbeeld https://phab.wmflabs.org) worden in puppet maniphest ingesteld.



Instellen
See Phabricator/Local Dev Environment.

De eenvoudigste 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. Om een patch te bewerken en te verzenden:



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.