Feature Request - Improve threaded discussion

Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.

Proposal

For efficient discussion, it is essential to conclude discussions. Therefore GitLab offers threads.

We propose to unify the user experience for discussions and to encourage a workflow that leads to structured and efficient discussion. Further, we propose changes to how discussions appear and are interacted with in the activity view.

Unification

Currently, threads are only supported on epics, issues, tasks, and merge requests, and only issues and merge requests support resolving them. We propose to:

  1. Drop normal comments and support only threads.
  2. Support resolving threads wherever threads are supported.

In case there are strong arguments to keep the complexity of having two types of discussion systems, we propose to:

  1. Have an option as feature-flag, site-wide, or per group or project to make threaded discussion the default. It is not an individual user's preference, see note in workflow below.
  2. Replying to a normal comment via e-mail should turn the comment into a thread, not a new top-level normal comment, same as through the web.
  3. Sending an email to an issue email address, should also result in the configured default type of comment, normal or threaded (see 3).
  4. Support threaded discussion everywhere.

Workflow

The conclusion of a discussion should result in one or more of three outcomes:

  1. an updated issue description,
  2. new discussion threads on the same issue,
  3. new related issues.

After that the resolved thread is mainly archival. It is unlikely that somebody interacts with it, but unresolving should be support as is currently the case. The vertical space it consumes should be minimal.

NOTE: A normal comment can take plenty of vertical space and it is not clear whether it represents an open discussion or not. It should therefore not be an individual user's choice to comment "normally" or threaded.

Visualisation

  1. Introduce a one-line collapsed view for threads showing the first line of the first comment, truncated to n chars.
  2. Show all resolved threads collapsed by default, with option to toggle individual and all.
  3. Show all unresolved threads expanded by default, with option to toggle individual and all.
  4. Add an option to show unresolved threads only.
  5. Within the flow of an expanded thread, show the points in time it got resolved and unresolved.
  6. Show resolving and unresolving as history events.

Moving things around

Discussions tend to get out of scope. It should therefore be easy to move parts of discussions.

To keep things simple, there is only one level of threads, no nesting of threads.

Inspired by and improving upon Zulip, we propose to enhance the threaded view with actions to:

  1. Move an individual comment to form a new thread on the same entity
  2. Select additional comments to move along as well.
  3. Moved comments leave a link to the new location, using minimal vertical space
  4. Move selected comments to a new thread on a new issue.
  5. Add the new issue as:
    • child issue in case the current entity is an epic
    • linked issue in case the current entity is an issue, task, or merge request

Discussion of this proposal

We propose to use the proposal for its own discussion - insofar as currently possible with GitLab.

Tier

We propose to enhance threaded discussion for all tiers on the entities available for the corresponding tier.

Edited by 🤖 GitLab Bot 🤖