caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Yaron Minsky <yminsky@gmail.com>
To: Berke Durak <berke.durak@exalead.com>
Cc: Caml-list List <caml-list@inria.fr>
Subject: Re: [Caml-list] [OSR] Ports-like package management system
Date: Tue, 29 Jan 2008 08:47:03 -0500	[thread overview]
Message-ID: <C8C81D51-BD51-4871-AD7F-7321572F5223@gmail.com> (raw)
In-Reply-To: <479F0664.2070706@exalead.com>

Another thought: the discussion here is essentially about cloning  
haskell's cabal system. Seems like a good place to look for inspiration.

Yaron Minsky

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.
>
> -- 
> Berke DURAK
>
> _______________________________________________
> Caml-list mailing list. Subscription management:
> http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
> Archives: http://caml.inria.fr
> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> Bug reports: http://caml.inria.fr/bin/caml-bugs


  parent reply	other threads:[~2008-01-29 13:47 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 [this message]
2008-01-29 14:04   ` Nicolas Pouillard
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=C8C81D51-BD51-4871-AD7F-7321572F5223@gmail.com \
    --to=yminsky@gmail.com \
    --cc=berke.durak@exalead.com \
    --cc=caml-list@inria.fr \
    /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;
as well as URLs for NNTP newsgroup(s).