Real-time boards lists - Backend
Problem
Issue Boards are insufficient facilitating collaborative planning. Constant page reloads are not intuitive, especially if there are multiple people individually looking at the same board during a meeting.
Proposal
Collaborate with ~"group::memory" on https://gitlab.com/gitlab-org/gitlab-ce/issues/43500 to make Issues within Issue Lists "real time".
Expected Behavior
Anytime an attribute on an issue changes, that change is reflected on the Issue and corresponding Issue List(s) without needing to refresh the page. This should include:
-
Label is added/removed from Issue -
Label is renamed on Issue -
Milestone is added, removed, or changed -
Assignee(s) is added, removed, or change -
An Issue is moved to another project -
An Issue's weight is added, removed, or changed -
An Issue's relative priority is changed -
An Issue's Title is updated -
An Issue's confidentiality settings are changed. -
Anything else to implicitly call out?
This change is limited to Issues and how they are presented within Issue Lists. There will be future MVCs for additional Issue Board behaviors such as Issue List order and Board Configuration.
Technical Considerations
If moving to GraphQL is our long term goal, we should consider:
- Implementing this with [Subscriptions[(https://graphql-ruby.org/subscriptions/action_cable_implementation.html) via anycable-graphql or something similar.
- Implementing this with Apollo, as it now has decent support for local state, instead of VueX.
Original details
-------- V2 -------------
Description
- Board config changes: This is not in scope.
- List changes. I.e. if somebody adds/removes/reorders a list on a board: This is not in scope.
- When certain attributes/data changes in an issue (title, description, others): This is not in scope.
- What is in scope:
- An issue changes from open to closed or vice versa. Then it may appear on a different list in the board. This is in scope.
- An issue changes labels/assignees/milestones. Then it may appear on a different list in the board or not appear anymore. This is in scope.
--------- V1 -----------------
Problem
The issue board already feels like a UI piece that reflects real time.. except its not.
Also, the issueboard has 2 usecases where real time ness is important:
- when doing a remote meeting and I change the label on a certain issue.. the one screencasting their screen with the issue board should not have to refresh their tab in order to see those changes.. as to avoid wasting time on an issue not relevant.
Original content issue: This is a problem for us at the moment as we have up 10 members of the team using the board. It has been annoying to keep track of the board as there is the constant need to manually refresh it to see any updates.
- for a non remote office. the issue board could be alway on screen on some monitor.. as to let everybody be aware of how issues are moving through their pipeline for example... or what still needs work etc.
Proposal
Make issue boards real time.. its already built in vue and is one of our prime UI views.