ImageSharp leaving the .NET Foundation due to licensing change
dotnetfoundation.org
dotnetfoundation.org
All it takes is for one of those entities to clone the code on Github; slap the Apache 2.0 license on it (that they are rightfully using for the project), and anybody can then reuse it under Apache 2.0 as if nothing ever happened. Or for an entity with more resources, set up a holding company with no revenue and get an Apache 2.0 license and give it out to your parent company.
Whatever your stance is on these relicensing things... do make sure the license makes sense and at least achieves your aims!
See: https://softwarefreedom.org/resources/2007/gpl-non-gpl-colla...
The MIT license gives you a right to sublicense to your heart's content.
"A more complicated case occurs when a developer makes copyrightable changes to a permissive-licensed file that the developer is incorporating into a GPL’d program"
"Note, however, that in a single source file it is typically very difficult, and often completely infeasible, to determine which parts of such a file are covered by permissive terms."
The point being that perhaps you can relicense it, but does that accomplish what you want...making some particular part of it fully bound by the GPL? That's the complicated part.
This is just taking the full project wholesale and relicensing the whole thing under GPL.
Licenses are granted based upon You meeting the qualified criteria as stated.I get what they want to do, but I'm not sure if their self-made license holds up legally.
Use a permissive license if you really mean it, not if you want to growth hack.
tbh; dotnet foundation really doesn’t provide much value to member projects. See https://www.isdotnetopen.com for context.
> The .NET Foundation accepts projects that use permissive licenses within that set [of OSI-approved licenses].
> The board clarified that projects in the Foundation must use a permissive OSI-approved license and that projects would all be treated the same.
Per the linked article https://sixlabors.com/posts/license-changes/
> Previous attempts (sponsorship, support license) to provide a sustainable income to ensure the continued development of the Six Labors libraries have not proven successful, yielding less than a few months of developer income over a period of several years.
It sounds like James' monetization efforts were unsuccessful. The new monetization approach and relicensing is not considered compatible with the open source nature of the dotnet foundation. Whether the new approach works remains to be seen, but it likely burned a lot of community goodwill.
True, I hope it does.
> but it likely burned a lot of community goodwill
That also remains to be seen. And would it burn less community goodwill to stop developing the project at all?
Also it doesn't really matter if this move burns community goodwill. It's the author's decision to make. Any member of the community is free to fork before the license change, and any member of the community is free to not submit patches upstream.
It could. Burning goodwill is an easy way to incentivise new open source competitors.
If you want to become a millionaire make your software product commercial. If you want it to be open-source, keep it that way forever and don't start complaining "Oh, I really want to be a millionaire but I'm not because all these people are using my code for free! Now all you millions of people who are using my code should pay me from now on!"
I believe charging for software after you've gained a user base in the millions is akin to a rug-pull scam. I even believe that criminal liability comes into play here.
It's a good thing the .NET Foundation expels all the projects that change their licensing to commercial.
Strawman
>I even believe that criminal liability comes into play here
The gross entitlement of FOSS users is the primary reason I will never contribute in substance to open source software. In what world is a 'userbase in the millions' not an indicator of the software's value, and how are the developers deserving of criminal liability for wanting to make money from it? What, they should perform highly-skilled software engineering for free while their efforts are the basis of profit generation for many others?
Is it really entitlement to be a little upset at having built large things on top of permissively licensed software only for that software to suddenly become locked behind a new license?
Has there been an instance of a licence change closing off access to previously open source code? (Is that even possible to do when forks are trivially created?)
This whole thing just points out how hard all of this is to get right. I understand both sides. But I do at least get the feeling that the ImageSharp team is a bit high strung.
https://github.com/dotnet/Microsoft.Maui.Graphics/issues/47
I think this is probably an intentional move to move away from Microsoft and the .NET Foundation in addition to trying to capitalize on people making a lot of money from the software package.
After having looked at the license, it seems reasonable enough to me aside from the technicalities others have brought up. The vvvv tool follows a similar license of, it's free unless you make money from it.
Users can always fork the old version. We can't force the ImageSharp team to maintain software under a licence they don't want.
>After having looked at the license, it seems reasonable enough to me aside from the technicalities others have brought up.
It's reasonable in theory, in practice I'd rather avoid entangling $WORK with potential liabilities. I prefer more clearcut licences (require payment for all commerical use or don't require at all).
I agree with that. I've always liked the way vvvv communicates their licensing:
* https://vvvv.org/blog/vvvv-gamma-licensing
* https://www.visualprogramming.net/#Licensing
I've always been curious about how well it works for them.
It's also worth pointing out that it's only locked away for entities generating >= 1M/y USD revenue. I can't exactly feel sorry for them.
The comment from Akka's relicense [1] applies just as well here:
"""
1) Project is open source
2) People use the project because it is open source
3) People contribute bug reports and fixes, creating value and improving the open source project because it is open source
4) People spread the word about the project, free marketing because it is open source
5) Maintainers decide to relicense, privatizing the value created by the community.
The "success" was a social phenomenon, not merely the efforts of the maintainers.
Relicensing is a betrayal of the community that was built around the software.
"""
Nobody is getting paid for the pre-license-change version. Which remains open-source under the existing license forever.
And yes, the particulars of this license seem more than reasonable from the standpoint of the threshold of needing to pay.
I should maybe point out that at one point, ImageSharp wanted Microsoft to stop their (still open source) graphics development and help contribute to ImageSharp.
I think being upset or frustrated that one has lost access to something useful that one also invested very little in is a fair/natural reaction (the free lunch is over), but I also think it would be unfair to direct that frustration at the people who were providing that resource to begin with. It also seems unfair when the resource, as it stands right now, continues to be available in its current state; one only loses out on additional, future value, which I would argue one has no real claim to anyway (in general).
Your comment didn't say that it is fair [to direct..] (so take this comment as a further qualification if anything), but it seems to be one of the prevailing attitudes about this kind of thing, and where (at least) I see the entitlement coming through.
It’s true when companies do it with a “loss leader” to destroy the competition.
It’s true when an open source library swaps to proprietary license.
Who wouldnt pick a good, free option for something?
…how do you tell the difference between a “real” open source project and a bait and switch?
Is this the future? Where all good things are gone and we have to skeptical of anyone giving away something for free?
Screw that.
If you’re selling something, then sell it.
If you’re giving something away, then make your intentions clear.
If you’re giving it away with the intent to destroy your competition, you’re being a dick.
If you change your mind and want to do something different, abandon your dishonestly earned network effects and start a new commercial project where the intent is clear from the start.
I wish the Six Labors folk the very best in any commercial endeavour they choose to undertake, but this sucks.
You’re not entitled to someone else’s work forever just because something was open sourced. I think it’s a bad move, but I’ve no right to expect others to do future work for me. They made it possible for others to carry it on, if they’re willing to do the work.
Yes.
> entitlement /ɪnˈtʌɪt(ə)lmənt/
noun the fact of having a right to something.
I will somehow survive my entire life without any of your withheld contributions.
So long as it's their software they can change the license of new versions as they desire. If they decide to change the license and you depend on the software, you can maintain a fork of the project. I'm sure you don't like that answer, but this is exactly why open source licenses offer no warranty or promise of support, and you willingly decided to rely on some software with such a license. You can't just pretend like this aspect of the license doesn't exist because it's inconvenient for you.
If you want guaranteed support for any software, hire someone, or do it yourself!
I think a lot of the controversy surrounding these situations is that people aren't educated about what open/free software really is, or the ideals behind it, or don't care and just want free stuff from other people.
The idea is that you can use source code, modify it and create derived works from it if you desire (normally with attribution or whatever), and with the GPL there is an additional restriction that derived works must also be GPL'd. Free software does not imply that people want to work for you for free and doesn't imply that they intend on supporting the project at all.
I didn’t get that, at all, from the GP. They just said that it’s not (in their opinion) fair to build up a user base that becomes dependent, then use that dependency as leverage.
That’s basically the Sackler Family method.
I release a bunch of code, as MIT. If someone wants to use it, fork it, sell it, whatever. Just don’t expect me to be on the hook for maintaining it, or guaranteeing it.
If I want to drastically change it, or even do something evil, like have it phone home, I could do that (I won’t). I could also change the license, going forward, as these folks did.
I’m under no obligation to maintain my stuff for any reason, other than I use it, myself, so I want it to be good.
That said, I consider myself to be an excellent steward, of really good software, that no one (except Yours Truly) uses. That’s fine with me, but I take great care of my stuff, anyway.
If I sign a contract, then that’s a different matter.
And saying this doesn't make any sense. Because being opensource means lack of vendor lock-in. There's no "dependency". As soon as a new license is adopted, the users of the previous version can still use that previous version because it is still opensource, and create a fork out of it.
Can they technically? If nobody stored a copy of the code, and the copyright owner decides to change the license, any subsequent copies are under the terms of the new license no?
But that’s beside the point. If someone releases software without storing the whole build in configuration management, then I don’t feel particularly sorry for them.
And they could delete the repository. Even if they had a repository, as the copyright holders they could change the license retroactively. This is not a problem with a technical solution that I can see.
I hope they have very good lawyers, then. I'm not sure how they could enforce that.
> And they could delete the repository.
That's why I said what I said about configuration management.
I guess CM is no longer en vogue, these days. A main goal of CM, is to completely reproduce the build, from stored components, at any point in the product lifecyle.
With a lot of SaaS services, I guess that it's not really possible to do that, anymore, but I'd be pretty leery of basing a business on ephemeral resources. I'd at least get a maintenance or local duplication contract with the author.
Why? Like I said, unless someone has a copy obtained with the original license, then any subsequent copies are accepted with the new license. There's nothing in the law that says the copyright holder can't change the license.
See my comment about "configuration management."
I'm sorry. If someone wants to call themselves an "engineer," then they need to act like an engineer, and that means things like good configuration management. In my opinion, and I'm just an unlettered redneck, self-taught cowboy, so I guess my opinion ain't worth squat, the term "engineer" connotes things like rigorous self-discipline, process discipline, and personal integrity.
Just the thought of someone releasing commercial, or commercial-grade software, without CM, sends chills down my spine. I guess that it's a statement on the current state of the industry, that people assume that CM is something that is "optional."
This would be great for patent troll law firms.
You wouldn’t demand that someone continues development of the project for free right? So they can either leave the project to rot, which seems morally fine to everyone, or they just also decided to start charging money for future updates.
I disagree with the “criminal liability” thing. I understand why someone might feel that way, as many folks write software as “dependency aggregates,” but that’s a whole other argument, and I already know my opinions on that matter aren’t particularly welcome.
No, but I can see the following as not being unreasonable:
1. They can't retroactively change the terms of using the previous versions or accessing it's code.
2. They should maybe start their new commercial version under a different name. They built a reputation on an open source brand, and they had other people promote them because of that open source status. I'm not sure the commercial version should get to start from the brand reputation that the open source version's name automatically conveys. This i think is a big part of the bait and switch the OP was referring to and it seems like a somewhat reasonable compromise.
I'm not saying these apply fully to this situation, but as maybe just general guidelines if moving from an open source model to a commercial model.
They already can’t do that.
Instead they bait users into believing this is a hobby project by some smart engineers who do this in their spare time to produce software that's a boon to all Mankind. Afterwards they start complaining this company or that company is making money off their effort and start making avaricious changes to the license.
I myself have released several open-source projects, but don't intend charging for them. OTOH users can't expect me to add features or functionality (I do guarantee that security errors will be fixed in short order). I'm also working on commercial software, asking myself beforehand if I wanted to release it as free software or make money from it. Considering the effort I decided to do the latter.
"I came to rely on the free thing you gave me, now you need to keep supporting it forever, for free, or else you're a criminal."
No. You have the right to keep using the software provided for free forever. You don't have a right to have the work product of a person or group for free forever.
This reminds me of what Marak did after he went on a rant that he's not paid enough for his effort.
https://www.bleepingcomputer.com/news/security/dev-corrupts-...
How about, if you can afford it and use the software, help financing it's maintenance?
We'll see how it goes minus the free to use part, good luck to the author(s) trying to earn their living!
How are things going for IdentityServer, they're the .NET project I remember making waves for doing this?
Tl;dr as near as I can tell:
- If you are "an Open Source or Source Available consumer" or "a Non-profit organization or Registered Charity", you can use the code under Apache License 2.0.
- "If your annual gross revenue is less than 1M USD then the license will continue to be granted to you under the Apache License 2.0."
- "If your annual gross revenue is greater than or equal to 1M USD and you are consuming any of the libraries for use in Closed Source software as a "Direct Package Dependency" as defined in the license then you must purchase a Six Labors Commercial Use License."
Also, nice to see both of them handling it professionally, instead of casting aspersions as so often happens.
but Apache allows redistribution under the same terms? so how this supposed to work?
"The transitive clause is actually really important, I'll explain why.
I've explicitly called out the following to ensure that the Split License is non viral.
Once granted, You must reference the granted license only in all documentation.
In practical terms this means that If you are granted a license, that's the one you're use, not the Split License which exists to derive the license to be granted to you.
So if you're OSS, you should only be concerned about and reference the Apache 2.0 license - downstream consumers shouldn't need to care.
That, on the surface makes the whole transitive/direct thing seem redundant except for the fact we have to use the Split License in NuGet packages, so if someone is looking up their supply chain then they can reference the transitive clause to determine liability (none).
Can it be exploited. Yes, but as I've said elsewhere. "Evil Corp is gonna evil". They're actually more likely to simply ignore the license."
However, that's irrelevant because they are licensing it to the open source project under the apache license.
Once the open source project has it under the apache license, you can copy it from the open source project under the apache license, because the apache license allows that, and the split license won't apply in the first place.
The linked page even says "Once granted, You must reference the granted license only in all documentation," so if they have the source code in their repository it will literally just say that it's apache licensed with zero mention of the split license by the explicit instructions of the creators of imagesharp.
If they say that's NOT the case, because they are imposing additional restrictions, then they aren't actually licensing it to the open source project under the apache license in the first place.
Otherwise, they realize that this is a massive loophole but are still hoping that companies will just pay up. I think this is what's actually the case (and why the hoped the .net foundation would accept it), but they don't want to come out and say that explicitly because then it would defeat the point.
"Works in Source or Object form are licensed to You under the Apache License, Version 2.0 if ... you are consuming the Work in for use in software licensed under an Open Source or Source Available license."
So at that point the author of said open source project gets to redistribute the source of the library under AL - and only AL defines what further derived works can and cannot do with it.
It does in a court of law. A defendant would likely need to demonstrate good faith that they're using the source code of the project from which they acquired the license to ImageSharp. What matters is a judges interpretation, and intent matters.
If you license your code to anyone under the Apache License, that person is then free to redistribute the code under the terms granted by the Apache License, which is obviously missing this $1,000,000 revenue restriction.
They’re not trying to both have and eat their cake. They chose a license with a known exploit because they think it’ll be best for their users, and they accept the consequences of that. This is (IMO) a good balance to strike, and better than I imagined before reading through the license itself and its rationale. It’s explicitly:
- we want to impose the least burden possible on those least able to bear it
- we think we’ll be more sustainable because in balance those able to bear it are more likely to choose to with this model than the previous one… excepting those who wouldn’t regardless of the terms.
Quite a lot of mutual good and goodwill is the product of norms which are effectively social agreements rather than enforcement protocols and regimes. Will some jerk take advantage of this and eat their cake? Yeah, duh. But it’s better for probably the vast majority of their users than a more onerous license which is viral, and (AFAICT) no worse for anyone but themselves. A one-sided compromise in favor of everyone else.
This situation, not so much. They're making a fully open source version available on purpose.
In the summertime I lock my exterior door(s) when I go to bed, even if I have left the windows open. It’s obviously trivial to enter my home if you’re motivated. I’m aware of the contradiction. Closing and locking the door isn’t impenetrable fortification, but it is a clear expression of my will. Opening the window isn’t an invitation to enter my home, it’s a flaw I’m willing to accept to enjoy cool air after hot summer days. If you come into my home through my window under those circumstances, you’re clearly availing yourself of an obvious loophole in my home security arrangement… but you’re being a jerk nonetheless.
People set expectations all the time in all sorts of flawed ways where their expectations might not be met. This is one of them. I agree with the quote in my previous comment: not even a perfect license with no conceivable loophole will prevent someone from exploiting the obvious loophole that a license is a social agreement with its own limited capacity to enforce. Even if you theoretically have bulletproof legal recourse, you have to have legal resources to get it. There’s no license I can imagine which doesn’t have that loophole.
But yeah so, “jerk” was hardly the point of my comment. But if that’s the nit you want to pick, violating someone’s express permission to their belongings because you understand their intent but you’ve found an exception in how it was expressed… that does mean you’re being a jerk. You’re welcome to disagree however fundamentally, but you know what their intention is in limiting how they share their resources and you know you’re only entitled to it by disregarding that to take what you want.
They might as well just say that if you have revenue over $1M they'd appreciate if you gave them money since the license doesn't seem to actually impose any sort of legal obligation to do so.
This is definitely the stupidest license I've heard of. I'm currently in the same situation, thinking about how to open source one of my projects while retaining the ability to make some money somehow, and this is something I never even considered because it's so stupid.
SQLite is public domain, and makes money by selling "licenses" to such companies (they're called something else, but it allows the company buying it to file it in their "licenses" folder and tick a checkbox; https://www.sqlite.org/copyright.html).
In the longer term, I'm guessing this pushes everyone pretty strongly towards SkiaSharp instead.
(doesn't stop mega-corps using it as a cloud service/internally though)
Another option is to do what Duende did. I think Duende (Identity Server) handled the situation pretty well.
https://duendesoftware.com/products/identityserver
> Standard License Pricing > Free for development, testing and personal projects—only pay for production. Try it now! Learn about our free Community Edition.
> Our Community Edition license is feature equivalent to our Enterprise Edition, but only includes standard support.
> Community Edition allows hosting IdentityServer on your own infrastructure (including your cloud). It is not for scenarios where you redistribute IdentityServer, or build software for third parties. In this case you either need a redistribution license, or the end-customer needs a standard license.
> For-profit companies/individuals with less than 1M USD annual gross revenue > Non-profit organization with a published annual budget less than 1M USD > Registered charities
The whole point of being in breach of contract is that you can be sued for it.
I.e. anyone using .NET on Linux or Mac
This is deprecated since NET 6.0, eventually support will be removed:
https://learn.microsoft.com/en-us/dotnet/core/compatibility/...