Release Names
Date: 2024-06-17
Status: accepted
Context
In our design system, we have been using semantic versioning for individual packages. We have been also talking about the version of the entire design system like we have v1 and v2. In the beginning, this was fine, as the individual packages were mostly updated together and the major versions were the same. But as the entire system evolved, we started to have different versions for different packages. We've found that this can lead to confusion about the state of the entire system, as different packages can be at different versions. To address this, we've decided to introduce a global version of the entire design system, which we're calling a "distribution" or "edition". Each distribution will also have a unique name to make it easier to refer to specific releases.
Decision
We will continue to use semantic versioning for individual packages. Each package will have its own version number that is updated independently based on the changes in that package.
In addition, we will introduce a global version of the entire design system. This version name will be updated on every major release, regardless of which packages have changed. This will give us a single version name that represents the state of the entire system.
Each distribution of the design system will thus have a unique name. We've chosen a list of names that we will use for future distributions.
List of Distribution Names:
- 🌟 Aura
- 🍃 Breeze
- ✨ Charm
- 🌈 Divine
- 💫 Essence
- 🔥 Flame
- 👻 Ghost
- 😇 Halo
- 🌞 Illumine
- 🎉 Jubilee
- ☯️ Karma
- 💡 Light
- 🌌 Mystic
- ☁️ Nimbus
- 🔮 Omen
- ❤️ Pulse
- 🗺️ Quest
- 🌠 Radiance
- 🕊️ Seraph
- 🌙 Twilight
- 🤝 Unity
- 💪 Vigor
- 🌬️ Whisper
- 🏝️ Xanadu
- 💖 Yearn
- 🌀 Zephyr
Consequences
This decision will make it easier to understand the state of the entire design system at a glance. Users will be able to refer to a specific distribution by name, which will include specific versions of all packages.
However, this will also require us to maintain and update the global distribution names. We will need to clearly communicate these changes to our users, and update our documentation to explain our new versioning system.
For a better understanding of the release names and used versions, we will stick with the following terminology.
Terminology
Version
A version refers to a specific state of a package in our design system. Each package has its own version number, which we update whenever we make changes to that package.
Release
A release refers to the process of publishing a new version of a package or the entire design system. When we make a release, we run tests, build the software, and then publish the new version so that you can use it. We provide release notes with each release that explain what changes were made.
Distribution/Edition
A distribution or edition refers to a specific state of the entire design system. Even though each package has its own version, we also provide a distribution name for the whole system. This gives you a way to talk about the state of all packages at a particular point in time.