Skip to content

Milestone dates integrated into epics

Mockup

image

Background

https://youtu.be/pUNS2me8_j4

  • Currently, you can set epic start and end dates manually. This is good for top-down planning, when you want to set an estimate of when an epic begins and ends, or you want to set target dates.
  • For bottoms-up planning or for tracking, you already have a set of issues with milestones associated with them. So when you group multiple issues into an epic, you want the epic to reflect the milestone dates of those issues. In particular, this will help you understand when the epic will actually start and and actually end, based on the assigned issues.

Description

Implementation of the epic date changes in https://gitlab.com/gitlab-org/gitlab-ee/issues/6157

  • An epic has two date fields, a planned start date field and a planned end date field.
  • For each date field, the user can choose one of two modes for it to be in: Fixed and From milestones.
  • When in Fixed mode, the user manually sets the date value.
  • When in From milestones mode, the value is determined automatically (and dynamically):
    • This is based on the issues that are assigned to the epic currently.
    • For the planned start date field, look at all the issues assigned to the epic currently. For all those issues, look at all the milestones that are assigned to those issues. For all those milestones, find the earliest start date of those milestones (closest to negative infinity time). That earliest start date value becomes the planned start date field here.
    • If no earliest start date exists, the planned start date is null.
    • Similar algorithm for planned end date.
  • When in From milestones mode, we also want to show to the user (in the epic sidebar view), which milestone is the one that contributes to the earliest start date, per the algorithm above.
  • Per the design of https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/6448#scenarios-when-this-composite-column-needs-to-be-updates, the planned start date (and planned end date) are updated in the system every time there is a change in the system that would trigger it, per the logic above.

So in the sidebar view of an epic, we want to show for the planned start date and planned end date:

  • Which selection the user has chosen: Fixed vs From milestones.
  • It should show the Fixed manual date.
  • It should show the From milestones dynamic/automatic date.
  • When you hover over the From milestones dynamic/automatic date, it should show which milestone contributed to that date.

🔍 Design specs with the most up-to-date solution

Empty: Editable Empty: Read-only Filled: Editable Filled: Read-only Edit Hover: From milestones Hover: feature explanation Hover: warning
image image image image image image image image

Only show a warning icon (and tooltip) for selected dates (even if the user doesn't have permission to edit). Unselected dates don't have icon nor tooltip. Use these messages.

  • If planned start date > planned finish date: This date is after the planned finish date. So this epic won't appear in the roadmap.
  • If planned finish date < planned start date: This date is before the planned start date. So this epic won't appear in the roadmap.

API:

field name read, write
start_date_fixed read/write
start_date_from_milestones read-only
start_date_is_fixed read/write
due_date_fixed read/write
due_date_from_milestones read-only
due_date_is_fixed read/write

Scope

For this issue, only the BE changes, along the with API are required. The FE changes are in https://gitlab.com/gitlab-org/gitlab-ee/issues/6927 and https://gitlab.com/gitlab-org/gitlab-ee/issues/6928.

This page may contain information related to upcoming products, features and functionality. It is important to note that the information presented is for informational purposes only, so please do not rely on the information for purchasing or planning purposes. Just like with all projects, the items mentioned on the page are subject to change or delay, and the development, release, and timing of any products, features, or functionality remain at the sole discretion of GitLab Inc.

Edited by 🤖 GitLab Bot 🤖