An existing project which is licensed under Apache-2-with-Commons-Clause-1.0 should be advanced. A client wishes to pay me to write code in order that the code could be contributed to this project. Is payment for such work permitted?
5 Answers
Nothing in the Commons Clause talks about the development work itself, for which you would be paid. It only talks about the distribution of the software package under this license. So yes, payment for your contribution efforts is OK.
It needs to be mentioned that any license with the Commons Clause is not Open Source. It is not compliant with the definition of OSI and others. This category of licenses is called 'Source Available' (and strictly speaking it is out of scope of this site).
- 7,205
- 10
- 37
-
Thank you for answering the question, especially despite it doesn't belong on this site. Unfortunately I did not find another StackExchange where this question would be suitable - if there is please let me know. – TheProgrammer Jan 14 '22 at 08:20
-
16I believe the question belongs here. I think that 'in-scope definition' of this site should be slightly broader to cover marginal cases like this more generously. – Martin_in_AUT Jan 14 '22 at 09:10
-
1As I have received a few downvotes on my answer I would like to explain why I wrote it this way. The FAQ to the Commons Clause clearly states "Anyone not intending to “sell” the Commons Clause licensed software itself may view the source code, make modifications, submit pull requests to get their modifications into the software, freely use, embed and redistribute the software, make and distribute and sell derivative works." This is essentially what the OP plans to do. It does not say that the OP has to do this for free. – Martin_in_AUT Jan 16 '22 at 16:32
The Commons Clause 1.0, among other things, forbids you to offer paid services in relation to the software. That would include offers to extend the software with new functionality.
So, being hired (and receiving compensation in any form) to make changes to the software would be a violation of the Commons Clause 1.0.
There is a bit of a grey area when you are an employee of the company and you are asked to make changes to that software as part of your job. I can see wiggle room in the text of the Commons Clause that that might be allowed, but I am not sure if the authors of the software or a judge will look at it the same way.
- 29,549
- 3
- 46
- 83
-
1I disagree with your answer, Bart. The Commons Clause limits the ability to charge for selling, hosting or consulting/ support services. The development part (i.e. contributions to the project, which are then vetted by the maintainers) is not part of any of the mentioned restrictions. – Martin_in_AUT Jan 14 '22 at 08:30
-
Thank you for your answer. What do you say about the answer of @Martin_in_AUT above?
I would personally also understand, that extending software is not part of what Commons Clause prohibits since you are not making money with the software itself. Instead you are making money with your work, the code you write and own.
– TheProgrammer Jan 14 '22 at 08:32 -
1@Martin_in_AUT, my interpretation is that development falls under the category of a support service. Your interpretation is clearly different, but not less valid because of that. In the end, the only thing that matters is how a judge in a court case interprets the Commons Clause. – Bart van Ingen Schenau Jan 14 '22 at 08:41
-
3@BartvanIngenSchenau Let's agree to disagree on the interpretation of the term 'support service' w.r.t. development work, and pick it up again when we see a first verdict of a judge (I am not aware that any case with 'Commons Clause' was ever in court, especially not for this very specific detail). – Martin_in_AUT Jan 14 '22 at 09:07
-
Many modern programming languages are open source. Companies use them internally and extend their functionality to make products that they charge for. 'Tis how the world works today. – Michael Durrant Jan 15 '22 at 11:17
Yes.
From the Commons Clause FAQ (emphasis mine):
Commons Clause only forbids you from “selling” the Commons Clause software itself. You may develop on top of Commons Clause licensed software (adding applications, tools, utilities or plug-ins) and you may embed and redistribute Commons Clause software in a larger product, and you may distribute and even “sell” (which includes offering as a commercial SaaS service) your product. You may even provide consulting services (see clarifying discussion here). You just can’t sell a product that consists in substance of the Commons Clause software and does not add value.
The clarifying discussion includes this rationale from Heather Meeker, who drafted the license:
Consulting would not be "a product or service whose value derives, entirely or substantially, from the functionality of the Software." The value of consulting doesn't derive from what the software does ("functionality").
- 51
- 2
I think you probably can do this. Before I go on, I must note that (a) IANAL/IANYL, and (b) I'm assuming (1) you're not an employee of the payer, so work-for-hire isn't an issue, and (2) you're writing your code without reusing any pre-existing code, third-party free libraries, etc. If (b)(2) is not true, this answer doesn't apply, and frankly, I think you've got an insoluble problem.
The CoCl licence says that
Without limiting other conditions in the License, the grant of rights under the License will not include, and the License does not grant to you, the right to Sell the Software.
For purposes of the foregoing, “Sell” means practicing any or all of the rights granted to you under the License to provide to third parties, for a fee or other consideration (including without limitation fees for hosting or consulting/support services related to the Software), a product or service whose value derives, entirely or substantially, from the functionality of the Software.
It seems to me that your code does "derive value entirely or substantially from the function of the Software", since it's written solely to enhance the Software. Your authorship of the new code constitutes "a product or consulting service" in that context.
However, what CoCl says you can't do is be compensated to provide these to third parties. You (as Licensee) and the Licensor, between you, are the parties of the first and second parts.
I don't think there's any bar on your contributing the code to the project, and being paid to do so, provided the project is the sole rightsholder in the existing code. They will probably want to remain so, so it's likely the contribution will involve a Copyright Transfer Agreement, but that's a matter between you and the project, come contribution time. Make sure your contract with the payer specifies that you retain copyright to the work, so that you're free to do that if required.
- 48,547
- 4
- 122
- 166
-
Thank you for your very helpful answer! Everything you are assuming is correct, except of (maybe) one thing that I'm not sure whether I understood it correct: 2)b) I am using third party libraries that are under MIT licence but at least partly already used in the project I am contributing to. Does this make a difference? – TheProgrammer Jan 14 '22 at 10:56
-
@TheProgrammer I'm not sure it makes a difference, but it certainly complicates matters. Does the project know of, and desire, your contribution? – MadHatter Jan 14 '22 at 11:51
-
They limit the money that can be earned with consulting to a certain amount of money per year, so they are not completely against it but of course want to profit financially where they can – TheProgrammer Jan 14 '22 at 13:33
-
@TheProgrammer then I'd advise you not to use that library except inasmuch as it is part of the existing project, and not to use any other libraries at all. As I see it, you can offer a combination of project code and your code back to the project, and be paid for that, but once you start adding anyone else's code, it will get extremely messy. – MadHatter Jan 14 '22 at 15:22
-
but why is that? As far as I know I can use any code under MIT however I want, as if I wrote it myself, isn't that true? – TheProgrammer Jan 14 '22 at 16:52
-
@TheProgrammer no, it's not. The MIT licence has conditions on its use, albeit not at all onerous ones, and you as the licensee have no power to remove them, nor to permit others to do so. You also can't transfer the copyright to some other party. In at least these two ways, MIT-licensed content written by another differs from content written by yourself. – MadHatter Jan 15 '22 at 03:52
-
Oh I see what you mean. But isn't this the same as if someone uses a MIT library in his project that is under e.g. the Apache 2.0 Licence? That would also not be a problem. Also, you don't copy the code but rather just add a dependency, so requireing the usage of the MIT code but not including the actual code. So you don't actually have to "transfer the copyright" of the MIT code. – TheProgrammer Jan 15 '22 at 08:22
-
@TheProgrammer as you will recall above, I suggest the project may want a CTA - I would, if I were them - which is why copyright assignment is on my mind. My answer above also relies on you and the project being first and second parties to their/your license agreement, which is why I think third-party code will muddy the water. I don't say anywhere that it's an insuperable problem, but it is very likely to complicate things, and so I advise you to avoid it. – MadHatter Jan 15 '22 at 08:33
-
1I believe it very much depends on the way how the addnl library is included. For example if the MIT library was just included as a dependency, then there would be no issue, however if the code was directly copied into the new project it would require a close look at risks and merits and there I support MadHatter's recommendation for extra caution. – Martin_in_AUT Jan 15 '22 at 10:09
-
@Martin_in_AUT I see it the same way because otherwise noone could (neither for money, nor for free) create a pull request that is adding any new library. You don't need to transfer the copyright of something you are not directly copying into the source files in my opinion. – TheProgrammer Jan 15 '22 at 10:18
-
I know some see a difference between including a library as a dependency, and directly including its code. I don't, because I follow the FSF's line when it comes to dynamic linking and the creation of derivative works. However, I think we've all said our pieces, and clearly understand one another's positions, so I'd prefer the discussion not continue any further here. If anyone thinks they have a new question, please ask it as one. – MadHatter Jan 15 '22 at 11:18
-
Just to explicitly state what your last paragraph leaves implicit, if the project wasn't already using CTAs to ensure that all the code is owned by a single entity (or if it was based on earlier projects with separate copyright holders), then there are already multiple parties involved. Party A (the OP) asking to be paid by party C (the project) to improve code written wholly or in part by party B (another contributor) arguably counts as "provid[ing] to third parties, for a fee or other consideration […] consulting/support services related to the Software" written by B. – Ilmari Karonen Jan 16 '22 at 01:25
-
Also, if the project does own the copyright to all the code, then they can just grant the OP an exemption to the Commons Clause. – Ilmari Karonen Jan 16 '22 at 01:29
If the copyright to the commons-clause licensed code is fully owned by a single legal entity (which I'll simply refer to as "the project"), they can just grant you an explicit exemption to the Commons Clause. Under the circumstances you describe, I see no reason why they wouldn't want to.
If the code has multiple copyright owners (either because there are multiple contributors who didn't all transfer their copyright to the project, or because the code was forked from or otherwise based on earlier commons-clause licensed code with a different copyright holder), however, things are different. In that case, another contributor to the project could claim that you are, in effect, selling an improved version of their commons-clause licensed code to a third party (the project) without their permission.
(The way the Commons Clause is phrased, it probably doesn't matter whether you're literally selling the improved code or simply providing a paid service to write said code. Either way, it still counts as Selling under the definition given in the Commons Clause.)
At that point, the question becomes whether or not the value of your improved version of the code "derives, entirely or substantially, from the functionality of the Software" written by the (hypothetical) objecting developer(s). Unfortunately, that seems like a nontrivial question. There is an argument to be made that it does not, since you're presumably only getting paid for your improvements to the code, and not for the original code itself (which the project already has full access to anyway). But there are also potential counterarguments that could be made, especially if your improvements are only things like bugfixes or other changes that have no intrinsic use or value without the pre-existing code. Would I trust myself to predict how a court would rule on such a case? No, not really, especially not without knowing a lot more about the details of the case.
So, to be safe, you really should try to get permission from all the copyright holders of the existing code. If there are thousands of them, or if some of them can no longer be contacted, well, then you may have a problem.
All that said, note that the worst thing that a potentially objecting copyright holder could do is sue you, personally, for copyright violation. They cannot sue the project for buying your services, since the Commons Clause only prohibits selling, not buying, and even if you're found to have violated the license by asking for money for your contributions, the code that you've contributed will not be tainted by the violation. Even in the worst case, the project will still have a valid license (or CTA) from you to your contributions, and from all the other contributors to theirs, and can legally distribute and build on the combined work.
(Strictly speaking, the specific license underlying the Commons Clause could impose additional conditions that would "taint" the combined code and make it undistributable in such circumstances. But I'm not aware of any Open Source licenses that would do such a thing, and certainly I see nothing in the Apache 2.0 license that I believe could have such an effect.)
So, in the end, it all comes down to whether or not you're willing to personally take the risk that someone owning the copyright to part of the existing code, who you haven't managed to get explicit permission from, will find out about you getting paid for your contribution and disapprove of that so strongly that they're willing to spend the time and money to sue you for what's likely to be meager and uncertain returns at best. In most cases, I'd rate the likelihood of that as pretty low. That said, if there happened to be e.g. a hostile fork involved in the history of the project, and if some of the original authors were still angry about it, I might reconsider that risk estimate.
- 519
- 2
- 9
-
1Your answer appears to contradict the FAQ for the Commons Clause, which states: "Anyone not intending to “sell” the Commons Clause licensed software itself may view the source code, make modifications, submit pull requests to get their modifications into the software, freely use, embed and redistribute the software, make and distribute and sell derivative works." – Martin_in_AUT Jan 17 '22 at 22:58
-
1@Martin_in_AUT: The only part of your quote that explicitly allows receiving monetary compensation is the final part about being allowed to "sell derivative works", and indeed that's (arguably) exactly what the OP would be doing. The only question is whether the derivative work the OP would be selling back to the project would derive its value substantially from the original software it is based on. If yes, it would seem to be forbidden by the plain language of the Commons Clause itself, whatever the FAQ may say. – Ilmari Karonen Jan 17 '22 at 23:16
-
1… Based on the rest of the FAQ, the intent of the Commons Clause is clearly to permit sale of "value added" derivatives, such as software products that merely use a minor Commons Clause licensed subcomponent, while forbidding circumvention of the sales restriction by just making trivial or cosmetic changes to the software. Somewhere in between those two extremes lies a borderline between derivatives that can or cannot be sold, defined by the word "substantially". Exactly where, I don't see anyone but a judge being able to tell. – Ilmari Karonen Jan 17 '22 at 23:17
to license the contribution on any terms they like– TheProgrammer Jan 18 '22 at 15:42