A few thoughts on why I decided to start working on an open source project:
- I enjoy working in OCaml (functional languages in general, in fact), and need a project to work on that I can take in any direction I want, yet with a goal in mind. Mind you, I enjoy Forth too, but I’ve never managed to write a useful program in it…
- Oracle bindings are the very definition of “useful”; by doing this work I am helping to grow the OCaml ecosystem, paying back some of the help others have given me, and increasing the possibility of being able to use OCaml as my main language at work
- Most of my work is on the “back end”, it isn’t visible outside the organization I work for, and only even to a subset of that organization. In fact, the vast majority of the time, it’s completely invisible, which is exactly how it should be. This, and this blog, are an opportunity to create a “portfolio” of sorts.
- Blogging is an actually enjoyable way to write documentation 🙂
One of the things that people like to argue about is which is the “best” programming language, operating system, database, text editor and so on. The truth is, it doesn’t make sense to think of these things as simply tools; rather by making the choice you are choosing a community to join, a community that has certain interests and certain beliefs about how programs should be written or systems operated. Sure, some tools are better suited to some tasks than others, but the best X, if the question ever arises practically rather than just rhetorically, is usually the one whose people are closest to you (in a physical sense if possible, i.e. at the next desk) and who are working on the same or similar things as you. And even if you don’t know anyone, or don’t know the right forums or mailing lists, you at least have access to documentation and libraries.
That is especially true if you are doing real work with real deadlines; there is no opportunity to spend a few days playing with an idea or reimplementing a library that exists in other languages in OCaml or Haskell when someone has already written something you can just reuse in Python or Java in half a day, and is at the next desk if you have any questions, or if it’s just a download away and you can buy a book on it. That is just how it is for the majority of engineers working in industry. No such constraints exist when working on a personal project, and referring to points 2 and 3 above, once Python was that language for many people, and once a critical mass of people using it for personal projects was achieved, the prerequisites for “best” language were satisfied, and it went mainstream. Even if we have to write ML in Scala and F# instead of OCaml, it’s still a great leap forward – what I was after all along was compiled, more-functional Python-like language with type safety!
I’m sure OCI*ML won’t be the only thing I ever do either, now that I’ve a taste for it, but there’s enough outstanding there to keep me busy for a while.