6 ms·
> The requirement is not just for modifying code strictly. It's for offering the resulting program to users. This is the same misunderstanding everyone makes,
by marcan_42 5y ago
> The requirement is not just for modifying code strictly. It's for offering the resulting program to users.
This is the same misunderstanding everyone makes, and that the FSF wants everyone to make.
> your modified version must [...]
You are not required to offer anything to users. Your modified version is required to offer the resulting program to users. The requirement is confusingly worded, probably deliberately, but what it actually requires is for there to be a mandatory feature in your modified version such that it itself offers the resulting program to users. You are required at the time of modification to ensure that your modified version, at the time of execution, makes that offer (as part of its code).
Yes, this is hideously unclear, but that's what the text really says. The requirement is on you at the time of modification (also implied by this being a copyright license), and that requirement is for the modified version to work a certain way.
I can't find the link right now, but IIRC legal analysis including people involved in authoring the AGPL has confirmed that this indeed was the intent; they didn't want to put in a restriction on usage (because Freedom Zero), so instead they came up with this cute (and broken) hack that applies at modification time. Unfortunately, they conveniently forgot to mention this restriction violates Freedom 1 instead.
> If I fork an AGPL project to contribute to it, modify the code, but don't actually host the modified resulting binary anywhere, I see no issues here.
By modifying the code, you have invoked the clause of the license that you quoted. If your modifications do not include a functional change to the code, such that, if run, it offers the resulting program to its users, then you have violated the license.
> Similarly, if the project is well built, for example if the build process in the repo builds a binary that includes the output of "git archive" to serve, that link will always be up to date for any build, so you don't even have to update anything to start hosting a fork of it.
Correct. Almost no AGPL project does this. It is the only way to remain compliant with the license and still have a sane development process, but nobody gets that. Indeed, this is the only situation where using the AGPL does not impose an undue licensing burden on developers, and it sucks that, as part of trying to sell the AGPL as magic anti-SaaS pixie dust, the FSF has obfuscated this, and pretty much nobody is actually putting this feature into their AGPLed app build system, and thus causing everyone collaborating on those AGPLed apps to violate the license every time, because if this feature isn't in place already it becomes the burden of every single contributor.
> In your (linked) comment about the AGPL, you seem to be arguing that just forking and modifying the source code violates that specific clause.
It does, unless you first implement that `git archive` feature, and then make your desired changes. Which, as I said, nobody does.
> That is what you're arguing, right? Why would that kick in if you change the code but don't actually host the service in question where users can interact with it over the network?
Because, as I said, the clause is really all about what kinds of modifications you are allowed to make and what would happen if users interacted with it over a network - that doesn't have to actually happen.
- TheDong 5y agoI see your point. I'm still not totally convinced, and have two followups: Firstly, the pragmatic and in my opinion definitely correct reasoning: Even if there is a technical loophole, as you describe, it doesn't matter because no one will enforce this so-called violation. The copyright holders of the code will not care if someone forks their code, updates it, doesn't update the link, contributes back, and has zero users. Someone who does not host a modified copy is following the spirit of the license, the spirit the developer intended, and as such has basically 0 real legal risk. They also certainly did not cause any damages in their infringement, so I doubt the courts would care. Second, the pedantic technical bit. > your modified version must prominently offer all users If there are 0 users of my modified version, I have offered a link to "all users". I guess I have to offer a link to myself if I'm playing around with my copy locally, but I somehow feel like I can figure out how to get the source code myself.
- marcan_42 5y ago> The copyright holders of the code will not care if someone forks their code, updates it, doesn't update the link, contributes back, and has zero users. You're correct, but the whole point of licenses is having them work as intended. We don't run the free software ecosystem on goodwill and "I don't care if you violate my license as long as I like what you're doing". Licenses exist for a reason. > If there are 0 users of my modified version, I have offered a link to "all users". My reading of that is akin to "all potential users", as implied by the requirement being on what the modified version does; the code itself can only affect potential users since it has no idea of what actual users may or may not eventually exist.
- TheDong 5y ago> the whole point of licenses is having them work as intended. We don't run the free software ecosystem on goodwill But we do run the legal system at least partly good will, and licenses only matter in the context of the legal system. Obviously a less ambiguous better worded license is better, but I don't think it's necessarily that big a deal. > the code itself can only affect potential users since it has no idea of what actual users may or may not eventually exist. I don't think the law cares about this though. The law can know perfectly well after the fact that I personally did or didn't have any users. That I did or did not offer source code to all 0 users of my non-existent copy I'm not hosting. I don't really see why the copyright license can't make conditions based on real-world usage and hosting; very few laws are pure functions that take only source code as input, almost all of them reference reality. I guess you'd argue that I'm opening myself up to liability by forking, say, mastodon and modifying it because now someone could host my fork, and that someone (who isn't offering a correct source code link) would be causing me to violate the license... But that seems like the sort of reasoning that wouldn't last a heartbeat in court. The person running my copy of the code should have modified it further to have the correct link, they are the ones that failed to comply with the copyright license terms for the version they run. By analogy, in copyright law, fair use allows "violating" copyright in some cases, such as to copy a page of a book for teaching material. Your argument reads to me like saying "But the teacher copied a page of the book, gave it to his students for class, and then one of the students sold that page without permission from the copyright holder! Aha, the teacher has violated copyright". Which no court would ever hold to be true, even if a very literal reading of the law may be more murky.