Tarides Logo
Two gift boxes, one green, one brown, tied with twine.

Dune Package Management: Revolutionising OCaml Development

Christine Rose

Technical Writer

Posted on Wed, 09 Oct 2024

At Tarides, we’ve been working on an initiative to improve the OCaml development experience: Dune Package Management. As outlined in the Platform Roadmap, which was created through community collaboration, the aim is to unify all OCaml development workflows under a single, streamlined tool. At Tarides, we aim to make Dune the recommended frontend for the OCaml Platform, offering new users a seamless developer experience.

The motivation behind Dune Package Management is clear. For years, the OCaml community has called for a single tool to address all the development concerns: building projects, managing dependencies, testing on different compiler versions, etc. By integrating package management directly into Dune, we want to resolve the above long-standing pain points that can make OCaml cumbersome to work with, both for newcomers and experienced developers.

The Vision for Dune

Our long-term goal is to make Dune the central tool for OCaml development. That means more than just feature additions! It's about radically simplifying how developers work with the OCaml platform. By making installation painless and simplifying frustrating workflows, such as the handling of dependencies and testing against multiple compiler versions, Dune will address all your OCaml needs.

Dune integrates package management by using opam as a libary in essential parts of our approach. Two commands lie at the heart of integration: dune pkg lock and dune build. dune pkg lock creates a generated lock file, whereas dune build depends on this lock file to manage project dependencies. You can now handle everything from project initialisation to dependency management using these simple commands.

What We’ve Achieved So Far

We've accomplished a lot in these past few months! The work we have done for Dune Package Management can already handle such complex projects as OCaml.org and Bonsai using the new package management features. Both were successfully built using these new features. These early successes confirm our hypothesis: we are on the right track, because this proves the solution's viability in real world scenarios.

But this is not the end of the work. In the future, we plan to further improve the UX so that Dune is not only correct but also easy and productive for developers to use. The remaining challenges are yet to be overcome, and we hope to make Dune Package Management the standard tooling for all OCaml workflows.

The Road Ahead

Now that we hit the milestone for MVP, the subsequent phase will have testing, validation, and enhancement of the developer experience. Our main focuses going ahead will include:

  • Smoothen UX: We want to make the Dune Package Management interface as intuitive as possible, so developers can get their projects underway quickly.
  • Optimising Performance: This means shorter compilation times, quicker install times for dependencies, and ensuring all operations work seamlessly.
  • Simplify Tooling: We're starting to include things like testing, formatting, documentation generation, and more! This way developers will no longer have to run several different tools to manage their projects.
  • Providing Clear Documentation: Thorough, user-friendly documentation will be essential in helping developers adopt these new features.

A Unified Future for OCaml

Package Management brings in a new era of OCaml development. Dune will now be the only tool engineers will need, making OCaml development as seamless and effective for both complete beginners and experienced developers on the platform.

We look forward to the future and what Dune Package Management will facilitate within the OCaml community. Stay tuned, and prepare to take part in a more integrated and seamless OCaml development experience with Dune.

Contact Tarides to see how OCaml can benefit your business and/or for support while learning OCaml. Follow us on Twitter and LinkedIn to ensure you never miss a post We've also created new accounts on Mastodon and Threads, if you prefer. Be sure to join the OCaml discussion on Discuss!