Recent

Author Topic: Qt offering changes 2020  (Read 5491 times)

guest65405

  • Guest
Qt offering changes 2020
« on: March 29, 2020, 10:53:43 am »
https://www.qt.io/blog/qt-offering-changes-2020

I took this recap from https://valdyas.org/fading/software/about-qt-offering-changes-2020:

  • Long Term Support releases remain commercial only (the post doesn’t mention this, but those releases also need to be released under a free software license within a year to adhere to the agreement, at least to my understanding).
  • Access to pre-built binaries will be restricted: put behind an account wall or be only available to commercial license holders
  • And there’s a new, cheaper license for small companies that they can use to develop, but not deploy their work to customers.

Unrelated:

As my own experiment I copied cbindings from the qt5 inferface of Lazarus (2.0.6) and tried to port it to CopperSpice. Check CopperSpice here: https://www.copperspice.com/

But I can't get any further. Because even building the binding with Qt5 itself with Qt 5.11 from my Debian 10 system failed. QtCreator said there is no x11extras nor QX11Info. I don't know how you guys managed to got it build in the first place.

This mean the binding is lacked of maintenance. Could this Qt offering changes give us an opportunity to revisit it all?

Disclaimer:

I searched the internet for Qt fork and found CopperSpice. I'm not related with them. I don't hype for them.

The fact is I like CopperSpice because it has Qt MOC removed. But I also dislike their build system, CMake. I tried to port the Qt5Pas.pro to CMake but finally gave up. CMake just is not for me!

p/s: if I could get further, I still can't become the maintainer of this, potentially, CopperSpice Widgetset for Lazarus. My computer is too old and slow to be able to smoothly build C++. Someone with a more powerful computer if interested could try if it even possible. I think to conversion from Qt5 to CopperSpice is not very painful, as I ran CopperSpice's PepperMill conversion tool on the binding's header successfully without any warnings.

p/s: sorry if you found my English to be clumsy, it's all Google translate with manual fixes by me.

avra

  • Hero Member
  • *****
  • Posts: 2514
    • Additional info
Re: Qt offering changes 2020
« Reply #1 on: March 29, 2020, 01:21:13 pm »
CopperSpice is LGPL 2.1. According to https://tldrlegal.com/license/gnu-lesser-general-public-license-v2.1-(lgpl-2.1) it means that
Quote
Anything statically linked to the library can only be redistributed under LGPL, but applications that use the library don't have to be. You must allow reverse engineering of your application as necessary to debug and relink the library.
Who ever wants to use it should keep this in mind. Last restriction is too much for my use case.
« Last Edit: March 29, 2020, 01:23:04 pm by avra »
ct2laz - Conversion between Lazarus and CodeTyphon
bithelpers - Bit manipulation for standard types
pasettimino - Siemens S7 PLC lib

guest65405

  • Guest
Re: Qt offering changes 2020
« Reply #2 on: March 29, 2020, 01:58:25 pm »
CopperSpice is LGPL 2.1. According to https://tldrlegal.com/license/gnu-lesser-general-public-license-v2.1-(lgpl-2.1) it means that
Quote
Anything statically linked to the library can only be redistributed under LGPL, but applications that use the library don't have to be. You must allow reverse engineering of your application as necessary to debug and relink the library.
Who ever wants to use it should keep this in mind. Last restriction is too much for my use case.

Isn't the Qt community edition use this license too?

https://doc.qt.io/qt-5/lgpl.html

It's LGPL, but version 3. I don't know if there is different between version 2.1 and 3.

p/s: it has the same requirements as LGPLv2.1: https://tldrlegal.com/license/gnu-lesser-general-public-license-v3-(lgpl-3)

So it's not a problem at all. People still use and release software built with the LCL-Qt5 widgetset. Of course, they dynamic link it and ship the Qt dlls with their software.

guest65405

  • Guest
