views:

5997

answers:

3

A couple of years ago, ZDNet ran an article interviewing Greg Stein on the Google Code project, discussing several software licences 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 licences 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 licences 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 Licence?


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! :)

+29  A: 

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.

Adam Davis
+33  A: 

The Apache license has some extra benefits over the BSD or MIT X11 license style licenses. The Apache 2.0 licenses contains a patent grant, which means that at least the authors of the code are giving you any rights that you need to any patents they might own that happen to be in the code you are using.

miguel.de.icaza
+1  A: 

According to WikiPedia ('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 this is a relatively strong point for MIT or BSD licenses, as they are GPL-compatible; this is crucial in any project that utilizes GPL-licensed code.

Leo Lahti
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
I have understood that according to FSF, only MIT/BSD code but not Apache2 code can be used in GPL2 code. GNU project site (http://www.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.
Leo Lahti
I can't tell if this problem is pragmatic or idealistic (i.e., if it would be a problem in practise), but it's well noted. Thanks. I didn't realise this before now, and it's a bit of a shame.
Will Robertson