I can understand the trial court's rationale.

Preventing a licensor from adding clauses may have been intent of the authors of the AGPL, but they aren't in a position to enforce that.

The license in question is not being called "GNU Affero General Public License + Commons Clause", which could be fought on the grounds of trademark violation — it's being called the "Neo4j Sweden Software License".

There's the theoretical possibility of a copyright claim for the text of the AGPL, where the AGPL's copyright holders disallow derivative works, but I'm pretty sure that won't fly for lots of reasons: not clear who has the copyright and therefore has standing, not original enough, functional rather than creative, etc.

ETA:

There may actually be a trademark problem here.

https://sfconservancy.org/blog/2022/mar/30/neo4j-v-purethink...

> But Neo4j consciously chose not to do that. Instead, they license their software “subject to the terms of the GNU AFFERO GENERAL PUBLIC LICENSE Version 3, with the Commons Clause”. (The name “Neo4j Sweden Software License” only exists in the later Court papers, BTW, not with “The Program” in question.)

>> I can understand the trial court's rationale.

Agreed, there is no point or value in adding terms that can be immediately removed by the person receiving it.

IMHO the FSF also went a little too far trying to dictate how people go about handling violations in GPLv3, but it's still a good license.

I think we have to accept that people will reuse and modify the texts of various open source licenses in all sorts of ways which cause downstream confusion.

What the FOSS community needs to ensure is that users can always differentiate between a FOSS license and a modified version which has subtle but profound changes. Our best defenses there would seem to be trademarks and social pressure. "That's not actually the AGPL, and calling it the AGPL causes confusion in the marketplace."

Seems a better solution would be a checksum on the license text no?

The most accurate license detector is ScanCode. I think it uses some sort of rolling checksum thing for detection.

https://github.com/nexB/scancode-toolkit/