<< 20 September 2005 | Home | 22 September 2005 >>

Integration: How Open Source Beats Commercial Software

One major area where Open Source software leaves it's commercial counterparts quite a long way behind is integration with other projects.

A great example is Hibernate vs TopLink. If you look at the list of other projects they integrate with (open or closed source) you see a long list for Hibernate, and virtually nothing for TopLink.

Hibernate talks to: XDoclet, Commons-Logging (and Log4j etc), OSCache, JBossCache, C3P0 and other caching libraries, JUnit and that's before I start listing databases. The list of projects that talk to Hibernate starts with Spring and goes on for a long time.

I can find very little on the TopLink website about projects that it integrates with. They do advertise a new feature - that the latest version of Spring talks to it.

The same story is true of DWR:

  • It can marshal XML from DOM, JDom, XOM and DOM4J
  • It logs commons-logging to Log4j or JUL.
  • It does scripted injection via BSF to BeanShell, Groovy, or a hundred other scripting languages.
  • Through integration with Spring, you can get most places

And it seems that the story is the same all over open source land:

  • Spring integrates with: Hibernate, Struts, WebWork, JSF, DWR, iBatis, Tiles, Velocity and millions more
  • WebWork integrates with: JSTL, DWR, Velocity, XWork, ...
  • Groovy integrates with: Ant, SWT, JEdit, ...
  • JBoss integrates with: Tomcat, Hibernate, ...
  • Tomcat integrates with: Ant, BSF, ...
  • BSF integrates with: Xerces, Groovy, BeanShell, ...

It might be interesting to create a project map that shows projects and how they link to each other. My guess is that Spring, Ant and Commons-Logging would be in the middle.

This linking can be bad news. Sometimes you download a project only to find a twisted mesh of bizarre dependencies that just slows you down, but it can help too. If you are using Spring, the until the latest version, you'd be more likely to chose Hibernate over Toplink because of the Spring/Hibernate integration.

Why is the commercial world behind here?