To help start discussion, below I give a non-comprehensive list of themes and projects that are (in my opinion) consistent with the goals of the Foundation. These are offered only in the spirit of kindling discussion; you are encouraged not to simply respond in agreement but rather to reply with your own ideas!
-
Haskell Language Server: Users today expect robust, easy-to-use IDE support. The Haskell Language Server has made great strides towards this goal, but much remains to be done. We should consider what can be done to push the HLS forward and ensure that it is packaged in an easily consumable form. Relevant projects might include contributing technical resources (e.g. CI capacity) and supporting developers to coordinate releases and technical planning.
-
Addressing Windows papercuts: Windows support has recently been a persistent problem. Between compiler bugs, native toolchain issues, and packaging troubles, there are numerous sharp edges that a prospective Haskell user might encounter on Windows. Nevertheless, Windows remains the most popular end-user operating system and as such has unique commercial relevance. Work might include:
- Triage open GHC tickets, and work to resolve them in order of end-user relevance
- Work to improve robustness and compile-time performance on Windows by migrating GHC to an LLVM-based native toolchain
- Advertise the improved support and actively seek out remaining pain points
-
Document and streamline profiling and performance analysis practices: GHC/Haskell has a wealth of tools for understanding runtime performance. However, these tools often do not work cleanly together and there are few resources that describe how these tools can be used to address concrete performance problems. As performance debugging is an important part of the development process, this is a significant hurdle to commercial adoption.
The Rust community does an excellent job of documenting these practices in an approachable manner (e.g. see the Rust Performance Book). We would be well-advised to follow their model and facilitate/sponsor the writing of a comprehensive guide describing common Haskell performance problems, relevant tools, and their application.
Possible topics include:
- Characterising memory usage with GHC’s built-in heap profiler and
eventlog2html
- Locating thunk leaks with
ghc-debug
- Understanding runtime time characteristics with the eventlog, Threadscope, and
ghc-events
- Diagnosing, fixing, and avoiding common sources of long compile times
- Integrating production monitoring as mentioned below
- Characterising memory usage with GHC’s built-in heap profiler and
-
Develop best practices for production telemetry: GHC’s eventlog exposes a wealth of information about the runtime behavior of Haskell workloads. Recent GHC development opens the door to moving the integrating this information