<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div>Hi,</div><div><br class=""></div><div>An official windows support would be nice indeed.</div><div><br class=""><blockquote type="cite" class=""><div class="">* More flexible switch handling (multi-switch packages, per-switch remotes, layered switches for cross-compilation...)<br class=""></div></blockquote><div><br class=""></div><div>Not very critical but it would be indeed nice to rationalise the design of pin/repo global vs. per switch.</div><div><br class=""></div><div>But I think what would be very useful is to think of a (if possible simple) working end-to-end cross-compilation system using opam. Maybe that's just a matter of having opam set the right environment variable to designate the TARGET and HOST switches correctly, and then update opam-repository to configure each package correctly, maybe that's more (involving build system hackeries). But at least I think we should think about it for 1.3.</div><div><br class=""></div><blockquote type="cite" class=""><div class="">* With file tracking, generating a binary repo (with some limitations) could be quite straight-forward.<br class=""></div></blockquote><div><br class=""></div>yay.</div><div><br class=""></div><div>Thomas</div><div><br class=""></div><div><blockquote type="cite" class=""><div class="">Which of these do you think is most important ? Have I forgotten anything ?<br class=""></div></blockquote><div><br class=""></div>yes: we need more colors and more camels. And more animated progress bars too.</div><div><br class=""></div><div>Thomas</div><div><br class=""><blockquote type="cite" class=""><div class=""><br class="">Cheers,<br class="">Louis<br class=""><br class=""><br class="">[1] <a href="http://theupdateframework.com/" class="">http://theupdateframework.com/</a><br class="">[2] <a href="https://github.com/ocaml/opam/blob/master/doc/design/depexts-plugins" class="">https://github.com/ocaml/opam/blob/master/doc/design/depexts-plugins</a><br class="">[3] <a href="https://github.com/ocaml/opam/blob/master/doc/design/provides.md" class="">https://github.com/ocaml/opam/blob/master/doc/design/provides.md</a><br class=""><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;" class=""><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif; color:rgba(127, 127, 127, 1.0);" class=""><b class="">From: </b></span><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif;" class="">Louis Gesbert <<a href="mailto:louis.gesbert@ocamlpro.com" class="">louis.gesbert@ocamlpro.com</a>><br class=""></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;" class=""><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif; color:rgba(127, 127, 127, 1.0);" class=""><b class="">To: </b></span><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif;" class=""><a href="mailto:opam-devel@lists.ocaml.org" class="">opam-devel@lists.ocaml.org</a><br class=""></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;" class=""><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif; color:rgba(127, 127, 127, 1.0);" class=""><b class="">Date: </b></span><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif;" class="">17 December 2014 10:07:40 GMT<br class=""></span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;" class=""><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif; color:rgba(127, 127, 127, 1.0);" class=""><b class="">Subject: </b></span><span style="font-family: -webkit-system-font, Helvetica Neue, Helvetica, sans-serif;" class=""><b class="">[opam-devel] OPAM Roadmap -- what next ?</b><br class=""></span></div><br class=""><br class="">
<meta name="qrichtext" content="1" class=""><style type="text/css" class="">
p, li { white-space: pre-wrap; }
</style><div style=" font-family:'Monospace'; font-size:8pt; font-weight:400; font-style:normal;" class=""><div style="margin: 0px; text-indent: 0px;" class="">Hi all,</div><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; " class=""> </p><div style="margin: 0px; text-indent: 0px;" class="">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.</div><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; " class=""> </p><div style="margin: 0px; text-indent: 0px;" class="">So here is a summary of what I've gathered. Feel free to add your own.</div><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; " class=""> </p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; " class=""> </p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; " class=""> </p><div style="margin: 0px; text-indent: 0px;" class="">## Portability</div><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; " class=""> </p><div style="margin: 0px; text-indent: 0px;" class="">- **Rewrite parallel command engine.** / done.</div><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; " class=""> </p><div style="margin: 0px; text-indent: 0px;" class="">- **Native system manipulation (cp, rm, curl...).**</div><div style="margin: 0px; text-indent: 0px;" class="">  These are mostly done through calls to the shell or external programs. It's</div><div style="margin: 0px; text-indent: 0px;" class="">  not very pretty but quite pragmatic actually... until we want to run on</div><div style="margin: 0px; text-indent: 0px;" class="">  Windows without Cygwin. Anyway, this wouldn't be the end of portability</div><div style="margin: 0px; text-indent: 0px;" class="">  issues.</div><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; " class=""> </p><div style="margin: 0px; text-indent: 0px;" class="">- **Windows support.**</div><div style="margin: 0px; text-indent: 0px;" class="">  for OPAM itself to begin with. This should be pretty close.</div><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; " class=""> </p><div style="margin: 0px; text-indent: 0px;" class="">- **Packages on Windows.**</div><div style="margin: 0px; text-indent: 0px;" class="">  Locate common issues and attempt to find generic fixes.</div><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; " class=""> </p><div style="margin: 0px; text-indent: 0px;" class="">- Allow **direct use of more solvers** or solver servers.</div><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; " class=""> </p><div style="margin: 0px; text-indent: 0px;" class="">- **Support cross-compilation**</div><div style="margin: 0px; text-indent: 0px;" class="">  This is quite an open issue at the moment.</div><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; " class=""> </p><div style="margin: 0px; text-indent: 0px;" class="">## Agnosticity</div><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; " class=""> </p><div style="margin: 0px; text-indent: 0px;" class="">- **Isolate OCaml-specific stuff.**</div><div style="margin: 0px; text-indent: 0px;" class="">  E.g. specific opam-file variables. See ocaml-specific.md</div><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; " class=""> </p><div style="margin: 0px; text-indent: 0px;" class="">- **Separate as plugins**</div><div style="margin: 0px; text-indent: 0px;" class="">  To open the gate to OPAM without these plugins, or with other ones</div><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; " class=""> </p><div style="margin: 0px; text-indent: 0px;" class="">- **Compilers as packages.**</div><div style="margin: 0px; text-indent: 0px;" class="">  This should mostly work now, but needs some tests and strengthening. The main</div><div style="margin: 0px; text-indent: 0px;" class="">  thing still to do is to handle the system compiler changes properly ; that</div><div style="margin: 0px; text-indent: 0px;" class="">  part should be made more generic anyway (see discussion on hooks)</div><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; " class=""> </p><div style="margin: 0px; text-indent: 0px;" class="">## Features</div><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; " class=""> </p><div style="margin: 0px; text-indent: 0px;" class="">- A **provides** field. Generally useful, but particulary so with</div><div style="margin: 0px; text-indent: 0px;" class="">  compilers-as-packages</div><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; " class=""> </p><div style="margin: 0px; text-indent: 0px;" class="">- Releasing the **"features" field** for easier package configuration</div><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; " class=""> </p><div style="margin: 0px; text-indent: 0px;" class="">- **Track installed files**</div><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; " class=""> </p><div style="margin: 0px; text-indent: 0px;" class="">- **Improve security**: just checking md5s is quite light ; package scripts can</div><div style="margin: 0px; text-indent: 0px;" class="">  write anywhere</div><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; " class=""> </p><div style="margin: 0px; text-indent: 0px;" class="">- **OS-specific handling of dependencies** (eg dependencies on packages from the</div><div style="margin: 0px; text-indent: 0px;" class="">  OS) with plugins (#1519)</div><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; " class=""> </p><div style="margin: 0px; text-indent: 0px;" class="">- Specify and implement **hooks**</div><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; " class=""> </p><div style="margin: 0px; text-indent: 0px;" class="">- Find a nicer way to **share dev repos** / undoable "pinning sources"</div><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; " class=""> </p><div style="margin: 0px; text-indent: 0px;" class="">- **Per-switch remotes**</div><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; " class=""> </p><div style="margin: 0px; text-indent: 0px;" class="">- **Multi-switch packages**</div><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; " class=""> </p><div style="margin: 0px; text-indent: 0px;" class="">- Support for (automatic generation of) **binary packages**</div><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; " class=""> </p><div style="margin: 0px; text-indent: 0px;" class="">- Nicer **ocamlfind interaction**</div><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; " class=""> </p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; " class=""> </p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; " class=""> </p><div style="margin: 0px; text-indent: 0px;" class="">Cheers,</div><div style="margin: 0px; text-indent: 0px;" class="">Louis Gesbert</div></div>_______________________________________________<br class="">opam-devel mailing list<br class=""><a href="mailto:opam-devel@lists.ocaml.org" class="">opam-devel@lists.ocaml.org</a><br class="">http://lists.ocaml.org/listinfo/opam-devel<br class=""><br class=""><br class="">_______________________________________________<br class="">opam-devel mailing list<br class="">opam-devel@lists.ocaml.org<br class="">http://lists.ocaml.org/listinfo/opam-devel<br class=""></div></blockquote></div><br class=""></body></html>