We've had a lot of requests for customization of phabricator which we have so far rejected as being to costly to maintain. This task is partially to explain why we are discouraging any modifications to phabricator that are not 100% necessary, and also to develop a plan for what modifications we will undertake and how we will deal with maintenance.
So one of the main questions is, who is going to take responsibility for maintaining changes when they inevitably break or cause merge conflicts with upstream? We don't have a dedicated phabricator team going forward as the current phabricator team is essentially on loan from other departments. We all have other responsibilities than phabricator. For example, any time that I (@mmodell) spend on phabricator is going to be essentially volunteer time since it will be in addition to my release engineering work. Up until now I've been granted a lot of leeway to essentially slack on other work because we all agreed that phabricator was the best use for my time and the migration was an important project for the entire organization.
I think the issue of who is responsible for phabricator going forward, and how much time we each dedicate to it, needs further discussion and perhaps an official management decision. Until that happens we are going to request that anyone who wants some customization in phabricator needs to volunteer their own time to maintain it or find some other way to ensure that the customization doesn't break or cause problems for ops when doing regular upgrades to phabricator.
When the custom functionality is confined to a phabricator extension that lives outside of the phabricator repository, the merge conflict issue is avoided making the code inherently easier to maintain. Other maintenance costs can be mostly mitigated with clean code and a few unit tests.
To help with some of these issues, I intend to write up a "contributing to wikimedia's phabricator" guide that will suggest best-practices for upstreaming functionality, testing and future-proofing code, and so on.
I'd love to find out how others feel about the issues raised here. I'm especially curious how we will deal with allocation of time to ongoing phabricator maintenance after the various migrations are complete, when phabricator is no longer a top priority project.