For many, open source means customizing the code. Custom is great, you make the program do exactly what you want.
But custom comes with a down side: maintenance. Once you customize an open source project, it’s yours! When an update/patch is released for the package, you now need to redo all the changes you made. On a small plugin, that may not be a big deal, but on a large code base like it can be a major time investment. When you consider that most of the major open source projects release new versions and or security patches 4-8 times a year, redo can become unmanageable.
My thought is that open source should be thought of as open for developers, closed for users (consumers) of published packages, like Joomla and WordPress, which are usually just installed and used. Sometimes a rethink on usage is in order. Many customizations I have been asked to do could be avoided by changing processes, requirements, or specs that don’t really impact the end result. Rememeber, just because you can, doesn’t mean you should!
While it can make the initial customization more difficult, make sure that any custom work is done as a plugin/extension if you can’t change the specs. That way it is likely that all except major upgrades will be painless.