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
Re: Integration: How Open Source Beats Commercial Software
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
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
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
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.