Dear OCaml Community,
Three years ago, @avsm and the OCaml Platform team presented a roadmap for the OCaml Platform. The vision we had of the Platform in 2020 was one of a seamless editor integration, where users could open their editors and instantly be productive with OCaml.
While there’s still a long road ahead to achieve this vision, we’ve made a lot of progress. The tooling landscape and developer experience with OCaml have changed quite a lot in the past 3 years and we’ve made significant progress on all the tools of the Platform:
- Dune is now the primary build system used by OCaml developers, with 65% of packages on the opam repository using Dune as their build system.
- Ppxlib has become the best way to write PPX and most PPX have been migrated to Ppxlib. To get a sense of the effort that went into this, you can read the updates from 2019, 2020, 2021.
- We’ve built a Language Server Protocol (LSP) server for OCaml, that powers the OCaml VSCode extension which has now been downloaded 100K times.
- We’ve built an RPC protocol in Dune that was released in Dune 3.0 and another one for OCamlFormat. These protocols are integrated with OCaml LSP to support some of its features.
- Odoc 2.0.0 was released with a complete re-write of the language model to make the generated documentation more accurate, and also comes with a new rendering layer to allowing output in different formats including HTML, LaTex and manpage. Odoc is also now used to generate the documentation of every OCaml package on ocaml.org.
- Opam 2.1.0 was released with significant improvements like the integrated depext system and the generation of lock files.
- We re-implemented the way we locate OCaml terms in Merlin which greatly improved the accuracy of the
locatequery and paved the way for the work on project-wide references. To achieve this, we added a new representation of the module structure in the OCaml compiler called “Shapes”. Shapes are now used in Merlin, but also enable features in other Platform tools, like linking to source code in Odoc.
In the meantime, things have also changed for the broader OCaml ecosystem. OCaml 5 was released with support for shared memory parallelism and effect handlers; and we saw a new version of OCaml.org going live with a centralised package documentation, a job board, an interactive playground, and more.
Following the three priorities we adopted in 2022, we now want to intensify our efforts on prototyping new workflows for OCaml development. It is time to reflect back on everything we’ve done and lay down a roadmap for the next three years.
In the past few months, we’ve been working on establishing a vision for the future of the OCaml Platform. We reviewed as much community feedback as possible, organised discussions with the maintainers of the Platform tools, met with industrial users of OCaml to understand their needs and pain points, and we collectively thought of what the ideal developer experience with OCaml ought to be.
We want the OCaml Platform to be driven by the community. So today, I’m excited to share the first parts of the roadmap to start collecting feedback and iterating on them.
You can see the work-in-progress roadmap on GitHub. The repository currently contains two documents:
- Design Principles: The principles that will guide the desired OCaml developer experience.
- Users: The different user personas within the OCaml ecosystem serve as a guide for the roadmap, ensuring that it addresses the unique requirements of each archetype.
Feel free to read through them and share your thoughts, in particular:
- Do you agree with the Principles of the Platform?
- Do you see yourself represented in the Users?
Once we’ve iterated on the feedback and are ready to adopt these high-level guidelines, we’ll refine the developer workflows we aim to build in the coming years. Similarly to the first sections, we’ll post them on Discuss to discuss them with the community and ultimately adopt a first version of the Platform roadmap.
I’m looking forward to everyone’s feedback and building this roadmap together!