conda-forge / conda-forge/conda-forge.github.io

Package transitions at conda-forge

Open
#1,894 5 comments 2 reactions 0 assignees View on GitHub
question
Dominant language
JavaScript
Stars
170
Forks
320
Avg merge
2d 10h
Merged PRs (30d)
5

Description

### Your question:

As more features and libraries have been added to the conda-forge ecosystem, some maintainers have expressed the desire to reduce the total number of dependencies imposed on their users.

While a few proposals have been raised to improve creating split packages, [standardized naming](https://github.com/conda-forge/conda-forge.github.io/issues/544), catch all for files, one challenge in our ecosystem remains in terms of how to deal with the package transition.

Specifically, these package splits typically occur in phases as:

1. Maintainers gain interest in splitting off certain features.
2. Maintainers learn about different flags proposed upstream.
3. Upstream exposes new capabilities in splitting a package.

The use case I'm particularly concerned with, is with large "mega packages" such as `vtk`, `ffmpeg`, `opencv` where plugin mechanisms may exist that enable discovery of extra features at runtime.

It may be desirable for example:
1. On one day, to split off opencv-hdf5 to a new package. Creating `opencv-base` and `opencv-hdf5`.
2. It may be desirable the next day, to also split off `libopencv_highgui`,

But since we have already used our name "base", we are now stuck with the current tools I know of at conda-forge.

### External references
* Debian's transition guide: https://wiki.debian.org/PackageTransition
* Fedora's transition guide: https://fedoraproject.org/wiki/Upgrade_paths_%E2%80%94_renaming_or_splitting_packages
https://github.com/conda-forge/conda-forge.github.io/issues/544

#### Packages that are considering splits for various reasons:
* Removal of optional dependency (ffmpeg) https://github.com/conda-forge/vtk-feedstock/pull/282
* Removal of heavy dependency (qt) https://github.com/conda-forge/opencv-feedstock/pull/337
* Removal of heavy dependency (qt) https://github.com/conda-forge/matplotlib-feedstock/pull/178

#### Packages where splitting was (seemingly) not possible:
* https://github.com/conda-forge/ffmpeg-feedstock/pull/138

#### Packages where creating a split package stalled due to unclear (realistic) transition path:
* Splitting qt-base into finer grained packages https://github.com/conda-forge/qt-main-feedstock/issues/78

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.