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

Reply via email to