In the OCaml User Survey topic, @xavierleroy wrote:
The OCaml survey 2020 is now closed. It attracted 745 replies. Everyone should be able to see the summary of results and to download the raw data.
I and a few others will try to write a summary of the replies, especially of the many free-form replies. Everyone is welcome to help sifting through the results! Short comments can be posted in this discussion thread, and longer analyses can be put somewhere else and mentioned here.
Thanks for putting together this great resource!
I think it’s quite important to take the results from this survey and find actionable items (or highlight ongoing efforts) which aim to improve different problems for different users. As a result I have put together some graphs trying to categorise the answers based on proficiency (beginner
, intermediate
, advanced
and expert
). These groupings are quite subjective but I thought it might offer a slightly more nuanced look into what problems users had, where they come from, what they are doing and what commonalities they share. The code is here and the HTML version of the notebook here (I’m no data-scientist nor python developer if you see glaring mistakes do raise an issue!).
Here are some possible inferences (warning: opinions ahead) that can be made from the data along with possible actionable steps (or links to ongoing projects):
- Everybody wants better documentation for user libraries. I think people want more long-form style documentation. However, excellent work is currently taking place with odoc (see also OCaml workshop video) and perhaps these concerns can be wrapped into this ongoing work.
- Everybody wants multicore but “experts” want implicits a little more – multicore is coming along amazingly and implicits are in an earlier but active state AFAICT.
- A wide variety of application domains - less proficient OCaml users tend to be doing more web-related tasks or data processing. Advanced/expert users are implementing programming languages, building developer tools, systems and formal methods. This is reflected in other breakdowns for example in “other fluent languages” we see JS more popular with beginners and C with experts. But also track the progress of Coq and friends moving up as proficiency increases. This is quite interesting and I think it could point to an actionable item of working more on the web and formal methods components of the OCaml ecosystem i.e. working with Coq devs and JS devs to help them.
- From a Javascript point-of-view, looking at the implementations section it’s interesting to note across the four proficiency levels
js_of_ocaml
is more popular thanReason
except for beginners. Both projects are actively worked on, but perhaps morejs_of_ocaml
documentation would be good with many tools already existing like gen_js_api, Jane Street’s bonsai etc. In my opinion, this survey motivates working on unifying the JS world of OCaml as (at least to me) right now it feels a little fragmented and hard for someone new to know where to go. - Opam with the public repository across all users is consistently the most used installation method – this justifies the large amount of work that tasks place on opam that I’m sure most are very grateful for. Tying this back to the previous point of “cross community” work, opam have community meetings which seem to be v. useful.
- Pain points – the top two (although they interchange) is “lack of critical libraries” and “too hard to find and hire OCaml developers”. Some effort has been made to find these libraries including in the survey. I’m not sure what else can be done. As for hiring, looking at the different communication channels there is quite a spread with different users using different channels. This is great, but may also cause some fragmentation and make the “hiring” process worse.
These are just some thoughts from a relatively new OCaml community member, I would love to know what other actionable steps people think we can take from this data and hopefully we can produce a more concise and specific set of steps to put this survey to great use :))