9 ms·
LLVM Relicensing Effort
- rvp-x 8y agoI don't understand how licenses that make claims about patent lawsuits (GPLv3, apache) can be re-using code from licenses that don't make patent claims (BSD, etc.). I didn't promise not to sue anyone for royalties.
- jessaustin 8y agoTheir license doesn't bind your behavior, since you didn't release your code under that license. However, it is probably the case that your code was also not released under any license that forbids reuse by a downstream that does make patent promises. (Does such a poison-pill anti-patent-promise license even exist? I'm not aware of it.) It might be a communications issue, that users of the downstream might assume they won't get sued by you. If such users have money, they should hire competent legal assistance.
- agnokapathetic 8y agoFor those out of the loop like me, the Apache 2.0 license exceptions they are addding are: > 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.
- avar 8y agoDoesn't this just allow an end-run around the license by allowing you to distribute a program that embeds LLVM, whose only purpose is to be an LLVM wrapper to avoid those sections of the license?
- jcranmer 8y agoWhat it allows is portions of the compiler runtime library to be embedded into your program without changing any licensing effects of your program. GCC has a similar exception to their GPL for similar reasons.
- jsmith45 8y agoI'm pretty sure the intention is that it does not allow that. Notice that they say "as a result of your compiling your source code". That is intended to mean that if the compiler copies in some binary code (to implement a compiler primitive or the like), that it doing so does not require you to treat that code like it is licensed under the LLVM terms. Note that the LLVM source code is not "your source code", so simply copying in the LLVM source and compiling it will not trigger this exception. That is not to say that there might not be a loophole. E.G., modifying LLVM to always copy all of its binary code into the resulting exececutable (and licensing those changes under this license), and then compiling a program that wants to embed LLVM. I'd like to think that courts would refuse to allow such abuse, but who really knows.
- Joky 8y agoIt's blurry to me what it mean for including a libc++ header though? This is not "your source code" but LLVM inline code. How is it different from including a header from LLVM itself?
- chandlerc1024 8y agoThe intent is definitely to handle this as well. (Not really going to try and dig into legal reasoning here.)
- mikece 8y agoSeems to me Linux is the primary project affected by this?
- johannes1234321 8y agoAnything which might get some runtime artifacts from the compiler. For instance some compiler intrinsic called from your code might use some code the compiler injects instead of only translating your source to opcodes.
- vaylian 8y agoSorry, but I have trouble understanding such legalese. Can someone please translate this into more common language? Thanks! I do not want to guess what this could mean.
- jcranmer 8y agoThe first bit says effectively "this doesn't apply to compiler libraries [1] we link into your code". The second bit effectively says "you can use this with GPLv2 code" (normal Apache v2 only is compatible with GPLv3). [1] e.g., code to implement a 64-bit division operation on platforms that don't have an instruction for that.
- bunderbunder 8y agoIt looks like the first bit might also imply that you can use LLVM as the basis for a JIT compiler without having to license your code as Apache 2.0 or include the attribution notices. Maybe?
- justincormack 8y agoNo, that would not be "as a result of compiling", but you can do that anyway (with attribution and patent though), as incorporating Apache code into other code is fine in general.
- jcranmer 8y agoIf your program is calling LLVM APIs directly, the exception wouldn't kick in. So any JIT project using LLVM would have to comply with Apache 2.0.
- int_19h 8y agoComplying with AL in that case would simply amount to LLVM itself still being under AL. The code that calls it wouldn't have to be.
- hadrien01 8y agoThe url shown in the header [0] doesn't exist: > The requested URL /LICENSE.txt was not found on this server. [0] https://llvm.org/LICENSE.txt https://llvm.org/LICENSE.txt
- athorax 8y agohttp://llvm.org/foundation/relicensing/LICENSE.txt http://llvm.org/foundation/relicensing/LICENSE.txt
- floatingatoll 8y agoOP: This has been underway several years. Is there a recent turn of events that should be considered as we view this page?
- wyldfire 8y agoThe foundation is emailing contributors asking them to sign an agreement pertaining to the relicense.
- chandlerc1024 8y agoWe are successfully moving towards the next bug milestone which will put the new license in place going forward. This is likely among the most potentially disruptive steps as we need to ensure subsequent contributions are under the new license (additionally). We're targeting mid January pretty firmly now to make the cutover. We'll be sending a detailed message to the LLVM lists about this today. And as the other responder mentioned, part of this has involved directly contacting all committers in the last two years (more recent committers more than once) to ensure we have everything we need to minimize disruption and make the cut over.
- nicwilson 8y agoI sincerely hope it ain't a bug milestone ;)
- chandlerc1024 8y agoDoh!
- arminiusreturns 8y agoOne more reason to stick with gcc. It's not the same gcc as ten years ago anymore. RMS and gpl is ahead of its time.
- lvh 8y agoHuh? The current version of the GPL has a similar patent clause, and its no different in the treatment of object code AFAICT?
- yellowapple 8y agoSwitching to Apache 2.0 plus some license compatibility exceptions means we should stick with GCC... why, exactly? EDIT: if whoever downvoted me can answer that, then that'd be much appreciated.
- arminiusreturns 8y agoI misread this this morning, thought this was a backdoor for tivoization, which I am strongly against, and made a too hasty and terse comment, so I really have to eat crow. Sorry everyone.
- yellowapple 8y agoNo worries :)
- coldtea 8y agoIs there an argument in this?
- segfaultbuserr 8y agoAlthough Apache-2 is sometimes seen as a license-of-choice by major proprietary software companies like Google, the license itself is actually well-written. It explicitly offers a patent clause to protect contributors and distributors from patent lawsuits from the copyright holder. I found even RMS recommends using Apache-2 as a permissive license for minor programs that don't need copyleft. So unless you explicitly support BSD/ISC, perhaps you could give some consideration of using it as a license for your next program. AFAIK, whether ISC/BSD/MIT style licenses offer a patent clause is still unsettled. UPDATE: See JoshTriplett's post, Apache-2 has license compatibility issues that prevent some code reuse, now I think BSDplusPatent license instead of Apache-2 is a better idea for small programs.
- jillesvangurp 8y agoFrom having dealt with some legal departments in the past, the reason they like these licenses is that they create clarity. For them patents are an orthogonal issues. Having licenses that may or may not affect their own patents or any patents of their competitors is hugely important when considering whether to use particular software, whether to contribute to particular software, etc. At the minimum, it increases the workload for them and worst case there are all sort of things that suddenly have to be considered. Doing legal checks is super tedious.
- JoshTriplett 8y agoApache 2.0 is not a great choice if you care about license compatibility, unless you include an exception as LLVM is doing here. Another good choice is https://opensource.org/licenses/BSDplusPatent https://opensource.org/licenses/BSDplusPatent , which combines the 2-clause BSD license with the explicit patent clause from Apache 2.0. That gives you GPLv2-compatibility as well. (Note that this is unrelated to the unfortunately similarly named license from Facebook, which is not a FOSS license.)
- segfaultbuserr 8y agoThanks! I was always searching for this license, but I had previously only found The Clear BSD License, the BSD license with a PATENTS-NOT-INCLUDED clause (oops), and the Universal Permissive License, which is a general permissive license WITH a patent clause, but too obscure to inspire confidence among other developers. Now I'm going to recommends BSDplusPatent instead of Apache 2. Simply and clear.
- deleted 8y ago[deleted]
- gigatexal 8y agoYeah what’s the TL;DR but for dummies?
- evmar 8y agoTypeScript has a similar problem, where depending on some compilation flags you end up inheriting their license on your compiled output. I've been trying to get them to fix it but it is stuck in lawyer limbo: https://github.com/Microsoft/tslib/issues/47 https://github.com/Microsoft/tslib/issues/47
- chandlerc1024 8y agoIf you can reuse the legal mechanics of the new LLVM license, maybe that helps? We spent a LOT of lawyer time trying to get this right.
- raphlinus 8y agoI just want to say, it's slightly mind-boggling to see two Googlers on a thread talking about how to adapt legal work done for a mostly Apple-owned project to improve the licensing of a Microsoft product.
- chandlerc1024 8y agoI wouldn't call LLVM "mostly Apple owned" at this point. It has a huge range of contributions from Apple, Google, and many others. Even Microsoft! =]
- raphlinus 8y agoFair point, though it certainly was try at one point. In any case, doesn't detract from the point I was trying to make.
- RyJones 8y agoOpen source is hard work, regardless of your affiliation.
- hannob 8y agoThis looks mostly harmless, yet this made me pause: "The effort has been overseen by Heather Meeker". The same Heather Meeker that started the whole "let's relicense FOSS projects with confusing non-FOSS licenses because we don't like that AWS is using our code"-buzz that's been debated a lot lately.
- deleted 8y ago[deleted]
- detaro 8y agoIt's not really surprising that companies wanting a new software license hire a world-class expert in the field to help draft it. Any evidence she "started the whole..." instead of doing her job as a lawyer?
- hannob 8y ago> Any evidence she "started the whole..." instead of doing her job as a lawyer? I'm not sure how that's a contradiction. Of course she can start something while doing her job. Evidence: https://commonsclause.com/ https://commonsclause.com/ "The Commons Clause is a license condition drafted by Heather Meeker" https://techcrunch.com/2018/11/29/the-crusade-against-open-source-abuse/ https://techcrunch.com/2018/11/29/the-crusade-against-open-s... "Heather Meeker wrote both solutions, supported by feedback organized by FOSSA."
- lilyball 8y agoThe TechCrunch article you linked indicates that it's the article's author, Salil Deshpande, who's responsible for the Commons Clause. Heather Meeker was just the lawyer tapped for this.
- detaro 8y agoWouldn't you say the companies that asked her to help create these licenses "started it"? I think for the question if another effort is suspect just because it involves her the source of the motivation is IMHO relevant.
- jwilk 8y agoThis page is missing one crucial piece of information: what's the current license? It's (a BSD-like) University of Illinois/NCSA Open Source License: https://releases.llvm.org/7.0.0/LICENSE.TXT https://releases.llvm.org/7.0.0/LICENSE.TXT
- djsumdog 8y agohuh. I assumed it was already Apache 2 and they were adding an exemption. This does change the reading quite a bit. They're asking all their contributors for a pretty big relicensing.
- riffraff 8y agobut it's a relicensing which is fairly close in spirit, isn't it? Sure, apache 2 has the patent stuff, but I fail to see how anyone would object to it.
- beefhash 8y ago> how anyone would object to it OpenBSD is objecting to it like so[1]: > [...] In particular, if you use code under the Apache 2 license, some of your rights will terminate if you claim in court that the code violates a patent. > A license can only be considered fully permissive if it allows use by anyone for all the future without giving up any of their rights. If there are conditions that might terminate any rights in the future, or if you have to give up a right that you would otherwise have, even if exercising that right could reasonably be regarded as morally objectionable, the code is not free. > In addition, the clause about the patent license is problematic because a patent license cannot be granted under Copyright law, but only under contract law, which drags the whole license into the domain of contract law. But while Copyright law is somewhat standardized by international agreements, contract law differs wildly among jurisdictions. So what the license means in different jurisdictions may vary and is hard to predict. [1] https://www.openbsd.org/policy.html https://www.openbsd.org/policy.html
- chandlerc1024 8y ago
- mijoharas 8y agoCan someone explain how the current licence is a problem for the following: * 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. Is it because the other license is relatively unknown? Can anyone shed light on why they didn't opt to go for BSD or MIT license? (is it the patent protection stuff?)
- geofft 8y agoThe first mailing list post is a pretty good dive: http://lists.llvm.org/pipermail/llvm-dev/2015-October/091536.html http://lists.llvm.org/pipermail/llvm-dev/2015-October/091536... In particular, the Apache license is a very clear and more importantly very well-accepted mechanism of licensing relevant patents and not irrelevant ones. The BSD and MIT licenses may or may not license patents depending on how you (or the courts, really) interpret "Permission to use ... is hereby granted ...." They also had a custom scheme for dual-licensing the runtime libraries that get linked into compiled binaries. The new scheme grants a non-attribution license based on the fact that it ended up in your code after running clang, not which repo it was in, which makes it easier for LLVM to refactor code between repos.
- DannyB2 8y agoI wonder if LLVM has a code of conduct? It would be an interesting project to develop a new open source CoC whose mere existence is a violation of itself. :-)
- wyldfire 8y ago> I wonder if LLVM has a code of conduct? It does indeed. It was mostly non-controversial, except for [AFAIK] one notable departure, de Espindola [1]. Lattner's response [2]. > ... new open source CoC whose mere existence is a violation of itself. I can't tell if you're just being silly or if you're referring to an actual contradiction related to relicensing and/or the CoC. [1] http://lists.llvm.org/pipermail/llvm-dev/2018-May/122922.html http://lists.llvm.org/pipermail/llvm-dev/2018-May/122922.htm... [2] http://nondot.org/sabre/2018-05-02-Rafael.html http://nondot.org/sabre/2018-05-02-Rafael.html
- favorited 8y agoLLVM has a draft Code of Conduct[1], but I'm not sure how that relates to a relicensing effort. [1] https://llvm.org/docs/CodeOfConduct.html https://llvm.org/docs/CodeOfConduct.html
- notaplumber 8y agoMark Kettenis' formal objection on behalf of the OpenBSD project: http://lists.llvm.org/pipermail/llvm-dev/2017-April/112300.html http://lists.llvm.org/pipermail/llvm-dev/2017-April/112300.h... Theo de Raadt: https://news.ycombinator.com/item?id=12617881 https://news.ycombinator.com/item?id=12617881 These objections have been largely glossed over by the LLVM community. It's no secret that a handful of corporations are pushing for this change, and not the best interest of the open source community. Especially the larger ones using LLVM, like *BSD. LLVM is already under a permissive BSD-like license (NCSA), as pointed out by jwilk: https://news.ycombinator.com/item?id=18700258 https://news.ycombinator.com/item?id=18700258 OpenSSL is similarly attempting the same thing with newer versions of OpenSSL, which they went about in a particularly legally dubious way: https://lwn.net/Articles/717996/ https://lwn.net/Articles/717996/ (For context, OpenBSD maintains LibreSSL).
- amyjess 8y agoHonestly, if a project is so blinded by zealotry that even a non-copyleft license like Apache 2.0 isn't free enough, then I don't see any reason to engage with them in any form.
- notaplumber 8y agoThis isn't a new policy. It's largely the same reason OpenBSD shipped with a fork of Apache 1.3.x for many years before ultimately writing their own httpd(8). The Apache 2.0 intertwines US Contract law with Copyright law, and that is considered wholly "not permissive enough". "In addition, the clause about the patent license is problematic because a patent license cannot be granted under Copyright law, but only under contract law, which drags the whole license into the domain of contract law. But while Copyright law is somewhat standardized by international agreements, contract law differs wildly among jurisdictions. So what the license means in different jurisdictions may vary and is hard to predict." https://www.openbsd.org/policy.html https://www.openbsd.org/policy.html
- amyjess 8y ago> This isn't a new policy. It's largely the same reason OpenBSD shipped with a fork of Apache 1.3.x for many years before ultimately writing their own httpd(8). From what I recall, Apache httpd 2.0 came out a long time before Apache License 2.0. A quick check of Wikipedia confirms it: > The Apache HTTP Server codebase was relicensed to the Apache 2.0 License (from the previous 1.1 license) in January 2004, and Apache HTTP Server 1.3.31 and 2.0.49 were the first releases using the new license. If OpenBSD wanted to use httpd 2.x without switching to the new license, they could have forked 2.0.48. Their reasons for not using httpd 2.x were entirely technical. Architecturally, 2.x was a major departure from 1.x, and the OpenBSD developers were grognards who rejected it because they weren't interested in a web server that deviates from tradition. And since Apache still maintained 1.3.x for ages after 2.0 came out, it made their decision easier (well, until the license change hit). And this is a huge digression anyway: I honestly don't see a reason to cater to a group of people who would cut off their nose to spite their face. The LLVM team has better things to do with their time.
- WalterBright 8y agoIt's why the D language is all Boost licensed. We would have made it public domain, but that isn't a legal concept in some countries. Boost is the closest we could find to public domain and corporate lawyer approved.
- hu3 8y agoSemi-related: https://opensource.google.com/docs/thirdparty/licenses/ https://opensource.google.com/docs/thirdparty/licenses/