I recently had the opportunity to sit on a panel that was reviewing proposals by IS majors at Fairfield University. Teams of three or four students were tasked with evaluating three options for creating a registration system for a conference to be held on campus next summer. An open source conference registration system was considered, along with a hosted option and an open source CMS.
All students rejected the idea of an open source CMS, correctly expecting that customization would not be feasible within the time constraints. Interestingly though, nearly half of the students felt the open source conference registration system would be less costly than the hosted option. I found this latter alliance interesting because the costs involved with open source aren’t obvious to those without experience developing with open source software.
Even the most polished open source packages often require unexpected efforts. Whether WordPress or MySQL, something I want to do inevitably leads to hours of Google searches. Hours become days when a user (or developer) is less experienced. These startup costs have to be factored into any decision that involves build with open source.
I’ve been using Spring.NET since before .NET 2.0. I built a medium-sized web site for a group using Spring’s Web framework. The early costs came as I was trying to learn from message boards. The documentation was, at the time, very sparse (it has sense become top-notch). Adoption was limited, so Google searching wasn’t helpful either.
A later point of stress came as Microsoft released .NET 2.0. That horrifying decision to eliminate Web projects in Visual Studio brought some new magic that broke Spring’s Web data binding. Specifically, the server controls were no longer declared in the code behind. Spring used attributes on control declarations to facilitate bidirectional data binding. To make Spring compatible with the new style of ASP.NET webs, Spring Web dropped the declarative binding for programmatic binding. This switch made for a painful upgrade path for this project. Dozens of attributes had to be removed and recoded.
The tendency of open source bits to change frequently and unexpectedly is something I’ve learned to live with. ASP.NET MVC has changed for the better from preview to beta. But the changes have been worthwhile. The Castle stack changed plenty over its RC2 to RC3 period. Even Python recently changed its most basic bits – print “Hello, World!” to print(“Hello, World!”) in version 3.0. Each time, these upgrade costs hurt a little.
Students who assume that open source is free and therefore cheaper than a hosted solution are erring from lack of experience. That open source conference registration system would probably require support from install to the end of the conference. The hosted solution had a nominal charge and numerous features. The trade off, as always, is lack of control.
It’s certainly not the case that all hosted or paid options are better than open source alternatives. The open source conference registration system may have been the better option, with the right skills available. My experience has taught me to assume all first projects with an open source package will add at least 20% to the development effort. This ramp up time may be more or less, but is almost always there.
It was great to see many of my former (and other) students digging into this problem. Learning how to evaluate build versus buy options is an incredibly valuable lesson for college seniors and juniors to have.
RSS feed for comments on this post. | TrackBack URI