Skip to content

Dependency Version/Deprecation Policy #8303

Open
@ericspod

Description

@ericspod

MONAI has an existing policy for deprecating components it defines here. For dependencies there isn't as clear a policy to follow in regards to which versions of Python, Numpy, Pytorch, etc. to support. It's important to support older environments as much as is practical so that users with frozen environments have the fewest issues with new versions of MONAI. There are a few considerations that vary by library which need to be composed into a clear policy:

  • Python versions of have end-of-life dates and so we should support only those versions that haven't reached that date.
  • Pytorch's releases have for a long time never been out of sync, that is there have been no bug fixes for old versions for a very long time, and so old versions immediately become out-of-support. This is an issue with known security vulnerabilities in older versions which won't be fixed, so Bump min torch to 1.13.1 to mitigate CVE-2022-45907 unsafe usage of eval #8296 has been proposed to remove old versions from the CICD system. A subsequent PR will remove more versions further as discussed here .
  • Numpy has released version 2.x which introduced some incompatibilities with other dependencies, though MONAI itself should be compatible. This has created the situation where we have to specify that MONAI requires 1.x to prevent pip from installing incompatible combinations of libraries. At some point this will be fixed and the version restriction can be removed.
  • Other dependencies may deprecate versions, or vulnerabilities discovered for them.

All this means we need to determine:

  • How old are the versions of dependencies we want to support.
  • How to decide when to remove support for certain dependency versions and by whom.
  • How to respond to discovered vulnerabilities.
  • How and when to re-analize the dependencies that we have to determine if version requirements are still suitable.
  • Who may add or remove dependencies, even optional ones.
  • Who may mark other repositories as archived or de-archive them (I'm thinking specifically of archiving GenerativeModels).

Metadata

Metadata

Labels

dependenciesPull requests that update a dependency file

Type

Projects

Status

No status

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions