share
Stack OverflowApache license vs BSD vs MIT
[+343] [3] Will Robertson
[2008-09-02 17:29:04]
[ open-source licensing bsd-license ]
[ http://stackoverflow.com/questions/40100/apache-license-vs-bsd-vs-mit ] [DELETED]

A couple of years ago, ZDNet ran an article [1] interviewing Greg Stein on the Google Code project, discussing several software licenses and why Google Code only accepts a few of them. That article's been one of my biggest influences when it comes to "understanding" a few of the more common licenses around.

With relevance to the question I'm about to ask, here's the money quote:

That is one of the reasons that Google chooses the Apache License (2.0) as the default for the software it open-sources. It is permissive like BSD, but (unlike BSD) actually happens to mention the rights under copyright law and gives you a license under those rights. In other words, it actually knows what it is doing unlike some of the other permissive licenses.

Do you agree? Due to this article I've used and recommended the Apache License over the BSD and MIT licenses without question; but it's not like this article is necessarily the final word on this matter. Is there anything better (in the same vein) as the Apache License?


I like what you're saying, Adam, which is why I accepted your answer. However, it doesn't strike me as particularly useful, in general, to keep promoting both Apache and BSD (I guess we are just assuming MIT is no good in this company?) since they're essentially identical with that minor difference you mention that everyone basically does anyway.

Regarding 4 pages vs. 1 page: well, I guess I'd prefer the one that covers my ass better! :)

(7) As miguel.de.icaza said in his answer, there is one non-trivial difference related to patent grants. Very important. - Mr. Shiny and New 安宇
(1) For license related questions, I have made a proposal for a specific Q&A site: area51.stackexchange.com/proposals/58715/open-source-licensing If it interests you, please follow. - Kurt Pattyn
(4) For the Internet passer-by, here's a brief reference page on OSS licenses, put together by the folks at GitHub: choosealicense.com - Nick Chammas
@nick tldrlegal.com came before choosealicense, and has many more summaries available. - Kevin Wang
@abc123 — check the date this question was asked. "Off-topic" meant a very different thing in 2008. Stack Overflow was far broader back then (there was no Stack Exchange, e.g.). - Will Robertson
It's strange that OSS licensing options could be off-topic for professional programmers who have to help make decisions about these things on a regular basis. - Steven Shaw
[+252] [2008-09-18 16:35:43] miguel.de.icaza [ACCEPTED]

The Apache license has some extra benefits over the BSD or MIT X11 license-style licenses.

The Apache 2.0 licenses contain a patent grant, which means that at least the authors of the code are giving you any rights that you need for the authors' patents that happen to be in the code that you are using.


(141) Notably, these are extra benefits for the person receiving and using the code, but might not be a benefit for the person releasing the code. - Adam Davis
(1) An alternative way to do this is to supplement a PATENTS file along with your LICENSE file that has a separate patent grant. Webkit does this, I believe. - Kevin Wang
(1) Just wanted to add this link: en.wikipedia.org/wiki/… (Sort the table by column "linking" and have a look at the "patent grant" column) - Anonymous
1
[+195] [2008-09-02 18:10:24] Adam Davis

You need to keep in mind that the speaker, Greg Stein, is Apache Foundation Chairman in addition to being the Google Lead Open Source Engineer.

The BSD license is very, very, very simple, and was largely created in a time when software copyright was not a big issue, and so the legal language is not as finely crafted as it might otherwise be.

But it's easily readable English, and should still stand up in court just as well as any other license.

However:

  • Apache: 4 pages, ~1,400 words
  • BSD: less than 1 page, ~270 words

The Apache license, as Greg correctly points out, is a "modern" EULA agreement with every single right specified and explicitly given, restricted, etc. Of course Google is going to prefer it - Google's lawyers won't authorize the BSD's simple language which could be open for even the tiniest bit of speculation.

However, it's very instructive to note that Google recognizes the licenses are either different enough, or that BSD is popular enough, to warrant including both of them instead of defining one as redundant.

As to whether you, or anyone else, should license code under a given license - that is completely up to the copyright holder (you, if you wrote it entirely).

I use BSD because every coder I know immediately understands what BSD is and means, whereas Apache is not as well known, and no one wants to read 4 pages of single spaced, 12pt type text (well, except lawyers - they charge by the hour...;-)

But if you carefully read the redistribution section, you'll find that the Apache license is slightly more restrictive - you are required to do slightly more work than the BSD license when you modify the source, for instance, and redistribute it. It's nominal - every programmer should be doing these things, but I think it leaves room for legal battles that ought not be part of a truly free license.


(80) @hakre "Every license is restrictive otherwise there won't be any need of a license." The creator automatically holds all rights to their work. Without a license no one else has any right to their work. So of course there are licenses that give all rights, and are truly non restrictive. They would be giving all the same rights the creator had. Very few licenses do this, of course, because most copyright authors want to restrict their liability for the use of the software. Your assumption is fundamentally flawed. To pass truly unrestricted right to another requires a license. - Adam Davis
(2) So the creator is restricting the authorship of works. There you have it. Give me your work and allow me to deny your creatorship or I won't call it truly non-restrictive. Think twice Adam, there always is restriction, the boundaries of matter demand for that. There is no true non-restriction. Better get comfortable with dialectics before you claim you have found a flaw. - hakre
(1) have not found the time so far, but this article quite nicely shows that "simple" might not match it well, always: groklaw.net/article.php?story=20070114093427179 - hakre
@AdamDavis (IANAL.) Well said. An agreement must clearly specify if an action is mandatory, permitted or forbidden. Unspecified leads to litigation. English is highly imprecise, which is great for marketing but not for clear, formal stipulations. - Barry
2
[+23] [2010-07-11 00:13:19] antagomir

According to the Wikipedia article "Apache License", "The Free Software Foundation considers all versions of the Apache License (as of 2007) to be incompatible with the previous GPL versions 1 and 2." [See references 1-2 below]

[1] GPLv3 Final Draft Rationale". Free Software Foundation. May 31, 2007. (gplv3.fsf.org/rationale). Retrieved June 14, 2007.

[2] Free Software Foundation (January 14, 2008). "Licenses". (www.fsf.org/licensing/licenses). Retrieved January 30, 2008.

If the Apache2 is not GPL-compatible, I think that this is a relatively strong point for MIT or BSD licenses because they are GPL-compatible; this is crucial in any project that utilizes GPL-licensed code.


(4) What do you mean by "GPL-compatible"? Surely if an MIT/BSD project wants to use GPL code then they must become GPL themselves? Or are you saying that an Apache2 codebase cannot incorporate any GPL2 code, even if the codebase changes to GPL2? Or that only MIT/BSD code but not Apache2 code can be used in GPL2 code? - Will Robertson
(17) I have understood that according to FSF, only MIT/BSD code but not Apache2 code can be used in GPL2 code. GNU project site (gnu.org/licenses/license-list.html) says: "Apache License, Version 2.0 is a free software license, compatible with version 3 of the GPL. -- this license is not compatible with GPL version 2, because it has some requirements that are not in the older version. These include certain patent termination and indemnification provisions." Some people view GPL3 too restrictive, and instead prefer GPL2. In such cases, Apache2.0 seems problematic compared to MIT/BSD. - antagomir
(1) Linus Torvalds refused to go GPL3. I would have thought people would prefer the choice of 2 over knowing everybody will go 3 that wants gpl. - sabgenton
3