[quote author="alexisdm" date="1311687510"]Let's say:
A = Your proprietary application
B = The Qt MySQL plug-in
C = The Qt Sqlite or ODBC plug-in
You want your users to be able to use A + B.
But if A can't work at all or as usefully without B, A is legally a derivative work of B and must be GPL compatible. So you have to do a little extra work to ensure that A can also use C instead of only B and still work correctly.
Since QtSQL is an abstraction layer for the database connection, if your application can connect to a MySQL database, it can already connect with minimal work to any other Qt-supported database.
If it wasn't the application role to create and populate the database tables, you may need to provide a way to create the tables with the other sql plug-in too, so that the application would be truly usable with that other plug-in.
So, now, A can work with either B or C, but if you distribute A + B + C in a single package, B becomes an integral part of A + B + C and the GPL doesn't allow GPL software to be distributed as part of a larger non-free program.
Because of that you can't put B in the same package as A, but your users can still get A+C and B from you as 2 different packages and combine them themselves to use A+B because:
B is effectively independent GPL package available elsewhere, and not written by you to work only with A, and as such can be freely distributed by anyone (as long as you can provide the source code for B),
The GPL doesn't restrict the usage, but rather the distribution of GPL covered software.
You might use an automated installer to combine A + B for your users from the two packages, but you'll still need to get some legal advice to be sure.[/quote]
Thanks, this is a very interesting point of view.