Thursday, January 12, 2012

Only When Simple Fails

"I'm updating the library [server] Ivy pulls from with new versions. It's gonna take a lot of time and it's a pain in the butt to deal with. Anyone have suggestions on what libraries to add or any comments about the repository?"

I certainly did have a suggestion: shut down the server and stop using Ivy.

In case you don't know about Ivy, it's a dependency manger. The idea is that when you check out a project or run a build on a server, Ivy figures out what dependencies your project needs (e.g. a physics library) and grabs it for you. I imagine this came about because some big brained developer was thinking 'You know...if I combine all my dependencies into one place and write ANOTHER program to figure all this stuff out for me, then I can save disk space / checkout time /  have simpler Ant scripts."

Thus condemning many good intentioned developers, again, to the trap of thinking that if something is hard to do... we should make it more complicated and somehow it will be easier.

I can only think of one good use case for Ivy ( having a continuous delivery pipeline that builds different versions of the same product ), anything outside of that is a stretch for me. The team in the email I'm writing about 100% does not need to use Ivy or any dependency manager. If I were in that team meeting I would simply ask:

'Why are you going for the more complicated solution? Why has simple failed?'