this post was submitted on 26 Mar 2025
64 points (95.7% liked)
Programming
19246 readers
40 users here now
Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!
Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.
Hope you enjoy the instance!
Rules
Rules
- Follow the programming.dev instance rules
- Keep content related to programming in some way
- If you're posting long videos try to add in some form of tldr for those who don't want to watch videos
Wormhole
Follow the wormhole through a path of communities [email protected]
founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
Your definition of license compatibility matches mine, as well as with how the term is used by the GNU Project and by the Apache Software Foundation. But I have a minor disagreement with the assertion that the MIT Expat license is compatible with any other license. And it's an important distinction, before I circle back to MPL and BSL compatibility.
The MIT Expat license is, by its own terms, very simple, and crucially allows 1) "sublicense" of the software, and 2) requires the copyright and permission notices to be included with copies. I assert that sublicense means that new license terms can be attached to a copy of such MIT Expat software, but under no circumstance can the new license terms abrogate the requirement about the copyright and permission notices. That is to say, a sublicense of MIT Expat software is void if it either: a) forces the obliteration of the Expat copyright or permission notices, or b) the terms of the new license does not allow for introducing code which wasn't originally licensed under that new license.
For example, when mixing MIT Expat software with GPL software, the resulting combination must be GPL licensed. This is what the GPL's copyleft provisions demand, and this is a valid sublicense of the Expat portion, per what I wrote above. Specifically, GPL doesn't command that the resulting combination to obliterate the copyright and permission notices, and GPL does not prohibit bringing more code into the GPL universe. Hence, MIT Expat and GPL are compatible.
But suppose instead that I've invented my own license, let's call it Litchralee's Interesting Terms (LIT), based on the WTFPL. LIT is quite simple, and adds one proviso which the WTFPL doesn't have:
With this invented license, LIT is one of the (very few) licenses that is incompatible with the Expat license, because the mix of MIT software with LIT software must yield a result that is Expat licensed or LIT licensed. But neither is possible: to honor the Expat license for sublicensing the result means ignoring LIT's proviso #1. To honor LIT's proviso #1 for sublicensing means a full copy of the copyright and permission notices from the Expat license cannot be provided. Therefore, LIT and Expat are not compatible.
This will certainly seem like an edge case, and it certainly is, since the MIT Expat license is otherwise very, very permissive. But it's not all permissive. Its short text must be honored to the same degree that the comparably-larger GPL license must be honored, and the same goes for MPL and equally so for BSL.
In my previous comment, when I said that the MPL and BSL are incompatible, I believe that is still the case, because MPL+BSL => BSL is not an allowed combination, per the text of the MPL itself. As I laid out above, a work that combines two licenses must honor both, but if Hashicorp attempted to incorporate OpenTofu's MPL code into Terraform's BSL codebase and force the BSL license onto that imported OpenTofu, that is a violation of the MPL even if it doesn't violate the BSL.
We can look to the MPL's own text for why MPL+BSL => BSL isn't permitted. The relevant sections are:
Taken together, the MPL does allow for MPL+X => X, but only if: 1) the original MPL software did not include Exhibit B, and 2) X is any of the GPL, LPGL, or AGPL licenses. A brief look at the OpenTofu LICENSE file does not show that they've included Exhibit B, but the BSL would definitely fail the second test, since BSL is not in the list of secondary licenses. That is to say, the MPL's own terms explicitly state its compatibility with GPL, LGPL, and AGPL, and no others.
So Hashicorp cannot "steal" the OpenTofu code back into the closed, proprietary realm of the BSL.
This, however, is what they could do instead, and it means that Terraform would be BSL-mostly with some MPL OpenTofu code.
Hashicorp can use OpenTofu in the manner given in OpenTofu's license, the same way that you, me, Microsoft, or the province of Quebec can. Open-source software benefits everyone and excludes no one. Is the suggestion that a special license be created, one which might be named "Screw Hashicorp Software License", whose terms disallow one specific organization? That's a rhetorical question, I admit, but if OpenTofu adopted an exclusionary license, that then means they must throw away compatibility with GPL, among others, because that license doesn't allow for sublicenses that exclude anyone.
An example of an exclusionary license -- with very good intent -- is the Anti-Caplitalist Software License, which is a non-open source, exclusionary license against corporations. I have other technical and practical issues with this license, but we're not here for that. Had OpenTofu adopted something like the ACSL as their license, any and all GPL plugins for Terraform that wanted to migrate to OpenTofu would be dead: GPL and ACSL cannot be distributed together, under GPL's terms.
Part of the deal with copyleft licenses is that they create a perpetual one-way ratchet: the universe of copyleft code cannot shrink, always retaining the original grant of terms forever and ever, for all subsequent contributions per whatever license was used. GPL is regarded as one such "strong copyleft" license, but even it provides an out: separate distribution. Had OpenTofu used GPL, HashiCorp could still make use of OpenTofu within their BSL Terraform, by distributing OpenTofu as its own binary. Would this be silly? Yes, absolutely. So has Hashicorp been stopped with a strong copyleft license? Not at all; it's merely an inconvenience.
All the popular copyleft licenses cannot prevent Hashicorp from making some sort of use of OpenTofu. OpenTofu very much wants to preserve compatibility with GPL. OpenTofu would also like to remain FOSS if possible. The answer then is exactly what they chose: keep using MPL.
Using the tools of the capitalist (copyright and licenses) to wage a battle against a corporation is neither an even fight, nor is it even winnable. Instead, strong communities build up their skills and ties to one another to fight in meaningful ways. But that's getting too close to my complaints about the ACSL.