
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.