Thursday, November 27, 2008

Apache concept, but terrible out of box experience

So I spent some quality time with Apache Ivy this Thanksgiving holiday.  I wish I could say that was time well spent.  I really like the concept of Ivy...but the implementation is really complex and poorly documented for first time users.  For starters, all the configuration is in XML.  No big deal, but the XML configuration can get quite convoluted and it seems like the defaults are never what you want,so you end up writing more configuration to get the results you want.  I was never able to find a good ivysettings.xml example (full example, not bits and pieces).  The ivysettings.xml seems to be a prerequisite to configuring which Ivy repositories you will pull content from.  I wanted to pull my content from SpringSource's Enterprise Bundle Repository, which is not the default.  SpringSource has snippets of ivysettings.xml configuration, but not a base configuration that you can just copy and use.  Second, the bundle repositories seems to be in shambles.  Of all the repositories that I could find, only SpringSource's was documented enough that you could figure out how to pull the bundle dependency.  Unfortunately, I couldn't get my settings to connect to that repository.  Third, pulling dependencies like Spring Framework will pull in a whole bunch of unnecessary stuff, JARs that I did not want.  I really don't want to have to spend 2 days learning Ivy.  It's a nice to have feature for managing dependencies.  I just want it to work.  But it seems that Ivy expects a significant investment of time and work to get working properly.  Too bad, as I'll probably dump it for something else.  Am I being too critical of Ivy?  Should I not expect a good out of box experience with this tool?