Re: Qt offering changes 2020
« Reply #3 on: March 29, 2020, 02:10:31 pm »
CopperSpice is LGPL 2.1. According to https://tldrlegal.com/license/gnu-lesser-general-public-license-v2.1-(lgpl-2.1) it means that
Quote
Anything statically linked to the library can only be redistributed under LGPL, but applications that use the library don't have to be. You must allow reverse engineering of your application as necessary to debug and relink the library.
Who ever wants to use it should keep this in mind. Last restriction is too much for my use case.

The link you posted doesn't work. I provide an updated link here: https://tldrlegal.com/license/gnu-lesser-general-public-license-v2.1-(lgpl-2.1)

Perhaps I misunderstood your post. The problematic statement is:

Quote
You must allow reverse engineering of your application as necessary to debug and relink the library.

I can't accept this, either. So we should forget about CopperSpice and come back to the main problem I want to discuss on this thread: Qt offering changes 2020.

marcov

  • Administrator
  • Hero Member
  • *
  • Posts: 11383
  • FPC developer.
Re: Qt offering changes 2020
« Reply #4 on: March 29, 2020, 06:37:57 pm »
I read a bit and I don't really understand if this is only for official QT LTS binaries.

It seems at least the whole of *nix doesn't use these (https://tsdgeos.blogspot.com/2020/01/the-qt-company-is-stopping-qt-lts.html )

so the problems are (maybe?) mainly for QT users on OS X and Windows?

See also https://www.reddit.com/r/kde/comments/euoujm/qt_offering_changes_2020/


avra

  • Hero Member
  • *****
  • Posts: 2514
    • Additional info
Re: Qt offering changes 2020
« Reply #5 on: March 30, 2020, 01:09:24 pm »
The link you posted doesn't work. I provide an updated link here: https://tldrlegal.com/license/gnu-lesser-general-public-license-v2.1-(lgpl-2.1)
Try your link and it will also lead to 404 error. Both mine and yours URL are fine but forum has a bug of not including last bracket when converting text URLs to clickable links.

Quote
You must allow reverse engineering of your application as necessary to debug and relink the library.

