META: Global and contextual navigation

Resources

FE @annabeldunstone & @iamphill

Background

Navigation remains a problem in GitLab today, this has been pointed out to us many times in feedback, in issues when we changed the left menu into a dropdown/hamburger and in usability testing sessions.

This issue sets out a first step in the right direction and will be delivered over a series of 2-3 releases.

In 9.4 we will have a parallel navigation paradigm enabled by a feature toggle, mostly for internal and community testing and gather feedback. We will improve this in 9.5 based on our own experiences, usability testing and feedback and look to roll this out globally after 9.5 or 9.6 depending on the feedback.

Once we roll this out, there will be no option to go back to the old navigation as we can't maintain two sets of navigation in the code.

Proposal

  • Create a feature toggle new-navigation and allow users to enable this through rudimentary UI on /profile/features
  • When the toggle is enabled, the current top navigation header should be replaced by the designs below
  • When the toggle is enabled, the current second level navigation should no longer be displayed
  • When the toggle is enabled, the new contextual left navigation as per the designs below should appear

Design

navigation

Top bar - global navigation

  • #34021 (closed) (9.4) Move global navigation links to top bar
  • #34022 (closed) (9.4) Change top bar style
  • #34402 (closed) (9.4) Color palette for new navigation

Sidebar - contextual navigation

  • #34023 (closed) (9.4) Move contextual navigation to sidebar
  • #34024 (closed) (9.4) Add header with current context to sidebar
  • #34026 (closed) (9.5) Add fly-out dropdown to contextual navigation
  • #34027 (closed) (9.5) Add icons to contextual sidebar
  • #34028 (closed) (9.5) Make contextual sidebar collapsible

Breadcrumbs

  • #34029 (closed) (9.4) Move breadcrumbs to content area
  • #34030 (closed) (9.4) Add contextual breadcrumbs
  • #34031 (closed) (9.4) Move project switcher to breadcrumbs in content area
  • #34032 (closed) (9.5) Add group/project/user avatars to global breadcrumbs
  • #34033 (closed) (9.5) Move action buttons to breadcrumbs bar

Mobile

  • [] #34034 (closed) (9.4?) Change pagination on mobile top bar to arrows
  • #34035 (closed) (9.4?) Make global links on top bar responsive
  • #34036 (closed) (9.4?) Add contextual navigation on mobile

Feature toggle

  • #34037 (closed) (9.4) Add feature toggle to profile dropdown
  • #34038 (closed) (9.4) Add feature toggle to settings

Implementation notes

As discussed with @DouweM the frontend team can go ahead with this work behind a simple cookie check. Once the frontend work is completed, we can hand over to backend to wire in the Flipper feature toggle.

Collecting feedback

We will collect and collate feedback from the following sources

  • This issue
  • GitLab release post blog
  • Hackernews release announcement

Based on the feedback, we will look to make improvements in 9.5 and possibly 9.6. Depending on the nature of the feedback and how much more work we feel needs to be done we will look to activate the feature for everyone on GitLab.com and make it available as the default (and only) option for GitLab.

Future work

The following items are out of scope for 9.4 release, and will look to target in 9.6 and future releases:

  • New iconography
  • Improve mobile & responsiveness

Original issue

We have completed 2 rounds of UX testing on GitLab's navigation. The first observed users interacting with the current navigation. The second was conducted using the following prototypes:

Prototype A: https://framer.cloud/fyEvF/index.html

Prototype B: https://framer.cloud/jveno/index.html

After meeting as a team we have decided to look at what did work (and didn't) during the testing and identify the smallest possible change we can roll out that will improve the current navigation experience. We recognize that this small change may appear big so it is important to determine where the most benefit can be gained with the smallest effort.

Related Global vs. contextual navigation 1.3 UX Testing 1.2 UX Testing

Edited Oct 29, 2017 by Sarrah Vesselov
Assignee Loading
Time tracking Loading