There are alternatives and extensions to the standard library not because it has any flaws or is poorly designed. The main problem with it is that it is very small and lacks lots of features that are common in modern languages, cf., Python, Ruby. This mainly comes from two reasons: First, OCaml is a rather old language (most of the stdlib was written for CamlLight nearly 30 years ago), and at that time it was more than enough. The second reason is the support burden. It takes a lot of time to support a big library. My personal opinion, the OCaml development team consists of excellent scientists, very bright people, and it would be counterproductive to use even a minute of their time on implementing boring stuff like file processing, XML parsing, or any other stuff like that. I would better remove the burden of having the standard library at all, and let them focus on much more interesting tasks.
Next, about the alternatives. There are two general approaches - the standard library extension, and the standard library substitution. The Janestreet took the latter path, all other solutions took the former.
At Carnegie Mellon University we use the Janestreet Core (kernel) library for several years (and will keep doing this). There are good things about this library and there are bad. The good thing is that it is tremendous - it’s millions of code written by really good programmers and tested by the real life. The main problem, that we face, is the lack of documentation. Though in the past few years the situation has improved, the documentation and its availability are still average. Another problem is that given the size of the library it is very hard to learn it (and to teach it). It is also using lots of indirections, and unlike the standard library, its code is hardly readable and non-transparent. That all makes the Janestreet library a rather poor choice for education, but an excellent choice for the industrial software development. That’s my personal opinion, and I see a movement in the direction, where the Janestreet stuff becomes more accessible to newbies. To summarize, it’s an excellent library, but sometimes a little bit overwhelming
Another approach is not to fix the standard library (does it really need fixing?) but to extend it. The main rival of the Core library in this field is the Batteries library. I used it a lot, and can’t say anything really bad about it. But I’ve moved to Core, and never regret it.
Speaking of the future of OCaml, since now we have OPAM, it makes integration of different libraries much easier, and we do not really need such gargantuan libraries as Core and Batteries. We can now ship small libraries each doing one thing. (This may lead to a library explosion (cf., npm) but I hope that we will never go that far). I really like the Containers library, and I believe (and hope) that this is how the future of OCaml will look like.
But for today, my personal recommendation for you is to use the Janestreet Core library (not the Base). Read the RWO book, I would even suggest you read the second version (that is currently under development). Since the time when the first edition of RWO was written, OCaml infrastructure evolved a lot. Concerning the Base library, I personally believe that right now (Nov 2017) it is not ready to be used alone. It has a few glitches and, most importantly, the books assume that you’re using Core (maybe Core_kernel), and since the Base library often reuses the same names as the Core library, you could be easily confused.
Looks like that this comment has the same, Аrgumentum ad hominem, flaw