Suppose a user has a browser tab open with an issue board displayed. Any changes to the board should be dynamically refreshed. Need UX and development input and a lot more discussion to to know how we should slice and dice this goal into multiple issues.
Why do we need this?
People expect modern web apps to be dynamic and refresh automatically. Gmail pioneered this and popularized this notion and the modern frameworks support this. So GitLab should be dynamically refreshed in the places that make sense to the user.
It makes total sense in the board feature. In a typical use case, a user has a browser tab open all the day. There may be a tab open in a dedicated monitor in the office for one user, or maybe a big wall monitor where the board is open. (Think about how users have whiteboards with stickies. This is one of those use cases.) Users expect that page to be refreshed automatically as people work and make changes to issues all day.
Designs
Child items
...
Show closed items
Linked items
0
Link issues together to show that they're related or that one is blocking others.
Learn more.
@JobV@regisF@markpundsack@awhildy : Do you folks know / have an opinion / have context on what we are doing in terms of dynamically refreshing the components of pages in GitLab? I've noticed that some components are dynamically refreshed, some are not. Some components have a loading mask. Some do not. (I believe comments in discussion threads just appear.) Any guidelines or general thoughts on what we should do holistically?
As for boards, my feeling is that this should definitely have all components refreshed dynamically because of the use cases I outlined above.
@jschatz1 : There's a lot of data that's shown in the board here. I can count: Issue existence, order, label, title, assignee, the controls for the lists themselves. Would we have one issue to make everything dynamic? (This one) Or would these be multiple issues?
Thanks @dimitrieh. This definitely falls within that meta issue. Glad to know that it's already being addressed site-wide. I'll link this issue to that one if it makes sense.
@victorwu Just to give you a context. We recently migrated to VueJS and I think it's almost all over the place now. We do long polling on the Issue and MR pages for new comments and other stuff. We talked about using websockets, but we are not there yet (unfortunately). And likely won't in the near future - that means, updating everything dynamically might be difficult or too costly at the moment.
Ideally we would have real time everywhere, so we can collaborate on GitLab in real time (the possibilities are basically endless and super excited), but in practice, we can't do it yet. That being said, we should totally aim for it and I applause @dimitrieh's initiative.
Thanks for creating this issue, @victorwu! Overall, I agree that we need more components to refresh dynamics, and issue boards is a great place to start. I think starting by focusing on experiences that are targeted towards people managing a project make sense, for the reasons you listed above. This could also include burn down charts, and the milestones page. Not sure how the priority of this ranks with the rest of our work -- but could be considered important for large teams which require more management (i.e. enterprises).
We have recently begun the work of building components that will automatically poll. we have now done this on the pipelines. There are many things we would like to be real time and we have to decide which is the most important. I was thinking the merge request page would be a good next step but it would be good to figure out what is most important.
@victorwu@JobV Can we make a list of those most important things. In the meantime. I think we can put this as a stretch for this release. @iamphill may be able to hit this up if he finishes up his Deliverable in GitLab FOSS s.
@brycepj has written a class to create a subbable resource. And @selfup has recently finished up the pipelines to make them realtime so we are completely capable of making this real time. There is also the question of what this will do to the server when we poll it this much. For that we have to have a discussion with @northrup.
My first thoughts UX wise towards this is, making the cards either pop in from the bottom (as from the top, this can become to distracting with a lot of people moving issues?) of each list or grow between two other cards in for example the middle of a list (if we support sorting). Except for that let's see how it works while its real time.. I think this is one of these things we really want to have just real time..
The other thing is with lists with more than 20 items.. will it even change? as these new items would be one the next 20 or so cards.. (aka pagination)
@dimitrieh the only problem I see with adding to the bottom is that the priority of the new issue might mean the sorting of the lists put the new issue at the top, so it would automatically change the order when we receive a new issue.
I think the pagination shouldn't be an issue, new issues would have a higher ID so should therefore be top (or close to top dependant upon priority of other issues).
Based on this conversation, I'm making this 8.15 and stretch. Please update if that is wrong. Removing UX because it seems like we have it figured out, but @iamphill - please reach out to UX if there are any questions or things we can help with. Thanks!