To be honest, I wanted to bring this up ever since my first commit here, but I've always been hesitant. Nevertheless, now that I've had quite substantial contributions, I would like to at least bring this discussion onto the table, which shouldn't hurt. (No hard feelings even if it is immediately rejected.)
Full disclosure
I'm not a fan of GPLv3 (and GPL in general). I'm not a hater, but GPLv3 in particular has done more harm than good in my life.
Current state of affairs
First, whatever the outcome is, the current license is no good. README.md brands our license as GPLv3, but if you read LICENSE
or the license boilerplate in googler
, it is actually licensed under GPLv3+:
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
And that's ridiculous. To paraphrase Linus, GPLv2+ was basically a scam, because FSF tricked people into licensing under GPLv2 and some future licenses that they had no idea about, and they could sneak in intolerable stuff at any point, and they did. The exact same thing could be said about GPLv3+.
So the first thing to do, even if we do stick with GPLv3, is to eliminate that "+".
Alternative licenses
More importantly, I'd love to see a more permissive license. It's not like anyone's ever going to incorporate our code (definitely not in closed-source products as far as I could imagine), but IMO placing artificial usage barriers is not nice in any case, and doesn't benefit anyone, especially for a project of our size.
In the Python community, the most common licenses are MIT and BSD. According to PyPI:
BSD License (13536)
GNU General Public License (GPL) (4531)
GNU General Public License v2 (GPLv2) (853)
GNU General Public License v2 or later (GPLv2+) (271)
GNU General Public License v3 (GPLv3) (1946)
GNU General Public License v3 or later (GPLv3+) (1227)
MIT License (17545)
So MIT and BSD vastly outnumber any sort of GPL. Here I assume BSD to be BSD 3-Clause. I personally always choose MIT over BSD because I don't care a bit about BSD's third clause (and I license my tiny and/or more playful projects/code snippets under WTFPL). It is also worth noting that some big name projects choose public domain, the most notable one that I know of being rg3/youtube-dl.
In summary, I would relicense the project to MIT. BSD is also a reasonable choice. Licenses like Apache could be more hairy.
The path to enlightenment
If we do decide on relicensing, we'll need to ask our contributors. Fortunately we only have seven in total, five excluding @jarun and me. Four out of the five are active on GitHub. Henri — the original author — isn't, but he does have an email address on his profile, [email protected], so we could give it a shot. Even if we can't reach him, we have already organically rewritten almost everything (i.e., we didn't rewrite for the sake of rewriting):
> git checkout master
> git blame googler | grep Henri | grep -v -e ') #' -e ') $'
^3f6e257 google (Henri 2008-10-13 13:17:55 +0300 366) def __init__(self):
^3f6e257 google (Henri 2008-10-13 13:17:55 +0300 392) def main_start(self, tag, attrs):
^3f6e257 google (Henri 2008-10-13 13:17:55 +0300 419) pass
^3f6e257 google (Henri 2008-10-13 13:17:55 +0300 1044) keywords = None
110566f5 googler (Arun Prakash Jana 2016-05-02 00:30:10 +0530 1071) Copyright (C) 2008 Henri Hakkinen
693b2cfb google (Henri 2008-10-15 09:39:32 +0300 1156) if len(sys.argv) < 2:
^3f6e257 google (Henri 2008-10-13 13:17:55 +0300 1158) sys.exit(1)
> git checkout oo-refresh
> git blame googler | grep Henri | grep -v -e ') #' -e ') $'
^3f6e257 google (Henri 2008-10-13 13:17:55 +0300 959) def main_start(self, tag, attrs):
^3f6e257 google (Henri 2008-10-13 13:17:55 +0300 986) pass
57105a35 googler (Zhiming Wang 2016-05-29 16:55:12 -0700 1658) Copyright (C) 2008 Henri Hakkinen
so I would say (IANAL) it's okay to argue that this is no longer a derivative work. (The main_start
thing is nothing but an accidental name clash; I can even rename the scope to root
or global
which would make more sense.) Worst case scenario is Henri later finds out and gets angry, and we'll relicense under GPLv3, and we don't need to ask anyone for permission to do that because MIT/BSD is GPL compatible.