Log in to GraphQL Editor
Software licensing - All about multi-licensing
Michal

Michał Tyszkiewicz

6/15/2020

Software licensing - All about multi-licensing

The last few weeks we looked at various types of licenses and what they entail. Now that we know a little bit about them it’s time to look at the approach of using multiple licenses or hybrid software licensing.

The ins and outs

Multi licensing is the practice of licensing your work under multiple different licenses so that others can choose under which license they want to use it or work on it. The practice emerged in the early aughts addressing the need for making open source development profitable. It allowed developers to create proprietary variants of copyleft software and was intended for those who wanted to work on it, but either wanted to monetize their work later or just didn't want to publish their source code. The usual way to go about this is dual-licensing software under a permissive license like MIT and a copyleft license like GPL.

For example Perl is licensed under GPL and their Artistic License to make it available to both groups.

MIT and GPL

Credits: undraw.co

Takes two to tango

GPL is a copyleft license, that means under this license any derivative work has to be licensed under GPL (or a compatible copyleft license). That's why it’s often called a viral license because it carries over from project to project. This led to the approach of dual-licensing and by that way giving the developer community a choice between using the copyleft or the proprietary variant:

  • those who wanted their work to remain copyleft and free to use would choose the GPL license.
  • those who wanted their work to be monetized later or didn't want to publish their source code would choose the proprietary license.

But wait, there’s more

Issues with license compatibility made some even use tri-licensing to maximize compatibility. Like Mozlilla with both Firefox and Thunderbird being licensed under their Mozilla Public License, GPL v2 and LGPL v2.1 Mozilla later updated their license to include compatibility clauses for GPL which made tri-licensing a bit redundant.

Ruby used a similar approach using Ruby license, GPL v2 and the 2-clause BSD license.

Why should I?

Today the growing popularity of permissive licenses, as well as fixing some of the compatibility issues in copyleft licenses, has somewhat simplified software licensing. However some issues are still present, especially in connection with copyleft licenses. GPL is still widely used and is incompatible or only one way compatible with numerous other licenses. That makes multi-licensing a viable approach with some advantages:

  • project flexibility - developers can choose whether they want their work to be copyleft or proprietary and if they want to make their source code public and available for modification or not,

  • best of both worlds - combining wide ranging continuous code improvement through the community while maintaining the possibility of monetization through commercial licensing,

  • variability - you can offer a freemium version for everyone to work on and a subscription based commercial premium version for end-users,

  • simplicity - avoiding various headaches with license compatibility.

So if it’s so great why doesn't everyone do it? Well the obvious drawback is the added work in maintaining more than one license. In a community that values simplicity more straightforward approaches are usually favoured. But hey who says you can't zig when everyone else zags?

Check out our other blogposts

GraphQL Server under 5 minutes - TypeScript
Tomek Poniatowicz
Tomek Poniatowicz
GraphQL Server under 5 minutes - TypeScript
11 min read
over 5 years ago
GraphQL library for Python - Strawberry
Robert Matyszewski
Robert Matyszewski
GraphQL library for Python - Strawberry
1 min read
over 5 years ago
New Ghost 3.0 and how to use it with GraphQL (Gatsby)
Tomek Poniatowicz
Tomek Poniatowicz
New Ghost 3.0 and how to use it with GraphQL (Gatsby)
2 min read
almost 5 years ago

Ready for take-off?

Elevate your work with our editor that combines world-class visual graph, documentation and API console

Get Started with GraphQL Editor