Generally, I don’t think it’s a question of technical issues at all, or missing functionality as such.
The Rust community is much younger than the OCaml community but seems to have grown at a far faster rate. I think this is at least partially because it has a strong dedication to good documentation, user-friendly tooling, and rapid development. Importantly, it has a dedication to being pleasant and friendly to people who want to contribute. If one wanted OCaml to grow fast, it would be necessary to have similar policies. I don’t think that’s going to happen, at least any time soon.
I’ll expand on two issues in particular, though all are important.
- OCaml’s documentation is not very good — and in some parts of the ecosystem, it’s absolutely awful — but there is open disdain from many people about making the documentation better, and certainly disdain for making it good enough for beginners. One claim I have seen from some people is that they do not find more thorough documentation necessary (after all, they already understand how things work) and that more verbose documentation would only slow them down. Thus, beginners exposed to Rust learn the language much more easily, and many exposed to OCaml find it more difficult than it needs to be.
- Problem reports and pull requests in the OCaml compiler/stdlib ecosystem often take years to resolve. There are many pull requests outstanding for relatively small changes that have reasonable consensus and yet which have been open for years will likely remain open for years to come. It isn’t a question of careful consideration, but rather one of general apathy about processing such things in a timely way. This is demoralizing to contributors. It is easy to make an ecosystem moribund by taking forever to act on contributions, and relatively easy to make it friendlier by acting on them efficiently. Rust is much more welcoming of contributions, and the community devotes a lot of energy to making sure that contributors are treated respectfully and their contributions are handled efficiently. This tends to mean that you end up with more good contributors over time.
I do not see either of these issues being fixed. There isn’t even consensus that the two of them are problems; indeed, many people will disagree with me. I suspect that it will be easy for people to argue why these are in fact good things about OCaml (“our documentation is good for experts”, or “it’s appropriate that compiler changes get careful consideration”). And of course, perhaps I’m even wrong.
That said, I think Rust will continue to grow rapidly compared to OCaml. This does not mean OCaml is doomed or anything like that; I’m not a deep pessimist and not about to stop using the language. However, I suspect that it is unlikely that the community will make the commitment needed to being “friendly” and thus we can expect that growth will continue to be slow, and thus the labor pool available for working on improvements will continue to be limited.