Replies: 2 comments 8 replies
-
Seems reasonable to me in general: users should probably aim to address deprecation warnings when they first appear, rather than waiting till the break happens. I would ask that we could partly tie the speed to the Met Office's parallel suite cycle, i.e. functionality should be deprecated for at least one production environment before it is removed. In our group we have code that is imported into more than one project, and those projects don't all get updated to the next environment at the same time. So it's important that the underlying modules work with consecutive environments (preferably without having to write if-loops on the Iris version!) |
Beta Was this translation helpful? Give feedback.
-
Above all, I value the principle of least suprise. As a user I should look at the new version number and have a good sense of what to expect. If I have to make tons of changes every time there is a minor version bump because the API has changed I'm going to get a bit grumpy and start pinning things. If you believe in semver (I know we don't use semver, we use PEP440, but I believe the spirit is the same).
Deprecation is (by definition) not backwards compatible. So would suggest that it must occur at a major release according to semver. If we choose a different model but keep the same version numbering scheme we introduce opportunity for user astonishment.
If we relax the assumption that it is a long time between major releases then we have more opportunity to make breaking changes, but keep the expected version number contract. We're not numpy in many ways, but notably:
EDIT: correct PEP440 reference |
Beta Was this translation helpful? Give feedback.
-
Background
Iris' current deprecation policy is quite conservative:
It can be quite a long time between major releases, and as such a deprecation can be around for quite a while before it's actually removed.
For contrast, Numpy's deprecation policy is:
It's worth noting that Numpy consider their own policy to be quite conservative.
We could move to a deprecation policy closer to Numpy's, specifically one that allows us to remove deprecated functionality at minor releases. This would speed up the deprecation process, which keeps the codebase cleaner and thus easier to maintain and use. It also has the consequence of forcing users to update their code to keep working with Iris (which may or may not be desirable).
Questions
How to implement changes
Beta Was this translation helpful? Give feedback.
All reactions