What is the difference between an “aggregate” and other “modified versions”?
An “aggregate” consists of several separate programs distributed together on one CD-ROM or other medium. The GPL allows you to create and distribute a collection, even if the licenses of other software are non-free or incompatible with the GPL. The only condition is that you cannot release the unit under a license that prohibits users from exercising the rights that each of them will grant to each individual license.
Where is the line between two separate programs and one program with two parts? This is a legal issue that judges will ultimately decide. [...]
If the modules are included in the same executable file, they are definitely combined into one program. If the modules are designed to work together in a common address space, this almost certainly means combining them into one program.
In contrast, pipes, sockets, and command line arguments are communication mechanisms commonly used between two separate programs. Therefore, when they are used for communication, modules are usually separate programs. But if the semantics of communication are quite intimate, exchanging complex internal data structures, this can also be the basis for considering two parts, a larger program.