I've been meaning to write about the OCaml Summer Project end-of-summer meeting that occurred on September 12th, but as those of you who read the news may have noticed, it's been a busy time in the financial markets. But I've gotten a moment to catch my breath, so I thought I'd post my recollections. The meeting was a great deal of fun. Participation was good, with students from every project, and mentors from most of the projects. Matthias Felleisen was our invited speaker, and he gave an excellent talk about the role of contracts and static typing in Scheme. Contracts themselves are a compelling idea, and one that it seems like the ML community could learn from.
Matthias was a particularly good match for the meeting because, coming from the scheme community, he has seen many of the issues that the OSP is trying to address from a different perspective. Things like powerful macros, GUI toolkits, good pedagogical support and IDE integration are things that various schemes (DrScheme in particular) have had in one form or another for quite a while. Similarly there are developments in the Scheme world, notably the addition of static typing, which are old hat in ML.
But the best part of the meeting was seeing how the projects had progressed and meeting the people who had worked on them. Some of the projects have resulted in software that you can download and use right now, such as ocamlwizard, menhir enhancements and delimited overloading. It seems like the ocamlwizard work, along with the related project OCamlSpotter (by Jane Street's own Jun Furuse), are leading INRIA towards extending the
.annot files currently generated by the compiler to generally ease integration with editors and IDEs. The students working on Menhir added some much needed functionality to an already existing and capable tool. And the delimited overloading project has added a really lovely syntax extension that significantly improves the readability of numerical code in OCaml. These projects are all in a state where you can actually grab them and use them today, which is a big part of what we were pushing for with this year's OSP.
The qtcaml project and the project to add a concurrent GC to OCaml are steps along the way to more ambitious projects. The qtcaml guys worked on tools for auto-generating OCaml bindings from C++ code, which is a first step towards building a complete and up-to-date wrapping for the large and ever-changing Qt toolkit. Their expectation is that the binding generator should be useful on its own. The parallel GC project has made a first proof-of-concept of a parallel GC in OCaml. It's an exciting step, but it's not clear to me where it goes from here, although we do expect to see a release of their current prototype. The performance of the prototype isn't good enough to make it worth using in practice, and it's not clear how the work that has been done could be migrated to the mainstream compiler.
The only other project is EasyOCaml. The schedule of that project was out of sync with the rest of the projects, and so we haven't yet seen the final results. Their goal is an important one: to make OCaml a better pedagogical language. I have high hopes of this work getting integrated into the DrOCaml IDE and making an effective teaching platform for OCaml.
Our real hope out of all this is that these projects continue to live on and thrive. As Matthias mentioned in his talk, people should take the summer projects as seed money, helping start out something that lives on long after.