-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SemVer MAJOR release policy #18
Comments
I think this in general is a good idea, but in my mind we already have two new major versions planned; |
The thing is that the TypeScript migration is going to take a long time to complete, we've been at it for a few months and only 4.3% of the codebase has been migrated. We may have to wait a long time before we're able to release v7 (work on v8 hasn't even started yet) if we have to wait for these changes to be fully implemented, which means that:
Nothing is stopping us from releasing what's currently stable in v7 in june, move v6 to 'maintenance' (bugfixes only) and continue implementing new features in v7, and keep new breaking changes for v8. (even the TypeScript migration can be continued in v7, if we block access to I also don't think it's a good idea to release affiliated packages with a different MAJOR number than core. It's standard nowadays to make them follow the same version number, which helps indicate that they're compatible with each-other. It's what lerna does by default if we end-up using that, and we can see this convention in babel, nest, and other large multi-package projects. |
Q: Should we still release a final v7 under "sequelize" npm module or go with "@sequelize/core" onwards now. Edit: My thought is that we should probably stick to our previous idea of deprecating the v6 version with a hint that people should migrate to "@sequelize/core" and stop releasing v7 version under "sequelize" because otherwise people will expect that new updates will be released there in the future as well. |
Maybe we should deprecate the v7 alphas under 'sequelize' already? So they will move to '@sequelize/core' for the next alphas |
But to get back to the original point. I agree that the TypeScript migration and splitting dialects will take a long time so it might be better to work on a fixed release schedule earlier than for v9. @sdepold @allawesome497 do you have any thoughts on this? |
That's a good point. We'd have to either write down the thing we want to change and implement it in the branch of the next major, or migrate these files in the next major The current state of things where the codebase is mostly TS in v7, and mostly JS in v6 makes backporting things annoying. It may be wise to wait until But at the same time, what remains to be complicated is massive and complicated (dialects & model) and I don't know how long it's going to take to finish migrating them. We can always assess the situation in June, see whether we're far enough into the migration to release |
Release Schedule
I like this thought. It gives some structure to the release schedule. Questions
Comments
Hypothetical
Major Version
Will the TypeScript or Dialect-splitting require changes to the User's code? If they include substantial refactoring, but are backwards compatible and no breaking changes, I think SemVer encourages those to be patch updates; no change in feature, no bugfix, but could introduce a new bug. |
Sequelize supports all dialect versions that are not EOL at the time of release, and all dialects versions released afterwards as long as that version of Sequelize itself is not EOL
No because we can always add support in a minor/patch version of Sequelize.
Yes but not for the reason I think you're thinking of: We don't release a major to support a new version of Node, but to drop support for EOL versions of Node. e.g. Sequelize 7 supports Node >= 14. Sequelize 8 will likely support Node >= 16. Both will continue to support new major releases of Node until we stop updating them (until they've reached EOL as well). Not doing that forces us to continue supporting dead versions of node (or databases). For instance, Sequelize 6 still has to support Node 10 (dead for 2 years), and postgres 9.5 (dead for one year)
Very likely to be the case for TypeScript, as we also refactor the APIs. |
We are not really close to what we wanted to complete in https://github.com/orgs/sequelize/projects/1/views/1. Hence we could either release a v7 now and finish the ts migration in v8 or keep everything as in and release v7 only when TS migration is completed. Zoe: Let's remove everything from that backlog that is not TS related. When should the new release happen? --> We will release once TS migration is done and deprecate V6 after release + stop maintaining 6 months later. |
Hi all :)
I'm opening this to talk about what we want our SemVer MAJOR release policy to be.
Right now, for v7, we've opted for the approach of "implement as many breaking changes then release v7"
I'd like to discuss an alternative policy: Releasing SemVer MAJOR releases on a fixed schedule.
The main reason behind it is that a lot of our dependencies already release their Major versions following a fixed schedule ; and, more importantly, EOL their old versions at fixed dates.
If we wait until we have enough breaking changes for v7 to release, we'll be stuck supporting versions of Node, Postgres, etc that have been EOL for a long time (because of v6).
What I'd like to do instead is this:
This also make it easy to be explicit about which version supports which dependency:
Imagine we're in mid-june 2022, our version table would look a bit like this (with most dialects omitted):
<=18
<=14
>= 8 (node 14)
<=12
Table built based on:
The text was updated successfully, but these errors were encountered: