GCC drops its copyright-assignment requirement
lwn.net
lwn.net
The issue is that in many places (for example New York State), work done by a professional employee actually belongs to your employer. A developer can write code, contribute it where they want, and license it as they wish. But the code is actually owned by their employer. Which means that if there is a future problem, the employer can assert their copyright interest and people who thought that they had the right to use that code, suddenly don't.
Because developers themselves are seldom aware of such rules, the FSF took the ultra-safe approach of requiring employers to sign off. That way they are absolutely sure that there will never be a problem.
However other open source projects have found that, in practice, problems are rare. And when there is a problem, the employers usually will agree to the license.
(Edit: What I also came to think of is that GCC recently positioned itself in opposition to the FSF because of the "Stallman-Controversy". Is this a kind of retaliation on their part?)
Anyhow, we don't have to guess why they want it:
> Under US copyright law, which is the law under which most free software programs have historically been first published, there are very substantial procedural advantages to registration of copyright. And despite the broad right of distribution conveyed by the GPL, enforcement of copyright is generally not possible for distributors: only the copyright holder or someone having assignment of the copyright can enforce the license. If there are multiple authors of a copyrighted work, successful enforcement depends on having the cooperation of all authors.
> In order to make sure that all of our copyrights can meet the recordkeeping and other requirements of registration, and in order to be able to enforce the GPL most effectively, FSF requires that each author of code incorporated in FSF projects provide a copyright assignment, and, where appropriate, a disclaimer of any work-for-hire ownership claims by the programmer's employer. That way we can be sure that all the code in FSF projects is free code, whose freedom we can most effectively protect, and therefore on which other developers can completely rely.
They are published with a worldwide public licence; I'm not even sure how one can publish something such as that under any specific law.
One drafts a public licence, and different parts of it are enforceable to different degrees in different jurisdictions.
It is of course quite possible for the licence to be gnostic of the country of the acceptee, and apply differing provisions in different cases, but I would feel such would strongly go against F.S.F. philosophies.
___
[1]: Hey, it's "the _singular_ 'they'", innit?
So, how would I put a GPL license on code that I wrote for somebody else without their permission?
Seems pretty straightforward to me.
I thought we were discussing the "no copyright assignment" scenario.
> But if you do so and release it without notifying them
That's them not doing due diligence as far as I can tell. The employee would also be in breach of contract, possibly even committing a crime.
Employees can do all sort of illegal acts while in the employ of someone else... and when that happens you prosecute them (if it's egregious enough).
I suppose it may mean that an upstream project may be harmed quite badly if this goes on for long enough...
... but that's no different for any open source project. Or even closed source: Maybe an employee is working for two companies and 'reusing' code in an unauthorized way.
I don't think I was, and I think you were.
> I thought we were discussing the "no copyright assignment" scenario.
Yup, exactly. Not that it makes much of a difference: To release something under any license, even without assigning any copyright, you need to have the copyright. (Or similar rights granted by a license, but in the end those too have to stem from someone actually having the right to license the thing they're licensing -- i.e. copyright.)
> > But if you do so and release it without notifying them
> That's them not doing due diligence as far as I can tell.
Not if you wrote and released it after you were already employed, now is it?
> The employee would also be in breach of contract, possibly even committing a crime.
Yes, exactly. Are you saying that can never happen, or what? That's exactly what I was pointing out.
> Employees can do all sort of illegal acts while in the employ of someone else... and when that happens you prosecute them (if it's egregious enough).
Sure. But if you're a FOSS project that they've contributed code to, with or without copyright assignment, that doesn't help you. You've still got to rip it out.
Sigh... I must have been unclear in my GP comment. So I'll go back to your GGP and try another tack:
> > > When writing GPL'ed code for your employer your employer must obviously be (made) aware that that code is going to be licensed under the GPL. Therefore, as the copyright holder -- they have already given permission for that license to be used or they must do so.
But if you write code and release it under the GPL there's nothing to say that you necessarily are doing it "for your employer". People could well assume that since they wrote something on their own machine and their own time, it has nothing to do with their job -- and then be in for a nasty surprise when their employer has a different opinion on that. The employer may well have had no idea at the time that someone was writing and releasing code, so they have neither already given permission for it to be licensed thus, nor do they have to.
> Sure. But if you're a FOSS project that they've contributed code to, with or without copyright assignment, that doesn't help you. You've still got to rip it out.
That was kind of my point, at least. Anyone can fake a copyright assignment form if they really want to, so we're not better off asking for it?
Dunno fersure, but probably yes, after all: If you're the project and have a signed statement, at least that shows that you're not just blithely grabbing whatever you can but are actually doing your best (WTF else could you do?[1]) to ascertain that you are in the clear. If the statement the contributor signed is false, that's on them, not you.
___
[1]: What you could do is perhaps have the statement include an explicit bit about "I don't have an employment contract that assigns this copyright to any employer / I have permission from my employer to sign away this copyright on their behalf; see attachment 2B". Dunno if these assignment docs already have that. If not, perhaps they should.
Perhaps a nitpick, but this doesn't seem to take account of derivative works like forks. If Alice releases libalice under a permissive licence, Bob can develop a fork of libalice and release that fork under the GPL.
That’s the part I’m stuck on. How would I do that on code I do not own, because I wrote it for hire?
I’m guessing there a legal answer to this question somehow, it has to have come up at some point.
Well anyone can write a letter that says "I hereby grant you a license to use this code under these terms...", but if they don't hold the copyright on it then the letter is meaningless (or maybe fraudulent). So in court you would have to prove that that person's copyright is actually valid, and if the code was written by someone who was employed and their employer didn't sign a disclaimer of work-for-hire ownership claims, then that could be disputed.
If you want to enforce the copyright against other people, as the FSF did, then that's bad. If you just want to avoid getting sued yourself, then it's probably not really a problem, because the employer would have to positively prove that they held the copyright to be able to enforce it. That said, some projects that don't require copyright assignment do still require a disclaimer of work-for-hire claims in their CLA.
One noteworthy case is that Linus did not release the kernel as "GPL 2 or later" and as such it is still GPL 2, and incompatible with GPL 3 licensed code.
Of course (almost?) all GNU and FSF projects, like GCC, include the "or later" clause.
"Random acts of rms" aren't a new problem for the GCC developers, and resulted in the egcs split, have caused ongoing pain with people trying to improve the ability of GCC to integrate with IDEs, and of course there's the whole debacle where the Clang developers offered their work to the FSF but Stallman missed the email and found it a decade later...
However, several of the lead developers for C++ (at least) announced they were no longer going to be assigning their code ownership to the FSF in the wake of the recent FSF calls around rms, which has put the GCC project in the position where the have the choices to:
1. Hope the FSF change their mind and prioritise free software ahead of the Cult of Richard.
2. Commit to shipping a sub-par and increasingly irrelevant free software compiler.
3. Drop the CLA requirement.
In the absence of any change on the first point, the third option looks like the best way to ensure that there is still a high-quality, GPL complier available.
Stallman himself has confirmed that they did. Where does this "supposedly" come from?
And even if he had sent it to RMS, how would the failure be described as Lattner's choice to "not follow up with RMS"? How could it be accurately described as anything other than the opposite: RMS not following up with Lattner?
More like a necessity to keep the project alive. Half of the top contributors threatened to leave when FSF tried to coup the steering committee.
(Replied to you in another place as well) what is the source for “coup the steering committee”?
Another solution which other projects use is a requirement that it be licensed to that project, and that project alone as permissive, which has no greater risk than assigning copyright to that project, the project can now relicense the code as it sees fit, but one continue to owns once work and one is free to license it to others how one sees fit, including not at all.
There can be another split.
Lattner begins working on LLVM, a code generator. He and his advisor publish a paper "Architecture for a Next-Generation GCC" <https://llvm.org/pubs/2003-05-01-GCCSummit2003.html>. When he considers this work sufficiently mature, Lattner attempts to donate it to the FSF and get it into mainline GCC, but he gets rebuffed. Apple, who has taken an interest and is his employer by that point, really wants LLVM to be a thing, though, so two years later, they announce Clang and eventually turn out an entire compiler toolchain. It transforms from the original LLVM per se into what people mean when they say "LLVM" today: the work at llvm.org—which, again, all started from what was expected to be a replacement for GCC's code generator.
"That way they are absolutely sure that there will never be a problem." just doesn't seem correct in that case.
Is that actually true though?
Suppose Alice has a full-time job with HyperSuperMegaSoft. Alice writes a patch to IndependentSoftwareFoundation's FooBolCompiler. When Alice submits the patch to IndependentSoftwareFoundation, she warrants to IndependentSoftwareFoundation that she has the right to do so. Years later, HyperSuperMegaSoft decides to sue IndependentSoftwareFoundation for including Alice's patch in their FooBolCompiler, because they claim Alice never got proper internal approval (under HyperSuperMegaSoft's internal policies and procedures) to submit the patch. Is a court going to invalidate Alice's agreement with IndependentSoftwareFoundation because Alice didn't follow the right internal procedures with her employer? Or will the court decide that IndependentSoftwareFoundation shouldn't be punished for Alice's mistake, that HyperSuperMegaSoft is bound by Alice's actions as their employee even if they didn't approve of them, that IndependentSoftwareFoundation has the right to use the software under the agreement, and that HyperSuperMegaSoft can't successfully sue IndependentSoftwareFoundation (or FooBolCompiler's end-users)–they may still be able to successfully sue Alice for violating her employment contract (although that probably is far less an attractive proposition to HyperSuperMegaSoft than suing IndependentSoftwareFoundation is.)
IANAL so I don't know what the right answer is. (The right answer probably depends on the jurisdiction.) But I get the impression some people assume that HyperSuperMegaSoft would automatically win against IndependentSoftwareFoundation, possibly without having good justification for that assumption.
Internal procedures are not the law. The contacts are. If the contract says her software belongs to the company, then it does. (Unless the country law says otherwise of course)
In the same way I can't legally sell you a copy of Windows license that I totally promise I've got an agreement with MS about. It's not a license I have rights to.
Also, employees can act as agents for their employers. Suppose Alice falsely warrants to IndependentSoftwareFoundation that she has her employer's approval to submit the code in question. If an employee makes an unauthorised agreement with IndependentSoftwareFoundation, I don't think a court will necessarily automatically invalidate that agreement just because the employee wasn't properly authorised. It depends on the circumstances.
It is like the case of the employee who buys an expensive dinner on the corporate credit card, and then the employer rejects the expense claim as violating policy. The employer can't refuse to pay the credit card company, or the restaurant, because the employee violated policy. The most the employer can do is fire the employee and sue them for damages. The employee entered into a contract with the restaurant on behalf of their employer, and the employer is bound by the contract even if the employee wasn't authorised to enter into it.
> In the same way I can't legally sell you a copy of Windows license that I totally promise I've got an agreement with MS about. It's not a license I have rights to.
Different situation in a couple of ways. Firstly, you didn't have anything to do with developing Windows. Suppose a Windows developer writes some code and puts it in Windows (under their Microsoft employee copyright assignment) then puts the same code in some open source project (under some other copyright assignment they sign without Microsoft's knowledge or consent). That's the scenario I'm talking about here which is rather different from the scenario you are talking about.
Secondly, Microsoft Windows is famous and if some random person (with no apparent association with Microsoft) tries to sell you a license to it you have good reason to suspect the license is invalid. Some random piece of code a developer writes isn't famous and so someone who receives it doesn't have the same grounds for suspecting it. Courts tend to have more sympathy for people who make reasonable good faith assumptions than for people who assume things that a reasonable person should know are unlikely to be true.
As I said, I'm not a lawyer and I'm not claiming any particular answer here is necessarily the right one. I think it likely depends on the jurisdiction and the specific details of each particular case. I just don't think it is as clearcut as some other people (including yourself) seem to think it is.
But the original claim was "That way they are absolutely sure that there will never be a problem." - and for that one, it's obviously not true - it's going to be a problem in the situation I described. It may be a mistake with a good faith assumption, and there may be agreements because it's a trivial amount of code. But it's not going to be "haha, that person did a little bit of fraud, let's ignore it".
It isn't just fuzzy what the court will decide with regards to damages – I think it is also (at least sometimes) going to be fuzzy with respect to what the court will decide as to the substance of the dispute.
> But the original claim was "That way they are absolutely sure that there will never be a problem." - and for that one, it's obviously not true
You can never be absolutely sure there isn't going to be a problem. But you can't be sure there is going to be one either.
> But it's not going to be "haha, that person did a little bit of fraud, let's ignore it".
There isn't necessarily any fraud involved here. The employee may have a good faith (even if mistaken) belief that they are allowed to submit the code to the open source project. The open source project may have a good faith and reasonable belief that they are legally allowed to receive it. In that scenario, neither party is committing any fraud. And if the employer later decides they don't agree with what happened, there is no guarantee the employer will necessarily always win a case against the open source project.
The legal system probably will (and I gotta admit it seems reasonable to me too), because she received consideration for the former contract.
So, sorry, but I think anyone will have a hard time arguing against "How could you think you had that left to give away to Party X, when you already took / are taking the money for selling it to Party Y?"
So, when I presented a hypothetical involving two contradictory contracts, both contracts (presuming a common law legal system) necessarily have consideration, or else you are denying one of the premises of the hypothetical.
Another possible consideration the project could offer Alice would be the intangible benefit of having her code included in the project. Those intangible benefits include the benefits to Alice's reputation (she can truthfully say "I wrote part of X"), and also the maintenance benefits of upstreaming code.
Legally, consideration doesn't have to monetary. It can be something intangible, such as a copyright license, reputational benefits, the maintenance benefits of upstreaming, etc. All that's really necessary for consideration to exist is each side has to give something to the other, but usually the legal standards for what counts as consideration are pretty low.
B)ut still: If she does that while already being employed, then she has already signed away those rights to her employer (in [most jurisdictions of] the USA). So she just simply no longer possesses those rights to sign away to any project, whether for consideration or not. Because as an employee, she almost certainly already got consideration (salary) for them. The monthly (or is it still weekly / biweekly over there?) paycheck is just such a humongously obvious proof and reminder of this.
> We recommend against using Creative Commons licenses for software. Instead, we strongly encourage you to use one of the very good software licenses which are already available
> Unlike software-specific licenses, CC licenses do not contain specific terms about the distribution of source code, which is often important to ensuring the free reuse and modifiability of software. Many software licenses also address patent rights, which are important to software but may not be applicable to other copyrightable works. Additionally, our licenses are currently not compatible with the major software licenses, so it would be difficult to integrate CC-licensed work with other free software. Existing software licenses were designed specifically for use with software and offer a similar set of rights to the Creative Commons licenses.
https://creativecommons.org/faq/#can-i-apply-a-creative-comm...
Then there is a secondary question on whether you contribute the code under a specific license (say Apache 2.0 GPL, etc.) or whether you assign the copyright.
In the former case the code can only be used in accordance with that specific license, in the latter case the code can be re-licensed by the copyright holder.
In either case the company could claim that the employee did not have the right to contribute the code, but (AFAIK) that is independent of a copyright grant vs license grant.
You don't need copyright assignment for the case you mention: you can require that an officer of the employer make the contribution, or that the contribution be in the name of the employer.
I think this should be illegal and if employer claims ownership of your time outside of working hours, they should be required to pay accordingly, perhaps with out of office extra rates.
Unfortunately there is not much a poor employee can do against a multi billion company that avoids tax and has more money to spend on lawyers than some smaller countries could...
B) Not even everywhere in America, I think -- ISTR reading about how employment terms like that are illegal in some state(s?).
Related story: a couple of years ago, the current maintainer of an Emacs package reached out to me. Apparently the FSF wanted to make it part of the official Emacs distribution, and wanted me to assign my copyright to them. I was happy to do so, BUT: the code was written more than 20 years ago when I was at university, which (according to the FSF) meant I needed to get a copyright release from the university, in a country I no longer lived in and that I had not interacted with for literal decades. This seemed like far too much trouble at that point, so I gave up, and the package never became part of Emacs.
cf. The Mickey Mouse Protection Act https://en.m.wikipedia.org/wiki/Copyright_Term_Extension_Act...
In my experience it is a massive hassle to get the copyright disclaimer from my employers. I'm currently on hold from contributing to Emacs because my paperwork is working its way through the legal bureuacracy of my new employer. Also, I have former coworkers from previous companies who were enthusiastic about Emacs, but unwilling to go through the trouble of getting the paperwork to contribute.
I think getting this paperwork through is probably more difficult in my industry, than in others -- I do R&D at a large pharmaceutical.
Still, I think the copyright disclaimer is one of the biggest factors that is limiting the number and diversity of Emacs contributors. I also think it's unnecessary, as Linux does not have this requirement, and it has successfully enforced the GPL, for example on router manufacturers.
The reason for this is that the process for upstreaming it was significantly more involved that writing it, and also that they require my name and address for it and would intend to publish my name publicly.
Wine also has the requirement for publishing names of all contributors, which the project claims is about “trust”. Even if I were to trust Wine with my name, which I more or less would, I do not trust everyone who sees my name in that public file with it.
It's not very different from the way things work today, where many projects insist on doing everything through GitHub, and if you aren't on there, then it's a massive PITA. It truly is the Facebook of the programming world, down to how oblivious everyone inside the gates are about anything outside of it. ("What do you mean you can't RSVP because we're using Facebook to do that? Isn't everybody using Facebook?")
I trust the FSF, but I have no idea who the FSF will be in another 20 years.
I am quite certain that when the generations that made this happen are gone, computer world will be back at business as usual like it was in the shareware days.
Also, there are diehard Libre GNU/Linux out there beside Stallman behind several projects.
They aren't. Google's play store and Apple's app store are examples of thriving shareware platforms.
Also, there is almost no shareware.
According to the definition [0] of shareware:
Shareware is a type of proprietary software which is initially shared by the owner for trial use at little or no cost with usually limited functionality or incomplete documentation but which can be upgraded upon payment.
This includes subscriptions and in-app purchases.
Nothing new really, unless you want to be pendantic on the real meaning of "open source" as defined by Open Source Initiative.
At the end of the day it won't matter, because those developers have bills to pay so eventually idealism gets replaced with real life.
> The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
> Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.
(The GPLv3 goes on to support some stuff about naming a "proxy" to approve new versions in addition to the FSF.)
I'm no lawyer, but I imagine that would prevent glaringly-evil GPLv4 from being upgradable-to.
The part about being able to link AGPLv3 code, I'm not sure what is supposed to emphasis. Care to expand?
I used to think the AGPL was an EULA based on an interpretation biased by how people think the AGPL works. Upon looking into this more closely, I've realized this is most likely not the correct interpretation.
Instead, my current opinion is that the AGPL is just a terrible copyright license that is almost impossible to comply with (most AGPLed projects without copyright assignment violate their own license - if you think this doesn't make sense, what I mean is every contributor violates every other contributor's copyright), while not actually protecting against proprietary SaaSification in any legally enforceable way. I could go into more details, but honestly I've told this story one time too many, so I'll just encourage people to read clause 13, word for word, carefully, and think about what it actually means, not what the FSF has convinced everyone it means.
If a copyright license is the right or wrong place to address restrictions outside copyright law is an interesting discussion to have, but "similar in spirit" seems to match pretty well. I for one do not care if the legal restrictions sit under regular copyright law, software patent law, or Digital Millennium Copyright Act subsection DRM. They are pretty much similar in spirit.
I don't have a big problem with the and newer term. Let's imagine three possible scenarios. Note: Copyright assignment is different from an "and newer" clause and it's not the subject of this comment.
1. The new license is more restrictive, e.g. the FSF went full evil, GPL became an "All Rights Reserved" proprietary license. Outcome: everyone will just keep using the current version without an upgrade.
2. The new license is more pessimistic, e.g. the FSF went full pessimistic, GPL became a BSD or a public domain license. Commentary: Doing so will not create direct harms to the existing users. Since the software remains free, I'll simply keep using it. And speaking as a developer, in the very unlikely scenario that the FSF decided to end copyleft, chances are, I'd likely to agree. However, a dogmatic copyleft advocate may point out that it's a potential vulnerability.
3. The new license is similar, e.g. GPLv2 to GPLv3. This is the intended outcome.
There are some reasonable objections, but I don't see it as a big threat, so I have no problem with it.
But if an evil version of the GPL comes out and someone forks your code and relicenses to it, you can no longer merge their changes.
The spirit of GPLv2 is "I give you this source code, if you give it, or a modified version of it, to anyone, you have to (perhaps also) give it to them in a form they can actually use.".
The history of GCC includes a dark period in which version control wasn't public, and the project was dumping release tarballs on the GNU ftp server. Then, Cygnus Solutions started the Experimental GNU Compiler Suite (EGCS), a fork with a much more open development model, capable of attracting contributions from the whole Linux and embedded industry. Within a few years, many Linux distros had switched to EGCS, including Red Hat.
If I remember correctly, talks of reconciliation started after Red Hat acquired Cygnus: other distros were worried that their competitor had gained too much control over a critical component of the OS. Eventually, the GNU developers and the EGCS contributors agreed to merge back under the GNU flag, but keeping EGCS's open development model.
Nowadays, the GCC project is still hosted on the Red Hat-owned Sourceware servers, and its governance body is a technical board of contributors with various industry affiliations: https://gcc.gnu.org/steering.html
TL;DR: the FSF and the GNU project no longer have much influence on GCC's direction.
There wasn't a working Linux libstdc++ from the FSF that anyone could build until EGCS fixed it; no Linux distros that supported C++ ever used an FSF version. They had to use weird hacks built by HJ Lu.
please no license fights.
Think of what would have happened if some distros took alternate tooling paths? What about popular tools? We have to have both toolchains on our systems.
It is clear from how things turned out that EGCS wasn't about ownership or splitting the ecosystem. If one were to do this now, you would constantly rebase against upstream while you sort out the politics.
Clang/LLVM was both about implementation architecture and licensing, but had GCC been more modular, it might not have existed as well.
The FSF has proven itself to be a cult incapable of moving on from or existing without RMS, so the simple fact is that, like all cults, it will die when he does. Luckily, the FSF does not embody Free Software, and the greater movement doesn't need either to survive.
And "who the FSF will be in another 20 years" is down to its statutes. Presumably the board has a duty to follow those, including (s)electing successors for themselves who also will do so.
With the copyright assigned the owner of said copyright can release the code under any license of their choosing.
Some dual license open source projects do this, the organization requires the copyright assignment and hence they can release the code under an open source license and their own closed license. License changes here are perfectly OK (legally at least).
Interesting cases are those without a copyright grant. Now you allow the group to only produce copies and releases in accordance to that specific license. License changes now are questionable. Can you relicense Apache 2.0 as AGPL? BSD as Apache 2.0? (Without owning the copyright, my guess in both cases is no.)
To my eyes, the number of open source drivers (near zero) available for Apple hardware, developed to run on their BSD-licensed kernel, pretty much provides all the evidence I need.
No, a BSD Linux would have long since disappeared behind the curtain of some tech giant or another, just like Mach did into NeXT/Apple.
Assuming a BSD-licensed Linux is a fairly small step away from assuming that Linux didn't exist given the existence of various BSD Unix flavors. And most people I know feel fairly strongly that, in the absence of Linux, BSD Unix would have come to the forefront.
For anyone interested, here's a debate between Bryan Cantrill and Steven J. Vaughan-Nichols I recorded last year on the topic "If Linux didn't exist, would we have had to invent it?"
I was porting software between Windows NT/2000, HP-UX, Solaris and Aix.
The Red-Hat Linux and FreeBSD boxes we had on the office were used for sharing mp3s, quake server, and replication of our CVS server.
And in the absence of Linux entirely, most people I know consider that one of the BSDs would have been rallied around because there was just too much market demand for an open source *nix operating system.
Also all new POSIX FOSS OS for IoT are MIT/Apache license based, just give them a couple of years and see which one board makers will be picking.
Linus' opinion always was: "I give you source code, you give me your changes back, we're even."[1] That's his summary of GPLv2 and I think such an attitude is reasonable, and it might have certainly aided the Linux kernel development over time (almost sure of it).
He disliked the GPLv3 exactly because of that. Because in his opinion it's (paraphrased) "I give you the source code, and now I dictate to you how you are allowed to use it." (see same link).
Whether a BSD/MIT license hurts or helps a project is pure speculation. More permissive licenses might make code reuse more attractive, and be considered "more free" regarding code reuse. As to what code contributions you miss out on? Hard to judge. There definitely are companies building products utilizing FreeBSD / OpenBSD without committing all their changes back (or none to begin with).
Pick the right license for your project. You don't care and are happy if someone uses it? Use a permissive license (MIT/ISC). You want to develop the product, improve on it, and want the changes back? Use something like GPLv2. You deeply care about your code running on open devices? Use GPLv3.
There's no "one obvious right way" as far as I am concerned.
[1] https://youtu.be/5PmHRSeA2c8?t=2840 (from there to 56:51 it's about open source licenses)
That's not correct, you just have to make it available IF you redistribute the code. That's why you will never see a Google Data-center Linux-Kernel.
The latter occurs decently often in the Linux Kernel world, and if there isn't much desire for the changes they can technically exist but never get merged.
Whereas there are other drivers where the only one that cares about them is the company that uses them, but their developers have worked to get it actually upstreamed and help maintain it.
While the GPL doesn't require upstreaming, it does require that derivative works that are distributed to users must make sources available. If those sources are available, then users or project maintainers can choose to upstream those changes if they want to.
Apple, Sony, Nintendo etc don't make those source changes available despite distributing derivative works to users, so users and project maintainers can't upstream changes even if they wanted to.
https://www.techrepublic.com/article/what-is-microsoft-doing...
Oh yeah and SUSE and SCO is another story..like written in you article...
https://www.zdnet.com/article/linus-torvalds-isnt-worried-ab...
This is wrong. https://en.cppreference.com/w/cpp/compiler_support
Then you'll see where people are wondering.
Want to use modules on clang? Wait at least another year more.
No wonder that Red-Hat is hiring for clang devs, alongside the contributions they already do for GCC.
This seems wrong. Clang+LLVM has supported C++ modules for a while.
Proper ISO C++20 modules are yet to be supported.
From wikipedia:
The LLVM project started in 2000 at the University of Illinois at Urbana–Champaign, under the direction of Vikram Adve and Chris Lattner. LLVM was originally developed as a research infrastructure to investigate dynamic compilation techniques for static and dynamic programming languages. LLVM was released under the University of Illinois/NCSA Open Source License, a permissive free software licence. In 2005, Apple Inc. hired Lattner and formed a team to work on the LLVM system for various uses within Apple's development systems. LLVM is an integral part of Apple's latest development tools for macOS and iOS.
Apple chose to develop a new compiler front end from scratch, supporting C, Objective-C and C++. This "clang" project was open-sourced in July 2007.
I know how I'd answer your question.
FreeBSD back then did not want to install on my PC. First problem was that I had an IDE CD-ROM and they only supported SCSI CD-ROM.
Second problem was that it would not install in the unpartitioned space on my DOS/Windows SCSI hard disk.
Linux supported IDE CD-ROM and could install on the same disk as DOS/Windows.
Result: I installed Linux, and have used Linux ever since then when I need a free Unix-like system.
According to their forums, there was no IDE support because nobody would seriously have IDE on a server. At the time you could make a reasonable case for that for hard disks, but not for CD-ROM (especially since IDE CD-ROMs were around $100 and SCSI CD-ROMs were around $400).
The disk sharing limit was because they didn't think you could reliable infer the cylinder/head/sector (CHS) to logical black address (LBA) mapping that the other operating system(s) on the disk used. (The standard PC partition map at the time specified everything using CHS addressing, but disk interfaced had moved on the LBA addressing. Someone had to make up a pretend geometry for the disk, and then everyone had to consistently use that mapping to convert between CHS and LBA).
In theory, you probably could find a legal partition setup with free space that was unsafe for another OS to use due to ambiguity of the mapping, but in practice that did not happen.
[1] https://en.wikipedia.org/wiki/UNIX_System_Laboratories,_Inc.....
Linux went beyond "could install on the same disk as DOS/Windows". Linux could install on the same filesystem as DOS/Windows. No need to repartition, no need for unpartitioned space. If you later decided Linux was not to your liking, you could simply erase your Linux directory.
Result: I installed Linux on my C: partition, choosing a distribution which came with UMSDOS support. Some time later, I noticed that I rarely booted into DOS/Windows anymore, so I moved everything from the D: partition to the C: partition, erased the D: partition, and reinstalled Linux on that free space (using ext2 instead of UMSDOS). I have used Linux ever since then.
In fact,I deeply believe had Microsoft been more serious about POSIX support on Windows NT and Linux wouldn't even had a chance.
Fortunately for Linux, Windows NT/POSIX was only for fulfil a checkbox on government contracts.
People considered the GPLv3 excessive. Now we see tivoization everywhere, and people cries because corporations are soooo evil. Well, maybe you should not use licences that let them do that. People who think the FSF is too idealistic are missing the point - the FSF is terribly realistic, it's the ones who don't care about software freedom who end up learning the hard way why the FSF exists.
But that's a separate fight than the original GPL fight, and not necessarily one that really should be fought with the same fervor.
Apple is perfectly willing to maintain, say, Swift and LLVM as Free projects; but they also have a proprietary fork with extra bits exclusive to their own hardware. For example, their proprietary GPU drivers compile shaders with it. LLVM being permissively licensed and owned by them means they have no reason to release those bits.
This is not a hypothetical problem; it causes real harm to downstream users of LLVM. Rust has to support the current version of Apple's LLVM fork as well as the LLVM they ship with specifically just so you can compile watchOS apps, since that platform requires a proprietary bitcode format Apple never documented and only supports in their proprietary fork.
Had Apple stuck with GCC they wouldn't have the legal ability to do this. Even if they had used GPL on LLVM, that license alone means that any contributions they take would also bind Apple to the same license. That's why people are extremely apprehensive about CLAs, because they're basically one-sided. The project vendor is free to sell exceptions or maintain proprietary forks, but you still have to comply with GPL.
IIRC, the bitcode format isn't proprietary—it's part of the open-source LLVM. The only issue is that it's not a stable format, so they need to use Apple's LLVM version and not an earlier or later open-source one.
This variant wasn't and will never be upstreamed.
They could still do as they like, as it’s theirs. Do they accept significant code from the community?
This is why I find the “use agpl” claims about projects run by a company disingenuous- they’re using the licence restriction to prevent competition while they have the freedom to offer “enterprise” editions however they wish.
Companies that want to release software as GPL but also sell exceptions or make forks either cannot accept third-party contributions (as then they'd be bound by the contributor's derivative copyright interest in the code) or have to require contributors sign CLAs.
Projects with distributed copyright interest and a copyleft license governing all of that, like the Linux kernel, practically cannot relicense or sell exceptions. That's the power of the GPL: everyone has to contribute on a level playing field.
Because if they don’t, the gpl wouldn’t help.
But regardless of that - I think this is the perfect example of the copyleft crowd not understanding the concept of compromise.
Apple creates something, releases it as open source but also maintains some private extensions, and the response is: well why didn’t you give it all to us?
Yes, they do. LLVM has a large number of non-Apple contributors.
Apple don't own it. They piggyback off a lot of other people's work in LLVM.
They tried. rms lost the email.
I'm not sure I follow. Apple's LLVM fork could open source and Rust would still have to support two LLVMs if the WatchOS code wasn't upstreamed. Apple has no responsibility to upstream code on the GPL, nor do the LLVM maintainers. Given that Apple's bitcode would be proprietary / undocumented (GPL doesn't require you to document your code), it would take a dedicated individual to make sure the two projects are in sync. If Apple isn't doing that now, I'm not convinced they would do it under GPL.
The GPL would legally require Apple to publish source code for all LLVM forks they make, if they accepted third-party contributions under GPL terms. It doesn't require them to upstream it anywhere, you just have to let someone else do it.
Some moved from weak licenses to AGPL. Some, like MongoDB, to closed source.
Based on this evidence, it's very likely that Linux has been protected by GPL.
For example: https://invent.kde.org/network/neochat/-/blob/master/LICENSE...
Copyright assignment is certainly a flexible way of doing that. But, if all you want is to upgrade GPL, it's completely unnecessary. As most GNU projects are licensed under the "with newer" clause, everyone, including GNU, can redistribute it under a new license unilaterally, without a copyright assignment - which, I suspect, makes a good argument to stop the copyright assignment requirement.
Another important argument for copyright assignment is to allow centralized GPL enforcement. If a bad faith actor appears, the project can make the strongest legal defense. In my opinion the whole system works to enable this, e.g. the FSF also requires you to get the copyright disclaimer from your employers, otherwise the strength of the legal defense will be weaker.
Unfortunately, for multiple reasons, a huge enforcement action is an extremely rare occurrence (the last, and possibly the only one, was the Cisco WRT54G case), and allegedly, some projects like the Linux kernel are even against active enforcements due to conflict of interest, thus, although I support active GPL enforcement in principle, based on the historical records I cannot say copyright assignment is all that useful (although I wish it would be). Moreover, the license enforcement model by the Software Freedom Conservatory showed centralized enforcement without copyright assignment appears practical [0] - all of these, I suspect, also make a good argument to stop the copyright assignment requirement.
[0] https://sfconservancy.org/copyleft-compliance/enforcement-st...
Does it mean it could "upgrade" to GPL 4.0 as well?
>The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
>Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation.
>If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program.
>Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version.
As long as the domain name (the key asset) is just owned privately by some project member, you have no guarantees.
It's not like they're opposed on principal to new license versions to benefit specific projects either, e.g. GFDL 1.3 has the "Wikipedia can relicense to Creative Commons" exception
The licence explicitly says: "The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns."
A non-copyleft licence would not be similar in spirit.
I could certainly imagine some proprietary code loving coalition seeking to control the FSF after RMS's eventual demise, so that they could create a new, non-copyleft licence.
GPL 3 is aware of such concern: it says, "If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program", apparently trying to provide an alternative path to allow Linus Torvalds to accept only the versions he wants to accept.
So GCC is 3.1 or later. RMS dies and Google, Facebook etc get in control of the FSF: after all, they are major contributors and beneficiaries. While this is going down, fearing the badness around the corner, the GCC project continues work on GCC under 3.1 only (and attempts to stop it, unsuccessfully). The FSF releases 4.0 which is a long and wordy version of 3 clause BSD.
Google now forks the latest version of GCC before the project relicensed it. There are two versions continuing: Google GCC under GPL4+ and GCC GCC under GPL3.1. The community doesn't entirely know which branch to contribute to and amidst the mire all the new features of C++30 get added to a proprietary fork of Clang. In general, free software gets regarded as dusty and old and most development happens on compilers people bought.
A slogan without enforcement is toothless, and businesses only respect teeth.
Individual liberties can only go so far. If we want freedom as a society it is necessary to restrict individual freedom at the point that it begins to affect the freedoms and rights of others. In practice that means, unfortunately, governments, police and armies are necessary.
Permissive licences are idealistic. Copyleft/FSF-style licences are pragmatic.
And yes I know copyleft only requires only providing code to your users, but in practice the organization assumes that means the distribution can’t be enforced.
> But what happens when a huge chemical company starts dumping waste on your lawn?
is "sue them to oblivion".
I trust the FSF and it seems like a good idea, but I'm not sure why.
The main one is it is easier to change the license if you want to.
IANAL so I'll probably mess up these next two, which I believe are more theoretical than anything in regard to software. At least in the US.
It is possible for a copyright holder to revoke a license. so there could be an important contribution living in the code base and then one day the author could revoke the license and they would have to remove the code, and somehow prove their replacement was not infringing.
There is a concept of Joint Authorship. Where it could be possible for a contributor to claim joint copyright over the entire project, and then release it on their own under any license they want. I could be wrong, but I believe it has happened where book editors that didn't have an air tight contract, were able to claim joint copyright over a book they edited, and release their own versions with a different publisher.
I don't believe that is true. A license is a contract; there are only two ways to revoke a contract: if the contract is illegal or if the contract provides terms to let you revoke it. If you publish software under the GPL, there is no way to revoke the license.
You could stop supporting the contribution in the code base and release alternate versions under different licenses, but the versions in the code base under the GPL remain available under the original terms.
GPLv2 omits such language, so to make it irrevocable you are going to want to find consideration. You can probably whack it a few times with your promissory estoppel stick hard enough to get some consideration to bleed out of it.
That's probably good enough to get irrevocability.
It turns out this didn't happen. People who want to use free software and to stay legal just... honored the license. People who didn't want to do so used other software. And the only people who actually were breaking the license turned out to be tiny fly-by-night operations in parts of the world where copyright litigation wasn't a very useful tool anyway.
But the FSF has had a policy of favoring compliance and forgiveness over punishment, and they've aggressively avoided litigation-- instead preferring to negotiate for compliance with goodwill loss as the threat-- to the point of contributing to some splits in free software. E.g. this is a point of disagreement between SFC and FSF.
- https://sfconservancy.org/copyleft-compliance/principles.htm...
IIRC FSF has only sued once, conservancy has like 100x the rate of lawsuits per years-existed. :P
Also, what if a company decides to ignore the GPL and pay up? The courts and law understand monetary damages. The FSF runs the risk of the judge deciding that the code is already out there, and the value the code is $X: therefore the infringer should reasonably buy a license for $X and doesn't have to give source code back. This would violate the spirit of the GPL, but would fit the letter of the law.
But the fact that the FSF hasn't in fact litigated isn't by itself a reason that preserving the clear ability to litigate isn't useful. We don't know how many cases an infringer was made more likely to come into compliance by the fact that work had clear ownership, particularly because the FSF has avoided litigation when they had other avenues open.
It is easier if they own all the code, but it isn't required.
It's not that simple. For joint works any single author can grant rights to the entire work. Do you know what the caselaw is regarding joint works as applied to typical FOSS projects? I don't. But I suspect it's less than crystal clear (see, e.g., https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2999185) and therefore creates significant risk when attempting enforcement. Litigation is costly, and a wrinkle like this could potentially be exploited by an infringer to drag out an enforcement case for many years.
That doesn't sound right - why would anyone ever contribute to a joint work if the other author can sell it to a publisher on their own? Wouldn't they then just take all the royalties and leave you with nothing?
2) A joint author still must share profits. See previous link and also https://repository.law.umich.edu/cgi/viewcontent.cgi?article... (But can a joint author claim waste--loss of commercial profit--if another licenses as FOSS?)
3) Joint authors in the business of commercializing their works (as opposed to accidental joint authors) would usually have a contract between themselves controlling licensing.
4) If it doesn't sound right, that's exactly my point. Copyright law is more complex than discussed on internet forums. Just because something doesn't make sense to a non-practitioner doesn't mean it's completely senseless to a practitioner. Corporate lawyers are often much more risk averse than law professors counseling FOSS advocacy organizations. But as mentioned by the previous SSRN paper I linked[1], joint authorship is typically considered to be detrimental and even fatal to the objectives of many FOSS licenses, which usually assume a model of distinct, serial contributions creating derivative (not joint) works.
[1] Chestek, Pamela S, A Theory of Joint Authorship for Free and Open Source Software Projects (July 2, 2017). Available at SSRN: https://ssrn.com/abstract=2999185 or http://dx.doi.org/10.2139/ssrn.2999185
To be clear, I'm not trying to say that all or even any FOSS works are or should be considered joint works. Just that the possibility could be a concern for lawyers contemplating enforcement. Certainly in other areas where you often see informal cooperation in the creation of collaborative works, such as in music, the issue absolutely does come back to bite people.
I mean, it's true that you could still win a case having to win those arguments, but it's harder.
Defense in depth isn't just a computer security technique. Any lawyer will tell you that the easiest argument to win is one that can't be brought in the first place.
Also statutory damages for willful infringement are very high As much as 150k per work which again still doesn't grant you a license.
IANAL but I don't think it works that way. They could pay up $X for damages and even get their license revoked. They still don't buy a license to perpetually violate the GPL.
There isn't much case law here. It will probably end up in appeals for years. In the end it doesn't really benefit anyone to take their chances in court.
You basically say that the court can order the copyright holders to offer an exclusive proprietary license to the violators for a "reasonable" price.
Isn't there any case law for license violations in general? For the purpose of this discussion this is just yet an other license violation, not necessarily tied to the GPL.
I wrote the blanket assignment back in 1989 or 1990. I still consider this a legitimate risk.
As a first step they had to show that Hellwig had made changes to code that VMWare uses that can be copyrighted. Especially difficult since every line in Linux is modified by a few different people. They failed at that and that ended the lawsuit if I remember correctly.
- Can the steering committee make that decision?
- Can the code be still easily(!) re-licensed to a possible GPLv4?
- How can code later be re-licensed to GPL with runtime library exception or to LGPL?
- Who should be named as copyright holder?
It might very well be that all these questions can be easily answered, but that should have happened before.
If they didn't get rid of the copyright aggreement there would have just been a fork or those people would have gone to work on other projects.
You cannot discuss things like this beforehand? You cannot do an RFD in the mailing list to gather feedback and questions? Even the announcement is sloppily written, because it sounds like gcc will now be licensed under GPLv3 exclusively (and not GPLv3+). This was later corrected in the thread, but confusion like this could have easily been avoided.
The announcement specifically stated that GCC "will continue to be developed, distributed, and licensed under the GNU General Public License v3.0." Until there is a revised license the "or later" is moot. One does not "continue" a policy that is a change in policy.
If this is the biggest complaint about the announcement, I think that the GCC SC did an excellent job.
Do you have a source for this? The story appears to be the opposite - RMS was on the steering committee list since 2012 and was removed earlier this year by the rest of the steering committee as a reaction to RMS being put back as a FSF board member. https://gcc.gnu.org/pipermail/gcc/2021-March/235091.html