simaoamorim / cnc_tooldb

CNC ToolDB - Tool Database Manager for CNCs
MIT License
1 stars 0 forks source link

Choose graphical toolkit to use #9

Open simaoamorim opened 5 years ago

simaoamorim commented 5 years ago

Need to decide whether to use WxPython, TkInter or Qt.

simaoamorim commented 5 years ago

Chose PyQt5 as the GUI

simaoamorim commented 5 years ago

Qt5 LGPL license is toxic and I don't want to change my project license. Will have to find a new solution.

simaoamorim commented 5 years ago

Non-Copyleft licensed widget toolkits in consideration for the Python version (script version), but thinking about a later C++ version:

simaoamorim commented 5 years ago

After some simple tests, Tk seems to be simple to program but also has advanced widgets that seem interesting. Will start to build a simple GUI as a prototype.

ghost commented 5 years ago

What is wrong with LGPL? Unless you're making changes to the toolkit itself (I've yet to see anyone actually have a need for such), or compiling static binaries, it should not matter.

simaoamorim commented 5 years ago

The main thing about GPL/LGPL licenses is the copyleft restriction. Yes I highlighted restriction because, for me, it goes against the FOSS (Free and Open Source Software) concept.

About copyleft

GPL/LGPL licenses are copyleft, meaning that, to use those libraries I would need to license this project under the same GPL/LGPL as the library, because what I'm doing is what is called "a work based on the software". The only exception is that LGPL allows licensing under a diferent license ONLY if the distribution is in BINARY format ONLY.

Mainly, I want to distribute the source code.

Why I don't want copyleft

As a programmer I don't want it because I want to give the other programmers the same freedom I like to have when creating variations or "works based" on some software. Because I own that copy of the code, I believe in being able to do whatever I want with it, INCLUDING license it (my own version) under my own terms.

What about the end-user?

I know you will probably defend that GPL/LGPL gives the end user the same freedom as the others, that's correct in some aspects, but along the way GPL/LGPL licenses impose restrictions to the licensing and modifications, which is completely contradictory with the FOSS concept.

The end user will still have the same rights regarding my software, they just have to come to me to get it, becasue what others do with my software is their business because they own that copy of the code. That's what FOSS concept is all about, and I'm all about defending it.

ghost commented 5 years ago

Dynamically linking to LGPL libraries does not require you to relicense your own code. You can even link closed source commercial code with the LGPL version of Qt. Having to relicense your own project only applies to the regular GPL and not LGPL.

simaoamorim commented 5 years ago

Correct me if i'm wrong but if I remember correctly from the months I took to study that matter, that clause only applies if, (using Qt as example for the dynamically linked library) that library is only used as optional, meaning I would have to program it to work without Qt, thus making my code an "independant work", and not a "work based on" the library. There lies the main problem for this case.

My change of choice is because this whole thing is too complicated and so I don't even want to go through the trouble of having to find a hole in the GPL/LGPL just so that I can do what I want with my own code. I like things to be simple and, for me, GPL/LGPL licenses come with too many strings attached, as well as too much external control over my software.

ghost commented 5 years ago

IANAL but I have worked with many projects and companies that have used Qt for a very long time, specifically the LGPL version, and I have never heard that argument. The "based on" part I think you are referring to is this:

An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.

Which to me seems to imply that there is no restriction on whether or not the library is optional and the application would not be considered "based on the library" merely by using its API. I know of many hundreds of projects that use LGPL Qt libraries with completely different licenses, most even more restrictive (like closed source or GPL), so I think there would be a much bigger problem in the FOSS world if what you are saying is true.

Either way it seems clear you do not want to use it anyway and that's fine, I just wanted to try and clear up any confusion.

simaoamorim commented 5 years ago

Well if that's true I may not turn down Qt after all, maybe I got the wrong ideia during my research about the licensing.

I think I'll test the development of both and see which one feels easier to use, I'm not going to do something too complicated, this is supposed to be a fairly simple tool and I don't think the GUI should be too advanced.

BTW, given that you seem to have experience with GUI's (at least with Qt), what do you think fits best for this tool in terms of GUI aspect, tabs with forms, tables with entries, windows with forms (like a wizard), etc... ??

simaoamorim commented 5 years ago

@bparker06 I understand your point now, after reading this. Because I don't intend to make any changes to those libraries, even if I distribute them with my software (which I dont intend to, I'll just leave the instructions for users to install them seperately), I can keep my software with MIT license and if I distribute the library source along side mine then I need to distribute it with its own license, but they remain separate. I'll actually reconsider using Qt5 or WxPython now.

simaoamorim commented 5 years ago

Will use wxPython for its simplicity to code and for the native look of the widgets.

simaoamorim commented 4 years ago

Turns out wxPython needs to many dependencies to install, which is a bit inconvenient, will switch to Tk