Based on a recent thread about "utility" libraries, I would like to
take this opportunity to ask everyone to help us avoid the dependency
mess that Common Lisp has gotten into, where there are over a dozen
such "convenience" libraries[1].

By all means, use these libraries in your *applications* if you find
them useful. But please don't make your *libraries* depend on them
unless you really need to.

Doing this will help application developers who want to use your
library. For example, if my application depends on libraries A, B, and
C, I might end up with transitive dependencies on three different
"utility" libraries. If I want to add library D which depends on an
incompatible version of one of those utilities, I'm stuck. By
adding to the dependencies of your library, you increase the
likelihood of dependency conflicts for consumers.

The ideal number of dependencies for a library release (not counting
Clojure itself) is zero. Obviously, use common sense. If your library
relies on critical functionality in another library, then make the
dependency. But if you can get by without the dependency (even if that
means copying some of those "utility" functions into your own code and
making them private) then you will make life easier for consumers of
your library.

Thanks, and happy coding.
-S


[1]: http://cliki.net/Convenience%20library

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to