
Qt Licensing Changes - ingve
http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/
======
jimrandomh
Before: LGPLv2.1 or LGPLv3 or GPLv2 or pay for a commercial license

After: LGPLv3 or GPLv2 or pay for a commercial license

"LGPL version 3 differs from version 2.1 in two fundamental aspects. It
explicitly protects the right of the end user to not only compile their
modifications, but also deploy and run them on the target device. This
essentially prevents the creation of fully locked-down devices. Secondly, it
explicitly includes a protection against patent claims from the entity
distributing code licensed under LGPLv3. These two additions greatly help
protect the end users’ freedom when using source code licensed under LGPLv3."

~~~
zx2c4
Plus they're open sourcing the previous commercial-only components:

    
    
      Qt Charts
      Qt Data Visualization
      Qt Virtual Keyboard
      QML Profiler
      Clang static analyzer
      Qt Test Integration
      Qt Quick 2D renderer
    

Also, they're binding to the KDE Qt Free agreement all the editions of Qt, not
just the X11 one. This is an important update, especially as Wayland takes
off.

~~~
makomk
Wait, the non-OpenGL renderer for Qt Quick was commercial-only? You literally
had to pay them $$$ if you wanted to develop a modern Qt app that actually
worked if OpenGL wasn't available or functional (which it far too often
isn't)? That's ridiculous. And even now it's only available under the GPLv3,
which means that if you need to use any non-GPL-compatible code you have to
pony up - and also means that distros probably can't safely ship it.

~~~
nilliams
Yeah it's really bad. I feel for anyone that has stuck with these old-school
'cross-platform toolkits' over the last few years, they have really been
missing out for a while now. On top of this, the whole scene is just stagnant
and decades out-of-date from my experience (trying to get into Qt a couple of
years ago). There are no devs there, you're basically on your own.

If you want to make cross-platform desktop apps (with opportunities for mobile
too), I'd recommend hiring people who know web-dev and start looking at
Electron [0] and NW.js [1]. Then you can tap into the web ecosystem with its
(enormous, company-backed) massively vibrant frameworks, libraries, tools and
communities.

It really doesn't make sense to use things like Qt, wxWidgets, GTK anymore
(opinion - willing to be proved wrong).

[0] [http://electron.atom.io/](http://electron.atom.io/) [1]
[http://nwjs.io/](http://nwjs.io/)

~~~
twchupachup
I think you are wrong on pretty much everything you've stated here.

> There are no devs there, you're basically on your own There is an extremely
> active mailing list and IRC channel (several official ones actually) where
> you can almost always get in touch with the actual Qt devs and others who
> use it for support without paying them anything. There are over 500 people
> in the IRC room right now.

> If you want to make cross-platform desktop apps (with opportunities for
> mobile too), I'd recommend hiring people who know web-dev and start looking
> at Electron [0] and NW.js [1].

Maybe when Web Assembly (or whatever its called) becomes a thing performance
will be tolerable but I have yet to come across a web application that doesn't
run incredibly slowly. I use Atom for a basic code viewer right now and it is
pathetically slow compared to any native applications (GEdit, Kate, Geany,
etc)... and this is on a desktop machine. I can't imagine anyone creating a
remotely complex web application on mobile and expecting any sort of
reasonable performance. Text editors should be some of the faster applications
-- imagine creating something that's media rich like a music player, a video
or photo editor; it would be a disaster.

Also regarding your "with opportunities for mobile too" comment, you know Qt
is supported on iOS, Android, WinPho, BlackBerry, Sailfish right?

> massively vibrant frameworks, libraries, tools and communities Yeah, its not
> like the native software community doesn't have that or anything. Unlike web
> tools, native tools have been developed for far longer and they are more
> robust and reliable.

>It really doesn't make sense to use things like Qt, wxWidgets, GTK anymore
Yes, if you don't care about performance and all the things web frameworks
miss out on (how's that GL support looking? Native is getting ready to support
Vulkan -- WebGL is still stuck on the ES2 equivalent) then jump on board the
web app hype train.

You're also completely overlooking embedded where Qt specifically is used
extensively. Kiosks, IVIs, small displays for smart appliances, etc.

I don't like the Qt model of using the GPL as a way to get people to go for
their very expensive commercial offering and I think a model like Unreal
Engine's (give us a share of your revenue) makes more sense as an additional
option for smaller devs.

------
kaypro
Whenever I hear about QT licensing changes I can't help but wonder if they had
started off with a GPL based license and GTK never happened how the whole
"Linux on the Desktop" situation would have panned out. Would open source
developers eventually opted to just use QT for GUI applications? Would KDE
have become the defacto standard DE across the top 10 Linux distributions?
Would there have been a unified installation package allowing cross
distribution installation of QT/KDE based applications thereby facilitating
commercial software vendors being more open to porting their Windows
applications to Linux? I realize it's a moot point but having spent my teen to
college years heavily invested in Linux and being frustrated with the lack of
standards at the time I can't help going down this thought experiment.

~~~
ctstover
It was GPL (or pay license) to start with. I believe you mean you wonder if it
had been LGPL to start with. Subtle, yet enormous difference for a library.

As to the speculation, I don't know. Special preprocessing phases to extend
C++ are odd. The signals and sockets paradigm is a mixed bag. Plus there are
serious trade offs to the entire application framework vs a library choices in
the first place. On the other hand, the runtime type system and heavily
stylized macro style of GTK's gobject system was certainly an odd duck to say
the least.

Personally, between the web, mobile, "modern" UX/UI ideas, desktops that want
to be tablets, etc, I think the 20-30 years of GUI exploration is coming up
very empty handed. Character cell terminal, and CLI are more popular and
mainstream than ever.

Where things are going from here?

~~~
mintplant
> Special preprocessing phases to extend C++ are odd.

You should see Unreal Engine, which uses preprocessing to extend C++ with a
garbage collector, reflection, interfaces, and runtime class objects.

~~~
guruz
This might be interesting to you: [https://woboq.com/blog/reflection-in-cpp-
and-qt-moc.html](https://woboq.com/blog/reflection-in-cpp-and-qt-moc.html)

~~~
mintplant
It is - thanks for sharing!

------
0xFFC
I am curious what Richard Stallman (or generally FSF) can say about this, This
is clearly one of the best thing happening to FSF. Let be honest, with Gtk's
lack of modernity (I don't know what to call it, but despite being gnome guy
myself, we should be honest Gtk falls behind very badly these days in almost
all category, ease of development is one of the important one), FSF needs a
modern Toolkit and Qt can be the one.(Personally, this does not mean I love
Qt, no, It designed very tidy, but I hate MOC, changing language is always bad
idea in my perspective, you _should_ play by rules, I don't care who does
this, Microsoft or anyone else, and MOC does this.)

p.s. yes I know MOC is preprocessor step, but my logic is sound . Programmer
does not program in pure C++ when he/she program in Qt. He/She program in Qt
version of C++(and compatibility with existing C++ compiler does not change
this fact).

~~~
nly
> we should be honest Gtk falls behind very badly these days in almost all
> category

While I agree you'd have to be absolutely nuts to develop an application using
GTK+ directly in C (Yes, I think the whole GNOME project is nuts... but it's
telling that they adopted Javascript and Vala), the C++ bindings for GTK[0]
weren't all that bad when I last looked at them.

Of course, without a MOC equivalent, you can't really beat the slickness of
Qt/QML.

[0] [http://www.gtkmm.org/en/](http://www.gtkmm.org/en/)

~~~
snuxoll
My biggest complaint with GTKmm right now is the lack of composite widget
support. It's actually _nice_ to develop a GTK+ application in Vala because
composite widgets kick ass and remove a huge pain point for just wanting to
throw a window up without all the nasty GTK signal connection maddness. Once
GTKmm gets that support I'll probably start using it more.

~~~
nly
Well I haven't looked at it since Gtk Builder was called Glade, but QML has
convinced me that declarative UI markup with sprinklings of code, and custom
widgets implemented on the side, is the way to go.

~~~
snuxoll
Agreed, hence why composite widget support in GTKmm would be really nice. In
Vala you just make a normal class inheriting from whatever your base widget
is, decorate it with a [GtkTemplate] attribute and whenever you construct that
widget it will use the gtkbuilder XML you referenced in the attribute to
construct the widget, binding all the callbacks referenced in the XML with the
respective methods on the class.

Until recently C++ hasn't even had compile time reflection that would allow
this to work very well, now that C++14/C++17 are adding that I think this
would be very doable.

------
baldfat
> The purpose here has been to bring the licensing of Qt more in line with the
> philosophy of the Free Software movement.

> In line with this, the new contract with KDE now removes LGPLv2.1 as a
> required license for the open source version. Instead, it now requires
> LGPLv3

> This means that all parts of Qt for Application Development can be used
> under the GPLv3.

Looks like things have just moved to LPLV3 and is compatible with GPLV3. Good
stuff here.

~~~
MegaDeKay
It is better than that. They've made some modules available to open source
users that were only available to their commercial customers before.

    
    
      Qt Charts
      Qt Data Visualization
      Qt Virtual Keyboard
      QML Profiler
      Clang static analyzer
      Qt Test Integration
      Qt Quick 2D renderer

------
distances
The same announcement from KDE side: [https://dot.kde.org/2016/01/13/qt-
guaranteed-stay-free-and-o...](https://dot.kde.org/2016/01/13/qt-guaranteed-
stay-free-and-open-%E2%80%93-legal-update)

Looks good!

------
arca_vorago
Licensing has always been one of the reasons I have avoided Qt for some
projects, but it looks like these are some major steps in the right direction
in this regard. I have a feeling KDE and Waylands future has encouraged this
move, but either way I am happy with the direction!

~~~
distances
I've felt the licensing situation to be good ever since Nokia added LGPL to Qt
licensing options. This extension of Free Qt code is of course excellent news
anyway!

------
JupiterMoon
What does this practically mean? One can still write a closed source
application and link to Qt right?

~~~
bryanlarsen
This might make it more difficult to ship on locked down platforms like iOS --
LGPLv3 means that the end user must be able to install new versions of QT into
your closed source app.

~~~
carussell
LGPL version 2.1 is no different. There's no change here in that regard.
Locked down platforms are inherently incompatible with the LGPL, whether it's
version 2.1 or version 3.

~~~
joosters
Is that really true? As I understand it, anyone can build and put an app on
their phone using Xcode, without needing any permissions from Apple. So if an
app on the store is LGPL'd, the publisher can make the source available and I
can build it and place it on my own phone.

~~~
carussell
(It's not the main point behind your question, but even if you're sideloading
through Xcode, you need an Apple ID. AFAIK, jailbreaking remains the only
option to install an app without getting Apple's permission.)

In response to your question: Yes. But, again, the same was true of LGPL
version 2.1.

~~~
joosters
Ah, I didn't know that. I had heard that Apple had relaxed their restrictions
a little, but have not tried it myself yet.

When you speak of an Apple ID, do you mean a free one, or the $99 publish-to-
the-appstore type? The difference doesn't matter to the LGPL question, of
course...

There's some good discussion about LGPL and app stores at
[https://lwn.net/Articles/526355/](https://lwn.net/Articles/526355/) \- the
comments give a good explanation about why you could get away with a LGPL app,
even though there's no free way to re-link the program.

Now, if you _could_ use Xcode to install an app on your own phone, without any
other account or gatekeeper, then presumably (I guess), GPL'd apps could also
be allowed on the store?

~~~
loumf
A lot of apps can't effectively be side-loaded and retain their features. Most
of these problems stem from not having the real developer's certificates to
sign the app with.

For example, you can't get the source for an AppStore app, side-load it, and
have it get notifications meant for the original app.

The same applies to IAP purchases made with the original app (they won't be
available to the re-created app).

So, in the very least, even if, generally, LGPL with side-loading is ok, there
are definitely some apps where it would still be not.

~~~
joosters
Good point about the notifications & IAPs, I hadn't thought of that.

They make the licensing even murkier - you could envisage a situation where
even if you had the app source code and the ability to build and install the
app on a device, the app is worthless because a key feature depends upon
secret keys that you have no access to. That's getting closer and closer to
tivo-isation.

------
prewett
This sounds really good! I don't understand why people would buy the
commercial license, though, so I must be missing something. With the LGPL, it
seems like you could have closed source and just provide a copy of Qt.

~~~
taspeotis
> I don't understand why people would buy the commercial license, though, so I
> must be missing something

The support. Same reason people pay for RHEL.

------
lmcnish14
I'm sad that there isn't a Qt Licensing dance to explain the changes.

~~~
santaclaus
I believe this is a reference to the Qt4 music video they released to explain
the pronunciation:
[https://www.youtube.com/watch?v=NbTEVbQLC8s](https://www.youtube.com/watch?v=NbTEVbQLC8s)

