I currently have a project that is licensed under LGPLv3. I would restrict its use so, if the library is used by financial people, war projects etc the license falls into GPL3.

First, this kind of mixed license will be considered GPL-compatible? Second, I can simply create my license and point to the text of LGPLv3 and GPLv3?

  • 1
    GPLv3 will not stop an organization from using a project internally. I'm unsure if firing a missile counts as distributing code... one for the philosophy books. If someone in testing their code makes 5 million on a quantitative trading algorithm and once it stops working distributes it open source, is this suddenly okay in your world view? You may need to learn to accept published code will be used for whatever.
    – foreverska
    Nov 4 '21 at 14:24
  • You are allowed to add terms to the (L)GPL, but note that the license says that a user may remove them if he wishes. See the sentence in the GPL: "If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term....". So, your restriction about financial people, war projects, is technically allowed, however, it's allowed for them to simply remove that restriction and then redistribute the less-restrictive version again to themselves.
    – Brandin
    Nov 10 '21 at 9:03

Yes you can create your own license that delegates to the GPL/LGPL as appropriate. However, this will not work as intended.

The Free Software / Open Source (FOSS) community thinks that discriminating by use case or by user is not a good thing to do. For example, the Free Software Definition starts with

The freedom to run the program as you wish, for any purpose.

The Open Source Definition similarly requires:

5. No discrimination against persons or groups.

The license must not discriminate against any person or group of persons.

6. No discrimination against fields of endeavor.

The license must not restrict anyone from making use of the program in a specific field of endeavor. For example, it may not restrict the program from being used in a business, or from being used for genetic research.

The reason for these constraints is both practical and value-oriented.

The prevention of such usage restrictions in the FOSS context can be seen as an expression of libertarian values. It is entirely reasonable to disagree with them, and to try to discourage uses you consider less desirable or unethical.

But FOSS software does not exist in isolation – it exists in a network of actors. It is here that the practical reason for such prevention of usage limitations emerges, and this is also precisely why your approach won't work as intended.

Let's assume you create some software S and license it under a Capitalism Discouragement License that gives different rights and obligations to different recipients. Depending on some conditions, the license either converts to the GPL or LGPL for the recipient.

So a Big Bad Business that receives the software S from you would have to comply with the GPL, an indie developer gets the terms of the LGPL instead.

But what if that indie developer exercises their rights under the LGPL, modifies the software (resulting in S-Prime) and publishes S-Prime? Per the terms of the LGPL, they can publish the resulting software S-Prime under the LGPL as well. The Big Bad Business could then obtain S-Prime under the terms of the LGPL, and circumvent the limitations you had tried to impose on them.

More generally, FOSS licenses must also work as intended when the software is modified or redistributed by third parties. License choice clauses can result in unexpected changes to the rights recipients have in the software, depending on the path through which the recipients obtained the software.

Note also that the GPL family of licenses contains clauses that prevent additional restrictions. So you couldn't construct a license that amounts to “LGPL, except for these extra restrictions”.

What you can do is construct a novel license that borrows a lot from the GPL/LGPL but is a legally distinct license. For example, the non-FOSS SSPL license is based on the AGPLv3 but changed some key sections. However, your resulting novel license might not be considered Open Source and your software wouldn't find adoption with Open Source projects. This can be avoided with a conversion clause to your most restrictive license option, if that option is recognized as open source. For example, if everyone can use the software under the terms of the GPLv3, your software could be treated as effectively-GPLv3 licensed by other projects. Of course, you wouldn't be able to upstream modifications from GPLv3-only forks.

If you are interested in Open Source-ish licenses that try to leverage copyright licenses for the furtherance of ethical beliefs, take a look at the Organization for Ethical Source.

Personally, while I'm sympathetic to the idea, I don't believe it can be successful. Open Source was successful precisely because of the lack of usage restrictions, enabling otherwise conflicting actors to work together to build a Commons that benefited everyone. There is now a huge ecosystem of Open Source software. It is not likely for a similar ecosystem of Ethical Source to emerge because the values expressed by such licenses will often be incompatible. A prospective user of software under an Ethical Source license would first have to determine whether their use would be allowed under the license, which would require a consultation with a lawyer for all non-trivial cases. For example, you want to discourage “war projects” but a lot of software is dual-use: e.g. encryption protects military secrets, but also protects the privacy of billions of people.

  • Thank you for the reply. I only disagree with privacy. Real privacy is a myth. I'm quite sure that there are thousands of backdoors in the program we uses, and in Android too :) Nov 3 '21 at 21:11
  • 2
    @nick012000 The loophole was well understood in the early 2000s which is why the AGPL exists. Some background. Copyright provides a bundle of exclusive rights to the copyright holder. Copyleft licenses leverage these rights for imposing license conditions that provide Software Freedom. The GPL only focuses on the right to distribute/convey copies. This is useful when end users operate the software themselves, but is meaningless for SaaS. AGPL uses the right to make modifications, which can also trigger for SaaS. CAL is the first to use the right to public performance. (… cont)
    – amon
    Nov 4 '21 at 10:27
  • 1
    (… cont) The SSPL's innovation isn't based on such rights and just discriminates against use as a service. It provides much stronger “freedom to study how the program works” for end users, but discriminates against operators of the software in a way that goes against freedom zero: the “freedom to run the program as you wish, for any purpose”. In essence, the SSPL exists because MongoDB was afraid of competition.
    – amon
    Nov 4 '21 at 10:28
  • 1
    You could do a dual-licensing scheme: "GPL or modified LGPL". The modified LGPL would be one that restricts use and wouldn't be convertible to a normal LGPL. (and you couldn't call it LGPL because it would be a trademark violation IIRC)
    – user253751
    Nov 4 '21 at 10:38
  • 1
    @nick012000 The SSPL license conditions require that if the SSPL-covered software is used as a Service, then the entire software stack must be made available under the terms of the SSPL. This condition is generally impossible to fulfill. An impossible condition amounts to a usage restriction. Even if it were possible, it would arguably discriminate some uses (OSD #6) or restrict other software (OSD #9). The license terms you are describing are much closer to the AGPL.
    – amon
    Nov 4 '21 at 14:08

'Yes' is the answer to all of your questions. The legal implications are complex, but there is no reason why you cannot do what you set out to do.

The model that would work is called 'dual licensing' so no 'conversion' license is required. You simply offer GPL for some use cases and a more restrictive license for others. For example, you could license your code to the general public under GPL and also under (say) a social domain license for other use cases. This offers a GPL compatible version and a non-GPL compatible version, at the same time.

Simply create software S and license it in a way so it does not have to 'convert' to GPL by dual licensing it with GPL and a social domain license. Large scale business sector entities will have to use the GPL, while everyone else uses the social domain license.

Depending on the exact license coupling you choose, the opportunities for circumvention will depend on the lengths a corporation is prepared to go to, since they can always 'clean room' any code under any license.

Open Source was successful precisely because it was on the side of well resourced corporations who crave interoperability with their proprietary systems.

A social domain license with restrictions preventing things like arms sales or military operations would keep any corporate lawyer at a military aerospace company awake at night. License terms can ban encryption across the board, but could also just ban encryption for users in the military sector based on their self-reported ISIC code or publicly available business description for example.

  • 1
    The problem is I want that my licence continues to be a GPL compatible. Is it possible? It seems the answer is no. Nov 6 '21 at 15:50
  • Edited answer in response to stated goal. Nov 8 '21 at 0:25
  • 2
    I disagree with this answer. If it is dual-licensed then each user can choose which one they want. It is not the licensor who defines that. So if one of the 2 licenses is GPL, then the financial industry (or whoever) can choose to use the software under GPL or the other license. As soon as you try to restrict GPL to some use cases or users, then it is no longer GPL, it would be something proprietary, and it would NOT be GPL-compatible. @amon above is right. Nov 8 '21 at 13:09
  • @Martin_in_AUT If a user is a commercial company and the software is dual licensed under say, GPL and some NC license they have no choice over which license they can use. They have to use the GPL. Restricting use does not make something proprietary Nov 9 '21 at 9:34
  • @MatK.Witts I believe you misunderstood the original question and the intentions of Marco. He restated his requirement above (continue to be GPL compatible), which is at odds with your proposal for some 'social domain license'. Think about this: To a man with a hammer everything looks like a nail. Nov 9 '21 at 9:55

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.