-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Split unrelated content into separate libs #2
Comments
Hi, The original motivation was to create a place for all of the functions that If only one or two functions is desired, it is very easy to say: (ns ... or even: (ns ... Both of these are pretty short and don't require thinking about the unused Was there something in particular that you think should be broken out? Alan On Mon, Nov 16, 2015 at 7:24 PM, J Irving [email protected] wrote:
|
I think infrastructural boundaries are a good pointer. For example, the fact the very useful base64 and it-> (etc.) pull in a postgresql library is a shame. |
OK, all of the SQL stuff is now broken out. :) |
"not" -> "now" |
Thanks @cloojure. |
I hope you keep the library as it is, by and large. I worked as a build engineer for C++ developers for a while. In that language, dependencies are explicitly expensive: It's hard to even use dependencies, as that language doesn't really have it's own package manager. Because of this, you find libraries in C++ like Boost and Qt, enormous "one-stop shop" libraries whose entire existence is devoted to the notion that dependencies are hard in C++. I hope to see more of that in other languages. This is because dependencies are hard in every language, and more especially the languages that make it easy to include stuff, like Clojure. The easier it is to include a dependency, the more this cost is hidden. In order to make sure my dependencies don't break me, I must keep tabs on all of the communities that have formed around them. Because of this, I much prefer having everything in one place. This is why leftpad was so painful -- npm makes it really easy to include dependencies, but this means everyone relies on everything. Leftpad is in fact an excellent example of my point -- a small library that everyone relies on, that broke everyone when it broke. This is why, as the poor sap that must often deal with broken builds often at work, I completely agree with the following principles: For example, @cloojure, I think the fact that you have the functions I realize that this is not the "Clojure Way", and that leftpad problems don't often happen. But since the whole point of tupelo is to make it so that missing stuff from Thanks, @cloojure! |
Hi all, I came here to open an issue but found this discussion. Here is my feedback. I believe it is a library decision to include many things or not. The issue I struggle with is that tupelo pulls in large libraries with a lot of transitive dependencies. The chance to collide with other libraries is very high. I had to remove it as it felled to risky to have so much unused stuff just to use a base64 encoding. I am not sure, if there is a way in Java to use provided scope to avoid pulling in library but I assume that this will still require a lot of stuff at runtime. Another idea is to create a parent project with modules. This way everybody can decide to use the tupelo-all or only one of its submodule like tupelo-base64 Thank you for your work. Sebastian A snapshot of what tupelo is pulling in |
Tupelo contains a lot of useful but unrelated functionality. This seems at first glance to contradict the culture of small single-purpose tools that pervades the Clojure world.
Would you consider splitting the namespaces into separate projects so projects can cherry-pick the parts they need? I'd be happy to put work into it if you're amenable.
The text was updated successfully, but these errors were encountered: