I noticed that a few visible companies and once highly involved people that used to maintain popular package or pushed the ecosystem forward have moved on (e.g. to Rust) over the last years. My impression is that the user base is shrinking or at least stagnant. So, what can we do to attract more users and companies to use Haskell?
Some ideas from the top of my head that i would wish for:
- Focus on another popular niche, e.g. fine-tune popular LLMs to generate Haskell to become best-in-lass, because they type system might help a lot to guide the LLM to correct code. Thinking about crossing the chasm in Gabriella Gonzalez â How to market Haskell to a mainstream programmer interpreters, compilers or crypto money as a niche didnât seem to take off.
- Stability (just to reiterate as there are already many promising initiatives).
- Reduce fragmentation and converge to one (or maybe a few) to-go packages per common task. We are such a small community but work on two large but similar package managers (Cabal, Stack). Also, due to purity every larger project needs application context âbackboneâ machinery like MTL, fused-effects, effectful, heftia, etc. This is already a lot more complexity than in other languages. Here, 2 or 3 variants would be a lot better than the 20th effect-system thatâs just marginally better than the others. So, maybe we should nudge people to incorporate new ideas into existing packages once proof of concepts turned out to be good.
- Improve documentation. Prioritize improving documentation tools and nudge everyone, especially beginners (when something was hard to understand) to file a PR, and merge those quickly. This will also likely help with LLMs.
- Predictable high performance and low-memory footprint. Make it easy to measure, and measure and improve performance in GHC and packages across the ecosystem. Improve the performance ceiling to reduce the gap towards C and Rust. No one should be able to say that Haskell takes too much resources. Some ideas: emphasize autovectorization and SIMD, deprecate String from everything for real-world production, improve and promote linear types UX for performance without garbage collection, promote ressource streaming packages like Pipes or Conduit.
PS: Here are a few symptoms on why iâm asking this question:
- Engagement in Discourse involves mostly the same 20 or so people.
- Low download numbers in Hackage
- Engagement in many libraries is in minimal-maintenance mode, e.g. Persistent as one of the most downloaded Sql packages:
. - Questions and useful additions to basic libraries that already exist or are quickly added in other languages can linger for months, e.g. UUIDv7 Add support for UUIDv7 by LaurentRDC ¡ Pull Request #87 ¡ haskell-hvr/uuid ¡ GitHub, and sometimes years, e.g. UUID in sqlite-simple Add `FromField` instance for `UUID` ¡ Issue #62 ¡ nurpax/sqlite-simple ¡ GitHub.
- etc.
I donât mean to point fingers at any particular package or person; many maintainers have taken over lots packages and are stretched thin while doing the best they can. Itâs just seems to require more shoulders to distribute tasks.