Backpack promises to let us solve the string problem by parametrizing packages over signatures. The idea is that this will allow us to change the ecosystem in a backwards compatible way: we can simply deprecate particular instantiations without changes rippling down the dependency graph.

What I am struggling to see is how I can use Backpack in a backwards compatible way. AFAICT, a backpacked project has to use Cabal 2.0 (previous versions of Cabal won't support all the new fields in .cabal files). That would mean that I can only use backpack in projects that support GHC 8.2+.

Is there any hack around this? I'm looking for a way to use backpack such that: