I'm building a piece of open source code that I want to use the AGPLv3 license, but at the same time, if a company pays a fee, I want to allow them to access the software using a much more permissive license such as the MIT license or the Apache license.

I'm a bit unsure about a couple of things, though. Is this even allowed? Also, how does once apply this to your codebase? The standard practice is to have a LICENSE.txt file in the root of your project which (in my case) contains the AGPLv3 license text. It is also common practice to include a shorter version of the license text at the top of every source code file to emphasise which license applies to which files.

If I wanted to do this should I include two LICENSE.txt files in the root of my project and two shortened license headers at the top of each file and then in the readme state that the MIT license is only applicable if you pay a licensing fee?

I have no idea how an open-source project handles this particular problem. Any help is appreciated.

  • "should I include two LICENSE.txt files in the root of my project" - No, that would probably be confusing. "[should I] in the readme state that [a different license] is only applicable if you pay a licensing fee?" - Yes. Encourage them to contact you if they want a different license.
    – Brandin
    Oct 8, 2019 at 8:31

1 Answer 1


Firstly, dual-licensing is fine and uncontentious: as long as you own all the copyrights in this codebase, you can offer it to different recipients under different licences without issue. Note this will require not accepting community contributions, or only doing so when a suitable Contributor Licensing Agreement, or a Copyright Transfer Agreement, is in place.

That said, you probably don't want paying customers to get the product under the MIT licence, otherwise they can create an arbitrary number of copies and distribute them widely if they so choose.

One route is to take your product code and insert all the AGPLv3 headers, licence copies, and relevant statements, and you make that tarball available to the community under AGPLv3. You then prepare a similar package without any of the liberal licensing inclusions, add a tiered support offering, and sell it at various price points. The licence on the non-free offering usually permits the licensee to use the product in their business, and often in their own products (possibly not in unlimited quantities), but doesn't allow them to extend that licence to others. Such a licence needs legal help to write properly, and being non-free, would be off-topic here.

If you've got a big operation going you can free up only the main bit in the middle of the product (open-core) then add increasing amounts of peripheral product as the licence class and price increases.

The easiest way to see how people do this is to read the websites of people who are doing it. The open-core article above links to a number of examples, and one of the earlier adopters of the nonfree-licence-for-a-price model was MySQL.

  • Thank you for your useful reply. I'll try and find a software lawyer in England to see if I can get something like this underway. One question I do have is, can I do all the development in public and allow people to contribute as long as they sign a contributor agreement assigning all rights to myself.
    – Cromulent
    Oct 9, 2019 at 2:19
  • I'm pretty sure my paragraph one above addresses that.
    – MadHatter
    Oct 9, 2019 at 6:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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