I love Ocaml but have ditched it for Erlang/Elixir, losing a lot of elegance on the way, but massively gaining on horizontal scalability and pragmatism. I would love to stay with Ocaml but there just isn't enough of a clear roadmap to it on multicore (seemingly fraught with controversy within the community), or even multi-node distributed computing that does not require me to reverse engineer someone's 10-year-old, badly documented thesis project. I almost feel like the Ocaml project is stuck optimizing a single-core past, and that it might be better to devise a new Ocaml-based language altogether, designed from the ground up for distributed computing. I'd be there immediately.

I'm not an expert in either language but have you also given F# a though? The compiler is open source and should run under Mono. I do know it's heavily influenced by OCaml.

I really need Linux to be the first class citizen (yes I see MS has bought Xamarin but still). Also last I looked, F# wasn't looking any better than Ocaml on multinode distributed computing (please do correct me if I'm wrong).

As another poster mentioned, you can use Akka.Net with F# (that project was started and is still run by F# developers).

Another option with deeper language integration is mbrace: http://mbrace.io/

Vesa Karvonen ported CML to F# as Hopac, which has very good performance: https://github.com/Hopac/Hopac

Finally, there're Orleans and Naiad from MSFT:

https://github.com/dotnet/orleans

https://github.com/MicrosoftResearch/Naiad