blob: 95425368ce170d6871ae9c7fb638c4f6f529f936 [file] [log] [blame]
Index: DeveloperPolicy.rst
===================================================================
--- DeveloperPolicy.rst (revision 308891)
+++ DeveloperPolicy.rst (working copy)
@@ -117,8 +117,8 @@
program.
When submitting patches, please do not add confidentiality or non-disclosure
-notices to the patches themselves. These notices conflict with the `LLVM
-License`_ and may result in your contribution being excluded.
+notices to the patches themselves. These notices conflict with the LLVM
+licensing terms and may result in your contribution being excluded.
.. _code review:
@@ -644,44 +644,226 @@
.. note::
This section deals with legal matters but does not provide legal advice. We
- are not lawyers --- please seek legal counsel from an attorney.
+ are not lawyers --- please seek legal counsel from a licensed attorney.
This section addresses the issues of copyright, license and patents for the LLVM
-project. The copyright for the code is held by the individual contributors of
-the code and the terms of its license to LLVM users and developers is the
-`University of Illinois/NCSA Open Source License
-<http://www.opensource.org/licenses/UoI-NCSA.php>`_ (with portions dual licensed
-under the `MIT License <http://www.opensource.org/licenses/mit-license.php>`_,
-see below). As contributor to the LLVM project, you agree to allow any
-contributions to the project to licensed under these terms.
+project. The copyright for the code is held by the contributors of
+the code. The code is licensed under permissive `open source licensing terms`_,
+namely the Apache 2 license, which includes a copyright and `patent license`_.
+When you contribute code to the LLVM project, you license it under these terms.
+If you have questions or comments about these topics, please contact the
+`LLVM Developer's Mailing List <mailto:llvm-dev@lists.llvm.org>`_. However,
+please realize that most compiler developers are not lawyers, and therefore you
+will not be getting official legal advice.
+
Copyright
---------
-The LLVM project does not require copyright assignments, which means that the
-copyright for the code in the project is held by its respective contributors who
-have each agreed to release their contributed code under the terms of the `LLVM
-License`_.
+The LLVM project does not collect copyright assignments, which means that the
+copyright for the code in the project is held by the respective contributors.
+Because you (or your company)
+retain ownership of the code you contribute, you know it may only be used under
+the terms of the open source license you contributed it under: the license for
+your contributions cannot be changed in the future without your approval.
-An implication of this is that the LLVM license is unlikely to ever change:
-changing it would require tracking down all the contributors to LLVM and getting
-them to agree that a license change is acceptable for their contribution. Since
-there are no plans to change the license, this is not a cause for concern.
+Because the LLVM project does not require copyright assignments, changing the
+LLVM license requires tracking down the
+contributors to LLVM and getting them to agree that a license change is
+acceptable for their contributions. We feel that a high burden for relicensing
+is good for the project, because contributors do not have to fear that their
+code will be used in a way with which they disagree.
-As a contributor to the project, this means that you (or your company) retain
-ownership of the code you contribute, that it cannot be used in a way that
-contradicts the license (which is a liberal BSD-style license), and that the
-license for your contributions won't change without your approval in the
-future.
+Relicensing
+-----------
-.. _LLVM License:
+The last paragraph notwithstanding, the LLVM Project is in the middle of a large
+effort to change licenses, which aims to solve several problems:
-License
+* The old licenses made it difficult to move code from (e.g.) the compiler to
+ runtime libraries, because runtime libraries used a different license from the
+ rest of the compiler.
+* Some contributions were not submitted to LLVM due to concerns that
+ the patent grant required by the project was overly broad.
+* The patent grant was unique to the LLVM Project, not written by a lawyer, and
+ was difficult to determine what was protection was provided (if any).
+
+The scope of relicensing is all code that is considered part of the LLVM
+project, including the main LLVM repository, runtime libraries (compiler_rt,
+OpenMP, etc), Polly, and all other subprojects. There are a few exceptions:
+
+* Code imported from other projects (e.g. Google Test, Autoconf, etc) will
+ remain as it is. This code isn't developed as part of the LLVM project, it
+ is used by LLVM.
+* Some subprojects are impractical or uninteresting to relicense (e.g. llvm-gcc
+ and dragonegg). These will be split off from the LLVM project (e.g. to
+ separate Github projects), allowing interested people to continue their
+ development elsewhere.
+
+To relicense LLVM, we will be seeking approval from all of the copyright holders
+of code in the repository, or potentially remove/rewrite code if we cannot.
+This is a large
+and challenging project which will take a significant amount of time to
+complete. In the interim, **all contributions to the project will be made under
+the terms of both the new license and the legacy license scheme** (each of which
+is described below). The exception to this is the legacy patent grant, which
+will not be required for new contributions.
+
+When all of the code in the project has been converted to the new license or
+removed, we will drop the requirement to contribute under the legacy license.
+This will achieve the goal of having
+a single standardized license for the entire codebase.
+
+If you are a prior contributor to LLVM and have not done so already, please do
+*TODO* to allow us to use your code. *Add a link to a separate page here, which
+is probably a click through web form or something like that. Details to be
+determined later*.
+
+
+.. _open source licensing terms:
+
+New LLVM Project License Framework
+----------------------------------
+
+Contributions to LLVM are licensed under the `Apache License, Version 2.0
+<https://www.apache.org/licenses/LICENSE-2.0>`_, with two limited
+exceptions intended to ensure that LLVM is very permissively licensed.
+Collectively, the name of this license is "Apache 2.0 License with LLVM
+exceptions". The exceptions read:
+
+::
+
+ ---- LLVM Exceptions to the Apache 2.0 License ----
+
+ As an exception, if, as a result of your compiling your source code, portions
+ of this Software are embedded into an Object form of such source code, you
+ may redistribute such embedded portions in such Object form without complying
+ with the conditions of Sections 4(a), 4(b) and 4(d) of the License.
+
+ In addition, if you combine or link compiled forms of this Software with
+ software that is licensed under the GPLv2 ("Combined Software") and if a
+ court of competent jurisdiction determines that the patent provision (Section
+ 3), the indemnity provision (Section 9) or other Section of the License
+ conflicts with the conditions of the GPLv2, you may retroactively and
+ prospectively choose to deem waived or otherwise exclude such Section(s) of
+ the License, but only in their entirety and only with respect to the Combined
+ Software.
+
+
+We intend to keep LLVM perpetually open source and available under a permissive
+license - this fosters the widest adoption of LLVM by
+**allowing commercial products to be derived from LLVM** with few restrictions
+and without a requirement for making any derived works also open source. In
+particular, LLVM's license is not a "copyleft" license like the GPL.
+
+The "Apache 2.0 License with LLVM exceptions" allows you to:
+
+* freely download and use LLVM (in whole or in part) for personal, internal, or
+ commercial purposes.
+* include LLVM in packages or distributions you create.
+* combine LLVM with code licensed under every other major open source
+ license (including BSD, MIT, GPLv2, GPLv3...).
+* make changes to LLVM code without being required to contribute it back
+ to the project - contributions are appreciated though!
+
+However, it imposes these limitations on you:
+
+* You must retain the copyright notice if you redistribute LLVM: You cannot
+ strip the copyright headers off or replace them with your own.
+* Binaries that include LLVM must reproduce the copyright notice (e.g. in an
+ included README file or in an "About" box), unless the LLVM code was added as
+ a by-product of compilation. For example, if an LLVM runtime library like
+ compiler_rt or libc++ was automatically included into your application by the
+ compiler, you do not need to attribute it.
+* You can't use our names to promote your products (LLVM derived or not) -
+ though you can make truthful statements about your use of the LLVM code,
+ without implying our sponsorship.
+* There's no warranty on LLVM at all.
+
+We want LLVM code to be widely used, and believe that this provides a model that
+is great for contributors and users of the project. For more information about
+the Apache 2.0 License, please see the `Apache License FAQ
+<http://www.apache.org/foundation/license-faq.html>`_, maintained by the
+Apache Project.
+
+
+.. note::
+
+ The LLVM Project includes some really old subprojects (dragonegg,
+ llvm-gcc-4.0, and llvm-gcc-4.2), which are licensed under **GPL
+ licenses**. This code is not actively maintained - it does not even
+ build successfully. This code is cleanly separated into distinct SVN
+ repositories from the rest of LLVM, and the LICENSE.txt files specifically
+ indicate that they contain GPL code. When LLVM transitions from SVN to Git,
+ we plan to drop these code bases from the new repository structure.
+
+
+.. _patent license:
+
+Patents
-------
-We intend to keep LLVM perpetually open source and to use a liberal open source
-license. **As a contributor to the project, you agree that any contributions be
-licensed under the terms of the corresponding subproject.** All of the code in
+Section 3 of the Apache 2.0 license is a patent grant under which
+contributors of code to the project contribute the rights to use any of
+their patents that would otherwise be infringed by that code contribution
+(protecting uses of that code). Further, the patent grant is revoked
+from anyone who files a patent lawsuit about code in LLVM - this protects the
+community by providing a "patent commons" for the code base and reducing the
+odds of patent lawsuits in general.
+
+The license specifically scopes which patents are included with code
+contributions. To help explain this, the `Apache License FAQ
+<http://www.apache.org/foundation/license-faq.html>`_ explains this scope using
+some questions and answers, which we reproduce here for your convenience (for
+reference, the "ASF" is the Apache Software Foundation, the guidance still
+holds though)::
+
+ Q1: If I own a patent and contribute to a Work, and, at the time my
+ contribution is included in that Work, none of my patent's claims are subject
+ to Apache's Grant of Patent License, is there a way any of those claims would
+ later become subject to the Grant of Patent License solely due to subsequent
+ contributions by other parties who are not licensees of that patent.
+
+ A1: No.
+
+ Q2: If at any time after my contribution, I am able to license other patent
+ claims that would have been subject to Apache's Grant of Patent License if
+ they were licenseable by me at the time of my contribution, do those other
+ claims become subject to the Grant of Patent License?
+
+ A2: Yes.
+
+ Q3: If I own or control a licensable patent and contribute code to a specific
+ Apache product, which of my patent claims are subject to Apache's Grant of
+ Patent License?
+
+ A3: The only patent claims that are licensed to the ASF are those you own or
+ have the right to license that read on your contribution or on the
+ combination of your contribution with the specific Apache product to which
+ you contributed as it existed at the time of your contribution. No additional
+ patent claims become licensed as a result of subsequent combinations of your
+ contribution with any other software. Note, however, that licensable patent
+ claims include those that you acquire in the future, as long as they read on
+ your original contribution as made at the original time. Once a patent claim
+ is subject to Apache's Grant of Patent License, it is licensed under the
+ terms of that Grant to the ASF and to recipients of any software distributed
+ by the ASF for any Apache software product whatsoever.
+
+
+Legacy License Structure
+------------------------
+
+.. note::
+ The code base was previously licensed under the Terms described here.
+ We are in the middle of relicensing to a new approach (described above), but
+ until this effort is complete, the code is also still available under these
+ terms. Once we finish the relicensing project, new versions of the code will
+ not be available under these terms. However, nothing takes away your right
+ to use old versions under the licensing terms under which they were
+ originally released.
+
+We intend to keep LLVM perpetually open source and to use a permissive open
+source license. The code in
LLVM is available under the `University of Illinois/NCSA Open Source License
<http://www.opensource.org/licenses/UoI-NCSA.php>`_, which boils down to
this:
@@ -689,13 +871,13 @@
* You can freely distribute LLVM.
* You must retain the copyright notice if you redistribute LLVM.
* Binaries derived from LLVM must reproduce the copyright notice (e.g. in an
- included readme file).
+ included README file).
* You can't use our names to promote your LLVM derived products.
* There's no warranty on LLVM at all.
We believe this fosters the widest adoption of LLVM because it **allows
commercial products to be derived from LLVM** with few restrictions and without
-a requirement for making any derived works also open source (i.e. LLVM's
+a requirement for making any derived works also open source (i.e. LLVM's
license is not a "copyleft" license like the GPL). We suggest that you read the
`License <http://www.opensource.org/licenses/UoI-NCSA.php>`_ if further
clarification is needed.
@@ -714,33 +896,3 @@
cannot be moved from the LLVM core to libc++ without the copyright owner's
permission.
-Note that the LLVM Project does distribute dragonegg, **which is
-GPL.** This means that anything "linked" into dragonegg must itself be compatible
-with the GPL, and must be releasable under the terms of the GPL. This implies
-that **any code linked into dragonegg and distributed to others may be subject to
-the viral aspects of the GPL** (for example, a proprietary code generator linked
-into dragonegg must be made available under the GPL). This is not a problem for
-code already distributed under a more liberal license (like the UIUC license),
-and GPL-containing subprojects are kept in separate SVN repositories whose
-LICENSE.txt files specifically indicate that they contain GPL code.
-
-We have no plans to change the license of LLVM. If you have questions or
-comments about the license, please contact the `LLVM Developer's Mailing
-List <mailto:llvm-dev@lists.llvm.org>`_.
-
-Patents
--------
-
-To the best of our knowledge, LLVM does not infringe on any patents (we have
-actually removed code from LLVM in the past that was found to infringe). Having
-code in LLVM that infringes on patents would violate an important goal of the
-project by making it hard or impossible to reuse the code for arbitrary purposes
-(including commercial use).
-
-When contributing code, we expect contributors to notify us of any potential for
-patent-related trouble with their changes (including from third parties). If
-you or your employer own the rights to a patent and would like to contribute
-code to LLVM that relies on it, we require that the copyright owner sign an
-agreement that allows any other user of LLVM to freely use your patent. Please
-contact the `LLVM Foundation Board of Directors <mailto:board@llvm.org>`_ for more
-details.