Scheme package management Lassi Kortela 25 Apr 2021 15:03 UTC
> It is not so much a “package manager” that is needed but rather the > specification of a “package structure” that all of the libraries > would need to follow (e.g. a git repository would need such and such > a file and subdirectory in such and such a place of the main > directory). Then each Scheme implementation can extend their > current package manager to install these libraries. +1 > Of course a > generic package manager could be written for the Scheme > implementations that don’t have a builtin package manager. https://akkuscm.org/ supports 13 implementations > Also the syntax for the library names would need to be reserved. I > have advocated a syntax that uses the URL as part of the name, e.g. > (github.com/feeley/digest) or > (github.com/feeley digest), so that the > package manager can operate without a central registry of libraries, > > I would make a difference between package names and library names. In > general, we are not interested in finding single libraries but packages > (that include meta-information and know about dependencies). It is the > packages that need to be found automatically. So it makes sense to > "name" packages through a URI, but libraries can still be named, as > usual, e.g. `(srfi 999)` or `(scheme box)` or `(nieper bubblesort)`. A package is conceptually equivalent to a git repository in that it's a collection of libraries. Of course, a library collection could also be stored in a subdirectory of a git repo, not necessarily in the root dir. Nested collections would be an abstraction that covers any mixture of version control repos and directory layouts. > The package for my bubblesort would be "named" > <gitlab.com/nieper/bubblesort <http://gitlab.com/nieper/bubblesort>>. It > would contain a manifest like > > (package > (author "Marc Nieper-Wißkirchen") > (license GPL-v3) > .. > (defines (nieper bubblesort)) > (cond-expand > ((gambit) > (requires "gitlab.com/r7rs/box <http://gitlab.com/r7rs/box>")) > ...)) > ...) > > As a package author, I know that the "gitlab.com/r7rs/box > <http://gitlab.com/r7rs/box>" package provides `(scheme box)`. https://github.com/pre-srfi/scheme-metadata-files has preliminary work on surveying existing formats like this and distilling a generic format. If there's agreement that this kind of direction is useful (I do agree that it is), we should figure out where to do the design and implementation work.