Worry About Integration, Not Installation
Over the past few months, several potential clients have asked me to configure and install open-source programs. That's not unusual in and of itself. I have been consulting for 15 years, and always enjoy receiving calls from people with problems that I may be able to solve. But in each of these recent cases, the callers assumed that the majority of my time would be spent installing their programs. They neglected to take into consideration the time and cost associated with connecting their new software with their existing, legacy systems.
Most open-source packages are not that complicated to install and configure. The days in which you needed to manually modify dozens of lines in a Makefile, and research the difficult ways that you needed to install some additional libraries to satisfy dependency requirements, are a distant memory. Binary installers, such as those used under Debian, Ubuntu, and Red Hat Linux distributions, make it trivially easy to get started.
What many people fail to realize is that installation isn't the hardest or most time-consuming task. Rather, that honor falls to the integration of the new program with existing software or organizational expectations. Integration might require changing the program such that it fits the client's business. But it also might require modifying the package such that it will work with a database that was designed for a different purpose, by a different set of programmers. In some cases, it can require the development of a whole new "bridge" system that connects the old software with the new package.
The bottom line is that even the best, most flexible software will almost never work precisely the way you need -- and this is doubly true when it has to play nicely with legacy systems. Open standards make it easier for computers to interoperate with one another, but they don't remove the need for customization.
Now, what does this have to do with open source?
First of all, it demonstrates that even if the entire world were to switch to open-source software, there would still be a need for programmers -- and those programmers would be playing a vital role, and probably be paid well for their work. Some people seem to think that an open-source world would mean one in which programmers have no income, or in which their income is substantially reduced.
However, we know from experience that even in a purely open-source environment, there will always be a need for customization. The number of open-source consultancies has grown by leaps and bounds over the last decade, demonstrating not only an interest in such software, but also in the need for people to support and customize it.
Also, as hard as it might be to integrate open-source software into a legacy system, integrating proprietary software can be even more difficult. This is because the authors and community using open-source programs are all in the same boat, trying to make the software as reliable and useful as possible to the greatest number of people. Thus, while such connections might be difficult to implement, having the source code, extensive documentation, and a community of like-minded people who have nothing to hide makes the process far easier.
Proprietary software is designed to help a company make as much money as possible, which almost inevitably means hiding information that would make it easier to integrate or cooperate with competitors.
Finally, even when an integration job is extremely complex and expensive, open source levels the playing field, making it possible to solicit multiple bids from a variety of vendors. Each vendor will have its own advantages and disadvantages, and some might well be better or more expensive than the others. But because the software is open-source, no one company has an advantage beyond its knowledge and experience.
Integration and customization are two of the toughest real-world tasks that programmers can take upon themselves, but they are also among the most vital tasks. Open-source doesn't remove the problem, but it does make the solutions easier and cheaper to obtain, while maximizing the chance that the integration will be as smooth as possible.