<< Blogging can make you a better programmer | Home | The best Javascript editor so far >>

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?



Re: Integration: How Open Source Beats Commercial Software

Joe, you're usually a smart guy and have interesting things to say, but in this case, you're astoundingly...wrong. Commercial products do link, but it's always something to shield the user from, or manage very carefully. I for one despise the rampant linking in OSS stuff, because it's a nightmare to manage and has never ever once been something I'm grateful for. When integrating libraries, you DONT want to have to lug in a bunch of other stuff, or spend a few hours figuring out exactly what's optional and what isn't. Your list is also heavily biased. For example, spring's goal in life is to integrate, it's worthless on its own, so obviously it'll have a long list. jboss on the other hand does not (and when it does, eg clogging, everyone bursts into tears). Listing hibernate on there isn't exactly fair, as I dare you to find a container that doesn't integrate with hibernate (or ibatis, or any other persistence mechanism). Likewise tomcat's 'ant' integration, many/most vendors offer ant tasks for common actions. Why doesn't that count? You're trying to make a point where there isn't one, and the so called 'advantage' you're touting is often a downfall and crippling aspect of OSS.

Re: Integration: How Open Source Beats Commercial Software

I thought as I wrote it: Hani's not going to like this....

I agree totally about it being a pain to have lots of complex dependencies (which I noted under "this linking can be bad news...").

The list of deps for DWR bears out this thinking - DWR does not even depend of clogging. (though it will use it if it is around)

However there is benefit to integration. Oracle would not be announcing Spring integration if there was no benefit.

The alternative is NIH thinking. When writing DWR I wanted to have some optional scripting ability. Do I re-write BSF and then invent my own scripting language?

I believe that integration is good so long as you are only adding functionallity without removing ease of use. I think every one of DWR's integrations does just that.

You are right that there is another blog entry: "Integration: How Commercial Software Beats Open Source" which goes on about the "twisted mesh of bizarre dependencies" that I mentioned briefly, but I think you've written that one well enough already.

Re: Integration: How Open Source Beats Commercial Software

Always ready to rush to the defense of TOPLink, I would point out that what it "integrates" with is most of the J2EE stack. For example, it integrates with JMS (cache synchronization), EJB (container plug-ins), JDBC, JAXB, java logging, JMX, etc. There is a platform standard API binding to almost everything it does.

It is true though, that open source components can more easily negotiate dependencies than commercial tools. If I build a package that requires DWR, I have put only a minor burden on people that might want to use my tool, whereas, if I go and develop extension to Backbase or something then I pass along a financial requirement to anyone wanting to use my stuff.

So, for TOPLink, they need to negotiate their dependencies into the Platform, which is what they've been doing for many years. I think Spring is being supported mostly because of the similarity/inclusion with EJB 3.0. However, this process of getting stuff into the J2EE platform is slower than the open source world.

Re: Integration: How Open Source Beats Commercial Software

I'd left the platform standard APIs out juist because you don't have a huge amount of choice about using them. Database access without JDBC is possible, but then so is performing root canal on yourself.

DWR (and to a certain extent Spring too) proves that you can have dependencies without making life hard for the users. DWR integrates with a significant list of other projects, but forces no-one to use any of them.

Is Spring really similar to EJB 3.0? I can see that Hibernate might be seen as similar, but Spring?

Re: Integration: How Open Source Beats Commercial Software

Whoops, I guess I meant Hibernate. The point was that the TOPLink guys have this mindset where the Java platform is the thing that they integrate to, and anything outside the platform is seen as too risky -- imposing a burden on their users to choose one standard from another. When some new feature is needed, then they wait for the feature to show up in the platform, and frequently they have worked to try and speed the new feature into the new release of the platform.

I have real mixed feelings about the tools marketplace. Of course, as a developer I want everything to be free. However, I'm also mindful of the you-get-what-you-pay-for principle. At some point someone's got to pay for something.

I guess I hope that the software tools ecosystem can continue to support both for-profit and free open source tools.