9

I was getting frustrated because I really wanted to use a GPL Family license for a piece of software I am developing. However, some of my target audience, OS Developers, are closed source (looking at you Microsoft and Apple), and by using my software they would have to make their software open source, so they wouldn't even consider my software. Also, my software would have to be Apache if I want to submit it to AOSP.

The easy option would be to use Apache licensing, but I still want by other users to be bound by GPL.

However, I think I came up with a solution. I made by own boilerplate notice by snipping segments from different licenses, as well as adding my own wording. I want it to allow me to say several things:

  • You can choose between GPL (v2 or later) or LGPL (v2.1 or later), whichever you prefer.
  • If you are an Operating System Developer, you can also choose Apache.
  • You must follow these conditions or not redistribute my software at all.
  • If you send me code, no matter what license you got it under, you license it under my boilerplate notice.

This is my notice, sorry about the name, one of my co-devs loves ducks and made be call it 'Quack Open Source License':

Begin Quack Open Source License, herein referred to as QOSL.

Copyright (C) [NAMES OF DEVS] 2022

This software is free software.

"You" refers to a person or entity obtaining this software and corresponding source code
"Your Users" refers to any people or entities you distribute this software and corresponding source code
"The authors of this software" and "The Copyright Holders" refers to [NAMES OF DEVS]

You may obtain this software and its corresponding source code under the General Public License, herein referred to as "GPL" for the purposes of this document, version 2, or at your option any later version.

You may also obtain this software, at your option, under the Lesser General Public License, herein referred to as "LGPL" for the purposes of this document, version 2.1, or at your option any later version.

YOU ARE GIVEN WORLDWIDE, NON-EXCULSIVE, ROYALTY-FREE PERMISSION TO OBTAIN AND REDISTRIBUTE THIS SOFTWARE AND CORRESPONDING SOURCE CODE BY THE COPYRIGHT HOLDERS UNDER THE GPL OR LGPL ONLY IF YOU ACCEPT AND AGREE TO THE QOSL CLAUSE 1, 2 AND ANY CONDITIONS INTRODUCED BY THE LICENSE YOU CHOOSE.

Clause 1: "If you obtain this software and corresponding source code under GPL or LGPL, you must also give your users the option to choose between the two by including the Quack Open Source License notice before any GPL or LGPL notices".

Clause 2: "If you release changes to the authors of this software, you release your changes under the Quack Open Source License, not the license you obtained this software and corresponding source code under."

You are not required to accept Clause 1 and Clause 2, as you have not signed them, however accepting them is the only way to obtain this software and corresponding source code under the GPL or LGPL, so by obtaining this software and corresponding source code, distrubuting it to your users or submitting changes to the authors of this software, you accept the Quack Open Source License Clause 1 and Clause 2.

For the purposes of Operating System Development, herein called "OS Development", you may obtain this software and corresponding source code under any of the licenses listed above, or at your option, any version of the Apache License.

YOU ARE GIVEN WORLDWIDE, NON-EXCULSIVE, ROYALTY-FREE PERMISSION TO OBTAIN AND REDISTRIBUTE THIS SOFTWARE AND CORRESPONDING SOURCE CODE BY THE COPYRIGHT HOLDERS UNDER THE APACHE LICENSE ONLY FOR THE PURPOSES OF OS DEVELOPMENT, AND ONLY IF YOU ACCEPT AND AGREE TO THE QOSL CLAUSE 2, 3 AND ANY CONDITIONS INTRODUCED BY THE APACHE LICENSE.

Clause 3: "If you obtain this software under the Apache License, for the purposes of OS Development, and redistribute it to your users or the authors of an Operating System, you must do so under the Apache License, NOT the Quack Open Source License. You MUST NOT include the Quack Open Source License notice before the Apache License declaration, regardless of if you have made modifications to the software. You may, at your option, include the following declaration, 'This software was obtained under the Quack Open Source License for the purposes of Operating System Development, and redistributed under the Apache License ONLY.'. This clause is overridden and superseded in any circumstance where it comes into conflict with the Quack Open Source License Clause 2."

You are not required to accept Clause 3 and Clause 2, however accepting them is the only way to obtain this software and corresponding source code, so by obtaining this software under the Apache License for the purposes of OS Development, distributing it to your users, sending it to the authors of an Operating System or submitting changes to the authors of this software, you accept the Quack Open Source License Clause 2 and 3.

End Quack Open Source License (QOSL) NOTICE

What I'm curious about – am I allowed to do something like this? I'll put it before any instances of GPL, LGPL and Apache, so is it legally binding? Or will I have to bite the bullet and use Apache?

