Page MenuHomePhabricator

Investigate options for Phragile for the switch to Phabricator Projects V3
Closed, ResolvedPublic

Description

As you may have seen in T126982 there are some changes in Phabricator coming soon that will affect Phragile. Phragile is currently using the maniphest.query API method to retrieve all the task information including story points. After the switch to Phabricator Projects V3 the story points will no longer be included in the API response of maniphest.query since the story points will not be stored in a custom Maniphest field anymore but in a dedicated field that you can enable in Phabricator’s Maniphest config.

There is a new Conduit method called maniphest.search which can do the same and more than maniphest.query and it contains the story point estimates, however, it requires a little bit more work to get all the tasks of a project (task limit of 100 with pagination) and it also has a different response structure. We need to investigate how to keep Phragile running after the switch.

Option 1: Don’t use Maniphest.Search
Christopher already submitted a patch to the sprint extension that would just allow us to use a Conduit method he added which will work the same way the “old” maniphest.query worked. This would be very cheap to implement but is a very hard dependency on the sprint extension.

Option 2: Only use Maniphest.Search, abandon Maniphest.Query
We could throw away all the maniphest.query code and only use maniphest.search. We would need to rewrite some code here and there and also modify all the old snapshot since those currently store raw maniphest.query responses which wouldn’t be compatible anymore. That would of course break any non-Wikimedia Phragiles out there.

Option 3: Support both, keep snapshots as they are
We could fetch tasks using either maniphest.query or maniphest.search depending on some user defined setting. Since we would need some “ResponseHandler”-thing (probably a bad name) for both response structures anyway it would be relatively easy to leave the old snapshots as they are and use the new response structure on the new ones and then use either the ManiphestQueryResponseHandler or the ManiphestSearchResponseHandler depending on the snapshot’s structure.

Option 4: Support both, adjust snapshots
This is basically the same as option 3 but we either try to make the old snapshots look like they came from a maniphest.search call or we come up with a new way to store snapshots.

Event Timeline

Jakob_WMDE raised the priority of this task from to Needs Triage.
Jakob_WMDE updated the task description. (Show Details)
Jakob_WMDE added a project: Phragile.
Restricted Application added subscribers: StudiesWorld, Aklapper. · View Herald Transcript

I’m kind of leaning towards option 4. I like being able to support both methods and I don’t like the inconsistent snapshots data that option 3 would leave us with. Options 1 and 2 would definitely be less work though. Hopefully I missed something and someone else can come up with a much simpler solution! :)