I have developed an application, a commercial plugin, and an open source plugin, each part distributed separately. The application dynamically loads each plugin, and function calls are bidirectional. My open source plugin will statically link the library I decide to use, and I am considering one licensed under the GPL. Here is a diagram of the relations.
Application (MIT)
+ +
| |
| |
+ +
Plugin (commercial) Plugin (MIT)
+
|
+
Library (GPL)
My gut feeling is that this violates the GPL, because the application "forms a single program" with the commercial plugin and thus the "combination of the GPL-covered plug-in with the non-free main program would violate the GPL". But who violates it? Are users violating the GPL upon loading the GPL library along with the MIT plugin? Suppose different people develop each part---does the commercial plugin developer violate the GPL, even though they have no knowledge of the MIT plugin, perhaps because it was not developed yet? Does the MIT plugin developer violate the GPL, simply because a commercial plugin exists, despite that MIT is compatible with GPL?