License for Open-Source Software w/ Plugins?
ThiagoHP asks: "I have developed MultiMAD, a rapid application development and prototyping for for mobile devices in my master's course, and now I want to share it with the community. It's written in Java and it has a plugin architecture in order to support different mobile device platforms (WAP, J2ME, PalmOS, etc). I want to give the freedom to anybody write their plugins, even closed-source, as long as the tool itself is not modified for them to run. This implies that GPL cannot be used. At the same time, I do not want any closed-source tool based in MultiMAD code, so licenses such as the Apache one cannot be used. Am I right in my assumptions regarding licenses? What license do you suggest?"
Have you met this guy?.
That's exactly what the LGPL is for.
Derivative of your code will be in LGPL, but code linked to it (as plugins or using it as a library) have no license requirement.
Check it out
The GPL is fine. They will not be able to make commercial applications based off of your code, and they can make all the plugins they want, closed or open source, so long as they don't modify the host application's (MultiMAD's) code.
Thank you for your contribution.
What comes first, finding a teacher or becoming a student?
The GPL is only one way which a copyright holder may expose his work. If it's all your own original work, you can publish the interfaces under a less restrictive license, while still doing the GPL for the 'base' code.
The force that blew the Big Bang continues to accelerate.
He could use the GPL variant that the Linux kernel uses that explicitly allows binary modules.
thank God the internet isn't a human right.
The poster wants to deny users the freedom to modify the MultiMAD program ("[...] as long as the tool itself is not modified for them to run"). Thus, MultiMAD is to be licensed under a non-free license.
The GNU GPL is a free software license; it allows users to modify the licensed program and to distribute those modified versions.
The GPL is not anti-commercial software development, it's pro-free software development and distribution. The moment a GPL'd program is used in a business context (such as distributing copies of GPL'd programs for a fee), that program becomes "commercial". Commercial and non-free are not the same thing. Not being able to change MultiMAD means denying users a freedom they ought to have. The GPL denies users the ability to distribute non-free derivatives. These are not the same issues and there's a good reason why the GPL does this--in order to preserve software freedom for derivatives, there had to be a choice between what was valued more and the FSF values giving more users software freedom.
Digital Citizen
license your code under the GPL, and grant an additional exception that plugins can be proprietary. It would work, too... supposing the GPL really forbids dynlinking to proprietary modules, which is disputed.
It's better to be the foot on the boot than the face on the pavement. ~~ tkx Kadin2048
Linux is a massively complex work when the subject is copyright. Basically, the kernel as a whole is GPLv2, and Linus (who has the copyright on a lot of code and has indirect copyright on almost the whole kernel [much kernel code which is not his is still derivative on his original linux v0.01]) says he -- like other intelligent people -- do not consider the FSF GPL FAQ as correct about linking (especially dynalinking) and the GPL.
IOW: when you GPLv2 some code, you are probably granting the right to dynalink proprietary modules to your work. Linus only stated this explicitly, thus estopping himself from suing anyone (nVidia?) who makes proprietary loadable kernel modules.
It's better to be the foot on the boot than the face on the pavement. ~~ tkx Kadin2048
Your situation is exactly why the LGPL was written.
This software is licensed under the General Public License (GPL), version 2 (see below for the full text of this license). As a special exemption, software plugins using the documented plugin API for this software, will be allowed to be distributed and/or run-time linked with this software regardless of their license.
[Explain the plugin API, or where to find the "documented" parts of it]
[Full text of GPL]
Uhm, the GPL doesn't control your app, YOU do. Here's what you can do.
#1) place the GPL in a file called "GPL".
#2) Place the following text in a file called "COPYING":
This program is copyright XYZ and can be distributed under the terms of the GPL (see the file "GPL") plus the following exception: any plugins written for this application are expressly exempt from any obligations required by the GPL. You must include this entire paragraph in any copies you make of this application.
Jeezuz people, it's YOUR application, you can license it any way you want! You can make it GPL on Tuesdays and MIT on Saturdays. This isn't rocket science, RMS doesn't control your app, you don't assign copyright to the FSF, a little bearded man doesn't pop out of your screen if you choose not to sue people who make closed-source plugins. The GPL doesn't enforce your copyright, YOU DO!
If you specifically say that use of the plug-in API does not make the plug-in a derived work, then you should be alright. A similar case is, interestingly enough, the linux kernel. While modifying the kernel is derived work, making syscalls from userspace does not make the user program a derived work. Besides the kernel/user space barrier, there's also a subset of kernel functions that are effectively GPL barriers (so some modules don't need to be GPL)
The Raven
Since you own the copyright to your code, you can add an exception to the GPL that exempts plug-ins from being GPL compatible.
Read the GPL FAQ on www.gnu.org to undertand this better. The GIMP itself uses |GP in this way, since there are non-free plug-ins for it.
-><- no
What about using (*lowers voice to a whisper*) the BSD license? (*hears gasps of horror coming from the audience*)
Before the GPL zealots come screaming out of the woodwork on this one, there's something they (and you) should know. The BSD license actually includes a copyright notice. Have a look at it and see. For FreeBSD as an example, the copyright is held by the CSRG.
That means that in using it as a license, you don't actually surrender your copyright. (Unlike certain FUD which is spread by individuals who remain nameless states) You don't get a patent, no...but you *do* get copyright, in the originally intended sense of the word. This to me is a demonstration of why the GPL *is* both unnecessary and repressive, despite claims to the contrary.
What you get the copyright to is your own work; what you're giving other people is the right to make *derivative* works. They get copyright on derivative works, yes...but they don't get the copyright on your work itself. So if you wanted to, you could use a non-viral license (the BSD license is only one option...www.opensource.org lists many) without having to assume that you're automatically putting your work in the public domain.
My single biggest objection to Richard Stallman is that I believe that *his* philosophy is the only acceptable one. To me the use of the phrase "GPL compatible" in particular sounds a lot like the campaign Microsoft had a number of years back where they were certifying things as "Windows compatible" or "made for Windows 95."
Stallman claims to be about freedom...but look closer. What he's really about is forming a cultural/social movement with himself at the head. That isn't anywhere near as much about freedom as it is about agreeing with whatever he decrees.
The licensing issues themselves are interesting. One of the things copyright does is allow you to control derivative copies. However there is always the fair use doctrine and the right to use material in a parody.
I think the Pilsbury dough boy was caught up in this a few years ago and I have not heard what came of Pilsbury's attempts to stop the "XXX" version(s).
Then there is the issue of adoption. Why would a developer choose to lock himself (herself) into any closed source product if there is a better solution. I'll illustrate this as follows.
When you develop against a class library you tie yourself to the library. For this reason I personally have abandoned IBM's Visual age compiler, Microsoft's Visual compiler and indeed Borland's Builder series, even thought I bought them.
Abandoning Borland hurts. They have a good product. But it looks as if Borland is abandoning support for C++ at the moment. They may change their minds.
While I looked at QT and note it is excellent - my choice has to be WxWidgets. The licencing is a MAJOR issue. I can use WxWidgets in open source, closed source and proprietary products.
I do know that many people think the QT license is fine. Perhaps for them it is. One weighs the strengths of a license against its restrictions.
Now as a developer I have faced the same problem many times. If one developes a library one can become far more productive. The problem is most employers want to own what their employees produce and most consultants are not willing to spend literally years trying to develop a custom library for each client. Its a no win situation for several reasons: (1) Its a waste of time and (2) it creates a maintenance nightmare.
This being said. The opensource soulution neatly addresses both issues. So what happens in the specifics of the requirnments posted above is quite interesting!
However I do know that there is a very large percentage of programmers who do not think about this. In my career, I have seen at least 8 duplicated "sort" routines. This does not include the ones which are simply cut-paste-hack. To me it is amasing so many programmers are willing to justify creating literally dozens of virtually identical functions - but each with a different tweak and each of which next needs to be maintained... and what if a bug is found in the original?
I'm also amased that managment puts up with this.
Furthermore I am amased that programmers who do this often use some of the worst algorithms available - and then justify this by saying its "good enuf".
Now consider. In the case of a "sort" - under the LGPL is an excellent implementation of both a quick sort and a red-black tree which can also be used to sort. So why would ANY programmer worth his salt waste his time re-inventing the wheel. And why would an employer spend literally $1000's of bux to pay a programmer to debug an inferior algorithm when there is already a fully debugged ready to use general purpose implementation available? It certainly isn't a licensing issue.
When we get answers to these questions then maybe I'll have an answer both how to address your issues and how the developer community is going to receive any license you manage to come up with.
There is no exception.
read this.
It's better to be the foot on the boot than the face on the pavement. ~~ tkx Kadin2048
...specifically
I do not want any closed-source tool based in MultiMAD code, so licenses such as the Apache one cannot be used
That precludes the BSD license as having any use for his problem. If he used the BSD license anyone could take his code, package it up, rename it and release it. As long as they then attributed that portions of the code are copyright by the original author (and include the list of disclaimers) they would be A.OK. and my programmer here would have no recourse.
What I would suggest is the LGPL for the core code, that way, any changes that directly affect it have to be made open, but other licensed programs (even closed source ones) can link to it under the terms.
I am NaN
Very roughly speaking (read the actual licences to clarify the real conditions...):
The GPL's idea is: whatever is linked or derived from the original program must also be GPL-free.
The LGPL: whatever is derived from the original code must be LGPL-free. No restriction on what code you can link or interface to.
The MPL: the original code and modifications to its files must be MPL-free. No restrictions on code in new files.
I work on a Network Management application where the core is open source and the plugins can be any variation of license. We went through this same process and found GPL and LGPL to be more viral than beneficial for this same reason. We don't care, as you don't, that propriatary plugins (heck even extensions) are created and/or sold with our product, and they can have any license they want. However, we retain rights to our code, and any direct source code modifications to our files must be under our license.
Here's the problem with LGPL: (from opensource.org) " However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License."
If any plugin 'links' to your library, it's derivitive. That's crap in my opinion, and since you are using Java, some could argue that 'run-time linking' is still linking since it's running in the same JVM.
Use the BSD or CPL - you'll be much better off.You could, but someone can relicense it as GPL on Saturdays and MIT on Tuesdays, since GPL and MIT by themselves don't have restrictions.
Not so. What license would grant them the right to do that? Certainly not the GPL, since once something is GPL, it's always GPL -- that's its strongest point, its ultimate protection. Not even the author can change the license of the version he has released under GPL. (He can license future versions differently of course, but note that he alone has this freedom as copyright holder, nobody else can).
And when the author personally offers the additional freedom that plugins to his code are not considered derived works of his code, then that doesn't allow anyone to alter the licensing either. So, they can't do so by any legal means.
Note also that nobody is in a position to chase infringements other than the copyright holder, so the FSF certainly would not be able to do so even if they didn't like additional freedoms being granted alongside the GPL.
"The question of whether machines can think is no more interesting than [] whether submarines can swim" - Dijkstra
Huh? Just use the GPL!
The GPL does not regulate runtime linkage. RMS, the author of the GPL says so. While there may be a dispute over the boundaries of the GPL with regards to dynamic linkage, everyone agrees that runtime linkage is fine.
A plugin is loaded at runtime. No problem.
Don't blame me, I didn't vote for either of them!
You're both partly wrong, and partly right.
You DO still have copyright over your software, unless you assign it to the public domain. You *can* change the license you distribute it under every day. You *can* add restrictions.
But let's say you license it under GPL on Monday. I download it. On Tuesday, you change the license for the same exact code to MIT. YES, you can do this, but I still have the rights the GPL gave me to redistribute for my Monday version, so I'm free to distribute that myself under the GPL.
Now, I don't own the copyright, so *I* can't change that license in any way... and if you keep developing your MIT-licensed code, I can only use the updated code under the new MIT license.
The real point here is that the power remains with the copyright holder. You can do whatever you want with your code. You have to honor agreements you made, so you can't change your agreement with me once I've downloaded it... but you can make a different agreement with anyone else you choose.
Related to this -- you certainly can add your own limits to the GPL. Again, YOU own the copyright and you can make whatever agreement you like with the people you give it to (as long as you aren't breaking any laws) -- if they don't agree, they can't use your software. For example, in the license itself they discuss how you can write "this software falls under the GPL version X.X and above", vs. "the GPL (any version)", vs. "the GPL X.X only". You are allowed to add caveats, and this is specifically discussed (though mostly discouraged for simplicity's sake) in the documentation about the GPL on gnu.org.
Does that help?
Let me jump in here. This is stuff I've researched pretty thoroughly, and I don't even keep track of what RMS is talking about nowadays -- I just know what's in the licenses.
They'd be doing that with what in essence would be a *fork*, though...or a derived work.
Okay, so let's say he spends a year working on his application, than releases it under the BSD license. Acme company takes the source, changes the logo, packages it up, and sells it under a commercial license (binary only) for $20. They can do this. Then they put 20 programmers to work improving the application, and they sell the now best-of-breed app, closed source, for $100. Given that they got a full year of free man-hours on the project, they clean up, and the original project can't possibly keep up. This is also OK under the BSD license, as long as Acme puts the proper text in the about box.
This is what people don't understand. He'd still have his original code. He also would still have the option of selling it.
Sure, he can sell the original code, but he can't compete with that gang of 20 programmers so he won't earn much. Remember, they started with no investment whatsoever, with a full year of development already complete... whereas he had to actually do all that work, so he's way behind from the start.
Putting his code under the GPL won't stop other people from selling copies of it, either.
Okay, let's do the GPL scenario. Acme company now has the right to take the code, change the logos, and distribute it ONLY UNDER THE GPL (which means they must include the complete source code, and everyone they sell it to has the right to distribute what they bought for free if they want). They won't sell many. It just takes one guy to make it a free download. Then Acme puts 20 programmer to work improving the app -- they create the super-duper app. And they can use it in-house only, or sell it ONLY UNDER THE GPL, so they have to include the source code of their updates, and anyone they sell it to has all of the GPL rights as well. And the original project can incorporate their updates if he likes (though not if he wants to sell it himself -- he's limited to the GPL if he wants to use THEIR copyrighted code).
There seems to be an erroneous perception (although I know exactly where/who it comes from) that when someone uses a non-GPL license, they immediately lose any and all right to their work, or to what happens to it. This is quite simply not true. They don't govern what happens to derivative works, sure...but they can still control what happens to the parent.
[How exactly is "you must include this copyright notice if you sell my work" controlling the parent code? Remember, Acme doesn't even have to modify it before selling it under a commercial license. The ONLY restriction is the copyright notice.]
Anyway, read through the above, and/or read through the licenses themselves if you don't believe me, and tell me if you still take the same view. There *are* places where the Apache and BSD licenses play an important role, or they wouldn't exist -- but they are quite close to public domain for all intents and purposes, and for small, personal projects like this one... they are not appropriate.
with this guy and his shill, as well as someone who's dealt with Ewing? You might give that some consideration with licensing.
Twitter supports and protects racists - by smearing their critics with the "Hate Speech" label.
I think...in reading the original post, the author himself was asking about a license that would disallow the original code working its way into closed/commercial projects. Strictly speaking this is my biggest objection to the BSD license.
Not to say I disagree that there should be a BSD license, but when *I* want to share something I want to share it plain and simple. Not have some jack-ass change the graphics around a bit do some re-tooling and market it themselves.
Anyhow, Mozilla seems to be a big OSS project that allows closed plugins to mix with it.
Quack, quack.