Split out documentation into subfolders.
[platform/upstream/gstreamer.git] / markdown / legal-information.md
1 ---
2 short-description: Patents, Licenses and legal F.A.Q.
3 ...
4
5 # Legal information
6
7 ## Installer, default installation
8
9 The installer (Microsoft Windows and MacOSX) and the default
10 installation (GNU/Linux) contain and install the minimal default
11 installation. At install time or later, the downloading of optional
12 components is also possible, but read on for certain legal cautions you
13 might want to take. All downloads are from the
14 [gstreamer.freedesktop.org](http://gstreamer.freedesktop.org) website.
15
16 ## Licensing of GStreamer
17
18 GStreamer minimal default installation only contains packages which
19 are licensed under the [GNU LGPL license
20 v2.1](http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html). This
21 license gives you the Freedom to use, modify, make copies of the
22 software either in the original or in a modified form, provided that the
23 software you redistribute is licensed under the same licensing terms.
24 This only extends to the software itself and modified versions of it,
25 but you are free to link the LGPL software as a library used by other
26 software under whichever license. In other words, it is a weak copyleft
27 license.
28
29 Therefore, it is possible to use GStreamer to build applications that are
30 then distributed under a different license, including a proprietary one,
31 provided that reverse engineering is not prohibited for debugging
32 modifications purposes. Only the pieces of GStreamer that are under the
33 LGPL need to be kept under the LGPL, and the corresponding source code
34 must be distributed along with the application (or an irrevocable offer
35 to do so for at least three years from distribution). Please consult
36 section 6 of the
37 [LGPL](http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html) for
38 further details as to what the corresponding source code must contain.
39
40 Some portions of the minimal default installation may be under
41 different licenses, which are both more liberal than the LGPL (they are
42 less strict conditions for granting the license) and compatible with the
43 LGPL. This is advised locally.
44
45 ## Optional packages
46
47 There are two types of optional packages (GPL and Patented), which are
48 under a different license or have other issues concerning patentability
49 (or both).
50
51 #### GPL code
52
53 Part of the optional packages are under the GNU GPL
54 [v2](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html). This means that
55 you cannot link the GPL software in a program unless the same program is
56 also under the GPL, but you are invited to seek competent advice on how
57 this works in your precise case and design choices. GPL is called
58 “strong copyleft” because the condition to distributed under the same
59 license has the largest possible scope and extends to all derivative
60 works.
61
62 #### Patents
63
64 Certain software, and in particular software that implements
65 multimedia standard formats such as MP3, MPEG 2 video and audio, h.264,
66 MPEG 4 audio and video, AC3, etc, can have patent issues. In certain
67 countries patents are granted on software and even software-only
68 solution are by and large considered patentable and are patented (such
69 as in the United States). In certain others, patents on pure software
70 solutions are formally prohibited, but granted (this is the case in many
71 European countries), and in others again are neither allowed nor granted.
72
73 It is up to you to make sure that in the countries where GStreamer is
74 used, products are made using it and product are distributed, a license
75 from the applicable patent holders is required or not. Receiving GStreamer
76 – or links to other downloadable software – does not provide any license
77 expressed or implied over these patents, except in very limited
78 conditions where the license so provides. No representation is made.
79
80 In certain cases, the optional packages are distributed only as source
81 code. It is up to the receiver to make sure that in the applicable
82 circumstances compiling the same code for a given platform or
83 distributing the object code is not an act that infringes one or more
84 patents.
85
86 ## Software is as-is
87
88 All software and the entire GStreamer binaries areprovided as-is, without any
89 warranty whatsoever. The individual licenses have particular language
90 disclaiming liability: we invite you to read all of them. Should you
91 need a warranty on the fact that software works as intended or have any
92 kind of indemnification, you have the option to subscribe a software
93 maintenance agreement with a company or entity that is in that business.
94
95
96 ## Licensing of code contributed to GStreamer itself
97
98 GStreamer is a plugin-based framework licensed under the LGPL. The
99 reason for this choice in licensing is to ensure that everyone can use
100 GStreamer to build applications using licenses of their choice.
101
102 To keep this policy viable, the GStreamer community has made a few licensing
103 rules for code to be included in GStreamer's core or GStreamer's
104 official modules, like our plugin packages.
105
106 **We require that all code going into our core packages is LGPL.**
107
108 For the plugin code, we require the <B>use of the LGPL for all plugins
109 written from scratch or linking to external libraries</B>.  The only
110 exception to this is when plugins contain older code under the BSD and
111 MIT license.  They can use those licenses instead and will still be
112 considered for inclusion, we do prefer that all new code written
113 though is at least dual licensed LGPL. We do not accept GPL code to be
114 added to our plugins modules, but we do accept LGPL-licensed plugins
115 using an external GPL library for some of our plugin modules.  The
116 reason we demand plugins be licensed under the LGPL, even when they
117 are using a GPL library, is that other developers might want to use
118 the plugin code as a template for plugins linking to non-GPL
119 libraries. We also accept dual licensed plugins for inclusion as long
120 as one of the licenses offered for dual licensing is the LGPL.
121
122 We also do not allow plugins under any license into our core,base
123 or good packages if they have known patent issues associated with
124 them. This means that even a contributed LGPL/MIT licensed
125 implementation of something which there is a licensing body claiming
126 fees for, those plugins would need to go into our gst-plugins-ugly
127 module.
128
129 All new plugins, regardless of licensing or patents
130 tend to have to go through a period in our incubation module,
131 gst-plugins-bad before moving to ugly, base or good.
132
133 ## Frequently Asked Questions
134
135 #### What licenses are there?
136
137 GStreamer binaries contain software under various licenses. See above.
138
139 #### How does this relate to the packaging system?
140
141 The packaging is only a more convenient way to install software and
142 decide what's good for you. GStreamer is meant to be modular, making use
143 of different modules, or plugins, that perform different activities.
144
145 We provide some of them by default. Others are provided as an additional
146 download, should you elect to do so. You could do the same by finding
147 and downloading the same packages for your own platform. So it is
148 entirely up to you to decide what to do.
149
150 Also, we note that GStreamer elements are divided into different packages,
151 roughly following the licensing conditions attached to the same. For
152 instance, the codecs-gpl package contains GPL licensed codecs. All the
153 packages installed by default, conversely, are licensed under the LGPL
154 or a more liberal license. This division is provided only for ease of
155 reference, but we cannot guarantee that our selection is 100% correct,
156 so it is up to the user to verify the actual licensing conditions before
157 distributing works that utilize GStreamer.
158
159 #### Can I / must I distribute GStreamer along with my application?
160
161 You surely can. All software is Free/Open Source software, and can be
162 distributed freely. You are not **required** to distribute it. Only,
163 be reminded that one of the conditions for you to use software under
164 certain licenses to make a work containing such software, is that you
165 also distribute the complete source code of the original code (or of
166 the modified code, if you have modified it). There are alternative
167 ways to comply with this obligation, some of them do not require any
168 actual distribution of source code, but since GStreamer contains the
169 entire source code, you might want to include it (or the directories
170 containing the source code) with your application as a safe way to
171 comply with this requirement of the license.
172
173 #### What happens when I modify the GStreamer's source code?
174
175 You are invited to do so, as the licenses (unless you are dealing with
176 proprietary bits, but in that case you will not find the corresponding
177 source code) so permit. Be reminded though that in that case you need
178 to also provide the complete corresponding source code (and to
179 preserve the same license, of course). You might also consider to push
180 your modifications upstream, so that they are merged into the main
181 branch of development if they are worth it and will be maintained by
182 the GStreamer project and not by you individually. We invite you not
183 to fork the code, if at all possible. The Cerbero build system has a
184 "bundle-source" command that can help you create a source bundle
185 containing all of the complete corresponding machine readable source
186 code that you are required to provide.
187
188 #### How does licensing relate to software patents? What about software patents in general?
189
190 This is a tricky question. We believe software patents should not exist,
191 so that by distributing and using software on a general purpose machine
192 you would not violate any of them. But the inconvenient truth is that
193 they do exist.
194
195 Software patents are widely available in the USA. Even though they are
196 formally prohibited in the European Union, they indeed are granted by
197 the thousand by the European Patent Office, and also some national
198 patent offices follow the same path. In other countries they are not
199 available.
200
201 Since patent protection is a national state-granted monopoly,
202 distributing software that violates patents in a given country could be
203 entirely safe if done in another country. Fair use exceptions also
204 exist. So we cannot advise you whether the software we provide would be
205 considered violating patents in your country or in any other country,
206 but that can be said for virtually all kinds of sofware. Only, since we
207 deal with audio-video standards, and these standards are by and large
208 designed to use certain patented technologies, it is common wisdom that
209 the pieces of software that implement these standards are sensitive in
210 this respect.
211
212 This is why GStreamer has taken a modular approach, so that you can use
213 a Free plugins or a proprietary, patent royalty bearing, plugin for a
214 given standard.
215
216 #### What about static vs. dynamic linking and copyleft?
217
218 We cannot provide one single answer to that question. Since copyright in
219 software works as copyright in literature, static linking means
220 basically that the programmer includes bits of code of the original
221 library in the bytecode at compile time. This amounts to make derivative
222 code of the library without conceivable exceptions, so you need a
223 permission from the copyright holders of the library to do this.
224
225 A widespread line of thinking says that dynamic linking is conversely
226 not relevant to the copyleft effect, since the mingling of code in a
227 larger work is done at runtime. However, another equally authoritative
228 line of thought says that only certain type of dynamic linking is not
229 copyright relevant.  Therefore, using a library that is specifically
230 designed to be loaded into a particular kind of software, even through
231 API,  requires permission by the copyright holder of the library when
232 the two pieces are distributed together.
233
234 In all cases, since most of the software we include in GStreamer is under
235 the LGPL, this permission is granted once for all, subject to compliance
236 with the conditions set out by it. Therefore, the problem only arises
237 when you want to use GPL libraries to make non-GPL applications, and you
238 need to audit your software in that case to make sure that what you do
239 is not an infringement. This is why we have put the GPL libraries in a
240 separate set of optional components, so you have a clearer view of what
241 is safely clear for use, and what might need better investigation on a
242 case-by-case basis.
243
244 Please be reminded that even for LGPL, the recipient of the software
245 must be in a position to replace the current library with a modified
246 one, and to that effect some conditions apply, among which that for
247 static linking you must also provide the complete toolchain required to
248 relink the library (“any data and utility programs needed for
249 reproducing the executable from it”, except the “major components”) and
250 that the license of the conditions of the resulting program must allow
251 decompilation to debug modifications to the library.
252
253 ## Licensing applications under the GNU GPL using GStreamer
254
255 The licensing of GStreamer is no different from a lot of other libraries out
256 there like GTK+ or glibc:
257 we use the [LGPL](http://www.fsf.org/licenses/lgpl.html).
258
259 What complicates things with regards to GStreamer is its plugin-based design
260 and the heavily patented and proprietary nature of many multimedia codecs.
261 While patents on software are currently only allowed in a small minority of
262 world countries (the US and Australia being the most important of those), the
263 problem is that due to the central place the US hold in the world economy and
264 the computing industry, software patents are hard to ignore wherever you are.
265
266 Due to this situation, many companies, including major GNU/Linux distributions,
267 get trapped in a situation where they either get bad reviews due to lacking
268 out-of-the-box media playback capabilities (and attempts to educate the
269 reviewers have met with little success so far), or go against their
270 own - and the free software movement's - wish to avoid proprietary software.
271
272 Due to competitive pressure, most choose to add some support. Doing that
273 through pure free software solutions would have them risk heavy litigation and
274 punishment from patent owners. So when the decision is made to include support
275 for patented codecs, it leaves them the choice of either using special
276 proprietary applications, or try to integrate the support for these codecs
277 through proprietary plugins into the multimedia infrastructure provided by
278 GStreamer. Faced with one of these two evils the GStreamer community of
279 course prefer the second option.
280
281 The problem which arises is that most free software and open source
282 applications developed use the GPL as their license. While this is generally a
283 good thing, it creates a dilemma for people who want to put together a
284 distribution.  The dilemma they face is that if they include proprietary
285 plugins in GStreamer to support patented formats in a way that is legal for
286 them, they do risk running afoul of the GPL license of the applications. We
287 have gotten some conflicting reports from lawyers on whether this is actually a
288 problem, but the official stance of the FSF is that it is a problem.
289 We view the FSF as an authority on this matter, so we are inclined to follow
290 their interpretation of the GPL license.
291
292 So what does this mean for you as an application developer? Well, it
293 means **you have to make an active decision on whether you want your
294 application to be used together with proprietary plugins or
295 not**. What you decide here will also influence the chances of
296 commercial distributions and Unix vendors shipping your
297 application. The GStreamer community suggest you license your software
298 using a license that will allow non-free, patent implementing or
299 non-GPL compatible plugins to be bundled with GStreamer and your
300 applications, in order to make sure that as many vendors as possible
301 go with GStreamer instead of less free solutions.  This in turn we
302 hope and think will let GStreamer be a vehicle for wider use of free
303 formats like the [Xiph.org](http://www.xiph.org/) formats.
304
305 If you do decide that you want to allow for non-free plugins to be used with
306 your application you have a variety of choices. One of the simplest is using
307 licenses like LGPL, MPL or BSD for your application instead of the GPL.
308 Or you can add a exceptions clause to your GPL license stating that you except
309 GStreamer plugins from the obligations of the GPL.
310
311 A good example of such a GPL exception clause would be, using the Totem
312 video player project as an example:
313
314 *The developers of the Totem video player hereby grants permission for
315 non-GPL compatible GStreamer plugins to be used and distributed together
316 with GStreamer and Totem. This permission is above and beyond the permissions
317 granted by the GPL license by which Totem is covered. If you modify this code,
318 you may extend this exception to your version of the code, but you are
319 not obligated to do so. If you do not wish to do so, delete this exception
320 statement from your version.*
321
322 Our suggestion among these choices is to use the LGPL license, as it is what
323 resembles the GPL most and it makes it a good licensing fit with the major
324 GNU/Linux desktop projects like GNOME and KDE.  It also allows you to share
325 code more openly with projects that have compatible licenses. As you might
326 deduce, pure GPL licensed code without the above-mentioned clause is not
327 re-usable in your application under a GPL plus exception clause unless you
328 get the author of the pure GPL code to allow a relicensing to GPL plus
329 exception clause. By choosing the LGPL, there is no need for an exception
330 clause and thus code can be shared freely between your application and
331 other LGPL using projects.
332
333 We have above outlined the practical reasons for why the GStreamer community
334 suggest you allow non-free plugins to be used with your applications. We feel
335 that in the multimedia arena, the free software community is still not strong
336 enough to set the agenda and that blocking non-free plugins to be used in our
337 infrastructure hurts us more than it hurts the patent owners and their ilk.
338
339 This view is not shared by everyone.
340 The [Free Software Foundation](http://www.fsf.org) urges you to use
341 an unmodified GPL for your applications, so as to push back against the
342 temptation to use non-free plug-ins. They say that since not everyone else has
343 the strength to reject them because they are unethical, they ask your help to
344 give them a legal reason to do so.