How to grow the (commercial) Haskell user base?

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:

7 Likes
  • 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.

Goes both ways IMO, people like to participate by e.g. writing tutorials. Look at all the stuff for NumPy!

6 Likes

This doesn’t really seem actionable from a community point of view.

Open source maintainers have their own interests and responsibilities. They don’t simply shift those, because it might make industry more excited about Haskell.

E.g. we have so many effects systems, because that’s what Haskellers do: explore new cool experimental stuff. That’s part of why people do Haskell.

I’m having a hard time imagining how to coordinate “technological advancement” across such a diverse and heterogeneous community. The Haskell Foundation certainly could, through support and funding of specific projects and ideas… maybe @jmct has a better answer than me.

To make it short: no, I don’t think it’s an actual problem. Volunteers work on Stack and Cabal and we are not really in a situation where we can decide where to allocate resources.

The bit of decision overhead that newcomers have isn’t really a huge problem, imo.

Yes, we need a proper Haskell book. Scattered documentation is the worst.

I believe @mpickering has made relentless improvements on that front in GHC, some of which might not be marketed heavily enough.

E.g. there is:

And all sorts of improvements in GHC itself. You can search through the WT blog for instance: Posts tagged ‘performance’ - Well-Typed: The Haskell Consultants

But I don’t think we’ll ever achieve the predictability of e.g. C or rust.


From what I know there’s also some heavy pioneering going on regarding web development:

10 Likes

As a point of information, the download numbers on hackage are relatively meaningless, and have been for some time. In particular, we front hackage by a content delivery network, so its actual download numbers are vastly higher, and have been growing over time.

I also think it is a sign of stability not stagnation when foundational libraries go into mainly maintenance mode, and it tends to happen across all long-lived library ecosystems.

Similarly since packages are individually maintained, responsiveness to PRs is really a question of individual maintainer activity and community need, not overall ecosystem health.

All that said, I do agree that increasing Haskell adoption is a worthy goal, and one that the HF is very concerned about, for example. And I would also agree that economic circumstances, etc have tended to limit some of the areas where Haskell has experienced adoption and perhaps impacted some teams using it in various commercial contexts. I just am warning that some signs of overall ecosystem health should be interpreted less direly.

17 Likes

From a casual perusal of Miso’s Matrix channel, it seems as though @dmjio is within 12 months of making miso-native live, leveraging the GHCJS/WASM backend to put Haskell on Android and iOS.

8 Likes

I think about this a lot. My personal view on things is that we will grow commercial Haskell user base by growing the general Haskell user base. If you think of a funnel, the more people know and use Haskell, the more businesses can rely on having a pool of quality engineers from which to hire.

This is a positive feedback loop; the more Haskell jobs there are, the more incentives there are for people to learn Haskell.

Therefore, it’s important to make it as easy as possible to get started. For me, the significant barrier to entry remains learning material / documentation.
In the past decade, much content has been published that can assist people in getting started. My personal favourite is the book Haskell Programming from First Principles, but even 60 USD is a rather steep barrier for many. haskell.org has a section with some suggestions; I wonder what newcomers think of these resources?

As others have mentioned, the magic of the Haskell community is the innovation and experimentation. I hope any action to increase the appeal of commercial Haskell use preserves what makes Haskell interesting in the first place!

12 Likes

Growing the Haskell user base is indeed something worth thinking about, a lot!

I agree with @LaurentRDC, grow the overall user-base and the commercial user-base will also grow. While commercial-specific concerns exist, the majority of concerns are shared by all users of a programming language. People want easy to use, stable, well-documented libraries that also immediately incorporate the newest technologies! How hard could that be? :wink:

The Haskell Foundation would like to do more ‘spot investment’ in projects and initiatives. One of the issues here is that, being as resource-constrained as we are, we have difficulty justifying risks. This is why so much of the work has been around stability and maintenance.

I also agree with @sclv that libraries going into maintenance mode is good! It doesn’t prevent folks from trying new things, but part of the process of maturing to having solid ‘ready-to-go’ packages is that they’re stable and well-known.

The set of Haskell programmers (professional ones, at that) is much larger than the set of Open Source community members that take an active role in discussions. This is true for every OSS community. Haskell isn’t the size of Python or Rust, but even in those much-larger communities, you see a lot of the same names taking part in their day-to-day discussions.

Please don’t get me wrong, I want to grow the community! The Haskell Foundation is coordinating more closely with sponsors than every before, partly in an effort to make sure that commercial concerns are heard. A lot of the points you brought up are things we think about, and it’s good that the community is thinking about it as well.

Haskell is an interesting size. It’s clearly escaped its academic origins. Programmers (hobbyists, professionals, etc.) rely on it daily to meet their computing needs, but it’s never received the attention that languages like Rust, Python, or Javascript have been able garner. We have to keep pushing!

15 Likes

Also, is functional programming growing?

One data point: The other day, my colleague was telling me about “effect” library in typescript. But it seems people don’t know much about the agbraic effects and all the discussion we have in Haskell community…

