[I tried to send an earlier draft of this to the list, but it's too
large so is being held for moderation; in this current draft I moved
the large appendices to links.  If the first message ever eventually
goes through, you can safely ignore it. -agp]

Battery people:

A. I started work on putting together some of the commonly mentioned
and used CL modules into a single CL-BATTERIES umbrella code blob
(access to subcomponents later, perhaps).  I'd like to provide both an
ASDF view and a master compile-and-load load.lisp file for ad hoc
and/or beginner use.  I intend to provide some "conduits" packages
which will group exported functionality from the various packages into
possibly more consistent and coherent quanta than one gets when
loading stuff piecemeal.  I think the hard work will be in the sorting
and documentation (and culling) of the fragments into an
easy-to-navigate structure.  I think this structure ought to be
articulated via a hierarchically (inverted, Java-style) named set of
Lisp packages, rooted in some canonical place like net.common-lisp or
net.cl-user, etc.  I suppose it's implied by the above but perhaps
should be made explicit that a user's application package should be
able to USE any of the batteries packages in any combination, with
:common-lisp, and never have any mutual symbol conflicts.

B. Issues: 

Structure. Thinking ahead of updates, it seems wisest to include a
copy of each original package ("battery pack") with its local
directory structure, *.asd, etc. intact; and then to do the
conduiting/exporting in a separate part of the directory tree
completely under our control.  That is, as opposed to adding something
into each of the subcomponents.  I suppose I should make explicit that

License issues.  Aforementioned content spans range of {MIT, BSD,
LGPL, LLGPL, Public Domain, and unknown/unstated license}.  Some other
possibly interesting content might be vanilla GPL (CMU lisp
utilities?).  I guess I would appreciate advice about the legal impact
if we mix GPL/LGPL/LLGPL code with do-whatever-you-want code and then
re-release.  If LLGPL and LGPL would overly restrict reuse and thus
take-up, I don't want to spend the effort to get things like PG and
PTESTER up and running and integrated; OTOH PURI seems like a shame to
lose.  For components of unknown or incorrectly annotated license
status, if anyone knows more, please advise.

Dependency creep.  Especially with regard to UCW, and as a general
phenomenon with regard to test frameworks used by several packages,
getting all dependencies of a given package can bloat things up quite
a bit.  I'm currently thinking I'll just bundle but ignore subsidiary
packages at this time; advice would be welcomed here.  

Duplicated "generic" functionality. Jack-of-all-trades components such
as arnesi and cl-utilities tend to conflict a good deal with one
another (where conflict is measured by symbol export conflicts).  They
also tend to conflict with single-issue components such as
split-sequence, anaphora, and cl-fad (sometimes by inclusion,
sometimes by independent implementation, sometimes by accident).  I
think sorting all this out will be a lot of work.  I think I will
prefer single-issue export sources over premade balls of mud; and
arnesi over cl-utilities, since the former gets more use AFAICT.

Duplicated "specialized" functionality.  This is related to
"dependency creep" above.  Just following all the dependencies in all
the *.asds results in something like 4 different test frameworks, 3
different web-content generators, 2 web servers, 2 regexp packages...
For the sake of the poor new user, we'll probably want a single
canonical battery-powered "regexp-match" and "exec-http-get" and
should probably use a single test framework.  Advice solicited.  I'm
more familiar with Aserve than Araneida but that's probably not the
best reason to prefer one over the other.

Who and where.  I think I'd like to go ahead and sketch out package
names and test possible client uses.  Does anyone have a good idea
where to proceed (common-lisp.net seems like best first point).  I'll
request the project (= head it up?) and will include all who want to
take part; or is this going about it all wrong?

C. Linked below are the list of all deltas to my ACL80 environment
caused by loading all of {iterate cl-ppcre split-sequence parenscript
net-telent-date cl-fad trivial-sockets arnesi swank rfc2109 yaclml
araneida bordeaux-threads fiveam lift trivial-http ucw anaphora
cl-l10n cl-utilities pg ptester puri rfc2388 rt conduit-packages
aserve}.  :NOMINAL here means I hunted this down from a web page or
code header or rarely from the *.asd file; these are very rough.

http://www.isi.edu/~philpot/garden/packs.txt

D. Linked below are exported symbols from one or more of the above
that would conflict if packages were used concurrently.  The syntax
below is

#:SYMBOL-NAME (("home pkg1" "other visible pkg11" "other visible pkg12" ...) 
("home pkg2" ...)

http://www.isi.edu/~philpot/garden/conflicts.txt

Andrew Philpot


_______________________________________________
Gardeners mailing list
[email protected]
http://www.lispniks.com/mailman/listinfo/gardeners

Reply via email to