3 ms·
SQLAlchemy author here. The critique of "Backbone" and the original quoted author's note at https://github.com/jashkenas/backbone/issues/2888#issuecomment-2907
by zzzeek 6y ago
SQLAlchemy author here. The critique of "Backbone" and the original quoted author's note at https://github.com/jashkenas/backbone/issues/2888#issuecomment-29076249 https://github.com/jashkenas/backbone/issues/2888#issuecomme... expresses an issue that SQLAlchemy has as well. A fine-grained development library has a ton of "surface area". Like Backbone, a large portion of our bugfixes necessarily infringe upon some previously undefined behavior that will now "break" for people who relied upon that. If SQLAlchemy were pure semver, we too would be at SQLAlchemy 48.0.0, the third digit for us would usually be fixed at "0" and mostly useless, and we would have no way to distinguish between a "major feature release with semi-breaking changes and removal of things that have been deprecated for years" which is what we normally have in our 1.2, 1.3, 1.4 etc. vs. a "major release with significant backwards-incompatible changes" which is what we will have in SQLAlchemy 2.0.
We necessarily include extremely detailed change documentation for a 1.x to 1.y release and our versioning system is described in great depth at https://www.sqlalchemy.org/download.html#versions https://www.sqlalchemy.org/download.html#versions . I didn't provide an easy word like "romantic" for this website to mock but we're doing essentially the same thing AFAICT.
When Jeremy says "This allows folks, immediately upon hearing about a new release, to get a rough sense of its scope.", that is exactly what we are doing as well when we are suddenly calling an upcoming release "2.0". The scope is dramatically broader than the scope in which we move from 1.x to 1.y. It's fun for semver purists to make clever (and definitely funny) websites mocking this need but that does not change that fact that semver does not work for every kind of project.
- franciscop 6y agoThis is also a very common issue for CSS libraries, where every line change would need to be interpreted as a breaking change according to semver. Instead, a more sane thing to do there is: patch is for bug fixes, like perhaps addinng a `cursor: pointer;` that you forgot to a button. Minor is for adding new features, and major is for heavily modifying or removing features.
- jeffnappi 6y agoHey Mike - Thanks for all your hard work on SQLAlchemy, it is very much appreciated. I've yet to experience any serious issues updating SQLAlchemy versions and the guides for upgrading have been top notch.
- srachamim 6y agoWhat's wrong with version 48.0.0? Be it 73838.0.0. That's OK. What's wrong with a fixed 0 at the end? If your kind of software doesn't have a reason to release a path or a minor change, well, then that's OK. Versioning is for machines and developers. Versioning is the way to communicate the scope of change. Tools rely on it. The ideal package manager should reject non-major releases that have breaking changes. Softwares that don't respect Semver actually don't respect the developers that use them. End users don't care about the version of your product (even if they are developers). Fast, what's your current Chrome or Firefox versions? (Hint: greater than 48)