On the subject of OSS projects on the side, I'm really interested in the dual licensing model - I'd like to have my code licensed under a strict copyleft license so people can see the code, but a more permissive license so businesses can use it.

Based on articles like http://www.mikeperham.com/2015/11/23/how-to-charge-for-your-... I've figured out the following:

OSS license - AGPL - I'm building web services distributed as docker containers, so AGPL makes sense because it forces businesses to buy a license even if thy just deploy an instance of the service without modification.

Commercial license - this is where I'm stuck. MIT / BSD isn't a good fit because the business is then free to make and sell their own version of the service. What license will allow a business to run my service, and customize it for their own needs if necessary, but not re-license or redistribute it? Based on https://choosealicense.com/appendix/ it seems like the Mozilla Public License comes close, but it forces businesses to disclose the changes they've made - which I doubt they'd want to do.

I don't want to write my own license - anyone know of a good existing license or template? Don't mind buying it if it's less than $100, but getting a lawyer to write one is much more expensive.

Some thoughts from a guy who has done a lot with licenses:

As others have stated, GPL/AGPL or anything "open" does NOT force business to buy a license. All it says it that _if_ they use your code, they have to make the code available to their users. (Today that often gets interpreted as made public, but it truly only requires that the users have access to it). So the business CAN still freely sell software that uses your code without your involvement in any way.

If you want to be paid by every business that uses your code, don't make it public. There really isn't any other way to force that behavior.

As far a commercial license goes, just basically just say it belongs to you and no usage is allowed without arrangements with you. That is generally wrapped up in a contract between you and the business. I haven't used it, but you can try a tool like this to generate that type commercial license: http://www.binpress.com/license/generator

One of the real advantages of going open for you (the author) is getting help from other people. Often it is small things, but you can get help. Doing a Dual License complicates this. As long as you are the owner of the code you can freely re-license it. But once you accept a code contribution to your GPL code, you cannot legally or ethically just resell that contributed code under the commercial license. So you either: 1) Reject all contributions from other programmers 2) Have two independent branches that might end up diverging 3) Asking every code contributor to grant you a license to also use their code under your commercial license.

To me, option #3 is questionable and probably won't fly well if your project takes off.

We moved Mycroft (https://github.com/MycroftAI/mycroft-core) from GPLv3 to Apache 2.0. There were various reason for this, but for us the biggest was that business generally avoids GPL code, and in some cases there the regulatory system comes in conflict with the requirements of GPL. For example, if a car brake system has GPLv3 code you are REQUIRED to provide a mechanism so users can replace that code. Good luck getting approval of a car. Even if you did get it approved, the car manufacturers would be terrified of the court cases they'd have to defend -- win or lose.

In short, if you don't think it is valuable enough to spend more than $100 on this, then just go with a well-known permissive open source license like MIT. If it takes off, you get famous and can command a high salary somewhere.