From: "Nicolas Pouillard" <nicolas.pouillard@gmail.com>
To: Yaron Minsky <yminsky@gmail.com>
Cc: Berke Durak <berke.durak@exalead.com>, caml-list <caml-list@inria.fr>
Subject: Re: [Caml-list] [OSR] Ports-like package management system
Date: Tue, 29 Jan 2008 15:04:11 +0100 [thread overview]
Message-ID: <1201615366-sup-9022@port-ext5.ensta.fr> (raw)
In-Reply-To: <C8C81D51-BD51-4871-AD7F-7321572F5223@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 4934 bytes --]
Excerpts from Yaron Minsky's message of Tue Jan 29 14:47:03 +0100 2008:
> Another thought: the discussion here is essentially about cloning
> haskell's cabal system. Seems like a good place to look for inspiration.
I also think that many ideas can be borrowed from cabal since it's quite
recent and have close requirements.
> On Jan 29, 2008, at 5:56 AM, Berke Durak <berke.durak@exalead.com>
> wrote:
>
> > Hello,
> >
> > Following Markus's message, discussions with Nicolas Pouillard and
> > Sylvain Le Gall and others, and of course my previous work in the EDOS
> > project, here are some thoughts about package management systems
> > (PMSs) for Ocaml.
> >
> > First, the PMSs of Linux distributions are perfectly adequate for end
> > users and administrators having to deploy and manage identical
> > packages accross multiple machines. These are very complex systems
> > including a substantial social part.
> >
> > But they are not very suitable for developers.
> >
> > As Markus pointed out, developers cannot go thru a packaging step to
> > test the result of a change, much less wait for the fine Debian team.
> >
> > One reason is that most developers, including myself, cannot be
> > bothered to package software for a Linux distribution, because correct
> > packaging is complex and requires adherence to a set of rules must be
> > remembered and which cannot all be checked by software. As packaging
> > is not done very often, you tend to forget those rules, and that is
> > why we have people who package often to not forget the rules:
> > maintainers. Without maintainers, we would be in a world of pain to
> > install any piece of non-trivial software and we are thankful to them.
> >
> > But developers absolutely need to be able to work on multiple versions
> > of the same software component at once, patch those versions or
> > compile them with unusual flags, and often use the absolutely latest
> > unpackaged version. And that is the second reason why the Debian or
> > Red Hat PMSs are not adequate. They have a single global state per
> > system, which includes the installed files, and the package database,
> > and cannot handle multiple versions of the same package, nor multiple
> > compilations of the same version. (This also applies to Gentoo.)
> >
> > We thus need versions, and lots of them! We need to base our
> > developer packages on a version control system, in the style of BSD
> > ports. BSD ports are usually based on CVS, sometimes on Subversion.
> > As we are looking to increase collaboration, having a single point of
> > contention is a serious limitations of these centralized systems;
> > we'll prefer more recent "distributed" version control system.
> >
> > Of available distributed VCSs with a serious user base, we have Darcs,
> > Mercurial and Git.
> >
> > Basing a PMS for Ocaml on a VCS written in Haskell would violate the
> > ``Trading with the Enemy'' act. Moreover Darcs has some performance
> > problems of its own.
> >
> > Mercurial (Hg) is written in Python extended in C for performance. It
> > is quite friendly and works well under Windows. However, its
> > developers are not as elite as Git's, its merging features are less
> > advanced and Python sux0rz.
> >
> > I have been using Hg for the past few months and been quite happy with
> > it, but then I was mostly working alone. Git is certainly as good as
> > Mercurial for that kind of usage and, as it is written in pure C, I
> > advocate its use. Until someone writes a VCS in Ocaml, that is.
> >
> > Let's get back to the subject. BSD ports are also based on make,
> > whose main limitation, the static dependency graph, has been addressed
> > in ocamlbuild. I know there is Omake, but I think it suffers from the
> > ``Yet Another Turing-Complete Language'' syndrome.
> >
> > So I am calling for a solution based on a ports-like system but based
> > on a distributed VCS and on an improved ocamlbuild.
> >
> > Assume you are writing a program FOO and want to use a package BAR
> > available from bar.org. You tell ocamlbuild by adding some tag such
> > as
> >
> > <mytarget.native>: require(http://bar.org/repository/)
> >
> > And when you run ocamlbuild, it automatically checks out a copy of
> > BAR, compiles and loads its myocamlbuild.ml module which adds the
> > required flags. Of course it should be possible to specify a
> > particular revision... And if BAR has itself dependencies, those too
> > would be checked out.
> >
> > Note that Git has a nice option for cloning checked out repositories
> > using hard links; that could be used to maintain a cache of checkouts,
> > for instance in the user's ~/.ocamlbuild/checkouts/ directory.
> >
> > So basically I propose that we improve ocamlbuild to allow for
> > multiple plugin files (using dynamic loading) and use that to define a
> > BSD ports-like system targeted at developers.
--
Nicolas Pouillard aka Ertai
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 186 bytes --]
next prev parent reply other threads:[~2008-01-29 14:05 UTC|newest]
Thread overview: 85+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-01-29 10:56 Berke Durak
2008-01-29 11:12 ` [Caml-list] " David Teller
2008-01-29 13:11 ` Yaron Minsky
2008-01-29 14:04 ` Nicolas Pouillard
2008-01-29 17:35 ` Berke Durak
2008-01-29 18:02 ` Bünzli Daniel
2008-01-29 18:10 ` Paul Pelzl
2008-01-29 22:26 ` Paolo Donadeo
2008-01-30 1:55 ` Bünzli Daniel
2008-01-29 22:46 ` Paolo Donadeo
2008-01-29 13:47 ` Yaron Minsky
2008-01-29 14:04 ` Nicolas Pouillard [this message]
2008-01-29 16:00 ` Alain Frisch
2008-01-30 6:58 ` Yaron Minsky
2008-01-30 8:56 ` Nicolas Pouillard
2008-01-29 17:56 ` Bünzli Daniel
2008-01-29 18:17 ` Nicolas Pouillard
2008-01-29 19:13 ` Bünzli Daniel
2008-01-30 8:49 ` Nicolas Pouillard
2008-01-30 11:15 ` Bünzli Daniel
2008-01-30 11:52 ` Nicolas Pouillard
2008-01-29 18:47 ` Hezekiah M. Carty
2008-01-30 9:06 ` Sylvain Le Gall
2008-01-30 9:39 ` [Caml-list] " Berke Durak
2008-01-30 9:53 ` Sylvain Le Gall
2008-01-30 10:50 ` [Caml-list] " Nicolas Pouillard
2008-01-30 11:15 ` Bünzli Daniel
2008-01-30 11:54 ` Nicolas Pouillard
2008-01-30 13:58 ` Sylvain Le Gall
2008-01-30 14:08 ` [Caml-list] " Nicolas Pouillard
2008-01-30 11:15 ` Berke Durak
2008-01-30 11:47 ` Bünzli Daniel
2008-01-30 13:55 ` Sylvain Le Gall
2008-01-30 13:54 ` Sylvain Le Gall
2008-01-30 14:24 ` [Caml-list] " Berke Durak
2008-01-30 14:35 ` Sylvain Le Gall
2008-01-30 19:48 ` [Caml-list] " Bünzli Daniel
2008-01-30 18:12 ` Vlad Skvortsov
2008-01-30 16:32 ` Michael Ekstrand
2008-01-30 16:44 ` Sylvain Le Gall
2008-01-30 18:03 ` [Caml-list] " Nicolas Pouillard
2008-01-30 19:45 ` Olivier Andrieu
2008-01-30 19:53 ` Vlad Skvortsov
2008-01-30 10:45 ` Sylvain Le Gall
2008-01-30 9:51 ` [Caml-list] " Jon Harrop
2008-01-30 10:18 ` Sylvain Le Gall
2008-01-30 10:43 ` [Caml-list] " Jon Harrop
2008-01-30 12:00 ` Nicolas Pouillard
2008-01-30 13:25 ` Jon Harrop
2008-01-30 14:06 ` Nicolas Pouillard
2008-01-30 12:37 ` Pietro Abate
2008-01-30 13:26 ` Stefano Zacchiroli
2008-01-30 14:07 ` Gerd Stolpmann
2008-01-30 13:37 ` Stefano Zacchiroli
2008-01-30 15:12 ` Gerd Stolpmann
2008-01-31 9:02 ` Stefano Zacchiroli
2008-02-01 15:03 ` Gerd Stolpmann
2008-02-03 20:21 ` Stefano Zacchiroli
2008-02-04 3:40 ` Matthew Hannigan
2008-02-04 18:42 ` Nathaniel Gray
2008-01-30 17:42 ` David Allsopp
2008-01-30 14:13 ` Sylvain Le Gall
2008-01-30 20:22 ` [Caml-list] " Bünzli Daniel
2008-02-08 22:24 ` N. Owen Gunden
2008-01-30 15:15 ` Jon Harrop
2008-01-30 12:37 ` [Caml-list] " Berke Durak
2008-02-13 8:45 ` David Teller
2008-02-13 10:02 ` Sylvain Le Gall
2008-02-13 10:48 ` [Caml-list] " Berke Durak
2008-02-13 13:51 ` Sylvain Le Gall
2008-02-13 14:10 ` [Caml-list] " Richard Jones
2008-02-13 14:22 ` Sylvain Le Gall
2008-02-13 17:57 ` [Caml-list] " Richard Jones
2008-02-15 8:13 ` Maxence Guesdon
2008-02-15 9:47 ` Berke Durak
2008-02-15 10:24 ` Maxence Guesdon
2008-02-15 10:59 ` Stefano Zacchiroli
2008-02-15 15:45 ` Maxence Guesdon
2008-02-15 13:35 ` Ralph Douglass
2008-02-15 14:08 ` Christophe TROESTLER
2008-02-13 12:13 ` David Teller
2008-02-13 13:48 ` Sylvain Le Gall
2008-02-13 13:58 ` [Caml-list] " David Teller
2008-02-13 14:20 ` Sylvain Le Gall
2008-02-13 14:28 ` [Caml-list] " David Teller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1201615366-sup-9022@port-ext5.ensta.fr \
--to=nicolas.pouillard@gmail.com \
--cc=berke.durak@exalead.com \
--cc=caml-list@inria.fr \
--cc=yminsky@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox