Opened 5 years ago
Last modified 5 years ago
#3970 assigned task
Can ChimeraX use GPL licensed QtCharts
| Reported by: | Owned by: | Scooter Morris | |
|---|---|---|---|
| Priority: | moderate | Milestone: | |
| Component: | Third Party | Version: | |
| Keywords: | Cc: | Tom Goddard, Eric Pettersen, Greg Couch | |
| Blocked By: | Blocking: | ||
| Notify when closed: | Platform: | all | |
| Project: | ChimeraX |
Description
QtCharts is a module for making plots that is an alternative to matplotlib. It is GPLv3 licensed as are several other Qt modules listed in the Qt docs
Some other GPL only Qt modules might be of interest in ChimeraX: Qt Data Visualization (3D vis), Qt Quick 3D, Qt Quick WebGL.
Are plugins to ChimeraX able to use these and be distributed on the Toolshed?
Can these be used as part of the ChimeraX distribution? ie can ChimeraX be GPL licensed? We discussed this years ago and some sentiment suggested that would be unacceptable with licenses to pharmaceutical companies. It was an explanation I never understood, and would be good to have it written down.
Begin forwarded message:
From: Anthony James Schaefer <>
Subject: Re: SEQROW and PySide2 in ChimeraX 1.2
Date: November 20, 2020 at 5:45:11 PM PST
To: Tom Goddard
Cc: Eric Pettersen, Greg Couch, Scooter Morris
Tom,
I don't want to jinx it, but it looks like it will be a simple switch for SEQCROW. I usually just use the C++ Qt online documentation because it's pretty fleshed out, and guess what the PyQt5 equivalents should be. It took me a while to figure out why I couldn't import Signal from PyQt5.QtCore. I didn't even realize QAction.triggered callbacks could take an argument. I guess if I need that I could probably use a lambda function or some other trick. From what I've seen so far, PySide2 stays true to the C++ (and its own documentation looks adequate, which is nice). I can't think of any major issues I've had with PyQt5, so I'd be fine either way.
The only thing I'd be interested in is the plots. I'm eager to get away from matplotlib.
Would the PySide2 license allow ChimeraX to include QtCharts?
If my bundle required another module that depends on PySide2, would it recognize ChimeraX's PySide2? If you go forward with PySide2, I might use PythonQwt (or something else - apparently PythonQwt has performance issues with PySide2) to do 2D contour plots in the future. A while back I tried to have my bundle install PyQtChart, and ChimeraX's PyQt5 wasn't recognized.
Best,
Tony
Change History (3)
comment:1 by , 5 years ago
comment:2 by , 5 years ago
Tony Schaefer was not able to install PyQtCharts with SEQCROW bundle, not sure why.
Begin forwarded message:
From: Anthony James Schaefer <tony.schaefer@…>
Subject: Re: SEQROW and PySide2 in ChimeraX 1.2
Date: November 20, 2020 at 7:21:31 PM PST
To: Tom Goddard <goddard@…>
Cc: Eric Pettersen <pett@…>, Greg Couch <gregc@…>, Scooter Morris <scooter@…>
Tom,
I think matplotlib plots resize as well as QtCharts when they're being used in Qt. If the tool window is too small, axis labels get cut off. If the tool window is expanded, I usually end up with lots of empty space surrounding the plot. I've also used matplotlib signals to add mouse controls to the plots. To me, these seemed more cumbersome than what Qt plots have.
I think there were a couple reasons why I couldn't get PyQtCharts installed. PyQtCharts didn't recognize ChimeraX's PyQt5 because the metadata and version are different/insufficient. I'm not 100% sure why PyQtCharts didn't like ChimeraX's PyQt5, but it had ChimeraX install another version of PyQt5 from PyPi. Also, PyQtCharts just adds the QtCharts module to PyQt5, so it would have to add files to where ChimeraX's PyQt5 is. That's not necessarily somewhere users can edit files without admin privileges.
Tony
comment:3 by , 5 years ago
Certainly Tony's point about a significant number of users not having permission to install into the location where PyQtCharts needs to go (into the ChimeraX app itself) is a concern.
--Eric
Here is my understanding from discussions 5 years ago when we decided to use a commercial PyQt5 license instead of a GPL PyQt5 license about why we did that.
ChimeraX has a major goal to allow other to write plugins and if it were GPL licensed all source code of all such plugins would have to be available. We had no trouble making our own source code available. But an argument was made that a pharmaceutical company would be unwilling to license GPL ChimeraX thus losing an important revenue stream that supports development.
The part of this argument I never understood and still do not believe is that a pharmaceutical company would care at all about the GPL license. We have never had a commercial Chimera license holder distribute a public plugin in the past 20 years as far as I know. It seems like an exceedingly rare case that would not deter any company from licensing ChimeraX. The companies that license Chimera / ChimeraX do not distribute software they write so they are not effected by GPL.