1 Like

Speaking about TypeScript, effect, fp-ts, and the like: I have some commercial experience on that, and it seems that while many people know these libraries exist, I have not come across a project actually using those libraries. I think, the learning curves are too high for newcomers or career jumpers, and many programmers in commercial settings are coming from other fields.

I also think the following things matter most to how comanies decide on which technology to use:

  • It must be easy to learn and use
  • It must scale
  • The ecosystem must be large (the larger the better)
  • The online appearance must be polished (I think this goes along the “We need a Haskell book” argument above, and that we need to reduce/remove or maintain scattered documentation)
  • The libraries must be up-to-date (weekly or monthly updates), secure and audited
  • The licenses must fit (no GPL stuff)

Please tell me what I am missing in this list.

During a programming course at a company at some point I was told that “Haskell is for exploration and testing, not for production”. We need to change this image.

6 Likes

Very interesting to know this. Is it possible to integrate CDN downloads data into Hackage download numbers?

4 Likes

Personally, I will always bet on Haskell (or related or higher) for my own programming tasks or business ventures. My time is valuable, and I’m not going to spend it on thinking about sequences of operations or tracking memory ownership (Rust).

As for larger adoption, a couple of personal observations:

It seems to me that there may be a general “skill thing” lurking here.

Personally, I think that highest bang / buck on the matter of adoption can be had in extending compiler target environments, specifically:

  • Mobile: iOS, Android
  • Web Browser

A lot of commercially interesting software runs on these platforms. “I can’t use it” is more difficult to solve than “I don’t want to use it”.

8 Likes

Make haskell more attractive by making it easier by subsumming complex type level features with dependent types

2 Likes

I’m also very excited about the developments in web backends. Sadly, the wide gap in Haskell’s front-end story left behind a graveyard of broken hearted Haskellers that were once staunch proponents of the language, but got beaten down by careers and ventures staked on a dying Haskell on the front-end. I know this, because I personally know some of these people.

I really hope Haskell on the front-end maintains its impressive newly gained momentum and rejuvenates the front-end ecosystem. Perhaps we can then win back those broken hearts.

3 Likes

Yes, this is the dark side of the Haskell enthusiasm, ignoring the fact that building your business on an unsupported fork of GHC is not a smart decision.

To re-iterate on that:

  • GHC JS is not developed by IOG anymore, it’s now effectively a “community project”, but with no major company backing it afaik
  • GHC WASM is effectively a one-man project and that person doesn’t even do it full time afaiu

So there needs to be more serious investment than just enthusiasm, especially on the compiler front.

And that’s also something that has to come from industry. They need to get involved and not just complain.

10 Likes

It’s worth emphasizing that social factors play a large role in the success or lack thereof of a language community, since first and foremost these are communities. Making the community more kind and welcoming is something we can all contribute to.

I think performance worries are something that get overemphasized in these discussions. While I think there are definitely advances we can make in terms of the performance of Haskell and the ease with which we can analyze it, I don’t think it should concern 90% of potential users. The vast majority of the performance issues I see in the wild are caused by accidentally quadratic code rather than hitting the performance ceiling.

Haskell is also much higher level than Rust/C (as others have already mentioned), which is both a blessing and a curse. Higher level code can be less verbose, and so either to understand. Code that is easier to understand is easier to optimize. On the other hand higher level code can lead to more abstraction, which can make things harder to understand, since now you need to understand both your code and the abstraction. Yet, with well documented and well designed abstractions this shouldn’t be a big problem.

7 Likes

As an aside, on a minor point of detail, from my perspective, since about Q3 2019, the maintenance and further development of Stack has not cannibalized significant resources (cash spend§ and/or people’s time) that would otherwise be spent on Cabal (the tool). In that regard, (a) Stack is distinct from Stackage (Stack depends on Stackage but Cabal users can/do make use of Stackage too) and (b) the Stack project is directly interested in the good health of (i) Cabal (the library) and (ii) Cabal documentation, which also benefit Cabal (the tool).

§I am not aware of anyone being paid to work on Stack.

4 Likes

What exactly are you thinking of?

To me, the most important thing when joining a new community is the contribution experience. But maybe you’re thinking more in terms of CoC?

Another option: build a software company based on haskell :smiley: few things speak louder than success, and I’d personally love to see more haskell-companies across different markets

4 Likes

I didn’t have anything concrete in mind. I mostly just want to encourage people to think about these things in the context of their own projects.

Contribution experience is definitely important. The experience for beginners asking questions or trying to use a library is also important.

I think codes of conduct can play a role, but that’s mostly a question for each individual project to consider.

1 Like

Maybe we should just be more straightforward about it and put it front and center on the haskell.org website. What immediately came to my mind was Gleam’s website: https://gleam.run/

The first thing it mentions is that Gleam is friendly. Compare that with haskell.org which begins by stating that Haskell is advanced.

Having “Escape from the ivory tower” on our front page doesn’t give a good first impression (although the video itself is interesting for Haskell historians).

7 Likes