As long as we are discussing software reuse, we should mention some of the downsides. After all, object-oriented programming has been around for over a decade now, and yet software reuse is still uncommon, not the norm. What are some of the things that mitagate against widespread software reuse?
First off, reuse requires something to reuse. This means we need solid reusable compoments. But, while people have figured out how to make money off of finished applications, the market for components is very difficult.
There are very few guidelines that tell people how to produce good components.
Reuse requires a culture that encourages reuse. This is often not the case.
And finally, reuse requires managers to fund reuse. Oftentimes the benefits of reuse cannot be realized in any one project, and so a management that looks only at the bottom line for the current project will not encourage the development of reusable components.