Hacker News new | ask | show | jobs
by glacials 1574 days ago
You can accomplish this with dual licensing (e.g. GPL and commercial), where the user decides which license to fulfill.

Once upon a time I built a platform to simplify this [1], but it didn’t take off—between the extra mental effort, the impact to growth, and the inability to call it “open source”, I think most authors just prefer the simplicity of MIT.

[1]: https://license.land/

1 comments

> You can accomplish this with dual licensing (e.g. GPL and commercial), where the user decides which license to fulfill.

This is a good solution, but you have to make ultra-certain that all of your contributors, who may have chosen the GPL, understand that their contributions will be dual-licensed, too. It introduces a barrier to contribution that may be more harmful than good.

I think in these cases to receive contributions you must ask people to sign a CLA that transfers the copyright to the you/project. Otherwise it's not possible to relicense the contributed parts.
> I think in these cases to receive contributions you must ask people to sign a CLA that transfers the copyright to the you/project. Otherwise it's not possible to relicense the contributed parts.

This is a common misunderstanding. A CLA allows relicensing of a contribution, but doesn't require transferring of copyright.

Transferring copyright is only needed if you want to allow changing the terms of licensing unilaterally in the future (for example, you contribute under GPL/proprietary terms today, but the company decides to change the license of your contribution to proprietary-only in the future), and makes suing for license violations a bit simpler (since one entity obviously holds the entire copyright). Technically a copyright assignment could even allow the assignee to sue the assigner for a licensing violation.

In other words, copyright assignment really isn't needed for anything reasonable a company might want to do. Only for things (like reselling the copyright to some other company or making the code proprietary only), that you wouldn't agree to if it was spelled out in a CLA.