ADR Suggestion: Freezing Dependency Versions on Release #3245
Replies: 17 comments 4 replies
-
|
We don't currently have a Regardless, I think the idea of this proposal seems sensible. This is especially important because we need to use pins on the Flatpak so it will be very useful to have a set of pins that have already been tested. Also I have some questions (or perhaps points that we need to discuss in more detail) regarding the timings. When exactly should we lock in the pins given our current release schedule? I was thinking perhaps after the feature code freeze so that when we enter the bug fixing phase, we don't get new bugs introduced by dependency changes. But I am open to other suggestions. |
Beta Was this translation helpful? Give feedback.
-
|
I am merely proposing that we try to address the issue we've had for ages. Yes, we don't have
I would prefer the second solution since it leaves the release branch "untouched" and corresponds 1:1 with the released code. |
Beta Was this translation helpful? Give feedback.
-
|
I like this suggestion a lot, but a process for getting the dependencies for each of our supported OSes should be included in the ADR, and who should make the changes. My only concern is how long the list might grow to, especially if different OS use different dependency versions.
I also prefer the 2nd option in the unpinning process. After a release, even though tags exist, branches don't result in |
Beta Was this translation helpful? Give feedback.
-
|
Discussion from technical meeting: Who does it? - Release manager ensures it happens, but anyone can do it. |
Beta Was this translation helpful? Give feedback.
-
|
First release to try this - v6.1.0. If it doesn't work, we can roll back and use our existing release process. |
Beta Was this translation helpful? Give feedback.
-
|
Adding comments from the general meeting today:
|
Beta Was this translation helpful? Give feedback.
-
|
Process for 6.1.0:
Many issues to overcome |
Beta Was this translation helpful? Give feedback.
-
|
So For 6.1.0, I propose the following procedure:
I notice as well that the CI builds for both Python 3.10, and 3.11. This may cause problems for packages that specify the Python versions they support. For example, some packages' latest versions may support 3.11 but not 3.10, and thus pip won't install them on 3.10. For this reason, I propose only building for one version of Python for the CI. I'd suggest that we go with Python 3.11 for this release. This only has to apply to our 6.1.0 release, and we can keep both versions of Python being built for on I will bring these proposals to the fortnightly discussion but feel free to discuss this here before then. |
Beta Was this translation helpful? Give feedback.
-
|
I had to do one odd thing in #3358 that weren't discussed here. I had to create python version specific requirements files: If our tests were against newer versions of python, rather than our current CI (release off 3.11, test against 3.10 and 3.11), I could have pinned all dependencies to the release version. This should change in the future. |
Beta Was this translation helpful? Give feedback.
-
|
A few notes from the PR (thanks @llimeht for the suggestions):
|
Beta Was this translation helpful? Give feedback.
-
|
Comments from technical meeting
|
Beta Was this translation helpful? Give feedback.
-
|
One unintended consequence of our release-specific versioning - dependabot changes. We currently have dependabot running to suggest dependency updates listed in our Moving forward, we have a few options to handle this:
|
Beta Was this translation helpful? Give feedback.
-
|
I have written a revised version of the ADR based on suggestions that have been made since the original draft: Strict version pinning at release time (Hard Freeze)PreambleTo reduce the risk of unexpected breakages from dependency updates, improve reproducibility, and provide a more stable experience for users, we propose to adopt strict version pinning at release time ("Hard Freeze"). This ensures that users always install the tested and validated environment corresponding to each release. Proposal
Changing pinnings
CI
|
Beta Was this translation helpful? Give feedback.
-
|
Is there a concern that users with computers that are subject to regular security scans will find that Sasview breaks when a fixed version of a dependency package is found to have an issue and must be updated? The security folks sometimes deliver messages about security udates as "update or else". The matter is more or less addressed in the "changing pinnings" updated proposal provided by James, but the text does not mention security issues. |
Beta Was this translation helpful? Give feedback.
-
|
@wtheller, this is a valid concern, but any installed version will break if the security scans are auto-removing dependencies. The only time we are pinning is during the final release stages and this is only for the bundled releases. If a release is found to have a security issue that needs resolving, we should be able to release a new version, using the appropriate dependencies, fairly quickly. Also, during the release process, as you note, if a security issue is found, the procedure allows for an increment or roll back of dependencies. For developers, updating dependencies on their local system should happen on a semi-regular basis anyway, regardless of what they are testing. |
Beta Was this translation helpful? Give feedback.
-
|
As mentioned in the email to developers, this ADR was brought up for final approval at the October 7th meeting. The single remaining comment after the final draft was deemed answered satisfactorily and no further comments were made. The ADR was thus approved as finalized. Final steps to create the final ADR can now proceed. |
Beta Was this translation helpful? Give feedback.
-
|
Finalized in #3831 - Closing this now. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Strict version pinning at release time (Hard Freeze)
To reduce the risk of unexpected breakages from dependency updates, improve reproducibility, and provide a more stable experience for users, we propose to adopt strict version pinning at release time ("Hard Freeze"). This ensures that users always install the tested and validated environment corresponding to each release.
Summary of the proposal
requirements.txtor later inpyproject.tomlat the time of release, in thedevelopbranch, before merging withmain.e.g.
python setup.py build(or laterpip install .) will install the exact versions of dependencies that were tested and validated for the release.To keep development workflows clean and flexible:
developbranch shall unpin all dependencies inrequirements.txtorpyproject.tomlso that it uses the latest available versions for development and CI testing.Beta Was this translation helpful? Give feedback.
All reactions