Over the past few years, the phenomenon of open source has
risen to its rightful place in the hearts and minds of developers
everywhere. You'd be hard pressed to find a Java project that doesn't
make use of some form of open source software.
Nor is the prevalence of open source the domain of commodity
applications; some highly specialized and domain-specific
applications are open source, deployed in many high-profile,
mission-critical environments, with a thriving and active user
community. The motivation for the developers ranges from scratching a
personal itch, to marketing benefits, to a (sometimes!) sound
business model whereby the source is free but support and services
Before open source advocates get up in arms over what I am
about to say, I'd like to point out that I am heavily involved in
quite a few open source projects; for example, as a core developer at
the Open Symphony project and a regular contributor to XDoclet. I
benefit greatly from a large number of open source products and
libraries. This relationship is often quite symbiotic; the more you
use said libraries, the more likely you are to contribute patches,
fixes, and enhancements.
However, it's disturbing to hear some of the language and the
tone coming out of certain vocal open source proponents in the Java
world. I think a great disservice is being done to open source when
those invested in it claim that it's a new business model that does
away with the old antiquated way of doing things.
For all those adherents to this dogma, consider your own
projects. If you're working on a product for a living (or hope to
make a living off of it), chances are you're not going to open source
it. Marketing benefits aside, it often doesn't make sense to "set the
source free." Many man-hours have been invested in said product and,
generally, financial compensation for investing all those hours
wouldn't be such a bad thing.
Having said that, in some cases there is a great benefit to
be had from open sourcing. Perhaps you no longer have much time to
dedicate to your application; perhaps it's too unrelated to your core
business, and thus open sourcing it won't detrimentally affect sales.
These days, it's also an excellent way to generate publicity and free
I've heard far too many people chant the usual set of mantras
when it comes to choosing open source. For example, a common claim is
that if you have access to the source, you can always fix any issues
you have with it, thus having insurance against the vendor going out
of business. This might well be true for small easy projects but, as
most people who have used JBoss can attest, the source is next to
useless in such scenarios. The codebase is simply too large and
complex for the casual browser to be able to pinpoint a bug and
determine a correct fix.
Another common myth is the superior support argument. The
perception is that open source has superior support since it has
interested fellow users and the actual developers of the code
providing this support. This is an unfair claim because the
stereotypical yardstick comparison is usually a very narrow set of
commercial software. In my experience, almost every small vendor of a
commercial product has provided exceptional support. Even the giants
like BEA provide surprisingly quick-issue resolution and turnaround
times. It's not unheard of to have an issue escalated to a senior
engineer within a few hours of reporting it. Some clients have also
cited very specific examples of issues not just being escalated, but
having had a fix tested and delivered within hours.
Whatever your choice is, have the courtesy and foresight to
acknowledge that there is no "one size fits all." Open source has its
place now and always will. The same applies for commercial software.
Neither model is going to die out anytime soon, but if you must make
a decision between one or the other, consider all the hidden costs,
not just the price tag.
About The Author
Hani Suleiman is the CTO of Formicary (www.formicary.net), a
consulting services and portal solution provider. He is also a
developer on a number of popular open source projects.