This is a proposal to re-license the C++ implementation of the Ethereum client runtime (cpp-ethereum) from the copyleft GPLv3 license to the permissive Apache 2.0 license, to enable Ethereum to be used as broadly as possible.
NB: If you would like to discuss this plan, please let’s all do so on cpp-ethereum Gitter channel. Thanks!
Moving to permissive licensing has been the “plan of record” for a year or so, which we are belatedly executing on. Gavin Wood actually started the process of relicensing to MIT last year, but it was never completed. So we’re going through the process again now.
There is another long-form article talking about the rationale for the change and the history leading up to this proposed change of licensing, so I won’t duplicate that content here.
This post talks through the expected operational steps for making this change. These steps aren’t entirely sequential, and we will be doing overlapping steps in parallel wherever we can, to try to get through the tedious process as quickly as we can.
Ultimately the contributors to the C++ codebase will make the decision on whether or not we relicense, and there is no intention from the Ethereum Foundation to “force” the process.
Steps to be followed
- Creation of a Github issue to start the ball rolling [started May 25th]
- Start to gather contributor details (Piratepad, then Wiki) [completed July 7th]
- Mention in the last few releases that we are contacting contributors [May, June, July]
- Ad-hoc conversations with contributors on the issue, Gitter, email [Ongoing]
- Talk to an IP lawyer to verify what we need to do, in rough strokes [June 22nd]
- Publicize “the plan” and work through any disagreements [July 12th onwards]
- Distribute paperwork to all contributors [August 18th to August 24th]
- Complete the process and change the license
- Announce that change to the world
What is the paperwork?
Everybody who has contributed to the code in question (see below) will be sent a letter, probably both as a PDF and physically, which essentially attests to the fact that they were the author of that code, and giving their approval for that contribution to be used under the Apache 2.0 license.
Future contributors will be required to make a similar declaration. The one page document just ensures that there is no ambiguity for any party in the case of future disagreement or legal action.
Here is a template for the paperwork, which is legal boilerplate from the Linux Foundation adjusted to our project.
This is not final paperwork. Discussion ongoing.
Content to be relicensed
The following repositories are in the process of being reorganized into a restored cpp-ethereum repository, which will be relicensed as Apache 2.0:
That will include the following applications:
- Ethereum VM:
- Support tools:
The following standalone repositories will also be relicensed to Apache 2.0:
The following repositories, containing the Solidity compiler and the deprecated C++ GUI applications will remain under GPLv3:
The following repository, containing the new “Remix” debugging components will remain under MIT, though we might want to consider whether that should be Apache 2.0 as well?