Friday, 18 February 2011

The licensing situation of Greenlet

In order to use Stackless Python and gain what it offers, a custom version of Python needs to be installed. You may know about Greenlet which offers part of what Stackless does, and which can be installed as an extension module for your normal Python installation.

The MIT licensing of Greenlet

When it was extracted from Stackless Python, it was checked into the Py or PyPy repository or something. Py and PyPy are licensed under the MIT license, but as an oversight the licensing of the Greenlet code was never clarified. From there, it was handed off and maintained by Bob Ippolito. And from there, it made its way to the bitbucket repo. Along the way it inherited the MIT license.

The actual licensing of Greenlet

Greenlet contains parts of Stackless Python, specifically the assembler code related to switching between coroutines. Stackless Python as a derivative of regular Python has always just gone with the license of Python itself, so these files are still licensed under the Python license. Ideally the easy solution would be to get Christian Tismer to relicense them under the MIT license, but its not that easy. Between the time Christian wrote the original set of these files, and the time when they were extracted for Greenlet, other people (including myself) contributed both additional files and patches. To really relicense the code, all of these people would need to give approval (as I understand it). Who are all these people? I don't know.

So despite the MIT license that comes with it, and the declaration that it is MIT licensed on the Pypi page and elsewhere, to my understanding the project is effectively licensed under two licenses. For the files which came from Stackless, the Python license applies. And for the files which came from Armin Rigo, the MIT license implicitly applies.


There's a bug on it.

A double licensing mish-mash isn't desirable for the project, and the easiest step forward is relicensing to the Python license to work around that as broached in the bug. I was going to offer to do the work of tracking down all the contributors and sorting this out.. but due to circumstances beyond my control I no longer have the time.

No comments:

Post a Comment