5
  • 13
    It seems like the obvious thing to do is to release under GPL or Apache, and to give (or sell) exceptions to that license. The fsf has a detailed explanation of this practice. If AOSP requires you to give it to them under Apache, and won't accept GPL, then you have to decide whether you prefer copyleft or AOSP. The very reason for mandating Apache is to avoid the copyleft behaviour you want to preserve. Sep 24, 2022 at 20:22
  • 2
    @Android776 I note from your (now-deleted) answer below that you're the original author of this question. You can contact the SE help centre though the "Contact" link at the bottom of the page; there's an explicit help option to merge user profiles. That will enable you to accept an answer for this question, if you choose so to do; it's generally a good thing to accept answers to questions, as it stops them floating around forever like querulous albatrosses. Merging user profiles will also enable you to benefit from the rep this question has accumulated.
    – MadHatter
    Sep 26, 2022 at 10:33
  • 1
    OS Developers would not have an issue if they just run your software. They would only have an issue if they wanted to distribute your software to a third party, or if they wanted to incorporate your software within their os. Do you expect this to happen?
    – MTilsted
    Sep 26, 2022 at 12:54
  • 1
    What if I'm in an Operating System Developer (e.g. by my profession) but I'm using your software for a personal project that's not about operating systems? Am I allowed to use it under the Apache license conditions in that case?
    – Brandin
    Sep 27, 2022 at 6:37
  • @Brandin, the license mentions "for Operating System Development purposes", not "if you are an OS developer", so you couldn't use it directly. However MadHatter pointed out a loophole where an OS developer obtains it for the purposes of development, then redistributes it under Apache because they are allowed to. I have decided not to go with this 'crayon license' as it creates confusion and deters users. Sep 28, 2022 at 0:31

3 Answers 3

41

Don't do this. We already have an excellent Q&A on why you shouldn't use a crayon licence, and I strongly recommend you read it. You can achieve most of what you want with existing licences, and the rest isn't even achieved by your licence. Let's take it point by point.

  • You can choose between GPL (v2 or later) or LGPL (v2.1 or later), whichever you prefer.

That's easy; just distribute it with the statement "You may use this code under GPLv2+ or LGPLv2.1+, at your choice".

  • If you are an Operating System Developer, you can also choose Apache

That won't work. Any OS developer can take your code under Apache2, then give a copy to a non-OS-developing friend, which will also be under Apache. You could try to distribute it under some kind of warped Apache-plus-redistribution-restriction, but nobody will use it (see linked answer above).

  • You must follow these conditions or not redistribute my software at all.

Pretty much all free licences require that you follow their conditions in order to redistribute.

  • If you send me code, no matter what license you got it under, you license it under my boilerplate notice.

That's better handled by a compulsory CLA for contributors. Anyone wants to contribute, you require them to sign your CLA, which gives you relicensing rights. Whether they'll sign that, or whether they'll prefer not to contribute, is up to them, but that's the risk you run by choosing an odd licensing strategy. We discuss the whole CLA-for-relicensing issue in this question, and elsewhere.

6
  • 6
    Note also that if your the sole copyright holder, you can choose on a case-by-case basis who gets the apache license, if you prefer. Sep 24, 2022 at 16:50
  • 3
    @PyRulez absolutely, but you still can't stop any of them passing it on under Apache2.
    – MadHatter
    Sep 25, 2022 at 19:41
  • Worth adding on the CLA part that contributors can't relicense "no matter what license you got it under" - they can only relicense contributions for which they are the copyright owner. If I could take code that was licensed to me under the GPL and donate it to someone else under an MIT license, I could just play shell games and "donate" it to myself, avoiding the requirements of the GPL.
    – IMSoP
    Sep 26, 2022 at 11:15
  • @IMSoP whilst that is true for copyleft licences, it is thought not to be true for the permissive licences.
    – MadHatter
    Sep 26, 2022 at 11:25
  • 1
    @MadHatter Thank you for your reply, I found it very helpful! Sep 27, 2022 at 11:46
12

If you are an Operating System Developer, you can also choose Apache.

I'm an operating system developer. If I use your software, I will choose Apache.

The problem is that one of the rights that I have under the Apache license is to sublicense without restriction on who I sublicense to.

"Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form."

So when I make your software available, it will be available under the Apache license to everyone. The Apache license specifically and intentionally prohibits this kind of discrimination precisely to prevent people from being able to make software open source but then limit who can use it and how they can use it -- which is precisely what you want to do.

0
7

Every company who ever thought about GPL-licensed software has paid some lawyer to read it and give them advice. That is money well spent, because there are 1000s of useful GPL licensed libraries around, and with one expense the company now knows whether to, whether not to, or how to use GPL licensed software.

If you create your own license, they have to spend the same money for one piece of software. Actually, they have to spend more because their lawyer has never seen this license before, and we can assume that the GPL license, unlike yours, has been written by experienced lawyers to make it easy to understand for a lawyer.

Next, if I include one GPL licensed bit of software in my application, I know that I can include a second or third for fourth one. It won't cause me any trouble. But with different license, it's risky. The terms of your license might make it impossible to include GPL licensed code, for example. Or might require them to ask and pay another lawyer. So please, don't write your own license.

0

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