Don't get me wrong: I truly rejoice at the acceptance of free and open source software by the upper echelons of corporate culture--it's nice to know that the hippie chick can at least give the supermodel (<- NSFW, btw) a run for her money. But I've come to suspect that (at least some of the time) the reasons for that acceptance are short-sighted. And, worse, suffer from the same false accounting that considers interaction with its customers a cost and a menial task for the least paid and least trained.
Simply put, tweaking "free" software is all well and good until you need to upgrade. Those changes accreted over the months and years to make it put the right covers on your TPS reports? Wiped clean in the tabla rasa of a shiny new installation. And if documenting those changes was considered too expensive, effette or whatever, you're in even bigger trouble. Granted, if the programming team was foresighted enough to use source control on the original code, the prognosis is somewhat more optimistic, but it's not necessarily a silver bullet. The new version may have been refactored, which is good thing in the long run, but in the short run, files, classes, functions, etc. may have been completely renamed; in a worst-case scenario, even the database structure could be feng shui'd beyond recognition.
Please understand that this is by no means a knock against free and/or open source software. Commercial code has certainly been known to break existing systems. For example: When Microsoft released the first version of .NET, developers could no longer count on being able to bring their old code forward and expect it to work. And when Microsoft released the next major version of .NET, they broke code written for the previous version. Which, needless to say, miffed more than a few folks.
The bottom line is: When you tweak "free" software to meet your specific needs, it's no longer free, and (more importantly) the tweaks in question may not be one-off costs. You could pay for them each time you need to upgrade. Some companies bite the proverbial bullet and have their mission-critical software written from scratch so that they control it. Others are more pro-active about managing upgrades (something that applies to proprietary software as well free or open source). Both approaches have their merits and there is no one-size-fits-all. However, downloading something, having it customized, and expecting to forget about it is just delusional.