Here is a project proposal that I'm willing to champion and support. I
am constantly frustrated by each large project I download also coming
with a their own versions of of various common utility functions such as
Graham's anaphoric macros (aif, awhen), common list utilities (gather,
distribute, shuffle, merge, etc) and so on. My lisp image is getting
filled up with duplicated code between CL-SQL, UCW, CLOCC, and my own
local utilities. It's also annoying that if I want to keep something
portable I have to revert to using standard lisp and forget about the
hundreds of little time and thought-saving utilities I've developed for
my private packages. I figure I can't be the only one. This may
overlap with the CLOCC project but I find that project is badly
organized, poorly licensed and not actively maintained.
Champion:
Ian Eslick
Volunteers:
Proposal:
1) Pull together a repository of common lisp utilities under an MIT
or BSD style license (no restrictions)
to try to enable the world of asdf-installable packages to come to
depend on a single common library and
so that newcomers will have a body of existing code they can exploit to
save time and effort. Start by reviewing
common libraries and functions (from Genera, PCL, Norvig's book,
Graham's books; as well as arnesi, kmrcl,
clocc, etc) and figuring out how to organize them into a simple
namespace such as utils.lists, utils.os, etc.
2) Properly document all of these functions, potentially with
pointers to Common Lisp Cookbook entries
where they are used or other documentation (special syntax in the
documentation strings?).
3) Provide a web interface to the utilities that allows people to
search for functions based on what they
want to do with them. I can add some NLP magic to this if we can
properly stylize the way the documentation
strings are written.
4) Depending on how the project goes, an active set of developers
could be enabled to upload code directly
as they find they need certain functions. Other people can post code on
a site for community review,
categorization and inclusion.
To kick off a discussion, I thought we might organize code into two
tiers. The first includes common utilities that are used all the time -
control constructs (aif, if*), list manipulation (group), macro
construction (with-gensyms), system maintenance (defun-exported) and
typically consist of one or two standalone functions. The second tier
would include: small DSL's like Henry Baker's meta, CLOCC's port, or
domain specific libraries such as statistics functions, etc. The second
tier should probably be their own asdf packages that are only loaded by
systems that need them but exist in the utils name space. The bottom
tier are always loaded but are separated into separate package name
spaces to avoid cluttering the name space of a package that imports utils.
Tasks:
- Create an asdf DARCS repository on common-lisp.net
- Resolve license issues with CLOCC?
- Get permission from authors of various packages & books to incorporate
their code under the MIT/BSD license
- Create an initial namespace
- Populate with the most common utilities, especially those in books
people use (PCL, Onlisp, PAPAI, etc)
_______________________________________________
Gardeners mailing list
[email protected]
http://www.lispniks.com/mailman/listinfo/gardeners