summaryrefslogtreecommitdiff
path: root/posts/apps-licences-and-linking.mdwn
blob: cd37227468cd29eff39b34e74627ab7c8acbc4a5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
[[!meta title="Scary licence questions follow…"]]
[[!meta author="Daniel Silverstone"]]
[[!meta date="2008-06-17 18:42:19 +0100"]]
[[!tag tech]]

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…

<h2>
Setting the scene

</h2>
<ol>
<li>
There exists a company <em>SuperMegaCorp</em>…

</li>
<li>
…who have a software product called <em>FantasticUsefulApp</em>…

</li>
<li>
…which is released to the public in a <em>proprietary/pay-for</em> kind
of way…

</li>
<li>
…but has a <em>BSD</em> licenced set of header files for third parties
to write plugins distributed with it.

</li>
<li>
There exists a useful <em>GPLv2*</em>ed library
<em>HandyStuffs</em>…</li><li>…which is authored by a freedom loving
software engineer called <em>Fred</em>.</li><li>A pragmatic, yet
freedom loving software engineer called <em>Pete</em>…</li><li>…who
does not know <em>Fred</em>…</li><li>…writes a plugin for
<em>FantasticUsefulApp</em> which we shall call
<em>IncrediblyCoolPlugin</em>…</li><li>…which incorporates parts of
the <em>HandyStuffs</em> codebase…</li><li>…and is <em>GPLv2*</em>ed
by <em>Pete</em>…

</li>
<li>
…who then releases it to the wider world on his website.

</li>
</ol>
Next, the following happens…

<ol start="13">
<li>
Seeing that <em>Pete</em> has written <em>IncrediblyCoolPlugin</em> for
their <em>FantasticUsefulApp</em>…

</li>
<li>
…a user of the app called <em>Uhura</em> downloads it in binary form and
drops it straight into the plugin folder.

</li>
<li>
<em>Uhura</em> then starts <em>FantasticUsefulApp</em> which proceeds to
dynamically link itself to <em>IncrediblyCoolPlugin</em> for the
duration of <em>Uhura</em>’s use of the app.

</li>
</ol>
<h2>
So here is question one

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

<h2>
Extending the scenario

</h2>
<ol start="16">
<li>
<em>Uhura</em> loves <em>FantasticUsefulApp</em> a lot. She also really
loves <em>IncrediblyCoolPlugin</em> and wishes that each time she made a
new installation of the app it would come with the plugin.

</li>
<li>
<em>Uhura</em> writes to <em>SuperMegaCorp</em> and asks them to include
<em>IncrediblyCoolPlugin</em> with <em>FantasticUsefulApp</em>.

</li>
<li>
Liking the idea, and mindful to place the source code to
<em>IncrediblyCoolPlugin</em> on their distribution media,
<em>SuperMegaCorp</em> proceed to distribute the plugin along with their
app in one easy to install bundle.

</li>
</ol>
<h2>
Here is question two

</h2>
Is anyone violating any of the <em>GPLv2</em>’s terms (or the
<em>GPLv3</em>’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.)

<h2>
An alternative way to extend the scenario

</h2>
<ol start="19">
<li>
Concerned about the possibilities of upsetting freedom lovers,
<em>SuperMegaCorp</em> decline to distribute
<em>IncrediblyCoolPlugin</em> with their app…

</li>
<li>
…however instead they distribute a plugin which connects to
<em>Pete</em>’s website and downloads <em>IncrediblyCoolPlugin</em> the
first time <em>FantasticUsefulApp</em> loads, installing it for the user
automatically.

</li>
</ol>
<h2>
And question three

</h2>
Is anyone violating any of the <em>GPLv2</em>’s terms (or the
<em>GPLv3</em>’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.