Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I've started writing a framework in C (you may have heard of it: Raphters). Someone contacted me to ask whether I could re-license it because it would be useful in embedded products, but clause 4d (the clause that says, and I'm paraphrasing, you must allow modified versions of the library to be re-linked against your executable) would make that difficult. I like LGPL because it prevents people making modifications and keeping them secret, but I don't want to prevent people using Raphters in their embedded products. What do you suggest?

share|improve this question
I own the copyright for the entire project. –  dan_waterworth Apr 15 '11 at 15:24
add comment

5 Answers

up vote 3 down vote accepted

What you're talking about is called a GPL Linking Exception, the common one being the GNU Classpath exception:

Classpath is distributed under the terms of the GNU General Public License with the following clarification and special exception. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination.

As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obliged to do so. If you do not wish to do so, delete this exception statement from your version.

As such, it can be used to run, create and distribute a large class of applications and applets. When GNU Classpath is used unmodified as the core class library for a virtual machine, compiler for the Java language, or for a program written in the Java programming language it does not affect the licensing for distributing those programs directly.

I know that the FreeRTOS license has a similar exception, specifically because they want people to be able to use it in embedded projects.

share|improve this answer
+1 but note that if the FSF puts out another version of the GPL, updating the linking exception can be painful (depending on what they changed). I doubt that's likely in the immediate future, however. –  Tim Post Apr 15 '11 at 15:30
@Tim Post: I'm not advocating the exception, I'm just answering the question. :) One of the goals of v3 of the GPL was to plug the hole of distributing GPL'd stuff on embedded devices, making the code available, but not allowing someone who purchased the device to make changes to that code and install it on said device. (The whole anti-TiVo-isation thing). I happen to agree with that purpose of the GPLv3, as I believe it supports innovation to be able to hack the stuff you buy. –  Scott Whitlock Apr 15 '11 at 15:38
add comment

If your intention is to prevent people from making modifications to the code and keeping them secret, but not to restrict what kind of projects people can use your code in, then you ought to consider relicensing or at least dual-licensing your library under the MPL, which does exactly that.

share|improve this answer
The trouble with MPL is that it's not GPL compatible. –  dan_waterworth Apr 15 '11 at 16:09
Dual licensing under MPL and LGPL would be a good idea though. –  dan_waterworth Apr 15 '11 at 16:12
@dan: That's not a problem if you dual-license it, allowing people to use it either under the terms of the MPL or the LGPL. –  Mason Wheeler Apr 15 '11 at 16:13
add comment

You could offer the software under two or more licenses.

I know some places do this (e.g. one license for non-commercial use, another--or one-off licenses--for commercial use), but I don't know the legal ramifications.

share|improve this answer
add comment

Assuming you have the copyright, and therefore can license as you please, you can always specifically allow additional permissions. There is a section of the Gnu FAQ that shows how to add an extra permission (in that case, to allow linking with a proprietary program). You would want to allow makers of embedded software to not have to comply with clause 4d.

The LGPL doesn't have a framework to force other distributors to convey that additional permission, but as long as you're offering it it doesn't matter much.

This is, I believe, in the GPL spirit. The anti-Tivoization clauses of GPLv3 don't apply in cases where the device's software cannot be altered in the field.

share|improve this answer
add comment

If all those who own the copyright on the code agree, that code can be licensed in any way. As a similar example, I sometimes sell photos I've taken that are available under a Creative Commons license. Anybody can freely use one of my CC-by-SA photos according to those terms. If they want to use other terms, they can get the same image under a different license agreement.

This does become an encumbrance if other people commit to your codebase without assignment of copyright to you. MySQL, for example, doesn't insert any code into their product unless they own that code. It is available to everybody by the GPL, but they also have the right to license the code any other way they choose. Contrast this with the Linux kernel which has untold contributions and can never been altered to a non-public license.

share|improve this answer
add comment

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.