IoT | 2020-05-23 15:35:43 UTC | #1
I'm reading the article, googling for an hour and still don't understand the licensing model. Sorry new to Qt and would appreciate if you make it clear for me.
I'm writing a Python application. I use PyQt5 for GUI and I do use Qt Designer to create .ui file. My question is at the end of the day I want to sell my application. I do not want to give my source code to users. In fact, the access to file system will be locked for them so all they see is a GUI which they can interact with.
My question is should I use PyQt5 or PySide2? As I said, I don't want to make my application open source neither will give the user my source code.
Thank you for the article.
martin | 2020-05-23 22:24:10 UTC | #2
Hi @IoT welcome for the forum!
I’m reading the article, googling for an hour and still don’t understand the licensing model. Sorry new to Qt and would appreciate if you make it clear for me.
Don't worry, this stuff can be hard to get your head around. There is a bit of information on licensing in this article but I'll break it down a bit more for your specific situation. But bear in mind, I'm not a lawyer
- PyQt5 is GPL licensed, PySide2 is LGPL licensed.
- Both licenses have no effect on whether you can sell your software commercially. You can sell GPL licensed software and LGPL licensed software.
- Both licenses may require you to share source code in specific circumstances, but LGPL is unlikely to apply to a Python project.
For applications built with PyQt5 (GPL) if you distribute the software you must also make the source code of your software available to users (this doesn't mean making it publicly available, you can send it on request).
For applications build with PySide2 (LGPL) if you distribute the software you don't need to share the source of your application to your users. The one situation where you do need to share source when you modify the source of the LGPL library itself. You normally won't be doing this while building Python apps.
The following part is also relevant --
In fact, the access to file system will be locked for them so all they see is a GUI which they can interact with.
I assume you're not locking your users PC's file system (!) so this is an embedded system? The GPLv3 (which PyQt5 is) has specific requirements for allowing end-users to modify/update the software on devices and receiving access to the source. If your device prevents this, I believe the GPLv3 would be a no-go anyway.
Based on what you've described your options are PySide2 (LGPL), or PyQt5 with a Riverbank commercial license.
IoT | 2020-05-23 22:13:45 UTC | #3
Thank you for the explanation. Yes it is actualy an embedded application. It makes a better sense to me now. The reason I don't want to share the code is the app will be executed on something like a Raspberry PI and users interact with the app through a touchscreen display. They don't really know what Qt is nor have programming knowledge. So I have to lock it up to make sure no one accidentaly mess up with the code... Thanks again.