The Ultimate Software Design Paradigm

Everyone knows that a programming language is much less useful without libraries. The ultimate open source software design paradigm which should be used by every program designer when designing a program is that every program should be a library (or component, or module, or whatever), with the main program being only an interface, with as much as possible in the libraries.

The huge advantage to this programming style is that, if a future program is to incorporate some or all of the functionality of this program, it will be easy just by calling on the library, and it will all happen.

For example, if I wanted to make a new package manager that would incorporate other features (for example, not installing packages until they've been available for a week, or assigning packages a higher preference if they came from a certain repository), then if previous package management software had been written in this paradigm, it would be possible to develop such a package quickly, as I could just include the libraries and call the functions for 80% of the functionality required.