Versioning (SemVer vs. Dated) #33
Replies: 8 comments 6 replies
-
I think the current versioning scheme is better. Including a long date code in the name makes it sort of hard to read sometimes and overcomplicates things. If people want to know the release date, they can simply check the GitHub repo for changelog and time of release. |
Beta Was this translation helpful? Give feedback.
-
I've been thinking of something like |
Beta Was this translation helpful? Give feedback.
-
Do we even need to have a shared version number for the whole toolkit? I see the toolkit as a bundle of components that I can pick and choose. I think it makes sense for these components to have their own independent versioning. When there is a major change to the whole toolkit, we can use the date to address it like Windows does (for example, Community Toolkit Fall 2024 Update). All the package versions will be bumped accordingly and the new versions will be noted in the release notes. I'm quite fond of SemVer so I kinda want it to stay. |
Beta Was this translation helpful? Give feedback.
-
How about using the [major].[minor].[build].[date].[revision]
Example: Both of this packages share the same .NET version, they are part of some bigger change, and individually they might have some fixed and improvements, one being 3 while the other 6, the date specifing when the update occured. What do you think? |
Beta Was this translation helpful? Give feedback.
-
Last call for any input on this topic. I think this is the biggest open question remaining about the project versioning moving forward in this new space. And I'm still not sure which path we want to go down. Will put a call out in a couple of places to get some more eyes here and hopefully some more opinions. |
Beta Was this translation helpful? Give feedback.
-
I'd certainly prefer staying with semantic versioning. It makes it easier to talk about the Toolkit, including figuring out which version has the features you need and which versions are compatible with each other. |
Beta Was this translation helpful? Give feedback.
-
I would prefer semver 2.0.0 rules be followed. When a MAJOR release of the "main" WCT package updates (due to breaking changes), all smaller packages update MAJOR release as well since they (all?) have dependencies on the main/shared packages anyways (CommunityToolkit.WinUI / CommunityToolkit.Common). MINOR and PATCH versions can then stray to follow the semver rules. To relieve confusion over the latest package versions semver metadata rules can be used for build dates. Nuget and GitHub readme's and perhaps even release notes can all display a short table indicating the latest package versions to ensure newcomers are aware of the system. I'm not a fan of the WASDK breaking away from semver rules ~10 months ago. |
Beta Was this translation helpful? Give feedback.
-
Forgot to circle back and close this discussion, we've got all our versioning sorted out in the last few PRs including #173 We can increment the major/minor for all packages together with properties in our root props file as well as any preview moniker, but for official releases we'll basically be following:
For preview releases we have the following setup:
This should hopefully strike a balance between us keeping versions of the toolkit packages aligned to various dependencies and updating our major/minor accordingly as well as easily releasing new versions and making them discoverable and current. We discovered a lot of nuances when building the Toolkit (as we use the Toolkit to do so), so with package dependencies it's hard for us to just ship an individual update to a single package in many cases, this is still something we need to sort out moving forward to determine which packages may need to be updated so when a change occurs we can only push the packages which are required to be updated. |
Beta Was this translation helpful? Give feedback.
-
Why have we been calling it vNext? Especially, as currently, we're using version
8.0.0-beta.1
for these packages in our feed.Currently, we follow Semantic Versioning. However, the Toolkit is made of a number of smaller and vastly different components, in the past whenever we'd make a new revision, all of these packages were simultaneously built, updated, and pushed to NuGet. Even if they didn't have any updates! This causes a lot of churn for folks to update to a package that is effectively identical, let alone confusing.
We could individually Semantic Version the packages, but that can lead to cases where one package appears to be many versions ahead of all the others, leading to questions around what's the 'latest' version of the Toolkit at a whole.
Recently, the Windows App SDK team themselves have adapted to using dates within their release numbers, see their version table here. Other projects with many smaller components use date based versioning as well, like FlatBuffers. We're leaning towards adopting some sort of similar practice for 'vNext' before we push packages to the central NuGet feed.
Let us know your thoughts on this decision and the versioning pattern we should use.
Beta Was this translation helpful? Give feedback.
All reactions