I've used this phrase before to talk about other aspects of the situation, but I think it is becoming more and more applicable now.
As I will cover in my presentation at NoVaJUG (Northern Virginia Linux Users' Group) next week, I believe that Open Source Software is reaching a critical point and some people need to stop and ponder it for a moment…
Ten years ago, in order to build a company infrastructure, it cost tens of thousands of dollars, you had to deal with numerous arcane technologies, and you were locked into one of a handful of architectures. There was little flexibility in which way you could go and once you made the decision, you were locked into it by any number of additional factors. In spite of some groups efforts to the contrary, most of this is no more. You can have a basic web server deployed in no time, email, file sharing, printer sharing, etc can all happen too.
What brought this about? I believe that Open Source Software and the ability to customize it to your heart's desire were the biggest contributors. [And obviously the growth and success of Open Source has come about because of the cheap fast communications provided by the Internet. No question there.]
Many companies embraced Open Source Software, tweaked it for their particular business needs and it worked so well with so few problems, they promptly forgot about it. Fast forward one, two, or four years and the system is showing its age. Numerous small requirements changes over time have caused a huge amount of extraneous code and cruft on the system; none of the underlying libraries, databases, or server applications have been updated; the server itself is running on old hardware; and whole new technologies are lurking out there which have the developers drooling and the managers whining. What's a development group to do? Upgrade everything!
True to Open Source development, those underlying libraries have gone through three major releases, have been refactored to run faster and smarter. The database no longer supports that hack that you did “just to get things running”. The server's configuration and supporting binaries have significantly changed. And worst of all, the core application which all your code is built around has gone through four major releases, each one of increasing scope, functionality, and complexity… none of which are applicable to your business.
If you believe that none of these concerns are applicable outside the Open Source world, you're kidding yourself. These are applicable in ANY application which is dependent on external API's, system calls, or data source.
Unless you built and have complete control over the entire system – including the database, applicable servers, file system, and your application itself – this is 100% applicable to your organization. And even for some companies who DO build the OS, the servers, the filesystem, and the database, these problems arise. DLL Hell anyone?
In my presentation at NoVaJUG (Northern Virginia Linux Users' Group), I'm going to lay out some basic strategies on how to address these concerns in adaptive and proactive ways instead of the standard reactive strategies.