OpenCyphal-Garage / gui_tool

Legacy cross-platform GUI application for UAVCAN/CAN v0 bus management and diagnostics. Does not support UAVCAN v1; for that, see Yukon.
http://legacy.uavcan.org
MIT License
85 stars 53 forks source link

Dependency PyQt5 uses GPL3 license #30

Open xoxota99 opened 6 years ago

xoxota99 commented 6 years ago

PyQt5 uses a more restrictive license (GPLv3) that requires developers share any source code for derivative works, under the same license.

gui_tool uses the MIT license, which does not impose the open-source restriction.

These licenses seem incompatible, since they both require that derivative works use the same license (MIT and GPL3 simultaneously), and my concern is that development projects that rely on gui_tool may be unaware that they are required by transitive license to open-source their code.

Off the top of my head, gui_tool should either remove the dependency on PyQt5, or else move to a GPL3 license, but both of these seem either burdensome technically, or problematic legally.

Is this a real problem? Is there a real solution?

pavel-kirienko commented 6 years ago

Is this a real problem?

Unfortunately, it seems to be so. So far I see the following solutions:

xoxota99 commented 6 years ago

Would it be a possibility to migrate to some other UI framework (wxPython or something)?

pavel-kirienko commented 6 years ago

I don't think so. We must stay with Qt lest we end up redoing the entire application from scratch. Too many things are dependent on Qt, the plotting engine is one of the most critical ones.

xoxota99 commented 6 years ago

Sorry, I didn't see your third bullet point above for some reason. Ignore me :-$

thirtytwobits commented 6 years ago

It looks like PySide also uses GPL v3.

pavel-kirienko commented 6 years ago

PySide 2 is LGPL according to their website.

pavel-kirienko commented 6 years ago

Let me reply to https://github.com/UAVCAN/pyuavcan/pull/38#issuecomment-406670151 here:

Any chance we can switch to wxwidgets or some other more liberally licensed GUI toolkit?

Will there be much objection to a web-based GUI? Does anybody have experience with Kivy?

scottdarch commented 6 years ago

Kivy looks slick but what graphing widgets does it provide?

pavel-kirienko commented 6 years ago

So there are ugly widgets like Graph, Matplot lib integrations (which are definitely not good enough), and then there's Vispy which is OpenGL based and completely independent of Kivy.

kjetilkjeka commented 6 years ago

Disclaimers: IANAL

I think an acceptable solution would be to get permission from all 6 pyuavcan contributors to dual license their contributions under both MIT and Apache2. (This is required as an MIT dep cannot go into a GPLv3 project). This is actually the preferred licensing option in the Rust community, meaning there should be no unexpected problems doing so.

Then get permission from all 6 uavcan_gui_tool contributor to license their contribution under GPLv3. Using the pyuavcan apache 2 license this can be included as a dependency without any problems.

What I have seen been done in similar situation is that an issue is created under the relevant repos. In this issue, all relevant persons are listed and they are encouraged to comment with a pre-written statement consenting to license their contributions under this and that license.

As long as uavcan_gui_tool is mostly about gui code, and all reusable (non-gui) components live inside pyuavcan (or another seperate repo) this should not be a problem. If we want to create a new uavcan_gui_tool without the GPLv3 lisence we will have to write most of the gui code from scratch anyway.

Since the uavcan_gui_tool isn't used as a dependency but instead as a free standing tool i don't think it will be any problems at all having it under the GPLv3 lisence.

pavel-kirienko commented 6 years ago

This is required as an MIT dep cannot go into a GPLv3 project

Are you sure about that? The hivemind seems to disagree: https://opensource.stackexchange.com/questions/5477/release-code-with-mit-dependencies-under-gpl

Also if the following statement from the linked above page is true, we can add new licensing options without asking anybody:

the MIT license explicitly allows you to sublicense the code (i.e. republish with a completely different license), and only requires you to keep the copyright and license notice intact.

We can easily relicense the tool under GPL v3, but that'll make it impossible for some developers to contribute. Although, as is stands, they can't do it currently either, so we're not losing anything.

kjetilkjeka commented 6 years ago

Are you sure about that? I'm absolutely not in any way sure about any of the licensing related stuff.

I do not understand how MIT can work with GPL as the MIT license give "the right without limitations to modify the software". Although if the hivemind thinks I'm wrong, I probably am.

Also if the following statement from the linked above page is true, we can add new licensing options without asking anybody:

I'm pretty sure this is impossible. Dual licensing means that you can obtain a copy either following the MIT license or Apache2 license. Sub-license means that you can append the new license requirements on top of the original one. Even if it was possible to do so, it would be much nicer just to ask :), and in my experience people mainly want their code to be usable and would say yes without hesitation.

We can easily relicense the tool under GPL v3, but that'll make it impossible for some developers to contribute. Although, as is stands, they can't do it currently either, so we're not losing anything.

How I see it, they would only be unable to contribute to the parts that are already closely tied together with the GPL licensed library. To break free of the GPL license we will have to rewrite these parts anyway (since they're somewhat closely tied to the library). If we license this tool under GPLv3 now it's probably not going to cause us much extra work rewriting with a new gui library later compared to doing it without licensing. It is going to allow us to use the tool as is. In my opinion we gain significantly more than we lose.

Linjieqiang commented 5 years ago

When are we going to start writing new GUI programs and I'm interested in that and I want to get involved in code development. @pavel-kirienko

pavel-kirienko commented 5 years ago

@Linjieqiang Right now the best way to get involved is to stay up to date on things. We may or may not be able to secure some dev workforce with the help from @thirtytwobits and/or Iain Galloway. Please follow things on the forum at http://forum.uavcan.org and consider joining the next weekly dev call on Wed Dec 19.

thirtytwobits commented 5 years ago

I've been unsuccessful in recruiting additional help, unfortunately. @Linjieqiang, do you have experience developing javascript user interfaces?

Linjieqiang commented 5 years ago

@thirtytwobits I will have a try. I have a little experience.

Linjieqiang commented 5 years ago

@pavel-kirienko I couldn't sign up the https://forum.uavcan.org/. Could you help me check the my accout. My email is qiang517503838@gmail.com. But I couldn't receive the email from the website.

pavel-kirienko commented 5 years ago

@Linjieqiang I see that your user account is already created, so I just activated it manually: https://forum.uavcan.org/admin/users/181/linjieqiang. The confirmation email probably got into your spam folder, please check that.