- Work hard to knock down obstacles to using Haskell in mission-critical applications.
I’m optimistic that the Haskell community can make this happen.
With the renewed focus on stability of the language, compiler, and base-library, the community has shown that it is listening to its users. What might help with momentum and actionable goals is to measure the impact of these initiatives. Perhaps, as an example, querying Hackage or Git on how “fresh” the packages are and how often they are updated for GHC compatibility reasons can give some insights as to the burden package maintainers face and whether the situation is improving or not.
From what I gathered, the next big piece of obstacle is addressing the incidental complexities of using Haskell due to it being such a deep and feature rich language. As a newcomer myself, I think the most prominent issue here is there’s no de facto, agreed upon best practice among the community, so it’s been a dazzling and confusing journey for myself. Seasoned individuals and organizations have their own list of do’s and don’ts, but for increased adoption, it’s very helpful to have an authoritative source where newcomers can learn about best practices (or at the very least, safe practices), so we don’t shoot ourselves (and likely, others in the foot), and can produce libraries that are easy to maintain and easily consumed by others (e.g., not forcing the users to use a specific effect system, which could conflict with other libraries used).
Best practice topics like, which extensions are safe/recommended to use, when to use type-classes, when to use type-level programming and what are its associated costs, which parsing library is a safe/conservative default to start out with, what effect system to use; library design best practices like what constitutes a good functional API design, when should you expose fancy Haskell features to end users … etc., can guide newcomers in a direction that both enriches the ecosystem and build momentum in a newcomer’s journey to proficiency.
In summary:
- [Code] Measurable decrease in the overhead of maintaining Haskell packages
- [Documentation] Best practices on the following topics from a unifying and authoritative source:
- Language features
- Library selection (better distinction between experimental and production stable packages)
- Sensible library/API design, especially when it pertains to Haskell/GHC’s ecosystem.
These are the areas that I feel can help drive adoption and allow Haskell to be selected in more mission-critical applications.