In a previous post I tried to explain of how I see a way to drive the evolution of the Haskell language by technical rules when developing core libraries. I used there the unspecified term “base library maintainers”. Now I want to concretize it some more how I would see it.
I would suggest this would be a new “Haskell Compiler Group”. Members of this group can be representants of different Haskell compiler developer teams, each of which provides their own implementation of the same base API. This group should also be open for people interested in writing their own compiler.
Tasks of this group could be:
- Definition of new language standards at longer time intervalls
- Preserve the base API in between release cycles of a new language standard
- Issues with the base API are reported to this group
- Providing support for alternate implementations when there are feature requests
- When creating a new language standard:
- Collect which features from base are used how often in the core libraries
- Evaluating the feature requests for practical feasibility
- Deprecate obsolete features in base
The group would be not responsible for portability issues to different target platforms, as each compiler devoloper team can therefore have different solutions.
The term “Haskell Compiler Group” was chosen deliberately. Another designation such as “Haskell Language Group” would perhaps lead to a bunch of language features requests being brought to this group from everywhere.
We would then have a total of three groups:
- Haskell Compiler Group: responsible for the language specification and therefore the API of the base library
- Haskell Core Libraries Committee: responsible for standards in the core libraries
- Haskell Foundation Stability Working Group: responsible for stability of the whole ecosystem with tooling and libraries
Certainly the establishment of such a new group must be coordinated with the other two groups. The Haskell Foundation as the head organization of Haskell should give green light. The coordination with the Core Libraries Commitee is also necessary, because they currently state to be responsible for API changes of the base package.