LLVM is relicensing
The LLVM relicensing effort aims to modernize the LLVM Licensing structure and developer policy. The high level goals of the relicensing effort are to:
- Encourage ongoing contributions to LLVM by preserving a low barrier to entry for contributors.
- Protect users of LLVM code by providing explicit patent protection in the license.
- Protect contributors to the LLVM project by explicitly scoping their patent contributions with this license.
- Eliminate the schism between runtime libraries and the rest of the compiler that makes it difficult to move code between them.
- Ensure that LLVM runtime libraries may be used by other open source and proprietary compilers.
This project involves sensitive legal issues and has been a multi-year effort. The primary public discussions have included these mailing list threads:
- October 19, 2015: Initial license draft proposal .
- September 12, 2016:Second license draft, resolving GPL2 compatibility concerns.
- April 17, 2017:Third license draft, which resolved concern about use of LLVM runtimes with proprietary toolchains.
- August 7, 2017: LLVM Developer Policy wording .
depending on the sensitivity of your email.
Status and Documents
At this point, we have achieved community consensus on:
- The goals of the relicensing effort.
- License Full Name: "Apache 2.0 with LLVM Exception"
- SPDX License Identifier : "Apache-2.0 WITH LLVM-exception"
- The license text itself. This is the expected LICENSE.TXT file .
- The revised LLVM developer policy patch .
We also have worked with our legal counsel to build several more boring pieces:
- A new top-of-file header block that is minimal and includes the relevant and important information about the new license.
- An individual agreement to relicense and a form to collect information necessary for completing the relicensing.
- A corporate agreement to relicense that is available for companies to sign and has begun to be distributed to some of the known and/or large contributors.
We currently plan to install the new developer policy and add the new license in January 2019 after the LLVM 8.0 release has branched.
Once that is done, we will still need need to:
- Enact a process for getting 100% of existing code relicensed with the above agreements or rewrite/remove the code.
- Drop the old license when the entire codebase is covered under the new license.
New File Header
The new file header will be:
//===-- file/name - File description ----------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===//
Some notable aspects of the new header:
- There is no explicit copyright notice -- these had little value and tended to not be maintained.
- It is designed to be as compact and minimalist as possible while having the critical information: that it is part of LLVM, what license it is under, where to find that license, and the machine-scrapable SPDX markup to help people doing license audits.
Individual Relicensing Agreement
Individuals need to complete a web form that we will use to drive the relicensing process. Part of that form will prompt them with a DocuSign agreement that they can sign online to cover anything they personally contributed. It will also collect any companies or academic institutions that may own right to some of their contributions so that we can cover them with the corporate agreement below.
We do ask that individuals generally sign the individual agreement even if they think their contributions are probably covered by a corporate agreement. It will be fairly expensive for us to validate each case where an individual has not signed that *all* of their contributions are covered by a corporate agreement. The individual agreements let us not spend time and money on this by covering things either way. We think this is likely simpler and definitely less expensive. Still, we are leaving all of the options open.
Feel free to send questions concerns about this to the Foundation mailing list .
Corporate Relicensing Agreement
Corporations may sign an agreement to relicense their contributions to LLVM under the new license with DocuSign . This is our preferred mechanism for collecting signatures. However, if your company requires it, you can print out this PDF of the agreement , sign it, scan it, and send the signed version as a PDF attachment to the LLVM Foundation Board . Further, if your company has a specific concern or issue with the agreement, please reach out to thethe board and we'll try to help.
Companies that have Signed:
- Argonne National Laboratory
- Azul Systems, Inc.
- Julia Computing, Inc.
- SAS Institute Inc.
- UT-Battelle, LLC (operating Oak Ridge National Laboratory)
- Wave Computing, Inc. (owner of MIPS, etc.)
A non-exhaustive list of companies that have been contacted about relicensing is below. This is primarily intended to avoid duplicate work within these companies trying to get things signed and set up.
- Access Softek
- Red Hat
- LLVM is relicensing
- Giving Mono Souper Powers
- A Not-Called Function Can Cause a 5X Slowdown
- How to optimize C and C code in 2018
- Support Lifecycle for Clang/LLVM, Go, and Rust
- Using OSX? Compiling an R package from source? Issues with ‘-fopenmp’? Try this.
- 30% faster Windows builds with clang-cl and the new /Zc:dllexportInlines- flag
- Sandboxed execution of native code with GraalVM