Sure, they provide great functionality, but when you want to do something (very) specific to your needs everything falls apart. You must do things how the library specifies, or things will just not work
Eto, great point. Anyone who does software products for a living will attest that control over your code is very important. Interestingly, the open source guys define "control" as "possession", so from their POV code-sharing is enough.
The problem is, it doesn't work. Software producers also need control over how their code evolves. And this is open source's Achilles Heel -- its evolution is all too dependent on a large group of dev egos.
Btw, Joel Spolsky had a good writeup about this sometime back, where he writes:
If it's a core business function -- do it yourself, no matter what. In my mind that makes perfect sense.