Page MenuHomePhabricator

Improvements to Workboard Real-Time Updates
Open, LowPublic

Description

Previously, see T4900. An initial version of this feature has shipped, although it may be a little rough. Some possible improvements:

  • Currently, we pretty much refresh the whole board when we learn about an update. We could version cards and reduce the amount of data on the wire a bit. This probably isn't a huge improvement, but likely isn't terribly difficult and would be nice to have. There's already support in the code for skipping unchanged cards, it's just hard-coded to always see the client version as "1" and the server version as "2", so the server version is always "newer" and we always update every card.
  • Updates aren't cued or animated, so if two users are playing "Workboard Soccer" (a fun game where two teams, "Rightmost Column" and "Leftmost Column", try to move all the cards on the board into the opposing goal) on a board while you're trying to do real work, the experience might be a bit of a confusing mess. We'd probably prefer to queue updates and apply them either with animation, or only when the user isn't interacting with the board, or both.
  • For now, the debug shortcut "R" is still active.
  • Only card updates (not column updates) generate events and synchronize. I'm not sure how important synchronizing column events is (they probably should show a yellow "page updated" cue but I think they currently do not).
  • The board can probably update while you're dragging a card, possibly even updating the card you're dragging. We should almost certainly pause updates while the user is dragging a card.
  • The update requests don't have a sequence clock and we don't do version resolution on the client yet so it's possible that an update might cause the board to go back in time if request A is sent before request B but response A is received after response B. This is probably worth fixing but likely rare.