I can't accept this, either. So we should forget about CopperSpice and come back to the main problem I want to discuss on this thread: Qt offering changes 2020.
Yes, LGPL 2.1 forces you to allow reverse engineering when dynamically linked to a library. That is why CopperSpice is a no go for me. Good news is that LGPL 3.0 does not have this request, and that since 2016 and version 5.7,  QT has changed licensing to this: "All Qt Essentials will from now on be licensed under LGPLv3, GPLv2 and commercial license terms." (source: https://www.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation). QT Essentials covers part used by Lazarus so we are safe. Safe only conditionally, since with 2020 changes, if your application links dynamically to new QT LTS and you do not have a commercial QT account you might be in trouble. QT offline installer is also not allowed to non commercial accounts any more. So you might be in trouble if your application runs on some distro which uses new QT LTS and doesn't provide it's own build or at least QT independent build. I did not find info how shady that could be for app owner. Although that is unlikely situation I can not say that such situation is impossible. Similar is for Windows. QT official offline installer will not be available any more, so you would have to provide your own custom built DLLs or use some other independent source for DLLs or installer. It seams that 2020 changes have been made by QT to force companies which software depends on some specific QT build to become their customers.

All said is just my (very possibly wrong) understanding and I am not a layer so do not depend on it.
ct2laz - Conversion between Lazarus and CodeTyphon
bithelpers - Bit manipulation for standard types
pasettimino - Siemens S7 PLC lib

marcov

  • Administrator
  • Hero Member
  • *
  • Posts: 11383
  • FPC developer.
Re: Qt offering changes 2020
« Reply #6 on: March 30, 2020, 03:04:18 pm »
distros mostly don't use LTS.

Open source distros are becoming more and more just testing grounds for the commerial distros this way.

AmatCoder

  • Jr. Member
  • **
  • Posts: 55
    • My site
Re: Qt offering changes 2020
« Reply #7 on: March 30, 2020, 03:46:14 pm »
Quote
[...] LGPL 2.1 forces you to allow reverse engineering when dynamically linked to a library. [...] LGPL 3.0 does not have this request[...]
This is not true.
Edit: Re-reading the LGPL license is not completely clear to me...Definition of "Combined Work" seems ambiguous...

Read the official FAQ: https://www.gnu.org/licenses/gpl-faq.html#LGPLStaticVsDynamic

Quote
    For the purpose of complying with the LGPL (any extant version: v2, v2.1 or v3):

        (1) If you statically link against an LGPLed library, you must also provide your application in an object (not necessarily source) format, so that a user has the opportunity to modify the library and relink the application.

        (2) If you dynamically link against an LGPLed library already present on the user's computer, you need not convey the library's source. On the other hand, if you yourself convey the executable LGPLed library along with your application, whether linked with statically or dynamically, you must also convey the library's sources, in one of the ways for which the LGPL provides.

Edit: I am not a lawyer either... :-[
« Last Edit: March 30, 2020, 06:06:01 pm by AmatCoder »

Zoran

  • Hero Member
  • *****
  • Posts: 1829
    • http://wiki.lazarus.freepascal.org/User:Zoran
Re: Qt offering changes 2020
« Reply #8 on: March 31, 2020, 06:38:31 am »
The link you posted doesn't work. I provide an updated link here: https://tldrlegal.com/license/gnu-lesser-general-public-license-v2.1-(lgpl-2.1)
Try your link and it will also lead to 404 error. Both mine and yours URL are fine but forum has a bug of not including last bracket when converting text URLs to clickable links.


Always enclose all links in url tags. See the difference between these (the second one should work):
https://tldrlegal.com/license/gnu-lesser-general-public-license-v2.1-(lgpl-2.1)
https://tldrlegal.com/license/gnu-lesser-general-public-license-v2.1-(lgpl-2.1)
« Last Edit: March 31, 2020, 06:41:02 am by Zoran »

avra

  • Hero Member
  • *****
  • Posts: 2514
    • Additional info
Re: Qt offering changes 2020
« Reply #9 on: March 31, 2020, 02:18:30 pm »
Quote
[...] LGPL 2.1 forces you to allow reverse engineering when dynamically linked to a library. [...] LGPL 3.0 does not have this request[...]
This is not true.
Edit: Re-reading the LGPL license is not completely clear to me...Definition of "Combined Work" seems ambiguous...

Read the official FAQ: https://www.gnu.org/licenses/gpl-faq.html#LGPLStaticVsDynamic

In legal documents every word and comma count in, and you need a lawyer for proper understanding so I do read it but only from time to time. I use much more understandable explanations in non=lawyer english that can be found at tldrlegal.com. If they are wrong then I am wrong, too.

This is quick summary of LGPL 2.1 from https://tldrlegal.com/license/gnu-lesser-general-public-license-v2.1-(lgpl-2.1)
Quote
This license mainly applies to libraries. You may copy, distribute and modify the software provided that you state modifications and license them under LGPL-2.1. Anything statically linked to the library can only be redistributed under LGPL, but applications that use the library don't have to be.  You must allow reverse engineering of your application as necessary to debug and relink the library.

and this is quick summary of LGPL 3.0 from https://tldrlegal.com/license/gnu-lesser-general-public-license-v3-(lgpl-3)
Quote
This license is mainly applied to libraries. You may copy, distribute and modify the software provided that modifications are described and licensed for free under LGPL. Derivatives works (including modifications or anything statically linked to the library) can only be redistributed under LGPL, but applications that use the library don't have to be.

The main difference that I was interested was reverse engineering condition. You take your own conclusion.
ct2laz - Conversion between Lazarus and CodeTyphon
bithelpers - Bit manipulation for standard types
pasettimino - Siemens S7 PLC lib

lucamar

  • Hero Member
  • *****
  • Posts: 4219
Re: Qt offering changes 2020
« Reply #10 on: March 31, 2020, 02:58:41 pm »
The main difference that I was interested was reverse engineering condition. You take your own conclusion.

Read again, avra:

Quote
You must allow reverse engineering of your application as necessary to debug and relink the library.

If you're dinamically linking there is no need at all to "debug and relink" in the context of your application; that condition applies only when you link statically. The license doesn't go and says it explicitely but the concept appears when they talk about the differerence between a "work that uses the library" and a "work based on the Library".

But you're rigth in that it's not exactly clear, which was (IIRC) one of the reasons for the new phrasing in the LGPLv3.
Turbo Pascal 3 CP/M - Amstrad PCW 8256 (512 KB !!!) :P
Lazarus/FPC 2.0.8/3.0.4 & 2.0.12/3.2.0 - 32/64 bits on:
(K|L|X)Ubuntu 12..18, Windows XP, 7, 10 and various DOSes.

avra

  • Hero Member
  • *****
  • Posts: 2514
    • Additional info
Re: Qt offering changes 2020
« Reply #11 on: March 31, 2020, 04:09:22 pm »
Quote
You must allow reverse engineering of your application as necessary to debug and relink the library.

If you're dinamically linking there is no need at all to "debug and relink" in the context of your application; that condition applies only when you link statically

I understand it differently. If my app is dynamically linked to v5 of some lib and it works well, then someone updates that lib to v6 and there are some problems in my app because of that change, then I am obligated to allow reverse engineering in order to debug and link properly. Even if I am wrong that is fuzzy enough to become a show stopper for me.
ct2laz - Conversion between Lazarus and CodeTyphon
bithelpers - Bit manipulation for standard types
pasettimino - Siemens S7 PLC lib

marcov

  • Administrator
  • Hero Member
  • *
  • Posts: 11383
  • FPC developer.
Re: Qt offering changes 2020
« Reply #12 on: March 31, 2020, 04:11:52 pm »
Quote
You must allow reverse engineering of your application as necessary to debug and relink the library.

If you're dinamically linking there is no need at all to "debug and relink" in the context of your application; that condition applies only when you link statically

I understand it differently. If my app is dynamically linked to v5 of some lib and it works well, then someone updates that lib to v6 and there are some problems in my app because of that change, then I am obligated to allow reverse engineering in order to debug and link properly. Even if I am wrong that is fuzzy enough to become a show stopper for me.

Random third party builds are not relevant, let alone major version differences. The user must be able to get the sourcecode through you, and rebuild with minimal changes. If you don't have to edit the binary for that to use the rebuild, it is not required I think.

I think this is mainly meant for older targets that link by offset in a library rather than by symbol resolving.

avra

  • Hero Member
  • *****
  • Posts: 2514
    • Additional info
Re: Qt offering changes 2020
« Reply #13 on: March 31, 2020, 06:04:04 pm »
Random third party builds are not relevant, let alone major version differences.
I think that LGPL 2.1 protects used library in a way that whatever software is linked to that library, anyone experiencing problems should be allowed to debug and try to improve linking. That right is protected whether by allowing improving of linked application interface or by improving library it self. Such need usually happens when there is a new version of the library, or when some bug is found. Whatever the correct interpretation is, LGPL 2.1 is not good for use case when I want to keep my sources closed. If RTL and LCL didn't have linking exception license, I would personally have stayed away from Lazarus.
« Last Edit: March 31, 2020, 06:17:22 pm by avra »
ct2laz - Conversion between Lazarus and CodeTyphon
bithelpers - Bit manipulation for standard types
pasettimino - Siemens S7 PLC lib

guest65405

  • Guest
Re: Qt offering changes 2020
« Reply #14 on: April 01, 2020, 05:38:44 am »
My interpretation relying solely on the page we linked:

First, if you link static you already have to release your source, so no reverse engineering needed.

So for reverse engineering to be useful, the code must be closed source, that also imply dynamic link.

Anyway, I consider this license to be not safe. I will not use it.

 

TinyPortal © 2005-2018