4

Preamble

  • If I say "BSD" I mean the 3-Clause BSD license
  • If I say "GPL" I mean the GPLv3 license
  • I am not the author of the GPL project
  • I am the author of the BSD project

Simple Task

I want to use a 3rd party software (GPL) in (or better 'with') my open source project (BSD).

Situation

  • I won't change any of the GPL project code (using it AS IS).
  • I want to use it as kind of a library (I know about LGPL but it's not available).
  • I will use the GPL software as bulk, not only parts of the code.
  • I will indicate the use of the GPL project with the license, homepage and where and why it is used in my BSD project (in README file).
  • I will not take the credits for the functionality of the GPL project.
  • I will take the credits for my project and the "Adapter" connecting my BSD project to the GPL project.
  • I don't want to re-license the GPL project as BSD
  • I won't charge any fees or something like that.

To gain insight, you can find the BSD project at

GitHub: MOC-Framework (see /Extension/FlowPlayer and /Module/Office/Video)

and the GPL project here:

Flowplayer (free flash-version)

Simple Question

Is this possible?

Closing Words

I found some discussions, stating "it is possible", others say "no". Most of the "no" were for commercial projects. Most of the "yes" are referring to: "include BSD in GPLv3", but that's not what I mean. I want GPLv3 along with BSD.

I simply can't figure it out.

DerDu
  • 143
  • 4
  • **I found the following statment:** GPLv3 adds more clarity with regard to what constitutes a derivative work. For example, GPLv3 states that if the program is "specifically designed" to work with a GPL-governed library, then the library is considered part of the overall work and the entire application is governed by the GPL. However, if one could swap out the GPL library for another library (i.e., if the application wasn't "specifically designed" to work with the GPL library), then it's not part of the overall work and would not be governed by the license. – DerDu Jun 04 '13 at 11:26
  • See also [Can I release a non-free program that's designed to load a GPL-covered plug-in?](https://www.gnu.org/licenses/gpl-faq.html#NFUseGPLPlugins) and substitute in "non-GPL-licensed" for "non-free". – apsillers Jun 05 '13 at 12:54
  • thx for correcting @Joachim Sauer .. english is not my mother tongue ;-) – DerDu Jun 12 '13 at 06:32
  • Ok.. long time, but finaly i understood what you'r trying to tell me :-) ... I MAY have my own project completely BSD, IF: i do 3rdParty GPL code as plugin, AND: must not package 3rdParty GPL code (even the plugins) together with my BSD code (e.g. in one git repository), FURTHER: i have to inform the "user" what license is used by what code, AND: make clear, licensing is not conjunctive ... with that in mind i can pick an answer to this question.. but please read the comments and other answers too.. – DerDu Apr 24 '14 at 07:55

3 Answers3

6

Yes, it's possible to link your BSD project and the GPL project. However, it means you must release the combined version as GPL.

Skim over FSF's GPL compatible licenses and you'll see a range of commentary about how well a particular license can fold into the GPL. And yes, by compatible, what FSF really means is how easily can you combine two works and release the resultant work as a GPL'd work. It's obviously a bit self-serving, but at least you can better understand the ramifications to your project when you combine it with a GPL'd project.

  • That's not what I wanted to hear :-) ... however, it's sometimes true and sometimes not because of the "specifically designed" phrase in GPLv3 .. in previous versions of GPL it would be true (BSD+GPL=GPL), but in GPLv3 it's not clear to me.. – DerDu Jun 04 '13 at 12:12
  • @DerDu: The GPLv3 text does not use the phrase "specifically designed". It uses the phrase "based on", which probably will be satisfied as soon as you use a function or data type that is defined by the GPL code (and not by an independent, external, specification). – Bart van Ingen Schenau Jun 04 '13 at 14:03
  • 3
    @DerDu - welcome to the viral nature of the GPL. I added an add'l link to provide a bit more background / information about how licenses can fold into the GPL. And yes, that's really your only option regardless of whether you want to hear that or not. :-) –  Jun 05 '13 at 00:20
  • Thank you @GlenH7, i've checked your resource and it consolidates that (License)+GPL=GPL. So it seams to me i have no choice but to sadly drop this GPL extension :-( ... (to Bart) i know the "phrase" is not in there but §2. (Basic Permissions) clause 1 could be interpreted as: if it's not specialy designed for (covered work) so it's not captured by GPL. And thats the tricky part. Is my project covered work? I would say: No it's not (concerning the manner in which the extension is used), but i'm not SURE. :-/ – DerDu Jun 05 '13 at 06:18
  • **I got a workaround** for my project to stay under the BSD license and anyway make use of the GPL software .. This is achieved by NOT distributing the GPL software TOGETHER with my BSD project in any way (this would force me to GPL). But to **download the GPL code on demand**? This way i'm able to publish my project under BSD and if the _consumer_ uses its functionality the GPL software is automatically downloaded and the **my project would change to GPL for the consumer ONLY** (which is ok with the other used licenses, thx again GlenH7) but won't affect MY work .. bingo :-) – DerDu Jun 05 '13 at 07:11
  • 1
    @DerDu: You don't need that workaround and it does not change anything anyway. Distribution in source form is not affected and for distribution of binary form what makes your code a derived work is _linking_ it to the GPL code. If it is linked, it is covered by GPL, if it is not and only runs the GPL code as separate executable, it is not covered. – Jan Hudec Jun 05 '13 at 07:54
  • @DerDu: If you make the GPL extension a plugin, you can be sure the rest of the main program is not covered. – Jan Hudec Jun 05 '13 at 08:08
  • @JanHudec so that would be this scenario? [Main(BSD)byMe]=>[PluginManager(BSD)byMe]<=|LicenseBorder|=[Plugin(GPL)byMe]<=[Project(GPL)by3rdParty] – DerDu Jun 05 '13 at 08:24
  • @DerDu: Yes. That would be permitted by the licenses. – Jan Hudec Jun 05 '13 at 11:08
  • Calling it a *Workaround* is not really working in your favor ^^ Also there is no *"license-border"* only you use plugins. Some projects do it that way but they communicate in advance (so this is probably more an addition to the license than the license on it's own - and it requires to have flow in the boat with you), if you want to have this more worry-free see my answer below. And what is permitted by the licenses is what written (not what @Jan Hudec says, right now you package GPL'ed software not under GPL which the license says is terminating any usage-rights, so take care) – hakre Jun 10 '13 at 14:59
