Page MenuHomePhorge

Figure out if there are patches from Wikimedia's fork that are desirable to upstream in Phorge
Open, Needs TriagePublic


Over the years (since 2015) of maintaining Wikimedia's fork of Phabricator, I made numerous small changes which weren't upstreamed. Anything that seemed obviously general was upstreamed but most things were not. Many of these patches are specific to Wikimedia's use of Phabricator, however, there are likely to be some useful things that should find their way into Phorge.

One potential situation is patches where upstream Phabricator developers specifically objected to the change but where perhaps the Phorge community has a different opinion, more in line with Wikimedia's perspective than with Phabricator. I don't know if this will be the case but some of the changes might be worth at least considering.

For starters I intend to go through the list (P3) and identify anything that I feel would be potentially useful, then for each promising patch I'll either propose a new differential revision against phorge or I'll ask via other communication channels to seek feedback from the community.

Event Timeline

Features unique to wikimedia's fork

  • e95157e39bf5 Show matching context from the document body in ferret search results
    • This is not perfect but it generally works - display a snippet from the matched document and highlight the matched words - kind standard and expected from any full-text search engine. Probably not my best work as far as code quality / it's a bit hacky and performance may not be stellar, however, it's been in use at wikimedia for quite some time without any major issues that I'm aware of.
  • bba62cf52435 Hide the "hidden" fields on custom form previews.
    • This is a single line change to css that makes things a lot cleaner when you have a lot of custom forms with a lot of custom fields.
    • submitted as D25037
  • 9191d4838278 Make "task type" and date-type custom fields work in herald.
  • 3d33d1cceac7 Implement Atom/RSS discovery on Phame blog pages
  • ebfe30890b52 Add column sequence to the conduit api results for
    • This seems like an obvious omission from the conduit api for columns and the change is straightforward.
    • submitted as D25038
  • 893664bd44b8 EditEngine: 'Duplicate Form' action to create new forms from existing config.
    • This makes it much easier to clutter up your custom forms with 100 variations of your forms. It also makes it much easier to make a new form vs. starting from scratch every time. It's sort of a hack and the custom form management UI needs a lot of improvement generally, this was just the minimum change I could implement to make life slightly easier for myself and fellow Wikimedia phab admins. Not sure it's a good idea in the upstream without further changes to go with it.
  • 44a94dc04b3f Fix validation of "column" transaction type in "maniphest.edit"

Minor Security Hardening:

  • 4f4cae8e183d Limit task merges to 5 tasks per transaction (fixes T298063)
  • 1ff79a37e3a3 Require ProjectCreateProjectsCapability::CAPABILITY in order to archive projects
    • I believe this is a sane security improvement

Behavior / Product changes that were not wanted in Phabricator upstream:

  • ecb85c8350fc Use monospace font in diffusion readme views
    • I think I just forgot to propose this upsteream
  • 042685bdf637 Allow milestone columns to be reordered.
    • epriestley was very much against this idea but wikimedia's users loved it.
    • Milestones, unlike subprojects, are mutually exclusive, so a task can only be in one milestone in the superproject. This has the convenience that adding a task to a milestone automatically removes it from any sibling milestone within the same superproject.
    • Reordering milestones is convenient when you want to treat milestones as workflow steps rather than sequential numerical versions. Example:
    • upstream product vision was to use milestones exclusively for sequential things like "Maniphest V2" or sprints.
    • Wikimedia chose to abuse milestones for workflow steps and being stuck with the ordering that phabricator enforces was a big inconvenience for that use-case.