[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