Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
[OSR] Ports-like package management system
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2008-01-30 (09:53)
From: Sylvain Le Gall <sylvain@l...>
Subject: Re: [OSR] Ports-like package management system
On 30-01-2008, Berke Durak <> wrote:
> Sylvain Le Gall a écrit :
>> Please don't go into this. If you want to talk about PM, don't talk
>> about VCS. My point is that if you want to build something that last you
>> should keep focus on PM, which is not really bound to VCS (like content
>> of files is not bound to filesystem). There is no best VCS for doing PM.
>> We just should handle a way to :
>> * let anyone use a different VCS
>> * be able to download at least a version of each different packages
> > The most simple way to handle this, to my mind:
> > * distribute METADATA for packaging into ftp/http
> > * put a link to the VCS inside METADATA, to tell where you can find most
> >  recent one
> We want to guarantee to the user that if she has installed Ocaml and the 
> Ocaml package system, she will be able to use any component packaged in 
> the system without having to install extra software.
> The Ocaml pakcage system must therefore include as a prerequisite all 
> the tools required for fetching data.  Hence if we want to use a VCS as 
> part of the system, we must agree on one.
> The VCS selected, if any, doesn't have to be the one the developers use, 
> of course.  (But there exist many VCS-to-VCS bridges, so it's not really 
> a problem.)
> Speed and portability are however important.

Using a simple wget/rsync (you can redevelop it in OCaml) is far more simple
than to use a VCS. 

VCS-to-VCS is a dream. If have tried to use many, most of the times they
are complicated to setup and don't work well.

And of course wget/rsync are the fastest way to get data. 

> Now why would we want to use a VCS?
> * As a data storage and distribution mechanism
> * For efficient updates
> * For the ability to check out any revision
> These functions could be emulated by having a directory with a lot of 
> tarball snapshots and using wget.  This may work for passive use of the 
> software but even for this limited use case, use of a VCS is much more 
> useful - efficient updates, storage of all intermediate revisions, 
> branches, and the possibility for the upstream author to directly work 
> on that VCS.

Use rsync!

> But the aim of the Ocaml packaging system should be to foster 
> cooperation among Ocaml developers.  That is why having a recommended 
> VCS and a standardized build system (or at least set of build commands)
> is important.
> Assume we agree on a distributed VCS system S.  Most Ocaml software will 
> be developed in its own S repository, hosted by the author.  So we will 
> have programs P1, P2... with respective repositories S1, S2...

Assume that Mister Z don't want to use VCS S. Mister Z create a lot of
great OCaml libraries... What do you do?

> When you develop a program P you will have use programs P_{i1}, P_{i2}, 
> ... and thus have checkouts of repositories S_{i1}, S_{i2}, and so on. 
> If you find a bug in P_{i1} you can directly edit the checked out 
> version, recompile everything automatically by launching ocaml in P's 
> directory and thus debug P_{i1}.  You can then locally commit your 
> changes to P_{i1} and then easily push the patch or send the diff to the 
> upstream author.

Send a patch to author of P_{i1}. This is the easiest way. 

diff -Nurd  P_{i1} P_{i1}.new

> If we don't use a VCS, this becomes much more difficult and error-prone.
> The increase in collaboration and productivity could be tremendous. 
> This requires close integration of the build and repository system and 
> agreement on a common VCS.

This also lead to be stuck with one VCS for the rest of our lives. It
also prevents people who don't like/don't have time to learn VCS S, to

> Now being able to use the software of your choice, plurality and 
> multiplicity of solutions are all good, but in this particular case this 
> hinders collaboration.
> It's as if everyone was using a different language!
> My intent was not to provoke VCS flame wars.  But I think agreeing on a 
> VCS is important and a flame war or two is acceptable collateral damage 
> in the process of selecting one.

Looking at all the mail of this thread, i mainly read people talking
about VCS R being faster than VCS S...

> Now of course I don't have a precise idea of what the Ocaml packaging 
> system would be like, but I think the way to go is to :
>    - Use a common distributed VCS system for storage and distribution of 
> source code, with multiple repositories

Lets choose a very simple storage system. Not a VCS. This too heavy and
create too many complicated case.

>    - A build system integrated with the package management system,

Yes, if you do not force every software developers to use it and still
provide a way to integrate their software into your package management

>    - A package management system able to manage arbitrarily many 
> versions or copies of the same software component, and compile any 
> program using an arbitrary selection of the required versions,

Sylvain Le Gall