Possible license issue

49 views
Skip to first unread message

Bastian Germann

unread,
Oct 27, 2020, 7:00:14 PM10/27/20
to thg...@googlegroups.com
Hi,

Assuming TortoiseHg is GPLv2 only (as opposed to "or later") licensed,
there might be a license issue. PyQt5 is GPLv3. GPLv3 and GPLv2 are
incompatible
(https://www.gnu.org/licenses/gpl-faq.html#AllCompatibility). I cannot
find any "or later" clause in TortoiseHg's license info.

The use of PyQt5 might make TortoiseHg a derivative work of PyQt5
(IANAL). Given that, its license has to be compatible with GPLv3.

You could ask PyQt5's publisher Riverbank Computing for advise how to
deal with this. Maybe they consider this okay. Alternatively, TortoiseHG
could be ported to PySide2 which is available under GPLv2, or you might
consider relicensing the project.

Regards,
Bastian

Yuya Nishihara

unread,
Oct 28, 2020, 8:37:59 AM10/28/20
to thg...@googlegroups.com, Bastian Germann, st...@borho.org, Matt Harbison
On Tue, 27 Oct 2020 20:44:36 +0100, Bastian Germann wrote:
> Assuming TortoiseHg is GPLv2 only (as opposed to "or later") licensed,
> there might be a license issue. PyQt5 is GPLv3. GPLv3 and GPLv2 are
> incompatible
> (https://www.gnu.org/licenses/gpl-faq.html#AllCompatibility). I cannot
> find any "or later" clause in TortoiseHg's license info.
> (IANAL). Given that, its license has to be compatible with GPLv3.

Oops, I thought we've switched to GPLv2+, but setup.py doesn't say that.
And we have many files that lack the "or any later versions" phrase.

Steve, Matt, can you update license header of files you're the solo
author? It's probably okay to say you're the solo author if other changes
are just py2/3 stuff, PyQt4/5, type hints, or similar minor tweaks.

Maybe we'll need to email all contributors of the remaining files to
ask if the license fixup is okay.

Александр Литягин

unread,
Oct 28, 2020, 5:15:55 PM10/28/20
to thg...@googlegroups.com
Hallow!

wants experimenting with history graph ordered-by-date.

when examine `graphopt.py:Graph` found that on init it builds:

`self._row_to_rev = dict( enumerate(self._get_revision_iterator()) )`


later:

`__getitem__(self, row)` uses this `self._row_to_rev` to find row->rev


but method `index(self, rev):` traverses through
`self._get_revision_iterator()` again:

```

        idx = 0
        isrevset = bool(self._revset)
        for iter_rev in self._get_revision_iterator():
            if iter_rev == rev:
                return idx
            if not isrevset or iter_rev in self._revset_set:
                idx += 1

```


what the point of `index` method? why it not use search in
`self._row_to_rev` ?

is index of rev - not same as row of a rev for `__getitem__` ?


Yuya Nishihara

unread,
Nov 1, 2020, 5:05:45 AM11/1/20
to thg...@googlegroups.com, Bastian Germann, st...@borho.org, Matt Harbison
For reference, the following files are considered GPLv2 only.

$ hg files 'set:(tortoisehg/**/*.py or thg) and not grep("or any later version")'
thg
tortoisehg/__init__.py
tortoisehg/hgqt/__init__.py
tortoisehg/hgqt/about.py
tortoisehg/hgqt/archive.py
tortoisehg/hgqt/backout.py
tortoisehg/hgqt/bisect.py
tortoisehg/hgqt/blockmatcher.py
tortoisehg/hgqt/bookmark.py
tortoisehg/hgqt/branchop.py
tortoisehg/hgqt/chunks.py
tortoisehg/hgqt/clone.py
tortoisehg/hgqt/close_branch.py
tortoisehg/hgqt/cmdcore.py
tortoisehg/hgqt/cmdui.py
tortoisehg/hgqt/commit.py
tortoisehg/hgqt/compress.py
tortoisehg/hgqt/csinfo.py
tortoisehg/hgqt/cslist.py
tortoisehg/hgqt/customtools.py
tortoisehg/hgqt/filectxactions.py
tortoisehg/hgqt/filedata.py
tortoisehg/hgqt/filedialogs.py
tortoisehg/hgqt/filelistview.py
tortoisehg/hgqt/fileview.py
tortoisehg/hgqt/graft.py
tortoisehg/hgqt/graph.py
tortoisehg/hgqt/graphopt.py
tortoisehg/hgqt/grep.py
tortoisehg/hgqt/guess.py
tortoisehg/hgqt/hgemail.py
tortoisehg/hgqt/hgignore.py
tortoisehg/hgqt/hginit.py
tortoisehg/hgqt/htmldelegate.py
tortoisehg/hgqt/htmlui.py
tortoisehg/hgqt/lexers.py
tortoisehg/hgqt/manifestmodel.py
tortoisehg/hgqt/matching.py
tortoisehg/hgqt/merge.py
tortoisehg/hgqt/messageentry.py
tortoisehg/hgqt/p4pending.py
tortoisehg/hgqt/phabreview.py
tortoisehg/hgqt/pick.py
tortoisehg/hgqt/postreview.py
tortoisehg/hgqt/purge.py
tortoisehg/hgqt/qdelete.py
tortoisehg/hgqt/qfold.py
tortoisehg/hgqt/qtapp.py
tortoisehg/hgqt/quickop.py
tortoisehg/hgqt/rebase.py
tortoisehg/hgqt/rejects.py
tortoisehg/hgqt/rename.py
tortoisehg/hgqt/repofilter.py
tortoisehg/hgqt/repomodel.py
tortoisehg/hgqt/repoview.py
tortoisehg/hgqt/repowidget.py
tortoisehg/hgqt/resolve.py
tortoisehg/hgqt/revdetails.py
tortoisehg/hgqt/revert.py
tortoisehg/hgqt/revpanel.py
tortoisehg/hgqt/revset.py
tortoisehg/hgqt/run.py
tortoisehg/hgqt/serve.py
tortoisehg/hgqt/settings.py
tortoisehg/hgqt/shelve.py
tortoisehg/hgqt/sign.py
tortoisehg/hgqt/status.py
tortoisehg/hgqt/tag.py
tortoisehg/hgqt/thgimport.py
tortoisehg/hgqt/thgstrip.py
tortoisehg/hgqt/topic.py
tortoisehg/hgqt/update.py
tortoisehg/hgqt/updatecheck.py
tortoisehg/hgqt/visdiff.py
tortoisehg/hgqt/wctxcleaner.py
tortoisehg/hgqt/webconf.py
tortoisehg/hgqt/workbench.py
tortoisehg/util/__init__.py
tortoisehg/util/bugtraq.py
tortoisehg/util/cachethg.py
tortoisehg/util/debugthg.py
tortoisehg/util/editor.py
tortoisehg/util/hglib.py
tortoisehg/util/hgversion.py
tortoisehg/util/i18n.py
tortoisehg/util/menuthg.py
tortoisehg/util/obsoleteutil.py
tortoisehg/util/partialcommit.py
tortoisehg/util/paths.py
tortoisehg/util/shlib.py
tortoisehg/util/terminal.py
tortoisehg/util/thgstatus.py
tortoisehg/util/thread2.py
tortoisehg/util/typelib.py
tortoisehg/util/version.py


Active authors of these files are:

$ hg annotate -w --skip 'desc("re:^py3:")' \
-T'{lines % "{if(sub("#.*", "", line)|strip, "{user}\n")}"}' \
'set:(tortoisehg/**/*.py or thg) and not grep("or any later version")' \
| sort | uniq -c | sort -r
16433 Yuya Nishihara <yu...@tcha.org>
7368 Steve Borho <st...@borho.org>
2628 Angel Ezquerra <angel.e...@gmail.com>
1338 Matt Harbison <matt_h...@yahoo.com>
965 Yuki KODAMA <endfl...@gmail.com>
858 Adrian Buehlmann <adr...@cadifra.com>
439 Johan Samyn <johan...@gmail.com>
409 Henrik Stuart <hen...@unity3d.com>
399 Hidetaka IWATA <iwat...@gmail.com>
334 David Wilhelm <da...@jumbledpile.com>
330 David Golub <dav...@fogcreek.com>
315 Angel Ezquerra
312 Simon Heimberg <sim...@besonet.ch>
299 Olivier Trempe <otrempe>
272 Phil Currier
246 Lloyd Markle
207 André Sintzoff <andre.s...@gmail.com>
149 Michael De Wildt
143 Wei, Elson <elso...@gmail.com>
132 Manuel Jacob <m...@manueljacob.de>
127 James Reynolds <jrey...@backstage.com>
116 Mathias Weber <mathew...@gmail.com>
109 michaeldewildt
103 Jacob Bundgaard <ja...@jacobbundgaard.dk>
91 Antonio Muci <a....@inwind.it>
90 Pierre-Yves David <pierre-y...@fb.com>
87 Pierre-Yves David <pierre-y...@ens-lyon.org>
82 Wagner Bruna <wbr...@softwareexpress.com.br>
79 Wei, Elson <elso...@primevolt.com>
74 Mads Kiilerich <ma...@kiilerich.com>
61 David Golub <gol...@gmail.com>
60 Bram Belpaire <belpai...@hotmail.com>
52 Dirk Hasselbalch <dirk.has...@edlund.dk>
46 Piotr Klecha <pkl...@forcom.com.pl>
43 Michal Sznajder <michals...@gmail.com>
41 George Marrows
41 Daniel Atallah <daniel....@gmail.com>
39 Iwata Hidetaka <iwat...@gmail.com>
35 Peer Sommerlund <pe...@users.sourceforge.net>
35 Andrei Polushin <polu...@gmail.com>
34 Toshi MARUYAMA <marut...@gmail.com>
34 Michael De Wildt <michael...@gmail.com>
29 TK Soh <teek...@yahoo.com>
28 patrice....@gmail.com
27 Sune Foldager <cr...@cyanite.org>
26 schlamar <marc.s...@googlemail.com>
21 timeless <time...@gmail.com>
21 Wagner Bruna <wbr...@yahoo.com>
21 Fernando P. Nájera Cano <y...@fernandonajera.com>
20 ike.ca...@gmail.com
16 Andrew Shadura <bugz...@tut.by>
15 p.lac...@see.fr
15 Pierre-Yves David <pierre-y...@octobus.net>
13 hindlemail
13 Peter Suter <pets...@gmail.com>
13 James McKay <co...@jamesmckay.net>
12 mdewildt
12 Henrik Stuart <h...@hstuart.dk>
12 Arialdo Martini <arialdo...@yoox.com>
11 schueler <nikolaus...@lantiq.com>
9 Martin Rieser <martin....@gmail.com>
9 Martin Geisler <m...@aragost.com>
9 George Marrows <george....@gmail.com>
7 Mike Wolfe <f8_to...@yahoo.com>
6 Ryan Seto <mr.we...@gmail.com>
6 Eduard-Cristian Stefan <alexan...@gmail.com>
6 Andrea Stagi <stagi....@gmail.com>
5 rmcat
5 Sune Foldager <cy...@me.com>
5 James Reynolds <james.glen...@gmail.com>
4 vitidev
4 Thomas Arendsen Hein <tho...@intevation.de>
4 Daniel Godfrey <daniel....@gmail.com>
4 Andre Rudlaff <Weed...@gmail.com>
3 augustin...@googlemail.com
3 Sune Foldager <sune.f...@edlund.dk>
3 Ruslan Yushchenko <yru...@gmail.com>
3 Michaі Kandulski <michal.k...@gmail.com>
3 Michael Augustin <augustin...@googlemail.com>
3 Martin Geisler <mar...@geisler.net>
2 ar <weed...@gmail.com>
2 Simon Farnsworth <simo...@fb.com>
2 Richard Pastrick <Richard....@zemax.com>
2 Josiah Reynolds <jdrgold...@gmail.com>
2 Corey King
2 Boris Feld <boris...@octobus.net>
2 Andrew Shadura <and...@shadura.me>
2 Andre Rudlaff <weed...@gmail.com>
1 pat...@lacouture.nom.fr
1 muxator <a....@inwind.it>
1 mehrmann <michael...@gmail.com>
1 liscju <piotr.li...@gmail.com>
1 ldufrechou
1 chrisjbillington
1 Waqas Hussain <waq...@gmail.com>
1 Olivier Trempe <olivie...@gmail.com>
1 Mikhail Terekhov
1 Michał Kandulski <michal.k...@gmail.com>
1 Giorgos Keramidas <kera...@ceid.upatras.gr>
1 Enrico Bedau <ri...@web.de>
1 Deanna Earley <d...@earlsoft.co.uk>
1 Corey King <tose...@gmail.com>


and the historical authors:

% hg churn 'set:(tortoisehg/**/*.py or thg) and not grep("or any later version")'
adr...@cadifra.com 154461
st...@borho.org 113332
yu...@tcha.org 73616
endfl...@gmail.com 58318
angel.e...@gmail.com 8809
johan...@gmail.com 5346
matt_h...@yahoo.com 4598
pe...@users.sourceforge.net 3067
da...@jumbledpile.com 1918
Angel Ezquerra 1565
iwat...@gmail.com 1245
ma...@kiilerich.com 1219
George Marrows 1152
andre.s...@gmail.com 1136
goawa...@gmail.com 1131
dav...@fogcreek.com 1086
m...@manueljacob.de 1050
hen...@unity3d.com 974
time...@gmail.com 875
Phil Currier 835
otrempe 832
cr...@cyanite.org 812
michaeldewildt 722
wbr...@softwareexpress.com.br 652
Lloyd Markle 603
Michael De Wildt 506
pierre-y...@fb.com 362
dro...@westga.edu 348
daniel....@gmail.com 342
jrey...@backstage.com 297
elso...@gmail.com 294
paulm 280
dirk.has...@edlund.dk 262
mr.we...@gmail.com 257
h...@hstuart.dk 252
a....@inwind.it 247
mathew...@gmail.com 245
michael...@gmail.com 228
di...@diegooliveira.com 222
elso...@primevolt.com 205
pierre-y...@ens-lyon.org 198
michals...@gmail.com 192
grosser.me...@gmx.net 190
george....@gmail.com 185
gol...@gmail.com 177
jor...@gmail.com 171
patrice....@gmail.com 167
pkl...@forcom.com.pl 159
co...@jamesmckay.net 158
wbr...@yahoo.com 153
p...@stanfordalumni.org 152
alexan...@gmail.com 123
ja...@jacobbundgaard.dk 116
peter.ar...@gmail.com 116
polu...@gmail.com 104
mdewildt 103
aayja...@itopia.com.hk 98
henrik...@edlund.dk 98
pat...@lacouture.nom.fr 89
ike.ca...@gmail.com 87
belpai...@hotmail.com 85
ste...@haller-berlin.de 79
m...@lazybytes.net 74
marut...@gmail.com 73
daniel....@gmail.com 72
y...@fernandonajera.com 71
marc.s...@googlemail.com 65
sim...@besonet.ch 60
m...@aragost.com 54
gilles...@free.fr 41
waq...@gmail.com 41
arialdo...@yoox.com 40
stagi....@gmail.com 40
StefRave 36
FredrikOrderud 32
aezq...@at4wireless.com 32
bugz...@tut.by 32
pierre-y...@octobus.net 32
ryan...@connectcorp.com 28
p.lac...@see.fr 26
rom...@gmail.com 23
afri...@gmail.com 22
pets...@gmail.com 22
dap 19
niels....@eksponent.com 18
Martin Rieser 16
hindlemail 16
nikolaus...@lantiq.com 16
orlov...@gmail.com 16
wbr...@yahoo.com 16
f8_to...@yahoo.com 15
fr...@kingswood-consulting.co.uk 15
ssa...@naumen.ru 15
Weed...@gmail.com 13
martin....@gmail.com 13
kyle.al...@gmail.com 12
michal.k...@gmail.com 12
augustin...@googlemail.com 11
rmcat 11
tho...@intevation.de 11
d...@earlsoft.co.uk 10
lior.tal 10
sune.f...@edlund.dk 10
yru...@gmail.com 10
cy...@me.com 8
gp.f...@gmail.com 8
weed...@gmail.com 8
james.glen...@gmail.com 7
ayam...@ivideon.com 6
toseewhy 6
vitidev 6
Corey King 5
Fabienn...@alcatel-lucent.com 5
blakec...@gmail.com 5
simo...@fb.com 5
teek...@gmail.com 5
w.stott 5
billhead 4
Richard....@zemax.com 3
ahmed...@gmail.com 3
and...@shadura.me 3
boris...@octobus.net 3
jdrgold...@gmail.com 3
mar...@geisler.net 3
paul.m...@octobus.net 3
Mikhail Terekhov 2
Sergej Zagursky 2
bre...@kublai.com 2
ccau...@openeye.net 2
datallah 2
jacob.b...@gmail.com 2
ldufrechou 2
mhar...@atto.com 2
michael...@gmail.com 2
ri...@web.de 2
tose...@gmail.com 2
Michal Sznajder 1
chrisjbillington 1
olivie...@gmail.com 1
piotr.li...@gmail.com 1

Angel Ezquerra

unread,
Nov 1, 2020, 12:51:15 PM11/1/20
to thg...@googlegroups.com, Bastian Germann, Matt Harbison, st...@borho.org
Hi guys,

Personally I have no issue with a change of license if that is what you guys think is best.

Cheers,

Angel

--
You received this message because you are subscribed to the Google Groups "TortoiseHg Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to thg-dev+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/thg-dev/20201101190339.abceb0b5f1451f0295e40f03%40tcha.org.

Yuya Nishihara

unread,
Nov 2, 2020, 7:01:49 AM11/2/20
to thg...@googlegroups.com, Angel Ezquerra, Bastian Germann, Matt Harbison, st...@borho.org
On Sun, 1 Nov 2020 18:51:01 +0100, Angel Ezquerra wrote:
> Personally I have no issue with a change of license if that is what you
> guys think is best.

Noted, thanks.

We'll need to copy the process we've done for Mercurial in 2009.

Student T

unread,
Nov 2, 2020, 7:04:43 AM11/2/20
to thg...@googlegroups.com, Angel Ezquerra, Bastian Germann, Matt Harbison, st...@borho.org
I also have no issue with the or later clause, but should we as contributors already push that or should we wait?

--
You received this message because you are subscribed to the Google Groups "TortoiseHg Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to thg-dev+u...@googlegroups.com.

Yuya Nishihara

unread,
Nov 2, 2020, 7:13:37 AM11/2/20
to thg...@googlegroups.com, Student T, Angel Ezquerra, Bastian Germann, Matt Harbison, st...@borho.org
On Mon, 2 Nov 2020 13:04:29 +0100, Student T wrote:
> I also have no issue with the or later clause, but should we as
> contributors already push that or should we wait?

Please wait for now. I didn't intend to urge all contributors to
thumbs up/down by this email. I just wanted to share my headache
with some core contributors. :)

Sorry for confusion.
Reply all
Reply to author
Forward
0 new messages