I can no longer maintain containers

Herbert Valerio Riedel hvriedel at gmail.com
Mon Apr 4 06:59:25 UTC 2016


On 2016-04-04 at 02:09:26 +0200, David Feuer wrote:
> Note: the containers package itself would become a dependencies-only shim,
> perhaps under CLC maintenance.

...that might sound good at first, but you'd want to use Cabal 1.22+
module-reexport feature otherwise you're forced to use PackageImports
when you depend on both 'containers' and one of the sub-packages.

making a shim-package 'containers' would require to have rather tight
bounds to satisfy the PVP, because as soon as you re-export
dependencies' modules/APIs, you get into the transitive-dependency API
leakage problem. So at the very least you'd need to use minor-version
bounds, as otherwise you'd violate the PVP for the containers package.

Moreover, a containers version 0.6.0.0 would still have a bit of wiggle
room as it re-exposes an API from its own depdencenies which is only
defined up to the patch-level. Maybe there's a problem with
containers-graph 0.6.0.0 and for some reason you need 0.6.0.2 or later,
so now you'd need to depend on both
'containers == 0.6.*' and 'containers-graph >= 0.6.0.2 && < 0.6'

Moreover, the shim-package 'containers' would have to have to bump its
minor version number each time a new minor version number of one of its
sub-packages is released, while keeping single-minor-version-range
constraints on its sub-packages.

TLDR: PVP & re-exporting modules/APIs quickly leads to a huge mess and
      is therefore best avoided if possible.


More information about the Libraries mailing list