pallets / jinja

A very fast and expressive template engine.
https://jinja.palletsprojects.com
BSD 3-Clause "New" or "Revised" License
10.29k stars 1.61k forks source link

jinja 3.1.x should have been 4.x.x due to breaking changes #1656

Closed ddevault closed 2 years ago

ddevault commented 2 years ago

Deprecated or not, removal of public interfaces is cause for a major version bump.

ThiefMaster commented 2 years ago

I'm sure you've seen the various issues, including those that link to an article explaining why semver is NOT the solution for everything.

(do you think most people who did not pin transitive deps would have somehow noticed that there's a major bump and done anything differently? ;))

ddevault commented 2 years ago

Perhaps you should take some of the concerns of the dozens of people who were confused and surprised by the breakages caused by your unorthodox view and weigh it against the merits of that unorthodoxy?

I know that I would have noticed a major version bump and planned accordingly, at least. I cannot speak for projects with less discipline. Thankfully none of my stuff is immediately broken but it is unexpected work that needs to be prioritized ahead of other things and I could have planned for it much more easily if you had communicated your intent like everyone else does.

ThiefMaster commented 2 years ago

I would agree with you in many cases - it's annoying to have sudden breakage in minor (or patch) version upgrades. However, removing something that has already been triggering DeprecationWarnings before is a different thing - that SHOULD be caught by people's test suites (or during dev where enabling such warnings is a good idea)...

FWIW Python also removes deprecated code in minor releases after a while and doesn't wait for Python 4 ;)

ddevault commented 2 years ago

It's a matter of balancing engineering discipline against optics and move-fast-break-things. In my opinion, engineering discipline wins out every time. It's just a number, its purpose is to signal intent. If incrementing the number makes important changes more obvious to people, then why not increment it? There's no downside here. I know many projects like to make a big hullabaloo about major version releases as part of a big marketing push and drumming up hype around the optics of it, but I think that's an anti-pattern that places vanity ahead of engineering needs, especially for a library rather than an end-user application. Not sure if that matches your thoughts on the matter, just trying to invent a plausible strawman to provide counterpoints; feel free to correct me.

Python also ships the deprecation warnings for a lot longer, by the way, 300 days or so is not that much time.

ddevault commented 2 years ago

Oh, and it's worth also addressing that Python essentially cannot release a "Python 4" without igniting one of the biggest flamewars the internet has ever seen, and that might weigh on their minds a bit. I don't think they are wise to ship breaking changes without bumping the major version, either. Jinja has no such concerns.