The first thing I want to note is that things have really improved in the OCaml space. By a lot. People new to the language aren’t really aware of this, but it’s true. Most of this I attribute to OCaml labs and the great people that have come out of there, a few companies’ investment in the community, and additionally now we’re experiencing a bonus Renaissance due to ReasonML.
At the same time, I think the main thing holding OCaml back (aside from lack of people) is a certain culture that’s pervasive, and is very common among older programmers: “Who needs this new thing? My thing works just fine for me and there’s no need to change it.” This is followed up by “You want to do this? Go implement it on your own and prove to me it’s worthwhile before I even consider it.”
The first problem is that this mentality ultimately saps the energy of people who want to improve things until they give up and move on, and all you’re left with is a self-selection for the same old attitude and culture. The other problem is that without change - without advancing with the time - you lose out on the most important thing, which is new users in the ecosystem. Users are everything to a language.
It took a long while until the community was convinced to try Discourse. Even now, there are old-time OCamlers who don’t show up here – who are still clinging to the old OCaml mailing list. Was the old list ‘good enough’? Well, it was functional, but there are many advantages to Discourse, the chief one of which being that you now can attract new users who see a live, rather than a dying, community.
I would argue that the same thing needs to happen to the IRC channel. Is IRC decent? Sure. But you’re isolating yourself from the world, and you need the world a lot more than it needs you. OCaml can’t afford to look like the old man shouting at young people to get off his lawn. It’s not a good look, and it doesn’t attract anybody. How many people have not been exposed to OCaml because they didn’t stumble on a live discussion with knowledgeable users? I’d wager it’s a lot.
As an example of the opposite culture, if you step into the Rust chat, you can’t help but be attracted to it. They’re discussing RFCs for language features in the forum, for goodness’ sake! Conversations that happen in hallways or on private email messages in the OCaml world are taking place out in the open, and interested people can get involved in whatever interests them. You can’t beat that. That infuses the community with energy.
And lest you think this is too hard to replicate, just look at ReasonML. Sure, they’re just designing a front-end, but the energy is there because the process is open, and they have an attitude of change and growth that’s infectious.
I also want to mention that I think backwards compatibility can be overrated. I appreciate solid backwards-compatibility as much as the next person, but backwards-compatibility is most important when you have a large audience. When you have a small audience, your existing projects break down into a mix of a majority of dead and unmaintained projects left behind by people who mostly abandoned the language, and modern projects that are really interested in the changes you want to make, and would update their code to support it because they care about the future of the language. The point is, if making changes will grow your ecosystem significantly, potentially all the backwards-compatible projects that now exist will be a drop in the ocean of projects that will eventually exist.