Re: R6RS and portability Marc Feeley 25 Apr 2021 14:41 UTC

> On Apr 25, 2021, at 10:18 AM, Marc Nieper-Wißkirchen <xxxxxx@nieper-wisskirchen.de> wrote:
>
> Anyway, I agree that these points aren't very important. What we need is a package manager and a repository (in the literal, not necessarily in the git sense), distributed or not, with portable Scheme libraries. The package manager should be library-format agnostic but allow for library format plugins. This way, different library formats can be accepted, be it R6RS libraries, R7RS libraries, Racket modules, or even plain R5RS programs. Meta-information has to be provided outside of the libraries because library dependencies cannot be solely determined from the library forms (think of `eval`!).

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.  Of course a generic package manager could be written for the Scheme implementations that don’t have a builtin package manager.

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, which is important to give library authors the freedom to create and update libraries as they see fit.  A nice practical advantage of a URL name like github.com/feeley/digest is that many tools (code editors, slack, web browsers, email readers, etc) will detect these names and offer a hyperlink that will allow the repository to be browsed in a single click.

Marc