Hello,
I put together a quick and dirty list of libraries in my '~/scheme'
directory (with the help of Emacs, org-mode, and some macros):
http://proteus.freeshell.org/r6rs-public-libraries.html
Finding the 'sls' files is easy:
$ find ~/scheme -name '*.sls
And extracting the library name is also easy:
----------------------------------------------------------------------
(import (rnrs))
(let ((file-name (list-ref (command-line) 1)))
(let ((port (open-input-file file-name)))
(let ((library-form (read port)))
(close-input-port port)
(display (list-ref library-form 1))
(newline))))
----------------------------------------------------------------------
But information like author, a one line summary, a detailed description,
etc. are not stored in a standard way.
Here's one method I experimented with... A library form has the
structure:
(library NAME EXPORT-FORM IMPORT-FORM ...)
After the IMPORT-FORM I have an alist:
'((author . "Billy Meier")
(summary . "Pleiadean communications protocol")
(description . "... long description goes here")
(license . ...)
(project-page . ...)
(repository . "git://..."))
If we included such information in our libraries, it would be
straighforward to have a generated list of the communities libraries.
Also, it would be of use for library browsing utilities intended for use
on the local workstation.
A quoted alist after IMPORT-FORM is harmless. Maybe someday if something
like this becomes a "best practice", the real library form could support
subforms like (author ...), (summary ...), etc.
Some folks will prefer to keep such meta-data in an associated file
(e.g. orgone.sls and orgone.meta). This shouldn't be a problem; scripts
which read the metadata can check for the info in the library form first
and fall back to other places.
Anyways, I'm bringing this up because, it would be nice publish a list
of the libraries created by the R6RS community.
There are various views into the R6RS community's libraries. One list
could be the "library collections". For example:
http://proteus.freeshell.org/r6rs-library-collections.html
I.e. items which correspond to the "top level" of various library
collections. There isn't really an analogue on the Scheme side of things
for such a collection so for these, some sort of meta-data file
describing the collection would be needed. I think Rotty has thought
about this area a bit. :-)
Finally, a user might ask to see a list of all libraries, or just
libraries which are "public"; i.e. those which have a published API
which is intended for use by others, as opposed to "private" libraries
that support the package itself.
As far as publishing a list on the net goes, a server could periodically
'git pull / bzr update / ...' the library repositories it knows about,
and generate a nice page from the extracted meta data. If someone wants
their libraries on the list, just submit your repository address...
Just throwin ideas out there. :-)
Ed