I ended up going on a rant, so I’m just gonna put a little summary here at the top…
TLDR: We need more people championing and working on the “smaller” issues like duplicate record fields/namespaces,cabal add <package>
, and better documentation/business focused packages.
Rant following below.
I do have one (maybe unpopular) thought to offer here thats in agreement with @AntC2. He made a comment here saying:
DH has sucked all of the air out of the room
…
I want it to take the language as at 2016 (Pattern Synonyms) and continue all the half-finished other stuff – like FunDeps with Overlapping, a records system, Datatype contexts done
It’s not that I dislike dependent haskell; on the contrary I think it’s really cool and I look forward to finally seeing it arrive. But I think there were issues more important to work on than DH, atleast as far as helping haskell become more mainstream is concerned.
Haskell is a powerful language, but it has some very annoying quirks, like the duplicate record fields issue, or having to dive into a cabal file to add dependencies instead of just calling a command like cabal add <package>
.
I recognize that these issues are not “major” problems and can be side stepped atleast relatively easily, but they are annoying. Annoying is the evil twin brother of convenience, and if I’ve learned anything from Google (anecdotally confirmed by my own experience with my colleagues), convenience is far more pursuasive than power. In my own job, I’ve recommended powerful tools over and over again, only to have them bypassed for an inferior tool that was way more convenient to use.
If our community put as much effort towards fixing the annoying issues as it has towards the large milestone issues, we’d probably already be atleast heading towards greater growth.
For example:
John Ericson is currently advocating for the pattern signature proposal here. I don’t mean to be dismissive of his efforts, but I don’t believe newcomers would care much for this. I surely don’t understand it too well and I’ve been using haskell for a good while now.
Richard gave up on the Local Modules Proposal because “there are other battles to fight!”
Perhaps this is why people say we’re more focused on academics than on being practical? I assume fixing issues like record dot syntax (fixed already), local Modules, and improved tooling like cabal add <package>
; are low hanging fruit compared to something like DH, or improving the architecture and organization of ghc. But we’ve put all our efforts on the huge things and neglected the little ones.
I didn’t even consider haskell viable for serious use until HLS and RecordDotSyntax came into the world, but haskell has obviously been viable for a long time now. I also think D is a really cool language, but it’s language server is very buggy so I dismissed it. Zig is a cool language, but they have no package manager, so I dismissed it. I don’t mean to be this way but I can’t help who I am, maybe it’s because I’m immature. But I think this is what we’re up against when other programmers in the greater community look at haskell and see annoying issues that arent fixed. They’re quick to dismiss.
Sorry for the rant! I hope my thoughts have come through clearly