The GNU General Public License provides an exception to its viral nature in the form of "mere aggregation":
In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
This is intended for software distribution
s containing both GPL-licensed and GPL-incompatible code. As the exact meaning of "mere aggregation" has not to my knowledge been tested in a court
of law, it may be possible to bend the rules
In fact, if Richard M. Stallman wants to make an OS that subscribes to the UNIX philosophy (small independent tools designed to manipulate a data stream), he has to accept the ramifications of mere aggregation. For example, to use GPL code with proprietary code in an embedded environment, use a pair of pipes and a simple filesystem. The GPL requires only that everything linked into one "executable" be GPL compatible, and if you have all your proprietary stuff isolated in one area of flash memory and all the GPL software in another, you let users replace the GPL "executable" with a freshly compiled version, and you limit communication between GPL code and proprietary code to a pair of pipes, you can obey both the GPL and the UNIX philosophy.
Ironically, it seems that proprietary operating system components (such as Visual Basic and MFC runtime libraries) cannot as readily be "mere aggregated" with a program:
However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
A court will have to decide how the term "accompanies" interacts with "aggregation."