I have, at several points over the past few years, been interested in finding out quite how the GPL applies when one has runtime dynamic linking in the mix. As such, I would like to set a little scenario up and then solicit responses from you as to how things might go. I have yet to receive any useful answers which consider all the aspects. Several people have basically said “oooh, hard.. erm therefore you can’t do it”, and the FSF have told someone I know who asked essentially this question, “erm… consult your lawyer”; and it took them four months to say that.

So, with all that in mind, here we go…

Setting the scene

  1. There exists a company SuperMegaCorp
  2. …who have a software product called FantasticUsefulApp
  3. …which is released to the public in a proprietary/pay-for kind of way…
  4. …but has a BSD licenced set of header files for third parties to write plugins distributed with it.
  5. There exists a useful GPLv2*ed library HandyStuffs
  6. …which is authored by a freedom loving software engineer called Fred.
  7. A pragmatic, yet freedom loving software engineer called Pete
  8. …who does not know Fred
  9. …writes a plugin for FantasticUsefulApp which we shall call IncrediblyCoolPlugin
  10. …which incorporates parts of the HandyStuffs codebase…
  11. …and is GPLv2*ed by Pete
  12. …who then releases it to the wider world on his website.

Next, the following happens…

  1. Seeing that Pete has written IncrediblyCoolPlugin for their FantasticUsefulApp
  2. …a user of the app called Uhura downloads it in binary form and drops it straight into the plugin folder.
  3. Uhura then starts FantasticUsefulApp which proceeds to dynamically link itself to IncrediblyCoolPlugin for the duration of Uhura’s use of the app.

So here is question one

Is anyone violating any of the GPLv2’s terms (or the GPLv3’s terms) by doing this at any point? If so, who is violating which terms, and how can that be fixed without losing functionality?

Extending the scenario

  1. Uhura loves FantasticUsefulApp a lot. She also really loves IncrediblyCoolPlugin and wishes that each time she made a new installation of the app it would come with the plugin.
  2. Uhura writes to SuperMegaCorp and asks them to include IncrediblyCoolPlugin with FantasticUsefulApp.
  3. Liking the idea, and mindful to place the source code to IncrediblyCoolPlugin on their distribution media, SuperMegaCorp proceed to distribute the plugin along with their app in one easy to install bundle.

Here is question two

Is anyone violating any of the GPLv2’s terms (or the GPLv3’s terms) by doing the above? If so, who is violating which terms, and how can that be fixed without losing functionality? (For this question, consider the bundling of the plugin and the app together as functionality it is preferable to retain.)

An alternative way to extend the scenario

  1. Concerned about the possibilities of upsetting freedom lovers, SuperMegaCorp decline to distribute IncrediblyCoolPlugin with their app…
  2. …however instead they distribute a plugin which connects to Pete’s website and downloads IncrediblyCoolPlugin the first time FantasticUsefulApp loads, installing it for the user automatically.

And question three

Is anyone violating any of the GPLv2’s terms (or the GPLv3’s terms) by doing the above? If so, who is violating which terms, and how can that be fixed without losing functionality?

If anyone has any useful ideas on this, please either email them to me, or blog about it and email me a link. I intend to post a precis of the answers in a future entry.

Comments on this page are closed.