« Follow-up to "The mathematics behind Hadoop-based systems" | Main | Why so many research papers are so hard to understand »
Thursday
Mar042010

Introducing "Nanny" - a really simple dependency management tool

Dependency management in software projects is a pretty simple problem when you think about it. A tool to manage dependencies just needs to do three things:

  1. Provide a mechanism to specify the direct dependencies to a project
  2. Download the transitive closure of dependencies to a project
  3. Publish packages that can be used as a dependency to other projects

Some languages have good dependency management systems - for example, rubygems. Others, like Java, have tools like Maven which I would call a complex solution to a simple problem. You shouldn't need to buy a book to understand the solution to such a simple problem. Plus, these dependency management systems are all language specific.

I've seen companies do crazy things to manage their dependencies. One company, to manage their jar files, would put all the jars that any project might need in a special "jars" project. You would then need to setup a JARS_HOME environment variable and be sure to update the jars project if you need any of the dependencies. If you needed an older version of something - forget about it. Plus it made deploys a huge pain, as each project had to ship with dependencies it didn't even use.

Enter Nanny.

Nanny makes it really easy to setup an internal repository to manage dependencies between projects. I spent a night hacking out Nanny and we're finding it incredibly useful at BackType. We manage dependencies between all our Java/Clojure projects using it, we distribute custom builds of Hadoop and Cassandra with it, and we're starting to use it to manage dependencies between our Python projects.

Nanny is hosted at GitHub and comes with documentation to get you started in no time.

You should follow me on Twitter here.

Reader Comments (6)

FWIW, You don't *have* to buy the maven book, it's available here: http://www.sonatype.com/products/maven/documentation/book-defguide" rel="nofollow">http://www.sonatype.com/products/maven/document...

Your point still stands about it being complex though. It doesn't help that Maven's website documentation is quite a bit scattered.

Good luck on your project. I'll try to keep an eye on it.

March 5, 2010 | Unregistered CommenterJason Whaley

Funny, you don't have to buy a book to understand Maven. It's entirely free to read online: http://books.sonatype.com" rel="nofollow">http://books.sonatype.com

March 5, 2010 | Unregistered Commentertobrien

Didn't really make sense to try Ivy after I realized I could roll my own system, that works for both Java and Python, in half a day.

May 5, 2010 | Unregistered CommenterNathan Marz

You're right Maven is way to complex. You didn't like Ivy though?

http://ant.apache.org/ivy/" rel="nofollow">http://ant.apache.org/ivy/

May 5, 2010 | Unregistered Commenterdrluckyspin

Didn't really make sense to try Ivy after I realized I could roll my own system, that works for both Java and Python, in half a day.

May 5, 2010 | Unregistered Commenternathanmarz

let's join our hands together to stop this kind of wrong doings. It may risk lives in the future if we just let them continue. omnmxl omnmxl - moncler switzerland.

December 2, 2011 | Unregistered Commenterigudog igudog

PostPost a New Comment

Enter your information below to add a new comment.
Author Email (optional):
Author URL (optional):
Post:
 
Some HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>