I think the HF could benefit from some big overarching projects that:
- On the one hand, have plenty of concrete small steps so we can actually make progress especially initially
- On the other hand, offer a clear long term vision so they won’t “stall out” after early progress, so we can continue to rally ourselves around the vision and build real momentum.
And also:
- On the one hand, directly address the needs of the larger institutions who are best able to fund the HF
- On the other hand also address all sorts of long standing community concerns which affect the deep and shallow pockets alike.
Trying to cover the gamut on all 4 axes is no small task, but I think I’ve finally got something that fits in the form of migration tools.
This is sort of a rough initial draft I hope to edit based on feedback in the thread.
Problem
Institutions
Larger companies over time increasingly find themselves busy with managing existing code rather than writing new code. Migrations, versioning, etc. etc. increasingly sucks up more and more time. While there are various language agnostic methods (e.g. all the orgs that swear by monorepos), there is room for language tooling to help out too. Those don’t compete with the language-agnostic methods, but rather complement them.
I don’t think very many languages at all have very good stories around this. It is both an under-theorized and under-practiced area of work. If we can improve our situation, we not only make it easier for existing large users, but we make a nice reason for orgs that don’t currently use us to check us out. Unlike “Haskell for correctness” it is not a “high brow” use-case that is a certain reputational two-edged sword.
The community
Firstly, the community as a whole still faces many of these issues because even though we may individually be small, our collective commons in the form of Hackage and other libraries still makes us face many of the same issues. The GHC.X.Hackage proposal I would classify as migration tool for GHC devs and the community alike, for example.
Additionally, many long-standing controversies are wrapped up in some ideal-state-of-things versus instability-is-a-pain logjam. Clearing those log jams I hope will be very inspiring after years of pent up frustration and create a nice “long standing problem, we were stuck, HF refereed us across the finish line” narrative.
Solutions
There are certainly no shortage of things we can do! I listed a bunch in Stability / Migration tools · Issue #11 · haskellfoundation/stability · GitHub but not in any sort of feasibility order. As mentioned above, I would also put GHC.X.Hackage under this umbrella, and of course it is more ready since head.hackage already exists.
Deprecating reexports
I would put forth these on the short list of near-term initial tasks:
- Implementing accepted proposal ghc-proposals/0134-deprecating-exports-proposal.rst at master · ghc-proposals/ghc-proposals · GitHub
- Both finalizing the design and implementing Deprecating _source_ of an imported module. · Discussion #489 · ghc-proposals/ghc-proposals · GitHub
The former unlocks the main second steps of Deprecate partial functions from the Prelude, giving them new quarantined homes · Issue #70 · haskell/core-libraries-committee · GitHub which appears to be popular. One or both might with mtl
, as pointed out in Deprecating _source_ of an imported module. · Discussion #489 · ghc-proposals/ghc-proposals · GitHub. The latter also helps with Cabal
reexporting the new `Cabal-Syntax. I am sure there are more long standing issues we can/should accumulate if this is to become an actual HFTT.
Other things
As I wrote above, there is a lot more bullets in Stability / Migration tools · Issue #11 · haskellfoundation/stability · GitHub, do help prioritize them if this sounds worth pursuing!