[opam-devel] OPAM Roadmap -- what next ?

Louis Gesbert louis.gesbert at ocamlpro.com
Wed Dec 17 10:07:40 GMT 2014

Hi all,

with some lag after the 1.2 release, I'd like to open some space for a collective discussion of the priorities for where the energies should go next. We have mainly 3 directions for improvements: first, portability, with the main goal of a Windows version. Second, agnosticity, with the goal to make OPAM more generic, and try and open it to users outside of the OCaml community (wouldn't OPAM for Haskell be fun ?). Third, there are always lots of features and improvements that have been asked for, and would improve the experience of current users.

So here is a summary of what I've gathered. Feel free to add your own.

## Portability

- **Rewrite parallel command engine.** / done.

- **Native system manipulation (cp, rm, curl...).**
  These are mostly done through calls to the shell or external programs. It's
  not very pretty but quite pragmatic actually... until we want to run on
  Windows without Cygwin. Anyway, this wouldn't be the end of portability

- **Windows support.**
  for OPAM itself to begin with. This should be pretty close.

- **Packages on Windows.**
  Locate common issues and attempt to find generic fixes.

- Allow **direct use of more solvers** or solver servers.

- **Support cross-compilation**
  This is quite an open issue at the moment.

## Agnosticity

- **Isolate OCaml-specific stuff.**
  E.g. specific opam-file variables. See ocaml-specific.md

- **Separate as plugins**
  To open the gate to OPAM without these plugins, or with other ones

- **Compilers as packages.**
  This should mostly work now, but needs some tests and strengthening. The main
  thing still to do is to handle the system compiler changes properly ; that
  part should be made more generic anyway (see discussion on hooks)

## Features

- A **provides** field. Generally useful, but particulary so with

- Releasing the **"features" field** for easier package configuration

- **Track installed files**

- **Improve security**: just checking md5s is quite light ; package scripts can
  write anywhere

- **OS-specific handling of dependencies** (eg dependencies on packages from the
  OS) with plugins (#1519)

- Specify and implement **hooks**

- Find a nicer way to **share dev repos** / undoable "pinning sources"

- **Per-switch remotes**

- **Multi-switch packages**

- Support for (automatic generation of) **binary packages**

- Nicer **ocamlfind interaction**

Louis Gesbert
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ocaml.org/pipermail/opam-devel/attachments/20141217/8b436370/attachment.html>

More information about the opam-devel mailing list