Haskell is getting more use but communities are not what they once were. But it has been this way some time.
I share the feeling of @Abab9579 – it feels to me that Haskell is somehow slipping down. But when I look for facts, I don’t see evidence to substantiate this feeling.
Just last night, I took a spin at all this. I found two independent rankings of programming language popularity: TIOBE and PYPL. Both of these suggest Haskell isn’t all that popular… but neither suggests (at all!) that Haskell is in decline. Here are the relevant graphs:
PYPL:
Both of these graphs suggest we are in some kind of steady state.
Other more fact-based metrics:
- GHC is having glory days right now. In the first time since I’ve been involved (mid-2012), we have a reliable, dedicated team of 5 people who offer GHC love and care – and this doesn’t include Simon or me. Because I can no longer keep up, just today I turned off “the firehose”: I no longer will be notified on every action on every GHC ticket. There are two (very positive) reasons I did this: 1) The activity has increased to a point that a part-time contributor like me cannot handle, and 2) the GHC team can now be relied on to send me the tickets I need to know about. Even two years ago, I would have worried that tickets would slip through the cracks or that I might miss something important. I don’t have that worry any more.
- HLS is a real success story, as @tomjaguarpaw points out. HLS started as two separate projects which decided it was better to work together than to compete, and it is a real joy being able to navigate source code without using grep. There is still more progress to be made here, but already I, for one, am reaping the benefits of this work.
- Six or seven years ago, I felt I basically knew all the companies using Haskell. I might not have contacts at each one, but seeing the company name associated with Haskell wouldn’t have surprised me. Now, on the other hand, reading the job ads in the Haskell Weekly News, it seems a new company posts there every few weeks – companies I had never heard of before. I don’t have a graph to share here, but the rate at which new companies are hiring Haskellers is higher than I’ve ever seen it.
- There are now a number of large companies with strong, vested interests in keeping Haskell going. By “vested interest”, I mean what I believe to be >1M lines of Haskell code. At multiple companies. These companies will protect the language as they protect their own investment.
- New books keep hitting the (virtual and physical) shelves. Publishers and authors would not make the monumental investment in a book if they felt the language were going away.
So, the real question for me is: why the feeling of negativity? I conjecture several reasons:
- When I joined Haskell 11 years ago, the locus of activity was around several mailing lists. As new technologies have come along, popularity of mailing lists has waned. But no one new venue for Haskell discourse has replaced the communities that we had. This has diluted the community, and it makes the community feel smaller, because we see less of it at any moment.
- The HCAR was published semi-annually for years. This stopped in 2018. It’s now hard to get a comprehensive handle on just what is going on in the Haskell universe, and this perhaps makes us feel that not much is going on.
- Being cynical about Haskell has somehow become the de-facto standard. We bemoan our lack of inclusiveness and approachability, we complain about our tooling, and we gripe about terrible error messages. There is opportunity to improve here, for sure. But other languages have similar problems, too: Rust’s moderation team resigned en masse; Scala is struggling with community moderation, too; and I don’t think we can argue that GHC’s error messages are worse than what we see when writing Standard Template Library code in C++. So it’s not clear to me that we’re really any worse than any other language or community in this regard. Collaboration and inclusiveness is hard! We need to keep trying our best here, but we can’t expect ourselves never to make mistakes.
- Haskell is maturing, and with that comes a change in expectations. When you see a five-year-old with pasta sauce all over their face and clothes, that’s cute and maybe you offer to help them clean up. When you see a similar 15-year-old, you wonder whether that person maybe has a problem they should work on. When Haskell was less mature, and our tooling didn’t quite work, we either dealt with it or rolled up our sleeves and tried to improve it. Yet with Haskell being more mature, we now have higher expectations of our tools and expect them to actually work. HLS is a great example here: when it works, it’s amazing. But it doesn’t quite work all the time, and that (for me) has been a source of frustration. That’s not really fair, though: I should just be thrilled with all the times it does work!
- When I came along, Haskell was the place to be for language innovation. Now, my sense is that Rust has taken that mantle from us. I would like to claim that back, but this is, again, a sign of maturity. You can’t, by definition, remain the new hotness for a long time!
My bottom line: though I feel sometimes that Haskell is in decline, I think it is doing just fine. And I also think that concentrating our community and promoting blog posts, etc., that glorify our language might even change the feeling.
So if Haskell is in a “steady state”, then considering there are more Prolog implementations than Haskell ones, is Prolog is gaining in popularity?
The number of implementations is a silly metric for language popularity, because it depends strongly on how difficult it is to implement the language. TIOBE and PYPL are based on search engine statistics, which seems to me to be a much better indicator of language popularity.
Hmm - is implementing a language based on unification and backtracking less difficult than implementing Haskell?
I agree. As I said in other places… the time of early adopters are over: people got jobs, researches moved to other topics, etc… Business is now a bit less exciting as 7 or so years ago, but that doesn’t mean haskell is dying.
It’s getting more mature on some fronts. People don’t try as hard to get niche use cases working anymore (haven’t heard from enthusiastic game devs in Haskell for a while). Maybe there’s less energy now to put insane amount of hours into starting new never-seen projects… at least for unpaid volunteers. The open-source front indeed sometimes feels like it’s cooling down. But that’s probably also because many things have been solved and we’ve figured out what works well and what doesn’t.
Haskell is not a “startup” anymore.
…(heh) it doesn’t matter how advanced the GC is, there are those who insist that there are visible pauses - they’ve probably moved to Rust. Then there’s the science/mathematical-modelling users who switched to Julia or Rust - when every CPU cycle matters, languages with miniscule RTSs are still attractive, even if the implementation’s error messages are intimidating for those starting off!
Perhaps it’s just relative - it may look like Haskell is slowing down, or it could be that other new and existing languages are adopting more declarative features (e.g. Rust’s immutable-by-default bindings). If it’s the latter, that can benefit Haskell as there would be more well-typed foreign code to access which may allow for more “extravagances”:
But while other language might be getting closer Haskell, like Clean and Miranda(R) still differ on one feature - being nonstrict by default. As noted by Hughes, Augustsson et al, the semantic elegance of being nonstrict alleviates much of the “micro-management”/tedium often associated with using other strict languages, hence their popularity in education. Until such time when that elegance can somehow be transferred across to strict languages, or a new “simpler” nonstrict language appears, Haskell will be around for quite some time yet.
This topic comes up frequently with a friend who often expresses concern. He is “all-in” on Haskell and worries that he might need to diversify his skill set in case there are few Haskell jobs in the future. It is difficult, however, to find languages that provide the same level of satisfaction (to him) yet do not share the same concerns.
This friend has a very ingressive personality and views different technologies as “enemies” of one another. In his view, the biggest “enemy” of Haskell is Rust, as many companies that previously championed Haskell have since started to prefer Rust over Haskell for many/new projects.
Personally, I am not as worried because the value that Haskell provides is so high. As @tomjaguarpaw pointed out, there are many more Haskell books available today than there were a decade ago. (It is easier to self publish and book availability is cumulative, of course, but the above list is sorted by year, and you can filter by published
books to get a more fair assessment.) While I do not have data, I agree that many more companies use Haskell today, and the rate of (new!) job opportunities is considerably higher. There are also some great Haskell podcasts to listen to (though I also miss some great podcasts that no longer exist)!
I am not so interested in comparing languages, as I do not see technology as a zero-sum game, but I have done so with my ingressive friend. Google Trends can provide some entertaining statistics for Google search queries. (Tip: Switch the location to “Worldwide” and the time period to “2004 - present” to see a good overview.) Comparing Haskell and OCaml shows queries for either have decreased since 2004. The Rust programming language is unfortunately not available for comparison. For comparing community involvement, a site called RedditPageMetrics provided some entertaining statistics, but the site seems to no longer work. I love programming languages and subscribe to many programming language subreddits via RSS, however, and I can confirm that /r/haskell has less involvement than /r/rust. On the bright side, this makes it easier to stay on top of!
Thank you for so many kind replies! For record, I am not invested purely in haskell. (Simply my preference is towards haskell, as it seemed like other FP languages quite not follow the performance haskell achieves).
What I am worried about is if my experience in Haskell would be nullified, acting as an obstacle for learning other languages. Also, I am very worried about the FP scene as a whole as well - it seems to be struggling. It seems like… OOP languages are working to attract FP users, so that it eventually subsumes entirety of FP.
When I came along, Haskell was the place to be for language innovation. Now, my sense is that Rust has taken that mantle from us. I would like to claim that back, but this is, again, a sign of maturity. You can’t, by definition, remain the new hotness for a long time!
Mm around ~2015 Rust was doing that, but Rust people would say Rust has matured! As someone that participated a lot in Rust things back in those days, the atnosphere was always “quick! We have to get all our decisions right now, ship ~1, and stop being a research language so we can make it in industry”. That’s not “success at all costs”, but is a clear “research → production” dichotomy.
Haskell has never had that, so what’s happening now is not that other languages are moving faster, but rather we are not as “cool” as the proof assistant languages, and not as Sillicon-valley oriented a Rust. (We do have Industry usage, of course, but it decidedly skews away from California.)
I am bring on all sorts of GHC/base/whatever modularity projects in part because I do think that can allow us to keep our edge. @rae made a lot of analogies to humans aging, but I think that is dead wrong. Codebases are more like unicellular organisms in that achieving a sort of eternal life through subdivision. Or rather the can.
There is some notion of Haskell that is the “maturing” industry language. There is another Haskell that is the research language. What we are doing poorly is trying to keep those chained together. When we modularize everything we can pursue many directions at once yet do so without just drifting apart as people, because types are just so damn good for async human collaboration. And we can pick winner and looser experiments based on experience, not who had the most Chutzpah to beat the GHC CI in chicken and get their big project merged.
All I do is refactor other people’s projects; I have no projects of my own. And so I’ve seen a lot of different code, ways of working, etc. And nothing is more a pointless curtailing of vision than a certain Conway’s law fatalism where the unity of the community must be reflected in the monolith-ness of the code bases that anchor that community. Such projects suffer under the weight of their history until the community disbands.
Do you mean haskell could already be considered dead?
o_0 …where did that other Abab9579 go?
Since you’re apparently no longer convinced by all the other responses, ask those who have gained experience with dead programming languages:
…just let the rest of us know what they tell you.
There could be another reason:
…this is the 21st century after all, when everything was supposed to be awesome; instead, it’s more resembling a dystopian callback continuation of the 20th, with a sprinkling of some nice techno-trinkets.
Oh. I mean, I interpreted their message being intended as “haskell is practically dead”. So I was asking for the intention/their thoughts. I guess it is quite hard to express my intention in short words while on mobile… sorry.
I myself don’t think haskell is dead.
No I mean we never so consciously said “OK research is done, it’s stability time!”. So it seems to hard to believe that Rust is “the place for language innovation” — there is the one time novelty factor trying out such a new language sure, but we have plans to keep on changing, whereas they do not.
I see. Sorry for misunderstanding… Though, did haskell language change by much? It seems like only refactors have been happening.
Specifically in this case there’s a discord community of haskell gamedevs that I know of which is somewhat active. I also know of another small community of people who like to write compilers in Haskell. It is possible that there are other such communities that no longer interact with the central hubs (e.g. reddit).
Haskell is indeed dead, and so is Common Lisp, in the same way that if someone is falling through the air and opens their parachute they stop falling and shoot straight up - it’s all relative. Python, for all of its faults, is making major advances in its share of programming time.
Alas poor Haskell,
I knew it, Horatio,
A language of infinite jest;
I absolutely agree. I don’t think Haskell will be able to substantially grow or keep its edge through new language features. We’ve been long beaten by Idris, Agda, F* etc in that domain and much of the community has a somewhat collective burnout from the constant change as has been attested by several non-trivial industry users.
The way forward is stabilization, improving performance and platform support. We’ve had many threads about this topic here and I feel most of the community agrees, but a couple important key people in the community do not. So there’s some things to figure out. Whether the HF stability working group can deliver a united front in that regard that’s actually backed by the board and GHC devs remains to be seen.
More resources on haskell gamedev.
There is a friendly community on Matrix, (bridged to irc if you prefer: libera.chat/#haskell-game
). Allure of the Stars (~50k LOCs, not a toy) dev Mikolaj dwells there.
Having used Haskell to write a small game (and a jam entry), I found the experience pleasing but yes some additional resources (documentation on best practices on how to set up your game, best way to structure games with lots of sub/minigames, etc.) would have helped.
I don’t have any factual argument as to why Haskell isn’t dying, but to go against what seems to be the common pattern in this thread of feeling like Haskell is dying and is beat, I must say:
I feel enthusiastic about Haskell every day, I feel like it’s such an amazing language that keeps on growing and being yet more amazing. I discover awesome and mind bending things (e.g. Control.Monad.Tardis) every day. I am that guy who won’t shut up about Haskell and keeps trying to teach it to his colleagues (and actually to just about everyone else).
I’ve recently started contributing to GHC after having read Trees That Grow – and now I’m even more enthusiastic about it – I’m excited for Haskell to be more modular – for it to be extended in new ways.
I’m excited for the upcoming in-person events like ZuriHac.
I’m seeing more attempts to bring other mainstream parts of programming into Haskell such as cross platform front end development (GitHub - obsidiansystems/obelisk: Functional reactive web and mobile applications, with batteries included.), and virtual doms (https://haskell-miso.org)
Yes. I am biased. Yes, I am in the Haskell bubble, but I mean to fight (ง’̀-'́)ง the negativity trend.