Ask Slashdot: Choosing the Right Open Source License
NicknamesAreStupid writes: I need to choose an open source license. I am developing an open source iOS application that use a significant number of other open source projects which, in turn, use a number of different open source licenses such as MPL/GPL, MIT, and BSD. I am also using sample code from Apple's developer site, which has their own terms of use. The code dependencies are such that my code would not be of much use without theirs. If this project is used, then it would be nice to pick a license that best fits in with this mashup. I am interested in maintaining the freedom of my code but do not want to create a catch-22 or make life hard for people who need to use this project for personal use or profit. My inclination is to use MIT's, as I have done so before. I asked an IP lawyer about this matter, and she replied (pro bono), "it probably doesn't matter." Of course, that advice was worth every penny. Moving away from legal issues and looking at this from a social perspective, which license would appeal most and offend least? I thought about no license but was warned (pro bono), "If you do not, then someone else may." Any suggestions?
If you're using GPL code, you have no choice but to release your code under the GPL as well.
I do not fail; I succeed at finding out what does not work.
No license: default copyright. No-one is allowed to redistribute without your express permission.
The dependencies I assume will be distributed within your package; and I assume their licenses in turn allow this, as this are open source licenses.
If so, you would be able to choose any license you like for your code - or indeed simply nothing special at all - and choose based on your preferences/philosophy on the level of freedoms given for use of your work.
Please do not license it under an L/GPL license. There's a lot of software I would like to use, but am not legally allowed to because it uses a GPL license. It sucks.
Real men use the WTFPL, https://en.wikipedia.org/wiki/...
You beat me to it :-)
To the original poster:
The GPL is "viral" in that if you use even a smattering of GPLed code, you are required to release ALL of your code as GPL as well.
It concerns me that you state you use example Apple code. What license is it? ("has its own terms" is completely unhelpful).
In general, you're restricted to using a license that is the most restrictive. The liberal licenses like BSD and MIT can morph into anything pretty much. GPL is one of the most restrictive on redistribution (RMS would say it preserves user freedoms by restricting developer distribution, and I would tend to agree with it; just throwing that in there because I don't mean restrictive in a negative sense here, only that it was designed to prevent people from running off with the code without contributing back to the community, so you can't just re-release GPLed code under MIT like you suggested). Apple's license may be open source or not; furthermore, there are known open source licenses that are NOT compatible with the GPL, so its entirely possible that the Apple code may not be distributed together with the GPL code. For reference, see http://www.gnu.org/licenses/li....
It's possible your pro-bono advice is correct and this doesn't matter too much if you release it publicly and open source (it seems unlikely open source projects would sue other open source projects), but in case you ever plan on making money on this project (and even if you don't), to avoid any possible legal trouble you should choose the most restrictive license compatible with all licenses at play. Likely this means the GPL, but the wildcard is Apple. If you post the terms to it, we could probably help sort it out (with the usual IANAL caveat). Otherwise, you may need to rethink which libraries are included with your code and possibly even roll your own depending how niche it is.
The FSF post didn't say either what terms of the license they thought Apple was violating, nor why they think distributing via the app store is any different than distributing via the post office.
If I mail GPL software via the postal service, I have to comply with the GPL, which mainly means I have to include an offer to provide source code upon request. The postal service doesn't have to do ANYTHING regarding the license, they are a third party facilitating my distribution. It could be argued that Apple is no different- the person distributing via the app store needs to comply, Apple doesn't have to do anything to be in compliance.
By the wording of the license, it would be possible to argue either way, so a court would look at the INTENT of the license, it's PURPOSE. The gpl helpfully states it's purpose and intent right at the top - to maintain the four freedoms. As long as the freedoms are being maintained (by having source available, etc.), the court would probably rule that it's perfectly okay to distribute via the mail, ftp, email, http, or the app store.
Helping developers answer this question is the primary goal of https://choosealicense.com/ which itself is Open Source under the MIT license: https://github.com/github/choo...
Sure. Lets pander to the flavor of the month corporation just because they are the trendy thing today. Let's forget about the DECADES of work and progress that has gone into the collective body of Free Software. Let's also give a big "fuck you" to all of the nice contributors while we are at it.
It's Apple that's the newcomer playing the jerk imposing restrictions that are entirely unnecessary.
Freedom is not a Mad Max free-for-all where Apple can try to be the boss of the Thunderdome.
A Pirate and a Puritan look the same on a balance sheet.
If you want your software to be used by as many people/corporations as possible, use BSD.
If you don't want corporations to take advantage of your software without giving back, then use GPL.
BSD expands usage at the cost of community; GPL increases community at the cost of usage. Both approaches are valid.
"First they came for the slanderers and i said nothing."
Unlicense, and done. http://unlicense.org/
If by "Use" you mean: Copy/paste sections of GPLed code, then yea, you are forced to use the GPL (this also applies to Read-Memorized-Retyped).
If by use you mean: I link to some GPLed libraries. Or: I invoke some GPLed executable to do some work. Or: I send some IPC message to some GPLed process then you can use pretty much any licence you may well please.
For code I develop for commercial use (either if I want to turn it into a product, or if I am developing for a Third party) I prefer BSD/MIT/Apache.
For code I develop as a hobby, or as a service to the community, I preffer the GPL (v2).
Also, bear in mind two things:
* If you use a substantial amount of GPL code, the community frowns upon using a non GPL license.
* But, apples AppStore has had troubles with GPLed applications in the past.
Choose Wisely.
*** Suerte a todos y Feliz dia!
Of course, that advice was worth every penny.
And you expecting the advice here to be worth how much?
This. Preferably the FreeBSD License, since it's the same license that's used by the FreeBSD parts of iOS
No business in their right mind would allow any such bull shit in any legal document that they were obligated to.
Version 4 may grant the FSF free license to:
* commercially redistribute and relicense the code as they see fit
* grant unlimited patent waivers for all code using it
* remove warranty disclaimers
* require the developers to pay each user a huge sum of money
* or whatever the hell the Fucking Stupid Fucks (or whatever FSF stands for) feel like
Its like getting a job description that has a phrase like "additional duties as required"
... clean those toilets Mr. engineer.
Memory fades fast. A lot of people forget the environment and conditions that spawned the GPL and the huge amount of code released under it. Things are on average better than then in no small part to the GPL and the early efforts, so the GPL will wane for now.
It won't stay that way for ever, and when things take a turn for the worse, the FSF will still be there.
SJW n. One who posts facts.
Open Source licenses sometimes happen to be lengthy legal texts, which take a lawyer to get through and even then not sure. Not good.
From the brief ones, BSD & MIT are the ones which are both short and tried over time. And best of all, they don't limit YOU about future code usage.
The BSD suffers from fragmentation [x-clause for x in 2..4], therefor MIT wins.
Sometimes, it might be beneficial to call it MIT/GPL, to make it clear to GPL folks that you really mean to be GPL-friendly.
I think this license is based on a flawed premise.
AFAIK, the BSD licenses, like the GPL licenses (and copyright licenses generally) do require that derived works be bound by their terms. In the case of the 3-clause BSD license, these are: retention of the license in derived sources and binaries (1 clause each) and no use of contributors' names to promote derived works without permission.
Notable conditions of the GPL licenses are: provision of source code (in GPL2 section 3 / GPL3 section 6) and no further restrictions beyond the GPL (in GPL2 section 6 / GPL3 section 10). I expect a license could made be compatible with BSD-like licenses and incompatible with GPL-like ones by disallowing one or both of these conditions on derived works. In particular, the latter one may fit what the author was trying to achieve.
As it is, the requirement "the license of any source code covered by this license must not be modified" sounds to me much like the "no further restrictions" clause of the GPL that I think the author was trying to avoid, while "no requirements about what license you choose for any other code you use alongside" seems to say the opposite. I am not a lawyer, but I suspect this license may either disallow use with any other licenses, or do nothing at all.
Whatever you do, please please please use a well-known license. I'm am completely sick of having to read and grok screens full of leagalese and then go to The FSF list of licenses to see if there's something important I missed. I'm sure every license has some nuance that makes it better for some purpose or other, but I don't care.
While I understand the attraction of BSD (and its zillion variants), I've found that I can cover all use-cases for my own work with one of three licenses (in order of stringency)
Now in the poster's case, you'd need to be very careful around the GPL. Check here to make sure all the licenses on all that other stuff is GPL compatible. If not, you can't use GPL. But even if you can, there's no guarantee those other licenses are all compatible with each other. This is why, again, developers should do their users a favor and stick to well-known GPL compatible licenses.
I don't sell the code I sell the support.
I release everything I work on under BSD and if a company has questions about it I have contact information and an hourly rate available for support. If a company takes it and runs with it (Tivo) then it's not like it was something I was going to get around doing anyway.
If they don't want to pay for support and their product is good enough, a competitor will.
I don't lose out on anything. My code gets used (what I wanted and why I released it) and in 5-10 years if some company wants a subject matter expert I have my contact information and hourly rate available. Beyond that I honestly don't care.
I prefer the two or three clause BSD license.
I'm not going to rewrite why as I've already written about why here: http://www.rhyous.com/2010/04/...
The GPL requires that the program include an offer to provide the source code, either on a physical medium or on a server. It does NOT require that it be distributed via the same server or service that binary is on. v3 makes that very clear, saying:
"the Corresponding Source may be on a different server (operated by you or a third party)"
Putting the binary on the App store and the source on Github is exactly what that covers - provided that in or "next to" the binary copy you make it clear where the source can be found.
Therefore, if you are distributing a binary via the app store, and distributing the source via FTP or Github, you're fine. v3 also says that you CAN distribute the source the same way that you distribute the binary, or you can distribute it using a different method. Also under either version of the GPL you can offer it on physical media.
So no, the GPL doesn't require that if the binary is delivered by mail (or app store) that the source be delivered the same way. In fact, it explicitly says the opposite.
The issue that FSF pointed out in another, more specific post, is that while Apple may not be required to do anything at all in order to conform with the GPL, they are in fact doing something. They are stating that all software distributed via the app store has certain restrictions. A more precisely fitting analogy, therefore, is post office policies about what can and cannot be shipped.
The FSF position is that the policy is an additional condition imposed by Apple which means that APPLE can't legally distribute GPL code under those conditions. That, however, takes us right back around to the question we started with. _I_ may distribute the software, as long as _I_ don't impose additional conditions. If I'm the one doing the distribution, it's legal. Apple is imposing additional conditions, but it's fine for Apple to have conditions on it's app store if they aren't the ones distributing the software. Just like the USPS has policies and conditions, which don't affect the fact that I can distribute GPL software by using USPS to do it.
Whether the person who put the app on the app store is distributing via the app store or if Apple is the one doing the distribution is murky. Viewing that phrase in isolation, a court could rule either way. However, the court will read the whole document, not just one phrase. The top of the GPL license says:
"Our General Public Licenses are designed to make sure ... that you receive source code or can get it if you want it"
Okay, so the purpose is to make sure you can get source code if you want it. That's the goal of the license agreement. Given the murky question of who is the distributor, a court should look at the purpose of the document. The purpose is to make sure people who want source code can get it. If it's freely available on Github and the app contains a link to that Github, the purpose is being fulfilled and the court should allow it.
It's a requirement that applies to works derived from BSD-licensed code, as GPL requirements apply to works derived from GPL-licensed code. It's up to the courts to decide what counts as derived works. e.g. If the courts decide that copying APIs is not fair use, then technically programs linked against BSD-licensed libraries must adhere to BSD terms (although they may also impose additional terms, as this isn't disallowed). On the other hand, if the courts decide copying APIs is fair use then the GPL doesn't apply to programs linked against GPL-licensed libraries (even if it would like to).
Okay, I see what you're saying, but AFAIK, this actually means a whole lot less than you think.
Re "You must license the entire work, as a whole, under this License":
If I take a large BSD-licensed work, and a large GPL3-licensed work (3 because I think 2 might actually be incompatible), and combine them with a little glue, then I must license my "new work" under the GPL3, but the license I am offering really only applies to that little bit of glue, and nothing else. Moreover, there's nothing stopping me from dual-licensing that little bit of glue under a BSD license too, in which case authors of further derived works can choose whether to use my little bit of glue under the GPL3 or the BSD.
None of this makes too much practical difference, because in any case, both the BSD requirements and the GPL requirements apply to the new work, since it contains both BSD and GPL code. The difference is essentially cosmetic. It means I must write that my "new work" is licensed under the GPL, regardless of how little that may mean.
This suggests to users that the work may be used without any conditions that aren't listed in the GPL, which I am required to ensure is true, but for a different reason. What actually requires me to ensure that no further conditions apply besides those listed in the GPL is the explicit requirement that I do precisely that--"You may not impose any further restrictions...". The only way I can do this is by checking that conditions of other licenses I use are also conditions of the GPL.
Re "This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged.", (my emphasis)
I think perhaps the point here is supposed to be that, for instance, a Java program could be distributed in a single .jar archive file, or as a bunch of separate .class files, but it won't necessarily make a difference to what is considered a "work" under law. Even if you distribute a program as separate files, if the courts decide that the program together constitutes a work, then license conditi
I could see that being a good default option for the perfect program.
But if your program is not perfect, and you'd like others to contribute and help perfect it, then (since most people honor the spirit of the original license when contributing) if you get some really nice contributions that you would like to use yourself, all of a sudden, your options may not be as open with the GPL as they would have been with a permissive license, because now you have to honor the GPL license of your collaborators.
Conversely, if your program is not perfect, and you later perfect it yourself, you can always slap the GPL on the perfected version, so, assuming that you continue to improve your program, it's wrong to think that you've foreclosed the option of using the GPL simply because you started out with a permissive license.
I 90% agree with this. I don't see the point of the BSD license, really.
However, BSD does have "brand recognition", so there is that small point in its favor.