From: "Bünzli Daniel" <daniel.buenzli@erratique.ch>
To: caml-list caml-list <caml-list@yquem.inria.fr>
Subject: On module distribution
Date: Tue, 15 Jan 2008 12:20:04 +0100 [thread overview]
Message-ID: <92920466-3BCE-4A9F-9742-3396B07006F7@erratique.ch> (raw)
A few month ago, after a discussion on cherry-picking modules in the
reins library I thought a little bit about devising a system to
facilitate module sharing. A system to simplify the tedious and
uninteresting actions needed to be able to use and publish modules. At
that time I started a design document for it, but as is expected in
such cases the effort didn't last long.
However since people will be meeting in Paris in a few week to discuss
these things I thought there may be some ideas to take in this very
rough and incomplete draft of a system that I will never implement. So
FWIW here's a link [1] to this document. In summary the main ideas
were :
1. A decentralized system, anyone who can publish on a web server can
publish a package. A central authority is a bottleneck to publication.
2. Use atom feeds [2] as the distribution medium. Atom feeds contain
all the semantic information (authors, contributors, entries, rights,
link to enclosure, labels etc.) needed to represent a package and its
versions with release notes. Shortly a package is a feed, a version is
an entry with an enclosure link to an archive. The only extensions
needed (Atom allows this via xml name spaces) are new link attributes
to describe version dependencies. Packages as feeds allow to follow
their evolution with a plain newsfeed reader (which would also
facilitates the maintenance of repositories like the hump). To avoid
angle brackets, package feeds are generated from a tagged plain text
README file.
3. Manage packages per project (vs. per machine) to make project
dependencies explicit. Thus a single command can install you the
(OCaml + C stubs only) dependencies of your project on a fresh system.
If your project is a package itself, it facilitates its packaging .
4. Rely on ocamlbuild to do the hard work. Grosso modo in the way
described here [3], which may be unrealistic for big projects, but on
unices ressource consumption could be mitigated by making hard links
to a cache maintained per user or machine (inspired by ideas in this
message [4]).
Best,
Daniel
[1] http://erratique.ch/writings/mod.pdf
[2] http://tools.ietf.org/html/rfc4287
[3] http://brion.inria.fr/gallium/index.php/Working_on_dependent_projects_with_ocamlbuild
[4] http://caml.inria.fr/pub/ml-archives/caml-list/2007/04/ea46e76c646854347ad02dc10862a6ee.fr.html
next reply other threads:[~2008-01-15 11:20 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-01-15 11:20 Bünzli Daniel [this message]
2008-01-15 13:38 ` [Caml-list] " Berke Durak
2008-01-15 14:24 ` Gerd Stolpmann
2008-01-15 15:07 ` Sylvain Le Gall
2008-01-15 20:41 ` [Caml-list] " Bünzli Daniel
2008-01-15 20:56 ` Vlad Skvortsov
2008-01-16 10:19 ` Maxence Guesdon
2008-01-15 20:56 ` Will Farr
2008-01-15 21:27 ` Sylvain Le Gall
[not found] ` <b256a4c50801151610o54b86a6dv1e3b54616b6bd9f0@mail.gmail.com>
2008-01-16 0:11 ` Fwd: [Caml-list] " Jonathan Bryant
2008-01-16 5:26 ` Jonathan Bryant
2008-01-15 18:46 ` [Caml-list] " David Thomas
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=92920466-3BCE-4A9F-9742-3396B07006F7@erratique.ch \
--to=daniel.buenzli@erratique.ch \
--cc=caml-list@yquem.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