How to pick an open source license - General Topics

You've made the decision to release your code as "open source". Ok, what does that mean, what is an open source license, and how do you pick the right one? This question comes up all the time so I thought I'd write up a simple decision tree to try to explain the choices.Many people use GPL without realizing the implications or understanding the other options. This isn't legal advice, and I'm not a lawyer, and I'm probably over-simplifying some of the points, but I hope you find it helpful.
First of all, if you write some code, it's your code and you get to decide how other people can use it. Period. Nobody but you can say how your code can be used, either by putting restrictions on it or taking them off, without your permission. That's a very important point to keep in mind while reading this article.
The second point to keep in mind is that nobody but you can even use your code unless you explicitly give them permission. Another way of saying this is that all source code is closed and proprietary and off limits until you, the author, open it.
Note: The text of all the licenses mentioned here can be found at opensource.org.
Decision 1: Do you want to relinquish any control over how your code is used and distributed?
If yes, then don't copyright it, and don't license it. Put it in the public domain, and you're done. This is a good choice for examples, templates, and other illustrative code where the whole point is that you want everybody to feel free to use what you've written. [Alert readers pointed out that "public domain" is is not a good choice because in many jurisdictions you can't give up your copyright. Use a liberal license like MIT/BSD instead. -22jun/ebb] Example: code listings in a book or article.
If no, then Copyright the code (paste copyright notices all over it) and continue with decision 2.
Hint: Just to make sure your intent is clear, either put in explicit copyright notices, or put in explicit notices that the code is in the public domain. Copyright is how you retain control. Without a copyright, there is no control. [Technically the notices might not be necessary but they don't hurt and are still recommended. -22jun/ebb]
Decision 2: Do you want to allow people to use your code in non open-source programs?
If yes, then continue to decision 3.
If no, then release your code under the GPL, a restrictive "free (libre) software" license that actively promotes user choice at the expense of direct commercial interests. For the most part, GPL'd code can only be used with other GPL'd code, and in fact if you start using [and distributing -22jun/ebb] some GPL code in a program you wrote then you either have to release your program under GPL as well or quit using that code. This is why GPL is sometimes described as "viral". Examples: Emacs, Linux kernel.
Hint: Don't take this choice unless you really mean it. Many people use GPL without realizing the implications or understanding the other options, and thus lock the code away from a whole segment of potential users, so please read the rest of the choices first.
Decision 3: If somebody uses your code in their program and sells their program for money, do you want some of that money?
If yes, then you have two choices. The first choice (3a) is not to release it as open source at all, i.e., use closed source and you're done. This would preclude anyone from using your code in free (no cost) packages. And it would only allow people to use your code in commercial programs if they came to your first and worked out a deal for a commercial license. Note that even if the source is "closed" you can give permission if you like for certain people to have access to the source and use it in limited ways. Example: Microsoft Windows, Sun Java (sort of).
The second choice (3b) is dual license. I'll talk about licenses more in a moment, but dual license just means you give permission for people to use your code under two or more licenses. You pick one license (probably GPL) for free (no cost) programs, and one for commercial ($$$) programs. This is a good choice if you're trying to make a living off licensing fees for the code itself. Examples: MySQL, JBoss, SleepyCat. Continue to decision 4.
If no, then give permission for others to use your code under one or more "commercial friendly" licenses. This is a good choice if you want your code to get into as many hands as possible and either you don't care about the money or you plan to make money in other ways, for example by selling your own programs that use the code or from consulting or support. Examples: Apache HTTPD, Eclipse, Firefox. Continue to decision 4.
Decision 4: If somebody uses [and distributes -22jun/ebb] your code and improves it (fixes bugs or adds features) do you want to make them give you the improvements back so you can use them too?
If yes, then use a "reciprocal" license. Any modifications to your code need to be made available under the same licensing terms as your original code. This is useful if you're worried somebody will take your code and go off on their own private "fork". Examples: Eclipse (EPL), Solaris (CDDL), and Firefox (MPL). Done.
If no, then use a non-reciprocal license. Often times the people using your code will send back improvements anyway, especially if you have a history of frequent releases and they get tired of having to re-merge in their changes every time. This is the most wide open type of license so it will get you the most exposure and users, but it can also relegate the original writer(s) to the sidelines. Example: FreeBSD (BSD). Done.
In a follow-up article I'll explain how the most commonly used open source licenses fall in the categories like "commercial friendly" and "reciprocal", and address any concerns raised by commenters. So whether you agree or disagree with my points above please give me some feedback in the talkback section.

Related

Can someone explain Sun's licensing issues?

Ok, so Im trying to understand why Google developed and used Dalvik in Android instead of Java ME apart from the fact that Dalvik is much better suited for resource limited devices. Ive read several places that Google did it partially to avoid licensing issues with Sun (now Oracle).
here its claimed amongst other things, the following:
Sun released their “free java” source code under the GPLv2 to both win the free software crowd and capture peripheral innovation and bug fixing from the community. For the java standard edition (aka “the cat is out of the bag”) there is an exception to the GPLv2 that makes it “reciprocal” only for the Java platform code itself but not for the user code running on it (or most people wouldn’t even dare touching it with a pole).
But such exception to the GPLv2 is not there for the mobile edition (aka “where the money is”).
Click to expand...
Click to collapse
But I cant see how that would affect Google? Unless you implement the Java ME plattform and make changes to it, you're not affected by GPL at all, and even if you did, Android is open source, so.. Im confused..
My understanding is that Oracle/Sun's lawsuit is based on patent claims, not copyright. The license that J2SE was released under really doesn't matter. For two reasons, none of this is J2SE and Google went out of their way to avoid using Oracle/Sun's code.
So, there is no claim that Google is violating any license associated with J2SE, or even J2ME. The claim is that the Dalvik VM implementation violates patents that Sun invented/filed while creating J2ME.
I haven't looked into things far enough to address whether Dalvik violates any of the patent claims in question or whether the claims are bogus in the original patent.
BTW, IANAL nor an embedded systems developer. I am however a moderately well-informed technologist and experienced professional applications developer.

[APP]daPlot

I'm developing an android interface for a J2ME app I've written.
It is a 2d/3d plotter for implicit/explicit/parametric/polar/differential equations.
It has many advanced capabilities (not all of them are accessible from GUI, but all of them are in the code):
user defined functions, matrices, complex numbers, step-by-step resolution for 1st and 2nd degree systems...
It's still in "very alpha" state, but I think it is mature enough for some early testing.
You can find the code at:
https://github.com/miniBill/mePlot
And the apk at:
http://minibill.users.anapnea.net/file/daPlot.apk
And a web page that uses the same backend at:
http://minibill.users.anapnea.net/webplot.php
And an example of what it can do at (takes a while to load):
http://minibill.users.anapnea.net/webplot.pl?fun=sinx+siny+sinz&size=1000
It requires not permission whatsoever (not even reading/writing SD), so it should be safe even in case I made mistakes.
The final license is not defined yet.
The license for the current state is:
you can distribute it verbatim, as long as it is still in pre-release state (which means, until I have released the final version)
you cannot distribute modified versions
you can modify it, and use modified versions on your devices
you can continue to use the pre-release version forever (you cannot distribute it though)
you must attribute the program to me
Bonus:
if you find a bug I didn't already found, or give me a good idea, you get one free license for version 1.0
if you find a serious bug I didn't already found, or give me a great idea, you get one lifetime license
I might consider to eventually release it under GPL, and I will surely release a free version [which will probably be a "lite" version].
Oh, and anyway I'll almost surely keep the source code visible and let people modify it. Maybe I could just require people to buy the program before using it, but then they will be able to share code... I'm open to ideas.
Basically, I want to profit from it, but still allow users to modify it.
I hope someone will test it

[Q] Locked Bootloaders, Android, and the GPL

First off, I didn't know where to put this. I was hoping for a generic Android forum, but General seems to be as close as I can get. This is a device independent question about Android, and of a more philosophical nature. Although there may be a practical solution in here. I've flagged this as a question, and I have a lot of them here (IANAL) but I'm hoping for some good discussion as well.
Bear with me as a say some very obvious things, I want people to follow my train of thought from the beginning. I'm also dead tired and don't want to take any of my presuppositions for granted.
It seems to me that locking bootloader is done by companies to prevent people from modifying the OS (DuH!). Yet is also seems to me that the purpose of having an open source OS is for that OS to be freely modifiable. So when a company locks the bootloader on the hardware they have violated the intent of the open source OS.
Now I know that the intent of a contract or license may not be enforceable in a court of law, and few will risk the money to attempt to resolve this through litigation.
Given the above, can or should the GPL be modified to take the unstated intent of allowing modification to code by anyone and "hard code" that intent directly into the GPL?
It is my assumption that such a change to the GPL would not be retroactive, but rather would apply to newer releases of the Linux kernel. So what would the fallout from a change of this nature be? Could it kill Android as Google is forced by the rest of the OHSA not to continue kernel development past a certain point to avoid having the revised GPL ruin their attempts to proprietize Android? Could the GPL be changed to be in effect from a certain date onward rather than from a certain revision on?
Col.Kernel said:
First off, I didn't know where to put this. I was hoping for a generic Android forum, but General seems to be as close as I can get. This is a device independent question about Android, and of a more philosophical nature. Although there may be a practical solution in here. I've flagged this as a question, and I have a lot of them here (IANAL) but I'm hoping for some good discussion as well.
Bear with me as a say some very obvious things, I want people to follow my train of thought from the beginning. I'm also dead tired and don't want to take any of my presuppositions for granted.
It seems to me that locking bootloader is done by companies to prevent people from modifying the OS (DuH!). Yet is also seems to me that the purpose of having an open source OS is for that OS to be freely modifiable. So when a company locks the bootloader on the hardware they have violated the intent of the open source OS.
Now I know that the intent of a contract or license may not be enforceable in a court of law, and few will risk the money to attempt to resolve this through litigation.
Given the above, can or should the GPL be modified to take the unstated intent of allowing modification to code by anyone and "hard code" that intent directly into the GPL?
It is my assumption that such a change to the GPL would not be retroactive, but rather would apply to newer releases of the Linux kernel. So what would the fallout from a change of this nature be? Could it kill Android as Google is forced by the rest of the OHSA not to continue kernel development past a certain point to avoid having the revised GPL ruin their attempts to proprietize Android? Could the GPL be changed to be in effect from a certain date onward rather than from a certain revision on?
Click to expand...
Click to collapse
Only the kernel is covered by gpl and that only states that you have to post the source code for the kernel if it has been modified. The rest of the OS is not covered by the GPL and neither is the hardware. As long as they give you the source code they do not have to allow the code to be changed on their device.
Col.Kernel said:
Given the above, can or should the GPL be modified to take the unstated intent of allowing modification to code by anyone and "hard code" that intent directly into the GPL?
Click to expand...
Click to collapse
This already happened. It's called GPLv3. However, the Linux kernel is GPLv2 and will stay that way. Not only would moving to GPLv3 be extremely difficult because of the large number of contributors to the kernel, the main developers don't want it. Linus Torvarlds consciously and deliberately made the kernel GPLv2-only in 2000 or so, a decision he still firmly stands by.
Also, the GPLv3 already has fallouts like what you state. For example, Apple did not go beyond GCC 4.2 (the last GPLv2 version, newer versions of GCC are GPLv3) and is instead financing the development of Clang.
The GPLv3 would not so much kill Android (Google would transition to a new kernel), it could kill Linux, as companies would potentially be moving away from it, similarly to how Apple is moving from GCC to Clang. Or, quite likely, there would be a fork of the kernel.
Please use the Q&A Forum for questions Thanks
Moving to Q&A

DroidActivator - the Open Source anti-piracy system

Hi,
We have developed a new, effective licensing control system for Android called DroidActivator.
It's intended to block piracy and also gives you some interesting opportunities, as licensing your app with an annual renewal fee, apply a subscription model to sell features or contents, protect your app outside GooglePlay, acquire device data, track custom events and more.
It is an Open Source project licensed under LGPL.
You can take a look at the Google Code Project Page (code.google.com/p/droidactivator) and to the project web site ([www].droidactivator.org)
Hope it can help the community!
Have a nice day,
The DroidActivator developers team.
Not quite sure what the point of an open source anti-piracy app. It just allows people to tinker with it and thus bypass it.
A protection system should not rely on hiding its code to be effective.
Any protection can be defeated by a determined pirate.
It's just a matter of making life harder.
algos-dev said:
A protection system should not relay on hiding its code to be effective.
Any protection can be defeated by a determined pirate.
It's just a matter of making life harder.
Click to expand...
Click to collapse
Isn't open source making it easier?
This is an interesting topic.
You are right lambstone: looking at the source can help you cracking the code.
But in my opinion, the point is in the targeted audience.
An open source protection would not be suited for the new angry-birds-whatever but it would be for your medium/high-priced business app.
We have just no technology to avoid piracy. If the app is interesting enough, the pirate will decompile the app, remove the protection, repackage it and share it on the web. In this scenario, if the pirate got helped by looking at the code or struggled a bit more on the binaries doesn't matter so much.
We are not willing to fight this kind of piracy. We just wanted to build a tool to help small software houses to fight "casual" piracy (folks who won't search for and use the crack, but won't hesitate violating the EULA in the absence of technical license protection mechanism) which represents the vast majority of piracy.
lambstone said:
Isn't open source making it easier?
Click to expand...
Click to collapse
It cuts both ways: more people reviewing the code means that it can be made harder to crack.
Security through obscurity
DroidActivator anti-piracy system updated
DroidActivator, the Open Source anti-piracy system for Android, has been updated.
The backend now features searching in activations and events and generates activation codes automatically. The GUI has also been restyled using CSS.
If you are interested, have a look at the Google Code project page [code.google.com/p/droidactivator] or at DroidActivator's web site [3w.droidactivator.org]
Thank You,
DroidActivator's development team

EULA, copyright, privacy and help bringing to market

Hi forum,
So today this student finished his first windows phone app and have been doing research since. I recently found out that making the app is the most fun part, just bringing it to the store is the longest. I decided to use 7 since its also compatible with 8 so appeals to a wider audience.
I've made a sports calculator app using all my own code in c#. I've made my logos and splash screen. My question is firstly do I need to copyright the logos I've made, the unique app name and the app code? If so how is this done, what are the best websites and procedures that don't cost a fortune. I have seen copyright service and myows. Which has worked the best for you and protected you the most?
Now the app I have made collects no user data. Do I need to write a EULA to protect myself and my app? (My English isn't the best and I have no experience with EULAs)? Do you know of any free EULAs one can use?
Since this app does not need to connect to the web, only the ads do. does that mean I must also write a privacy statement?
Once all this sorted and I have tweaked the app to wp7 specs will it be safe to upload?
Thanks for your help.
Sent from my GT-I9300 using Tapatalk 4 Beta
Anything published in the USA automatically receives copyright protection. Although I think it's possible to still register copyrights, it's not needed and not worth the time.
If you find somebody reusing your IP without permission, as Microsoft to take it down (or the other curator of whatever store publishes it). You may also want to contect them directly, especially if there is no publisher you can use. There's a thing called a DMCA Takedown Request for this purpose in the US, similar things exist elsewhere. If you want actual legal advice, get a lawyer.
TL;DR: You don't need to do anythign else right now, just publish.
Thank you foe the reply. Im going to publish it in the EU region. Will i still need to make a EULA to protect myself?
Sent from my GT-I9300 using Tapatalk 4 Beta
Making an EULA probably won't hurt anything, though it you want it to be even slightly legally enforceable you should talk to a lawyer. Some common aspects of EULAs are completely unenforceable (for example, prohibiting reverse engineering is regularly ignored), and it depends on the region and the wording. EULAs and copyright license are also not at all the same things. Copyright law covers the right to make (and distribute) copies (and derivative works), nothing more and nothing less. In particular, they don't cover usage. EULAs are usage "agreements" (scare quotes because, as I mentioned, they are frequently not considered a legal contract and are therefore unenforceable).
A copyright license might prohibit me from re-using your artwork in my own app or selling (or giving) it to other people, but it cannot prohibit me from extracting the artwork for myself, or from editing the copy I purchased to replace the spash screen with pictures of kittens. A EULA might require that I not do either of those latter things and continue using the app, but does not take the place of a copyright license.
On the other hand, an explicit copyright license is generally not required; the default licensing for publishing on the app store (which is based on the default copyright license used for works which do not include any other license, but modified to allow Microsoft to make copies of the app to sell, use its artwork for promotions, etc.) is used unless you specify a different license, and that's what most people use.
Reminder: as we say on the Internet, IANAL (I Am Not A Lawyer). Those cost money, but if you're really concerned about these things then they are the people to talk to.

Categories

Resources