2

Yes, it is possible with the following implications:

  1. The combined binary is covered by GPL. Only applies if they are statically or dynamically linked together. If your binary just runs the GPL one, it isn't covered. Distribution method does not matter.
  2. You still may distribute your sources under the more permissive BSD license.
  3. A program is not a derived work of a plugin, so if you have a program, that can, optionally, load a plugin and only the plugin uses the GPL code, the main program is not covered by GPL, only the glue that adapts the GPL code to work as plugin is.
Jan Hudec
  • 18,250
  • 1
  • 39
  • 62
  • so.. (given that *binary executable* and *php project code* means all the same) i got _my bsd binary_ which is executing the _gpl binary_ and provide it's output to the consumer. That would mean: (1) _binary just runs the GPL one, it isn't covered_ , (2) _presence of the GPL part is optional_ (because your able to switch this extension out for another video player if you like), so that (3) i can use BSD even if there is GPL covered 3rd party code in/with my project... is that correct? – DerDu Jun 05 '13 at 08:16
  • @DerDu: Yes. In this case your code is not covered by GPL. You still have to satisfy GPL for the relevant part if you ship it in any way (including on-demand), but it does not affect your own code. On a side-note, meaning of "linking" is not clearly defined for interpreted languages like PHP, but including it would probably be considered linking. – Jan Hudec Jun 05 '13 at 11:06
1

Disclaimer: I'm just a software developer sharing personal opinions and not your lawyer.

Well, I don't know where your problem is, however next to keeping your code under BSD you could also dual-license it under GPL which will help you to keep headaches out on your end if licensing causes you some and you don't want to consult a lawyer on your behalf.

That done you can keep all your code under BSD (next to having it GPL) to also full-fill requirements to distribute GPL'ed parts with it. You can do that by making clear to users who contribute code that they contribute it under both licenses.

That done its clearly your users choice. All you need to do when accepting patches is to take care that the BSD of your library code is preserved.

This would be similarly the situation when the GPL component would not be part of your library and a user would integrate GPL components with it. Because of the BSD, nobody is hindered doing that.

Users who don't want to have a GPL'ed package can just remove any GPL'ed parts and only use the parts under BSD. Just make clear with your dual licensing model is not conjunctive (GPL and BSD) but disjunctive (GPL or BSD) for the files you keep under dual licensing.

This would also help you with the problem offering a software package on Github containing GPL'ed software not under the GPL - which is what I see you right now doing with the Github hosting platform (it has automatic packaging).

