opam

A little bit of History

opam

The first specification draft of OPAM was written at the end of Jan 2012 by Thomas Gazagnaire from OCamlPro. The specification was reviewed by Fabrice Le Fessant (OCamlPro/INRIA), Yaron Minsky (Jane Street) -- who funded the project, and Anil Madhavapeddy (University of Cambridge) -- who needed a source-based package manager to manage libraries emerging from the Mirage OS project.

At about the same time, Frederic Tuong, an intern from Inria, funded by the DORM research grant in collaboration with OCamlPro and IRILL, started to implement the first version of OPAM (called ocp-get at the time) at the end of Feb 2012. He also started to create the first OPAM packages one month later. Frederic and Thomas worked closely together in the following months to demonstrate OPAM at the OCaml Workshop 2012 where (almost) everyone was already using it! Frederic started a PhD in Oct 2012 and left the OPAM team to focus on his studies. Roberto Di Cosmo and Pietro Abate, from IRILL, began helping Thomas at the end of 2012 to properly integrate their Mancoosi tools (such as CUDF and dose) so that OPAM could benefit from modern constraint solving tools and be able to automatically use the aspcud external solver if is available.

At the end of 2012, Vincent Bernardoff and Guillem Rieu (from OCamlPro) worked for a few months on improving the documentation and ease of use of OPAM for newcomers. They created opam2web, the tool used to generate https://opam.ocaml.org.

The first public beta of OPAM was released in Jan 2013 and few months later (in March 2013) the first official release landed. A few days later, Louis Gesbert -- who joined OCamlPro in Dec 2012, pushed his first commit to the codebase. In Nov 2013, OPAM 1.1.0 was released and Louis became the technical lead. A months later, opam 1.1.1 with numerous bug fixes.

opam-repository

Meanwhile, in June 2012 Mirage started to use opam (as it was using a custom 3.12.1 compiler). Very quickly, starting off Frederic's work, Anil and Thomas shared the task of adding new packages and monitor the pull-requests on opam-repository. The initial policy was to accept as many packages as possible, which means that things were often broken. So they started to use background bulks builds to improve the overall repository quality. In July 2012, Jane-Street's Core libraries made its apparition in the repository. To improve the quality of new packages, Travis CI was integrated in Sept 2013 to the pull-request process. From Aug to Nov 2013, all the contributors of opam-repository were contacted to re-license their contribution to CC0, which enable the move of the repository to the ocaml organisation. The opam weather service, created by Iril and OCamlPro, was announced in Apr 2014 and expose quality metrics to the repository quality.

Notes: Some significant bumps in opam-repository were adoption by projects: start of the bi-weekly pulls from Jane Street on Core (the biggest one), the Ocsigen and XAPI remotes, and Mirage releases.

Getting Support

Opam has been created and is maintained by OCamlPro. Bug reports and feature requests for the opam tool should be reported on opam's issue-tracker. Packaging issues or requests for a new package can be reported on the official repository's issue-tracker.

General queries for both the tool and the packages could be addressed on the OCaml-platform mailing-list and insights and evolution of opam internals can discussed on the opam-devel mailing-list.

Standard commercial terms and support on opam, as well as training and consulting services, are provided by OCamlPro.