Skip to content

v9 release strategy #23914

@Hotell

Description

@Hotell

Story 🧚‍♀️

Current behaviour

We trigger v9 release pipeline manually.

Why?:

  • to mitigate releases overload and spamming npm registry
  • to be able troubleshoot/identify which version introduced particular issue or regression

This will trigger following workflow:

  • create production builds of v9 packages
  • run beachball
    • bumps package versions based on existing change files
    • generates/updates Changelogs
  • publish packages to npm registry
  • fix version mismatches created by beachball via automation ( TBA )

New behaviour (proposal)

Release approach

Going forward we wanna adhere to/pick one of the following workflows:

1. Manual release (anytime)

Releases are triggered manually as of today with improved tooling so there are no issues and manuall follow-ups needed.

  • releases are triggered manually
  • triggered as necessary

Implementation Effort: Medium

Why this approach:

  • get fixes to partners ASAP
  • mitigate releases overload and spamming npm registry
  • better tracking/troubleshooting possible regression that might happen in UI library

How will I get Bug fixes:

  • immediately after fix is merged and PoC triggers release pipeline

If there is "high severity" issue, once there is capacity it will be immediately worked on. After PR with fix is merged, we will trigger release immediately.

This will result in:

  • patch release (if there are only patches present since last release)
  • minor release (if there is at least one feature/minor change since last release)

2. Manual release (milestone aligned)

  • releases are triggered manually
  • triggered by milestones end ( strictly follow planned items for particular milestone).

Implementation Effort: Medium

Why this approach:

  • aligment of our release cadence with milestones to follow standard OSS roadmap practices + Public relations announcement
  • mitigate releases overload and spamming npm registry
  • better tracking/troubleshooting possible regression that might happen in UI library

How will I get Bug fixes:

  • with next planned release / milestone end

If there is "high severity" issue, it will be acoomodated based on priority and current milestone. If it has higher severity than issues and features already planned for active milestone, it will be added to this milestone and when fixed released within upcoming release window.

This will result in:

  • patch release (only on milestone end if there are only patches present since last release)
  • minor release (only on milestone end if there is at least one feature/minor change since last release)

3. Semi-manual release

  • minor releases are triggered manually with milestone alignment
  • releases are triggered automatically for fixes

Implementation Effort: High

Why this approach:

  • get fixes to partners ASAP
  • aligment of our release cadence with milestones to follow standard OSS roadmap practices + Public relations announcement
  • mitigate releases overload and spamming npm registry
  • better tracking/troubleshooting possible regression that might happen in UI library

How will I get Bug fixes:

  • immediately after fix is merged or via next planned release (milestone end), whichever is earlier

This will result in:

  • patch release (daily automated releases that would accommodate patches only)
  • minor release (only on milestone end and if there is at least one feature/minor change since last milestone release)

Bug fixes approach

As we strictly follow semver we don't plan to back-port fixes to previous minor versions.

Scenario Example 1 (only patches):

  • customer A uses v9.1.0
  • fluent team merges various PR's that are marked with type "patch" ( will trigger patch bump when releasing )
  • customer A (on v9.1.0) reports and issue
  • in the meantime we release -> as there are only type: patch commits fluent bumps to v9.1.1
  • we fix the issue of customer A, merge PR
  • we release -> the fix is type:patch so fluent bumps to v9.1.2

Scenario Example 2 (patches+minors):

  • customer A uses v9.1.0
  • fluent team merges various PR's that are marked with at least 1 type "minor" ( will trigger minor bump when releasing )
  • customer A (on v9.1.0) reports and issue
  • in the meantime we release -> as there was at least 1 type: minor commit, fluent bumps to v9.2.0
  • we fix the issue of customer A, merge PR
  • we release -> the fix is type:patch so fluent bumps to v9.2.1
  • customer A , bumps to v9.2.1 where he will have his issue fixed. Also this version will contain new features - that's expressed by 2 a minor number
  • 💡 NOTE: we wont back-port this fix to 9.1.0 release thus we wont release this as 9.1.1

Related Issues and blockers

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions