When I finished writing my PhD, I swore (as most recent graduates do) to never write a thesis again. Instead, life would be a series of pleasantly short papers, interspersed with the occasional journal article, and lots of not-writing-huge-book-activity in general.
Then CUFP 2011 happened, and I find myself in a bar in Tokyo with Yaron Minsky and Marius Eriksen, and a dangerous bet ensued. A few short weeks after that, and Yaron and I are chatting with Jason Hickey in California about writing a book about the language we love. I’m still telling myself that this will never actually happen, but then everyone’s favourite Californirishman Bryan O’Sullivan puts us in touch with O’Reilly, who published his excellent Haskell tome.
O’Reilly arranged everything incredibly fast, with our editor Andy Oram driving us through the process. We decided early on that we wanted to write a book that had opinions based our personal experience: about how OCaml code should be written, about the standard library involved, and generally making functional programming more accessible. Along the way, we’ve been working incredibly hard on the underlying software platform too, with Jane Street, OCamlPro and my own group OCaml Labs working together on all the pieces. There’s still a lot of work left to do, of course, but we’re right on track to get all this released very soon now.
So, without further ado, I was very pleased to send this e-mail this morning. (and once again reaffirm my committment to never writing another book ever again. Until next time!)
Yaron Minsky, Jason Hickey and I are pleased to announce the beta release of our forthcoming O’Reilly book, called “Real World OCaml”, available online at http://realworldocaml.org
The book is split into three parts: language concepts, tools and techniques, and understanding the runtime. As promised last year, we are making a public beta available for community review and to help us hunt down inaccuracies and find areas that need more clarification.
We’ve had the book in closed alpha for six months or so and have developed a feedback system that uses Github to record your comments. This lets us follow up to each review with clarifications and keep track of our progress in fixing issues. During alpha, we’ve received over 1400 comments in this fashion (and addressed the vast majority of them!). However, since we anticipate more comments coming in from a public beta, we would request that you read the FAQ to avoid drowning us in repeat comments: http://www.realworldocaml.org/#faq.
(TL;DR followup another comment on Github directly if you can instead of creating a new issue via the web interface)
This release is available in HTML format online at: http://www.realworldocaml.org
O’Reilly is currently preparing a Rough Cuts release that will make the beta available as PDF and in popular eBook formats. We anticipate that this will be available later this week, and I’ll send a followup when that happens.
Finally, we would especially like to thank our alpha reviewers. Their feedback has been invaluable to the beta release. The book also includes substantial contributions to individual chapters from Jeremy Yallop (FFI), Stephen Weeks (GC) and Leo White (objects).
If you have any comments that you’d like to send directly by e-mail, please contact us at firstname.lastname@example.org.
Release notes for beta1:
- The first-class modules chapter is incomplete, pending some portability improvements to the ocaml-plugins Core library.
- The binary serialization chapter is also incomplete, but has just enough to teach you about the Async RPC library.
- The installation chapter will be revised in anticipation of the OCaml 4.1 release, and is currently quite source-based.
- The packaging and build systems chapter hasn’t been started yet. We’re still deciding whether or not to make this an online pointer rather than a print chapter, since it’s likely to change quite fast.
- We are preparing exercises per chapter that are not included in this particular beta release, but will be available online as soon as possible.
- The code examples will all be clonable as a separate repository in beta2.
best, Yaron, Jason and Anil