hakre
  • 1,165
  • 12
  • 17
  • Ok, a dual-license would be an possible option to solve this. But to clarify "packaging GPL'ed software not under the GPL": In GPL v3 it states _Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate._ I would claim that _automatic packaging_ at Github (with GPL as plugin) falls under the terms of aggregate and so i'am only bound to _provide the source code for the GPL part_ and php by nature IS (open-)source code, so distributing my BSD project together with GPL (on the same medium like dvd; zip file in this case) IS granted – DerDu Jun 12 '13 at 06:27
  • I already tried to explain you that you can not just pick sentences as programmer so to get the results you need. Licensing does not work that way. You can not just claim an aggregate, that's just not the case. You say it your own, you are having it as a plugin, a plugin is not an aggregate, the work part is part of yours. And ZIP file is not a medium (medium is hardware), zip is a software package. But likewise with the other critique you fail to see (and it's your right, that's why I can only suggest you to get legal support your own), Dual-Licensing however is widely accepted to do this. – hakre Jun 12 '13 at 07:05
  • The next problem you run into is that you offer binary blobs of the GPL'ed software. That means you need to offer source of it as well which you do not do. That's independent to the licensing topic you've raised so far. Better read the whole license of the software you incorporate into your package and check you're doing OK with all terms. – hakre Jun 12 '13 at 07:09
  • Sorry mate, but i don't offer "binary blobs" - In the context of open source software, a _binary blob is a closed source binary-only driver without publicly available source code_.. I don't just pick sentences to get the results i need - I quote lines to fortify my understanding of the whole license. Do you know the term "virtual" ? _Medium_ has nothing to do with 'oh i cant touch it it's not physical it dosn't count.. buhuu'. Ever heard of free-space optical communication? It seems to me you just 'forcing' your dual-license solution.. no offence ment but this is not helpful – DerDu Jun 12 '13 at 08:14
  • To get back to the reasonable objection: *a plugin is not an aggregate*, Yes. *the work part is part of yours*, Yes. BUT: the aggregate occurs if you 'zip' them together (packaging) – DerDu Jun 12 '13 at 08:15
  • @DerDu: As you can imagine I will not give you absolution with your conception, I can only give you a suggestion how you can resolve your issue of not being license compliant "by what is accepted by the global community" (if something like that exists). For the differentiated legal question, you need to talk with your lawyer. She will be able to tell you about the risks you go into and what they can mean for you personally and then you can decide. Just basing such a decision on Stackoverflow and the very narrowed view you create is in my eyes not really sane if you want to spare the lawyer. – hakre Jun 12 '13 at 08:22
  • Especially as your argumentation is documented here on site. You've getting a deep look into your cards already, it's really only an opinion I give, you need to really decide this on your own and it's you who is responsible for that, I can not give any suggestions what you should not should not do, only what I think could make sense for me if I would release a similar package and just keeping things easy for starters. – hakre Jun 12 '13 at 08:25
  • I'm sorry if i was rude, but this topic is driving me crazy.. I realy asked a lawyer to fix this situation and i expected an answer like yes or no together with an explenation (or a way out).. but in fact it was: 'erm.. _maybe_ you can do this (that way) but it's not realy clear..'... so wtf i'am able to do with this answer.. this is why i put it at Stackoverflow for community review... and again it's _maybe_ ... "by what is accepted by the global community" i agree is a fine way to resolve it but it's no valueable fact in a (possible) trial, isn't it? – DerDu Jun 12 '13 at 08:37
  • No, with lawyers you don't get a yes/no answer :) So from my standpoint as a programmer: Look what is accepted, find the best way to deal with it. This plugin or sentence-fetching I can not suggest for good practice, you always go into discsussions with that. It's better to have a compromise which doesn't close doors regardless of different opinions. Then you can solve this non-legally. You can also talk with those authors who have put the software under GPL and ask them what is acceptable for them if you're unsure. That sometimes can also get you in a better position , because they can allow. – hakre Jun 12 '13 at 09:09
  • The one that is most easy for you and for your users. I think you already did very well by documenting in your software package. You can improve it a little (little) using SPDX identifiers which is a codification for licenses that is accepted: https://spdx.org/licenses/ - the most important thing is that your users can educate themselves about the licenses. the dual licensing keeps you the back free from different opinions but you might find it weak or wat or whatever. it's your decision, you can rest it for some days. – hakre Jun 12 '13 at 22:52