4

So my understanding of the AGPL, is that it requires modifications to be distributed to the users of the network service, but I'm looking for a licence that would require any modifications (non-internal) to be public rather than be limited to the users. Are there any licences that would support this.

So an example use case is, let's say Company A takes my program/source code (let's say it's a webapp) under AGPL and makes modifications to it that significantly improve performance. Company A charges it's users $1000/month to use it, following the AGPL by distributing the source code to it's users but only it's users. It's users would likely not be technically-literate so wouldn't really be inclined to publish that source code, so what I'd want is for the company to not just distribute the source code to the users but make it publicly available for everyone or contribute it through github.

Also asked asked on https://law.stackexchange.com/questions/39329/are-there-any-agpl-style-licences-that-require-source-code-modifications-to-be-p before being alerted to crossposting etiquette.

  • 1
    Possibly a duplicate of Force derivative works to be public – apsillers Apr 22 at 13:39
  • @apsillers it's a bit different since I don't want to force derivative works to be public if it's internal use, only if it's distributed (which the GPL and AGPL already apply) or if the company provides access to the software through a webserver to external users (i.e. through the internet) then they'd have to share the code with non-users and users alike. – smw Apr 22 at 14:14
8

There are such licenses, but they are not generally recognized as open source. If you are interested in background, I'd recommend looking at the OSI review process of the “Convertible Free Software License”, e.g. as summarized by me here. That license was later rejected by the OSI.

Key problems of forced-publication licenses:

  • Contributors are copyright holders as well. Copyright includes the right to decide whether to publish at all. Forcing publication under a particular license would effectively dispossess the contributors.

  • It extremely easy to accidentally become noncompliant with such a license, e.g. if I fiddle with a local copy of the software and forget to publish it at once. The open source community generally wants people to comply with the license for the good of all, not to trick them into license violations.

  • The Debian Free Software Guidelines (a precursor to the Open Source Definition) have gathered a lot of wisdom around them, such as the Desert Island Test:

    Imagine a castaway on a desert island with a solar-powered computer. This would make it impossible to fulfill any requirement to make changes publicly available or to send patches to some particular place. This holds even if such requirements are only upon request, as the castaway might be able to receive messages but be unable to send them. To be free, software must be modifiable by this unfortunate castaway, who must also be able to legally share modifications with friends on the island.

    Of course, license compliance would be the last concern for a desert island castaway. But such thought experiments are useful at finding out how a well-meaning license term can actually hurt legitimate users.

Note that if a company were to lock access to AGPL software behind such sums (which in itself is legal), I wouldn't be surprised if license enforcement foundations such as the Software Freedom Conservancy would help exercising the right to receive the source code, or if competitors of the company were to help free the AGPL modifications out of spite: what are a few thousand dollars compared to ruining their competitive advantage?

The company using the AGPL software is very limited in how they can control user's access to the source code. Their primary defense would be to not take on clients at all. This makes it very very difficult for a company to charge for access to open source software rather than for services or hosting.

  • 1
    So what I'd want is essentially an AGPL licence (which is what Mongo used to be licensed under) except changing section 13, " if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge" to "must prominently offer all users and non-users" – smw Apr 22 at 13:59
  • the AGPL already has an exemption for internal-use which is perfectly fine, I'd just want a licence that would require companies with external users to make the source code available to users and non-users. – smw Apr 22 at 14:02
  • section 13 is for user network interaction which would essentially imply an internet connection, so if it's used on a desert island section 13 wouldn't apply and it would be regular GPL (the AGPL is essentially GPL + the network interaction clause) – smw Apr 22 at 14:04
  • 3
    If the "desert island" had a network infrastructure, this concern could still arise, if residents on the island exchange software. (A desert island is a stand-in for, e.g., a nation state with restrictive nation firewall, or a developing nation with low -- but not necessarily nonexistent -- development levels) – apsillers Apr 22 at 14:27
  • 2
    @Smart455 I wouldn't go that far to claim that such a license would be “totalitarian”, but think that OP's license could be written and still be free and open source. However, doing that is walking a very fine line and is extremely difficult. One route I could imagine would be to take an AGPL-ish license but change how the source may be provided: either the user always receives the source directly, or the the provider must somehow publicly offer the source to download with no restrictions or costs. Where “somehow publicly” is the tricky part. – amon Apr 22 at 15:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.