Skip to content

Source code rules - Define organization

Goal

Determine the direction of how these "rules" should be organized from a conceptual, architectural, and UI perspective.

Decision and outcome

Based on discussions and research it has been determined organizing by branches is the preferred direction. We will use this to dive design decisions moving forward.

Options

  • Maintain current structure
    • Simplest solution
    • Preserves current mental model
    • Preservers current engineering effort
    • May not meet the goal of improving experience
    • Feature additions will continue to require updates for each
  • Reorganize but keep "buckets"
    • Medium complexity
    • Could just reorganize settings layout
    • Could look for improved groupings
    • Preservers current engineering effort
    • May not meet the goal of improving experience
    • Feature additions will continue to require updates for each
  • Combine into a single set
    • Most complex
    • Could be UI only
    • A more complex system would be to change the backend system to unify how these are implemented
    • Would need to change users mental model, but this could be mitigated with filtering/sorting/grouping
    • Most flexibility
  • An extension of RBAC
    • See #342091
    • RBAC might need two views one user-focused and one feature focus, this is the feature focus view
    • This is a revenue driver so it may be worth giving them a polished experience

Current structure

Feature Location Description
Approval rules Settings > General > Merge request approvals Multiple rules in table format
Protected branches Settings > Repository > Protected branches Multiple rules in table format
Code owners Settings > Repository > Protected branches File-based rules requirement set in protected branches
Scan Result Security Policies Security & Compliance > Policies Rules based shows on merger request approvals
Push rules Settings > Repository > Push rules Options as a settings section
Roles Project information > members Table format can include groups

Where should these be located in the product

Depending on how these are organized, we also need to consider where in the product they live

  • Replace a current settings section
  • A new setting sections
  • A new settings page
  • A view outside of settings
Edited by Mike Nichols