TandoorRecipes/recipes

Licensing: AGPL and Commons Clause conflict with each other

MazeChaZer opened this issue ยท 19 comments

IANAL, but I think the Commons Clause exeption cannot be combined with an AGPLv3 license. Quoting from the AGPLv3:

7. Additional Terms.

[...]

All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10.

[...]

10. Automatic Licensing of Downstream Recipients.

[...]

You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License.  For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.

That is interesting. From what i read when making the change Richard Stallman explicitly states that selling exceptions for GNU GLPL licenses are ok (both legally and from a moral/philosophical standpoint) but maybe this is only for GPL and not AGPL.

Please make sure you read the licensing information in the readme and this post.

I am no lawyer and i can only do my best to make this project as public and permissive as i can while at least reserving me the right to be the one to (maybe one day) make some money with it. It was a very hard step to make the licensing change for me as i am passionate about free and open software but i feel like (and apparently so do others) that as the person investing a lot of free time and effort into a project i should at least be able to reserve myself the right to get something back for it.

If you or others have any recommendations on how to do this better let me know.

What i can say with 100% certainty is that as long as i maintain this project all features that are added to recipes will be developed as open source and free to use software for anyone to enjoy (as long as that is possibel i.e. not requiring any paid external API's etc.). The only thing that i want to offer is hosting if someone cannot or does not want to do it on their own, the features for all i can imagine will always be the same.

I read the essay about selling exceptions that you mentioned, but Richard Stallman is describing a different problem there. Copyleft licenses put restrictions on the consumer by requiring them to release modifications to the software under the same license. Some companies may not want that, so you as an author can sell them an exception to relieve them from these obligations. But as Richard Stallman states, the software itself is released under a valid free software license, which AGPLv3 + Commons Clause definitely is not.

What i can say with 100% certainty is that as long as i maintain this project all features that are added to recipes will be developed as open source and free to use software for anyone to enjoy (as long as that is possibel i.e. not requiring any paid external API's etc.). The only thing that i want to offer is hosting if someone cannot or does not want to do it on their own, the features for all i can imagine will always be the same.

I don't mean to pedantic, but judging by the definition of the Open Source Initiative (and also the Commons Clause FAQ) software distributed under the Commons Clause is not open source, merely source-available.

Overall, I think the current license doesn't work they way you want it to. You have accepted contributions from other developers and no CLA process. Thereby all contributors of this project have copyright on the parts they contributed. I would conclude that not even you yourself can sell the software anymore now, because you share the copyright of the whole project with all the contributors. And if you want to change the license, you would need the approval of every contributor (which might be doable if you can reach them).

I'm empathetic to the problem your are facing. It's great that you chose a free software license for your project and your wish to make money from it (especially as you contributed far the most) is very understandable. I just think that the current situation is not legally sound and doesn't help you or the users.

Thanks for your feedback.

I definitely agree to the problem you mentioned with the CLA and it was a big consideration. When i changed the license to the common clause i had very little work done by other contributors trough PRs and in case any of them would reject the changes i was willing to rewrite the features myself. Given that the license before the current one (MIT) allowed commercial use for anyone that would still leave me the right to use it commercially now under the new license (which might be broken but thats another topic and obviously respecting the licenses of all dependencies which might be changed).

I do not want to add a CLA as i personally dont like the feel of agreeing to some kind of contract when making a PR and in general (as far as i understood the common interpretation) one accepts the license in the repository when submitting the PR. This of course is another topic now that i might need to change the license again since there were indeed some PRs since that i would then need to examine as well.

If i change the license again i will need to seek legal council first which obviously is very cost intensive and annoying to do, but i guess its the only way. Getting someone to verify everything legally is something i have planned if i ever decide to release a paied-hosted version anyway.

I don't mean to pedantic, but judging by the definition of the Open Source Initiative (and also the Commons Clause FAQ) software distributed under the Commons Clause is not open source, merely source-available.

I honestly don't care about the definition. Apart from reserving me the right to earn money from the software i grant the user every right and support everything a "good" open source project should do (i dont even care if someone uses the software in a commercial context, i just dont want anyone else to sell a "i host this for you" service on a larger than a few friends scale but that was hard to put into legal words so common clause was the result).

If i were in fact able to make some money from the project it would only benefit everyone as i could spend more time improving everything. In the end nobody looses anything except the few people whose ideals are hurt because it does not match the definition (if those are your ideals i dont want to judge them, i really love the idea of open source as per the definition and love to use projects that are truly open source but i would never judge a project who does what i did).

Important addition: This obviously only applies to a project like this one where basically a single maintainer does 99,9% of the work. If serious contributions were to be made by a larger pool of people this kind of license would not work as it is unfavorable for the contributors. Now that you mention it and i think about it this is definitely an issue that i need to consider as it might discourage people from contributing ...

If someone feels that it is unfair/wrong that i want to be the one profiting from my work financially then he/she/it should simply not use the software and not contribute. Just to make sure this does not get misunderstood: I am a huge supporter of open source everywhere but for me open source does not mean that there cant be a reasonable and understandable exception like the one i want to make (even if i might have defined it wrong legally).

If nobody who is actually a lawyer wants to make this right for free the license will probably stay the way it is until i can get an expert to validate the issue or i might just remove the AGPL license and put the whole project under a non FOSS license to protect my interest in the future and dont have a problem with reworking PRs.

Advice here is very welcome as i honestly have no idea what the best way going forward is (while respecting my interest and the interest of the open source community)

also please don't get me wrong, i am glad to receive this kind of feedback. I just feel that i have a legitimate exception to what is normally considered the standard and i tried to express that legally as best as i could.

Any help here and any input on pros and cons of different approaches is welcome.

Update:

I am still working on this topic. I hope to soon be able to get some professional advice on this topic to hopefully find a licensing model that both respects my legitimate interest (as described above) and is also both legal and ethically good.

At the same time i fear that there is no "good" solution to this issue as many prominent open source projects seeking to find similar middle grounds between FOSS and being able to make some money have failed in doing so and subsequently moved to a completely closed source model or removed parts of their open source offering.

Please also refer to this interesting writeup about this topic https://joemorrison.medium.com/death-of-an-open-source-business-model-62bc227a7e9b

As I understand, you want the code to be available to anyone that wants to self-host for personal use for free, but at the same time not allow to someone to make a SaaS service and sell access to it (because you want to make some profit this way). That looks to me same problem Mongo has with cloud providers (AWS, etc) in the past. They made a special license for this case of use and now Elasticsearch and Graylog are adopting same license. It is called Server Side Public License (Wikipedia link). It is not considered Open Source anymore but source-available.

About previous contributions, I suppose you need aproval from people or rewriting the code, as you commented before.

Thank you very much for the feedbackl. I am currently in contact with a lawyer, if she can help me or convince me that AGPL is enought i might be able to stick with the current version.

If not i will see if the license from mongo itself is available for use and see if i can get the approval of all contributers to change to that license. If not i will strip their contributions and rewrite them myself.

fwiw, as a (small) contributor, I'll make it easy for you: your app is awesome and made my life better, so you can do with my contributions as you please :)

thank you very much for that feedback, glad you love it (thats worth more than any money could ever pay :) )

If you want to give away the software yourself, your only motivation for profit is donations(?)
Who wants to donate to something that isn't libre software is anyone's guess.
As hard as it is to get donations, nobody is going to give them to illicit actors trying to provide lacklustre forks.
Thus, there is no point in trying to lower your own actual donations, by making the ability exclusive to yourself.

As the maintainer of the legit and de-facto project, you need to do something extraordinary to make anyone fork, and be more successful at that is even harder. As you may have found out, making recipe managers without brilliant marketing and polish isn't very lucrative, so I'd rather worry about how to get there.

Sounds to me like you want AGPLv3+ (meaning or later), and maybe SSPL.
SSPL isn't really relevant here, and similarly, (without an exception) AGPLv3+ isn't going into the likes of the Play Store anyhow.

So yes, AGPLv3+ and donations. Happy to help.

https://writing.kemitchell.com/2019/06/13/SSPL-Not-Commons-Clause.html is an interesting read, but I haven't considered the "heather license", since proliferation of licenses is bad enough as it is.

Thanks for the feedback. One idea is actually to offer a hosted version of this application (similar to how mailcow, grafana and some others do). A user could pay a small fee for me hosting the application. Subtracting the hosting cost and cost of running this as a business i would make a small profit.

All features required for this would be build into the main application meaning everyone could do so. Usually that is a great thing but given the amount of work i have put into this I just personally feel like I should be the one who does this.

But that again leads to the dilemma that contributors who do significant work should have this right as well (as they contributed).
As stated in our other discussion i am in contact with a lawyer about this issue and will update this post when i have decided on a solution.

I haven't read the full discussion, but as a FYI: Joplin (open source note taking application, with an optional server component for synchronization) recently had a custom license crafted with a goal quite similar to yours:

(...) The Joplin Server license however is different. It is not FOSS, but instead it is made available under a "Free for Personal Use" license, which allows anyone to self-host it as long as it is not for commercial purposes.

(...)

Once we reach the specified amount, I get a lawyer and we have something solid that truly allows anyone to self-host while preventing businesses from cloning Joplin Cloud.

(see their gofundme-page)

You can find the result on their github, as well as some additional discussion on their discourse.

That sounds very interesting, thank you for letting me know. I will need to evaluate if a switch would even be possible, but maybe just as a source of ideas.

Thank you very much for letting me know.

I considered trying this software, but ultimately didn't because it's unclear if me sharing a big server with other people and managing the payments counts as "selling hosting".

And as previous posters said, even if you told me now this specific case is fine, it wouldn't be legally sound, because you don't have a clause to retain the rights to change anything about the license (or make additional allowances) without the confirmation of all other backers.


Also If you really want to keep the code non-free, with computer programs you have to consider international differences in law. By using an untested, makeshift license combination, you are opening your users up to copyright claims, not only by you, but ANY current or future contributor (i.e. copyright holder) in your project if he so desires.

Specifically your license combination could cause your license to be complete void to the detriment of the licensee under Germany's copyright code ยง 32.3 .

In other words, some dude sees one of my countryman use this software, wants to screw him over, does a few commits in this projects to become a copyright holder, and then sues on the basis, that because the license is invalid under ยง 32.3 no license was ever given and he is entitled to damages.

These issues are complicated, that's why prebuilt licenses exist. This license is a potential legal trap for anybody using your software even in the way you intended them to.

thanks for the writeup, that summs up some of the problems i have been considering for years.

The problem is: as i do not have the legal knowledge to properly fix this myself and the project does not yield sufficient funds to justify hiring a real expert on international copyright law there is not really much i can do about this at this point in time. I am sorry that this makes the software unusable for you but as long as this situation does not change this probably wont change either.

Also if you mean that people would pay you to host tandoor for them by "managing payments" then you would conflict with what i intended definite with the license.

If anyone with an actual law degree and sufficient knowledge/reputation in this field wants to help resolve this issue feel free to contact me but the last lawyer i consulted was sadly not helpful at all since he lacked the needed knowledge.

The problem isn't usability, but rather legality.
If you don't have the entire copyright at the time of going commons clause, it can't be done. This is what protects libre software through copyleft.
I don't think the two are meant to be there at the same time, and instead one of the two should be used.
However, I need the history to tell what is what.

You can't deny commercialization in libre software, because that is a non-free mechanism.

@vabene1111 perhaps you are over-thinking the risk of others monetising your work? For a project like yours I would think most customers would look first to the official repo, author and company for a hosted version. A few people may collect money to run services for friends/family but that's a small market and my guess is it has no real impact on whether Tandoor would be a viable business long-term. If you got so big that you had the same issue as MongoDB then that's a nice problem to have, and the jury is out on whether Mongo have done the right thing with SSPL in my opinion.

There are successful AGPL business examples like Nextcloud and for a similar-sized project to yours check out Monica. The developers have successfully made income from their work in a crowded market. Here's their policy on monetization.

@vabene1111 you may want to take a look at how timescale does their licensing: https://www.timescale.com/blog/building-open-source-business-in-cloud-era-v2/

@vabene1111 You're aware that anyone that has code in this project, is legally allowed to issue a DMCA takedown for you violating the AGPL license by adding restrictions right?

Even funnier, even assuming the common clause is legally correct (which is NOT the case), those contributors do not grant YOU the right to commercialize their additions code either.
So even under your made-up license, that is not allowed, you are still in violation of your own license.

Its not just 'a legality', you yourself are also violating the license granted by any and all contributors.
All it takes is one contributor who has enough of the AGPL violation and file a DMCA request to take it all down.