[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Scheme-reports] practical matters - CSAN

There have been multiple attempts[1][2] at creating
a shared repository of Scheme code analogous
to Perl's CPAN, but none have gained much

On the other hand, implementation-specific
repositories[3][4][5] have been very successful.

As an effort to unify these (and seriously, we're
a small community, we need all the unification
we can get), I would like to set up a CSAN-like
system based on the R7RS module system, so
that any Scheme that supports R7RS modules
can easily share code.

I will be drafting a design document soon and
appreciate any feedback that can be offered,
but in the meantime the current plans are:

  * Search, fetch, install and test R7RS modules
    and programs.  R6RS and other module systems
    can be supported later, possibly with some degree
    of auto-translation.

  * Decentralized server.  The initial version
    you install will point to a single default repo
    URL which will contain an sexp list mapping
    module names to package URLs, along
    with a checksum and other meta-data.
    Users will be free to edit the list of repo
    URLs themselves, and later versions will
    allow repos to link to other repos.  Bridges
    to existing package repos may also be
    provided later.

    [Note this framework makes the whole
    issue of mapping modules to paths moot.]

  * Authentication throughout, of module
    publishers and repos themselves, with
    user-adjustable trust levels.  Modules use
    pet names (no central registry), but you
    set your trust on a per-publisher/pet-name
    basis.  So if you set your trust such that
    Alice's modules under (wonderland ...)
    are safe, they're installed without confirmation.
    Confirmation in untrusted cases should also
    provide explicit warnings about conflicts
    and suspicious pet names.  Later, summaries
    of the "capabilities" used by a module (such
    as file I/O, networking, eval, etc.) can be

  * A rating system.  CPAN is full of 80% (and
    worse) solutions, and multiple implementations
    of the same functionality.  This is a crucial


[1] http://snow.iro.umontreal.ca/
[2] http://synthcode.com/scheme/common-scheme/doc/common-scheme.html
[3] http://wiki.call-cc.org/chicken-projects/egg-index-4.html
[4] http://planet.plt-scheme.org/
[5] http://www.makelinux.net/man/1/G/gauche-package

Scheme-reports mailing list