This probably has been discussed before, but I would like to discuss one issue with the new semver versioning approach:
It’s good that yii switches to semver but IMO the new version is much more: It’s a huge architecture change, thus could also be considered a completely new library.
The major version number in semver signales breaking changes - but not to what degree they break.
I want to compare this with “Typo3”: This CMS was originally just “TYPO”. After Version 3 it stayed “TYPO3”, but with version 3, 5… etc. There were some breaking changes between the versions, but no complete architecture change. They added functionality but maintained BC to some degree.
What if the new Yii was considered a new product (i.E. Yii3), becoming Yii3 version 3.x. The next big, not completely compatible update Yii3 4.0 etc.
Yii3 may change to Yii4 much later, when major architecture changes happen again which may need complete rewrites.
This might sound like a silly discussion, but I see some trouble in extension names and namespaces. If the “Generation” of the framework is not part of the framework they cannot be used together in one application anymore (which is now still possible with some hassle between Yii1 and Yii2).
So what’s your thoughts about using the “generation” as part of the product name, keeping it as long things stay “almost” compatible:
yii3-xxxx for package names
and Yii3\xxxx for namespaces.
So basically the discussion is about taking the next major architecture change in - let’s say 5 or 10 years - into account.
Edit: But yes, I understand that it can be confusing to have a number in the “product name” and in the version number which do not necessarily match.