Page MenuHomePhabricator

Plan the future of "Bucketing" Query UIs
Closed, DuplicatePublic

Description

Differential currently has a unique "bucketing" query UI, where the "Active Revisions" filter is hard-coded to split revisions into multiple buckets ("Blocking Others", "Action Required", "Waiting on Others").

It seems legitimately desirable to show this kind of composite dashboard rather than splitting these buckets across multiple pages. For normal users, the number of items in each bucket is small and these buckets approximately capture the most relevant information in the majority of use cases. In Audit, where we don't have buckets, this is particularly apparent: "Needs Audit" and "Problem Commits" have about equal strength in terms of needing attention, but them being on separate tabs feels junky.

However, there are also a number of disadvantages. Some are particular to the implementation of buckets in Differential:

  • The Differential bucketing rules are inaccurate or confusing in some cases. In other cases, they're accurate but complex and it's sometimes unclear to users why a revision is in a particular bucket (some discussion in T1279, and elsewhere).
  • Some users just want different buckets (T4144, T4055, T2511) -- both different from the defaults, and different from one another.

Some are common to any bucketing:

  • Bucketing is entirely application-side so there's no way to paginate buckets, and pagination isn't technically feasible with the current approach. Differential just executes the query with a huge page size. This is reasonable because few users have thousands of revisions, but it is more possible to have thousands of audits or thousands of tasks.
  • Bucketing is currently hard-coded and won't generalize cleanly to ApplicationSearch-based Conduit methods.

Driving this purely from the technical constraints we probably end up with some kind of "dashboard queries" which are composed of other queries. Maybe these are even real dashboards, although this feels needlessly powerful and probably confusing (there is no reason for users to turn /differential/ into a list of the latest image macros and calendar events, and letting them do that will necessarily make it harder for them to do more reasonable things).

This feels complex, but tractable. I think the biggest issue is that it means each bucket needs to be individually expressible as a query. This is fine for Audit, but:

  • There's no way to express any of the Differential buckets with a query right now.
  • There's definitely no way to express all the extra crazy junk users want with a query.
  • There's absolutely no way to express things in T9263 with a query; the naive fix for it is this:

Many of these bucketing rules can't be executed in the database, or can only be partially executed in the database.

So this probably reduces to:

  • Figure out how to reasonably provide these high-complexity filtering/querying rules.
  • Build meta-queries out of queries.

This is only slightly less complex than the original issue. This also doesn't specifically provision for making bucketing rules more transparent, although maybe that's OK since the bucketing confusion may mostly be a result of bucketing errors.

Related Objects

Event Timeline

epriestley raised the priority of this task from to Normal.
epriestley updated the task description. (Show Details)
epriestley added a subscriber: epriestley.
alexnb added a subscriber: alexnb.Oct 2 2015, 6:24 AM
eadler added a project: Restricted Project.Feb 23 2016, 6:48 AM
eadler moved this task from Restricted Project Column to Restricted Project Column on the Restricted Project board.Feb 23 2016, 6:58 AM
joshma added a subscriber: joshma.Feb 24 2016, 9:48 PM
eadler moved this task from Restricted Project Column to Restricted Project Column on the Restricted Project board.Mar 9 2016, 10:11 PM
chad added a comment.Mar 13 2016, 10:31 PM

T10579 mentions being able to query / build panels based on multiple states of a Diff or Audit.

eadler moved this task from Restricted Project Column to Restricted Project Column on the Restricted Project board.Apr 7 2016, 6:05 PM
eadler moved this task from Restricted Project Column to Restricted Project Column on the Restricted Project board.Apr 7 2016, 6:07 PM
eadler moved this task from Restricted Project Column to Restricted Project Column on the Restricted Project board.Apr 18 2016, 12:24 AM
scode added a subscriber: scode.May 11 2016, 7:14 AM
eadler moved this task from Restricted Project Column to Restricted Project Column on the Restricted Project board.May 13 2016, 6:02 PM

I'm going to merge this into T10939, which answers this question in practice if not in theory.

We don't have a fix for paginating buckets. Behavior for the forseeable future is to confuse the user if they have more than 1,000 open revisions, but it is plausible that there are zero real users affected by this limitation today.