Daniel, I'll check out OSGi (you might be right about the cure being worse). I think Java 9 modules were originally supposed to include versioning as well, but currently "The State of the Module System" says "A module’s declaration does not include a version string, nor constraints upon the version strings of the modules upon which it depends. This is intentional: It is not a goal <http://openjdk.java.net/projects/jigsaw/spec/reqs/02#version-selection> of the module system to solve the version-selection problem, which is best left to build tools and container applications".
On Thursday, March 16, 2017 at 4:29:47 PM UTC-4, Daniel Compton wrote: > > One option to help with this is OSGi which does have support in Clojure. > https://github.com/talios/clojure.osgi > > As Stuart alluded to in his message, the cure to dependency conflicts > (OSGi) may be worse than the disease. I’d guess that the venn diagram of > people using both Clojure and OSGi is pretty thin. There is also > Jigsaw/JPMS in the upcoming Java 9 which is another take on modularity: > https://www.infoq.com/articles/java9-osgi-future-modularity. > > On Fri, Mar 17, 2017 at 5:20 AM <art...@signafire.com <javascript:>> > wrote: > >> Howard, thanks for posting that library. I've passed on the info to some >> of the other developers at work. That kind of tool is highly valuable, I'll >> likely start using it soon. >> >> Gary, the MrAnderson approach sounds similar to shading; I'll take a look >> today. >> >> Stuart, the most common approach boils down to trust and hope, and I >> don't think it's good enough. As projects grow larger the likelihood of >> running into incompatibilities also grows, regardless of community >> etiquette. Thank you for suggesting :pendantic. >> >> >> On Tuesday, March 14, 2017 at 4:49:50 PM UTC-4, Howard M. Lewis Ship >> wrote: >> >>> We have some very, very complex projects that bring in boat-loads of >>> dependencies, some of which will have version conflicts, if left >>> unchecked. I've created a Leiningen plugin, vizdeps, to make it easier to >>> see the artifact tree, identify and repair conflicts, and determine why any >>> particular artifacts are in the build. >>> >>> https://github.com/walmartlabs/vizdeps >>> >> On Mon, Mar 13, 2017 at 1:45 PM, Stuart Sierra <the.stua...@gmail.com> >>> wrote: >>> >> This is a well-known problem in the JVM world, not just Clojure. >>>> >>>> The most common approach is: Always use the latest versions, and don't >>>> break backwards-compatibility. >>>> >>>> Most open-source Java and Clojure libraries are careful about not >>>> breaking backwards-compatibility. So in general, you're safe choosing the >>>> latest version of any library. >>>> >>>> Leiningen has the `:pedantic` option which can be set to warn or fail >>>> when there are possible dependency conflicts. >>>> >>>> Neither Clojure nor the JVM has explicit support for linking to >>>> specific versions of a library. Work-arounds exist, but they often >>>> increase >>>> overall complexity and lead to conflicts which are harder to debug. >>>> >>>> –S >>>> >>>> >>>> On Monday, March 13, 2017 at 4:13:19 PM UTC-4, arthur wrote: >>>>> >>>>> Hello All, >>>>> >>>>> >>>>> I have a general inquiry regarding conflicting dependencies in >>>>> Clojure projects and how they affect applications at runtime. I believe >>>>> this is a common problem faced by many languages in this day and age >>>>> where >>>>> we try not to reinvent the wheel by depending on the work of others. >>>>> Basically: my application depends on libraries *A*, *B*, *C*, and *D*. >>>>> Libraries *B*, *C*, *D* *also* depend on library *A*, but all of us >>>>> depend on *different versions* of library *A.* Leiningen thankfully >>>>> warns us in many of these situations by suggesting exclusions. However, >>>>> how >>>>> can I possibly know that something hasn't broken? Stringent testing can >>>>> give a certain degree of confidence that things are still working, but it >>>>> would seem to me that to ensure correctness, we should include *all* >>>>> versions >>>>> of the dependencies and have the functions link to their respective >>>>> *versioned* identites. Does anyone have advice on how they solve >>>>> these kinds of problems on their codebases in the wild? Thankfully >>>>> nothing >>>>> has broken yet (to my knowledge), but it seems we have very few >>>>> assurances >>>>> here and the best we can do is *hope* nothing is broken. Any advice >>>>> is much appreciated. >>>>> >>>>> Thanks, >>>>> >>>>> Arthur >>>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Clojure" group. >>>> >>> To post to this group, send email to clo...@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+u...@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+u...@googlegroups.com. >>>> >>> >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> >>> >>> -- >>> Howard M. Lewis Ship >>> >>> Senior Mobile Developer at Walmart Labs >>> >>> Creator of Apache Tapestry >>> >>> (971) 678-5210 >>> http://howardlewisship.com >>> @hlship >>> >> -- >> You received this message because you are subscribed to the Google >> Groups "Clojure" group. >> To post to this group, send email to clo...@googlegroups.com >> <javascript:> >> Note that posts from new members are moderated - please be patient with >> your first post. >> To unsubscribe from this group, send email to >> clojure+u...@googlegroups.com <javascript:> >> 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+u...@googlegroups.com <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > -- > > Daniel > -- 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/d/optout.