Page MenuHomePhabricator

Build communication framework for Codex releases
Open, Needs TriagePublic

Description

Current state 2022-10-26
  • Deprioritizing as we're now announcing "breaking changes" consistently, though we could probably still use the artifacts in the acceptance criteria.
Background/Goal

In a June 29 2022 Slack thread, @AnneT and @SimoneThisDot surfaced a risk with regard to our current Codex release communications:

End users do not have a way to understand how to solve breaking changes. The information provided in the changelog (this was raised as Abstract reached out as they had no idea what to do to fix the breaking changes). Maybe we should have an “breaking changes page” in the documentation.

We discussed a need to add some rigor around our Codex release communications process.

User stories

As a contributor, given that I have implemented Codex in my project, I want to access and understand changes to Codex as they are released, particularly "breaking" changes, so that I can take action if needed.

Considerations
  • T311630 has also been raised; considering this out-of-scope for this task.
  • Nuance of merge / NPM / MediaWiki release
    • Major version update for breaking changes (when we're in 1.0)?
  • Only DST engineers can push Codex releases right now
Acceptance criteria
Open questions
  • How can we announce breaking changes with enough time for teams to prepare for them?
  • How can we better document breaking changes in the CHANGELOG, e.g. brief instructions on how to handle them?
  • Should we include release notes on the docs site, perhaps by creating a page that displays the CHANGELOG?
  • How should we announce releases internally for now? Posting in #talk-to-design-systems-team?
  • When do we switch over to a wider announcement process; e.g. sending release notes to mailing lists? Beta release? 1.0.0? Can we announce Codex to these wider audiences before the first release notes go out, so that the release notes aren't the first time people are hearing about Codex?
  • Who is responsible for executing release comms? Engineer? TPgM? EM? PM?
    • The engineer doing the release, supported on comms, for example on major releases by PM.
  • Should we announce on wikitech-l and design-l?
    • Definitely moving forward, we need to increase visibility of Codex releases.

Event Timeline

ldelench_wmf updated the task description. (Show Details)
ldelench_wmf moved this task from Inbox to Needs Refinement on the Design-System-Team board.
ldelench_wmf added a subscriber: SimoneThisDot.

Change 816859 had a related patch set uploaded (by Anne Tomasevich; author: Anne Tomasevich):

[design/codex@main] docs: Add step to releasing docs to document breaking changes

https://gerrit.wikimedia.org/r/816859

Change 816859 merged by jenkins-bot:

[design/codex@main] docs: Add step to releasing docs to document breaking changes

https://gerrit.wikimedia.org/r/816859

How can we announce breaking changes with enough time for teams to prepare for them?

Once Codex is stable and our version numbers follow semver(*), we could consider OOUI's practice of doing a "deprecating change" in one release, followed by a "breaking change" in the following release.

For example, let's say that, some time after releasing Codex 0.1.2, we decide we want to change the foo prop from a string to some sort of complex object type. We would do the following:

  • In version 0.1.3, change the type of foo to the complex object type, but still accept strings for backwards compatibility. If a caller passes in a string, it still gets the same behavior it got in version 0.1.2, but it also gets a warning saying that passing in a string is deprecated and that it should pass in an object instead. Announce this as a "deprecating change".
  • In version 0.2.0, remove the backwards compatibility code. Passing in a string now results in an error. Announce this as a "breaking change".

This way, users of the library can upgrade to 0.1.3, see the warnings, update their code, then upgrade to 0.2.0, all without anything breaking and without us needing to coordinate a series of commits across many repos that all need to be merged at the same time.

(*) We'll have to think about the implications of real semver, because it means you have to increment the major version every time you make a breaking change. If we were on version 1.2.3, then a deprecating change would take us to 1.3.0, and a breaking change to 2.0.0. This is both good (because it discourages us from making breaking changes) and bad (because it makes it more annoying to make breaking changes when we do need them). OOUI has stayed on 0.x.y (which allows breaking changes between e.g. 0.5.2 and 0.6.0) and never gone to 1.0, but we probably do want to do a 1.0 release at some point. When we do that, we'll have to get a lot more serious about stability and backwards compatibility.

For now, however, while we're still on -alpha or -beta versions, I think we can make breaking changes a bit more liberally. But it would still be a good idea to start practicing the deprecating change + breaking change pattern, because that makes it easier for library users to deal with these changes. Instead of using the traditional semver style, we'd make a deprecating change in 0.1.0-alpha.12 and the corresponding breaking change in 0.1.0-alpha.13, for example.

Change 832360 had a related patch set uploaded (by VolkerE; author: VolkerE):

[design/codex@main] docs: Add note on what a 'breaking change' means

https://gerrit.wikimedia.org/r/832360

Change 832360 merged by jenkins-bot:

[design/codex@main] docs: Add note on what a 'breaking change' means

https://gerrit.wikimedia.org/r/832360

Change 849191 had a related patch set uploaded (by VolkerE; author: VolkerE):

[mediawiki/core@master] Update Codex from v0.2.1 to v0.2.2

https://gerrit.wikimedia.org/r/849191

Change 849191 merged by jenkins-bot:

[mediawiki/core@master] Update Codex from v0.2.1 to v0.2.2

https://gerrit.wikimedia.org/r/849191

ldelench_wmf lowered the priority of this task from Medium to Low.Oct 26 2022, 3:58 PM
ldelench_wmf updated the task description. (Show Details)
ldelench_wmf moved this task from Needs Refinement to Backlog on the Design-System-Team board.
AnneT raised the priority of this task from Low to High.Oct 12 2023, 9:08 PM
AnneT moved this task from Backlog to Needs Refinement on the Design-System-Team board.

We've done some of this, but should figure out and document the rest soon since 1.0 is imminent.

egardner raised the priority of this task from High to Needs Triage.Oct 16 2023, 11:09 PM
egardner moved this task from Needs Refinement to Backlog on the Design-System-Team board.