Nokia has announced that starting with version 4.5, Qt will be available under the LGPL 2.1. From the announcement,

The move to LGPL licensing will provide open source and commercial developers with more permissive licensing than GPL and so increase flexibility for developers. In addition, Qt source code repositories will be made publicly available and will encourage contributions from desktop and embedded developer communities. With these changes, developers will be able to actively drive the evolution of the Qt framework.

This exciting change, made with consultation of the
KDE Free Qt Foundation, should encourage KDE and Qt use among commercial and proprietary developers and makes the philosophy of "Qt Everywhere" complete.

Kai Öistämö, Executive Vice President of Devices at Nokia expands,

"By opening Qt’s licensing model and encouraging more contributions, Qt users will have more of a stake in the development of Qt, which will in turn encourage wider adoption."

The change in licensing for Qt is happening under the mantra "Qt
Everywhere" and is a step to remove any and all possible blocking objections
for not using Qt. Nokia explains further,

Qt will be available under the LGPL version 2.1 with the upcoming Qt 4.5 release. Qt will also continue to be licensed under commercial license terms, as well as the GPL, version 3.0.

Nokia will also be opening up the development of Qt. A clear path for the
extension of external contributions is currently being built, including
publicly available source code repositories and access to the same level of
support, independent of the license.

The simple fact behind this is that Nokia is less reliant on the
income from Qt licensing than Trolltech (now Qt Software) was, and this has
given Qt Software more room to approach the market with more permissive
licensing strategies in order to increase adoption of the Qt toolkit.
This is part of the 10x growth target announced at last year's Akademy
to achieve ten times as many developers and ten times as many free software community users.
Or as KDE and Qt developer Thiago Maciera put it "we want KDE to be ten times as big".

While kdelibs has always been available under the LGPL, this marks the first
time that both Qt and kdelibs will both be available under the LGPL.
This will help make the licensing of KDE's libraries more permissive, flexible
and coherent. KDE's licensing is summarised on
href="http://techbase.kde.org/index.php?title=Policies/Licensing_Policy">TechBase,
and can be described as "LGPL or equivalent for libraries, GPL otherwise".

Meanwhile, Nokia reiterates their commitment to a commercially viable and,
technology-wise, best-of-breed toolkit. In fact, the performance and
functionality improvements that can be seen in the upcoming Qt 4.5 release are
impressive. Running KDE 4.2 with Qt 4.5 is already being tested by several
engineers inside Qt software, which has resulted in a number of bug fixes in
both KDE and Qt. Independent of the licensing changes, the KDE release team
plans to update the version of Qt in KDE's development tree (qt-copy) shortly
to snapshots of Qt 4.5 which is due to be released in March.

All-in-all today's news means tremendous things for Free and Open Source software. The
possibility of extending the reach of all of our work is exciting in and of
itself, and this announcement could lead to a veritable explosion of Qt and
KDE adoption.

Comments

agreed, but Qt licensing has always been this way, really. it's a result of being very careful and conservative with licensing, and understandably so. eventually they get there, and that's what ultimately matters.

"With the Palm Pre being a potential, they made this move in hopes they can get a large pool of FOSS devs to keep them competitive. Smart move, but reactive and not pro-active."

Pre was announced last week. I hardly think this is a knee-jerk reaction to that. Decisions like this simply don't happen that quickly within multi-billion dollar global organizations.

Frankly, I suspect that Nokia had intended to do this from the beginning, the acquisition certainly wasn't about the potential for licensing fees as incremental revenue, not at a time when Nokia is chopping off business units as part of an overall restructuring to re-focus efforts strictly on their mobility platforms and service delivery. I would imagine it just took time to work out the legal mumbo jumbo before they could actually do this.

iPhone was probably a wake-up call, and RIM's continued dominance in the enterprise space despite the hundreds of millions that Nokia has previously invested in, and ultimately failed at, trying to build a portfolio of proprietary enterprise apps and services around their mobile platforms, was another driver for this new direction.

I think Nokia has a solid strategy here, and it goes far beyond trying to make KDE overtake Gnome, though the KDE team and users will certainly benefit. I suspect things are going to become very interesting over the next couple of years...

kde svn trunk from yesterday Jan 13 2009 does not compile with qt 4.5 snapshot 20090113 with gcc version 4.2.4. It used to but no longer. It has been like this for a few days. I was wondering if I should even file a bug since qt 4.5 is not in KDE's SVN repository yet.

"The LGPL requires that users be able to replace the LGPL code with a modified version; this is trivial if the library in question is a C shared library. But there's no way to make that work with C++, where much of the library consists of inline functions and templates, which are expanded inside the code that uses the library. So to allow people to replace the library code, someone using the library would have to distribute their own source, rendering the LGPL equivalent to the GPL."

Normally, C++ libraries that are licensed under the LGPL add an extension to address the problems stated above. Only if Nokia does so and adds an extension we have big news. If its the pure LGPL, not much will change.

Once Nokia has released Qt 4.5 and published the license we will see if the high hopes of many people will actually come true.

From the Qt FAQ:

"The LGPL carries some restrictions regarding the ability for users to relink libraries and other restrictions that may impose architectural requirements that some organizations might not be comfortable with."

It is not clear what this actually translates to. It is definately a very strange way to tell people that they can use Qt for free to build closed source applications.

From the Qt FAQ:

"The commercial Qt license includes email support, access to upgrades and allows you to develop fully closed source software."

What is fully closed software? Does this mean without a commercial license I can only develop partially closed software? What part must be open and what part can be closed?

"What is fully closed software? Does this mean without a commercial license I can only develop partially closed software?"

Some people may want to modify Qt itself (proprietary framebuffer stuff?). They would need to get the commercial license. Likewise, if you don't have / don't want a dynamic linker (realistic these days?), you would need commercial license.

check the macro definitions: "slots" and "emit" expand to nothing, "signals" is simply "protected", and "SIGNAL" and "SLOT" expand to what YOU put in, with a '0' or '1' added. While I would love to have the copyright on the empty set, or on 0s and 1s used in the context of computers, I doubt this is enforcable :-)

Please read the licensing FAQ, it is clearly Qt Software's intention to enable closed source software development with Qt, otherwise the change to the LGPL wouldn't make sense at all. The vast majority of Qt's functionality can be linked against, should there be legal issues with the few template tool classes, or a bunch of mostly trivial inline functions (the most complicated ones are probably in QString, and even those are trivial), I'm positive these issues will get addressed and fixed..

This is good news. Still, I do not find the licensing FAQ very clear at all! You should really consider adding the exception to the LGPL about C++ templates. And while you are at it, why not extending the exception to allow static linking too?
The pure LGPL is not ideal to enable closed software development with a modern C++ library. All meaningful C++ libraries with LGPL-like licenses that I know of did this.

These concerns are not "opinions from engineers" but the official interpretation by the FSF of one of their licenses. So far LGPL 2.1 combined with C++ templates, macos and inline functions has the same effect as the GPL.

Some people on the dot voiced the hope that the licensing discussions could stop now, how naive. I'm not surprised, there always was a lex trolltech/kde, and a set of community rules for everybody else. The demand to allow static linking is bold at best, what's next, public domain? Would you want to write code that others fork without giving back? If so, I'm afraid, then you speak for a small minority of the free software developer community.

Either way, Brandybuck is completely right, talk to Nokia's legal department, as you won't have Nokia lawyers reading this forum, and you won't have former Trolltech engineers changing licensing terms. An email send to the standard support address will get forwarded to the right people.

Weird isn't it? I had expected a bit of bitching about C++ being evil, about moc being unclean, about Qt not using Cairo or things. But this same came completely out of the left field. I mean... Are people really daft enough to think that moving Qt to LGPL is a sneaky move to underhandedly force people to GPL their code?

People simply raise a point Nokia did overlook or judged its relevance differently than people who will be bound to this license. No one is questioning Nokia's intention, people just feel better when intention and legal wording match. (L)GPL with linking exception would solve this.

It's not that seldom that license incompatibilities go unnoticed or are ignored - even for a log time, as SGI's license used for OpenGL code highlights¹. Worse than having licensing issues is ignoring them. I don't know about Gtk-mm and don't care either, but if it's the same problem, they should address it.

Sorry Matthias, but this is not about spoiling the party or bitching about Trolltech or Nokia or KDE. It is pretty clear that Nokia wants to allow commercial software developers to develop closed source applications using the LGPL version of Qt. I think this is great for KDE because it makes KDE more interessting for commercial software developers that cannot / do not want to develop open source applications.

However, the chosen license (LGPL 2.1) is problematic because it does not allow you to include header files that include macros, inline functions or templates with more then ten lines of code. I think especially templates are problematic because they are used in lots of places. If people on the dot realize the problems with LGPL 2.1 and C++ libraries, commercial software developers will realize that, too and they might not use Qt because of this. This cannot be in the interest of Nokia. There are plenty of other libraries that are licensed unter LGPL 2.1 and that do include macros, templates and inline functions. But just because other people chose questionable licenses for their libraries does not mean QtSoftware/Nokia should do the same.

This also has nothing to do with allowing static linking or public domain. I posted the problems with C++ libraries and LGPL 2.1 because I really like KDE, I think Qt is a great software library and I think it is best to address this problem before Qt 4.5 is released (in case there is not already an exception in header files including templates). I also posted this because I thought some people from QtSoftware (like you, Matthias) might read this and talk to the people that are responsible for license issues at QtSoftware/Nokia. I am sorry if some people feel this is trolling. And I am also a bit disappointed that people assume that I (or the other posters on this subject) think "that moving Qt to LGPL is a sneaky move to underhandedly force people to GPL their code".

Matthias if you think the concerns mentioned here about LGLP 2.1 and C++ headers including templates, inline functions or macros are valid, could you please mention that to someone from the QtSoftware/Nokia legal department?

As per the link someone else posted before you posted this (http://dot.kde.org/1231920504/1231996715/1232014659/), people at Nokia legal have been made aware of the issue and are resolving it. Already. As they would have done if someone had contacted Qt Software directly, instead of posting their concerns all over the internet, making it seem as if they are really more interested in pissing on the parade than getting their concerns resolved.

I thought this was an open, honest and fair discussion based on facts without insulting anyone or blaming Qt Software. Open Source means that concerns are expressed in public and not on the answering machine of Nokia lawyers.

that's like saying the best way to get a bug fixed in Qt is to talk to the legal department.

you talk to the contextually correct people.

as for LGPL issues, i'm impressed and dismayed that only when *Qt* goes LGPL that this all comes up. i hope and expect you to go around to every major LGPL'd library and correct them too.

there's a real double standard at play. not one that i think is necessarily intentional .. it's just, culturally, fair ball to hold Qt under a scanning tunneling electron microscope while the rest of the world gets free passes.

a little fair play would be welcome, and a little pragmatism would too (referring to the issue of expecting legal issues to get sorted on a technical interest forum.)

> As they would have done if someone had contacted Qt Software directly,
> instead of posting their concerns all over the internet, making it seem
> as if they are really more interested in pissing on the parade than getting
> their concerns resolved.

I have already explained that I posted this on the dot because I thought someone from QtSoftware/Nokia (like Matthias) might read this and contact the responsible persons at Nokia. I would have sent these concerns directly to QtSoftware/Nokia's legal department if I would have known an email address. But I do not know and I don't think that posting to some offical address would be a good idea because it is not clear that the email will ever be forwarded to the correct person.

There already were discussions about the use of LGPL 2.1 and C++ on a German linux forum. There actually were people assuming that QtSoftware/Nokia do not want to allow people to develop closed source software with the LGPLed version of Qt. That's why I brought this up here. Because I do not want these false assumptions to spread. Because I think things like that should be stopped as soon as possible and that can only be done by making it clear that this is not what QtSoftware/Nokia wants and stating this in the actual license. The best way to stop licensing FUD is to make it impossible to create lincensing FUD in the first place by fixing the license.

I included my email address in my first post. You could just have asked me why I am posting this instead of just assuming I (and other posters) are trolls that wants to spoil the party. And since Nokia's legal department is aware of this now and tries to resolve it, my (and other people's) concern with LGPL 2.1 and C++ libraries seem to be valid and it might even have been a good thing to post this here. But I really think I said enough about this now, so there will be no further comments about this from me.

> someone from QtSoftware/Nokia (like Matthias) might read this
...
> But I do not know and I don't think that posting to some offical address would
> be a good idea because it is not clear that the email will ever be forwarded to
> the correct person.

Matthias is not a lawyer (neither am i, of course).
the message has been passed on to the right people.
there are people whose job it is to look after such things (passing concerns to the right people).

> The best way to stop licensing FUD is to make it impossible to create
> lincensing FUD in the first place by fixing the license.

agreed. which is what will happen. i still think it's fascinating that it comes out around Qt instead of any of the other LGPL'd frameworks that carry bulks of inlined code with them.

maybe our community just cares more.
maybe our community is more paranoid about FUD being spread because of past events, resulting in us gnawing our own feet off.

> concern with LGPL 2.1 and C++ libraries

it's not unique to C++ libraries, and some others have taken legal steps to fix it previously. so there is precedent. there are also far more who haven't.

in the meantime, it would be very nice to be able to have just one "huzzah! cool stuff!" day at some point without someone coming to the party with a wet blanket. it's really disheartening at times putting up with that every. single. time.

i really don't blame Matthias when he shows some bitterness because after a while it gets old and one starts to feel that those other people just don't deserve what you're giving to them.

there's some really deep matters to reflect upon here, and i hope people do so.

"Matthias ...shows some bitterness..."
If this licensing issue comes up here, it is not a reason to to be bitter. It shows that Qt is in the focus of many people and that the people who bring it up here and now don't have bad intentions. Much more damage could be done if the issue had been brought up *after* the license change had been made.

Yes, there are pure LGPL 2.1 C++ libraries out there, but they do not have the user base as the toolkits mentioned above or Qt.

The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following:

* a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License.
* b) Accompany the object code with a copy of the GNU GPL and this license document.

Thanks for clarifying. However, I really think you should add an exception like libstdc++ does:

As a special exception, you may use this file as part of a free software
library without restriction. Specifically, if other files instantiate
templates or use macros or inline functions from this file, or you compile
this file and link it with other files to produce an executable, this
file does not by itself cause the resulting executable to be covered by
the GNU General Public License. This exception does not however
invalidate any other reasons why the executable file might be covered by
the GNU General Public License.

Otherwise commercial developers would have to be very careful not to use any header files that contain templates (or include other header files that include templates). Basically that would render the LGPL Qt edition useless for commercial developers. I doubt that commercial developers take this risk. I think it is not enough that QtSoftware gives permission in a FAQ that closed source software may link to the LGPL edition of Qt. It has to be allowed by the license itself.

So you got lucky this time. Q_OBJECT is a bit longer, but you are still lucky.

Using the LGPL 2.1 also means that developers are restricted to use C++ language features only in a way that does not conflict with the LGPL 2.1. I doubt a developer will want to check his/her code every time if it complies with the LGPL.

C++ is not very attractive without templates. And while macros are certainly overused I would not generaly exclude the possibility to write a longer macro.

When I read that Qt 4.5 will be licensed as LGPL this morning, I was really happy because I think this will give KDE a huge boost. Unfortuately back then I did not know that LGPL 2.1 is basically the same as GPL for C++ libraries. If Nokia is really adding LGPL 2.1 without exceptions nothing changes and Qt / KDE will still not be an option for many commercial software companies.

I really like KDE (I even was a KDE developer a couple of years ago) and it is sad to see that all major distributions are using Gnome as their default desktop now (except maybe Novell, but Gnome is also their default for their enterprise products). Making Qt available for free to commercial software developers would maybe help to reverse this trend. And it would also help to bring more developers to Qt which would make Qt a better product. And that would also benefit Nokia which wants to use Qt for their own products.

KDE 4.2 is really great and I don't think KDE as a project will go away anytime soon, but in the long run KDE will get less significant because non of the major players (Redhat, Sun, Ubuntu) really supports KDE anymore. I really hope Nokia does the right thing and make Qt available for free to commercial developers but from all I read so far I doubt it. And then all the hype generated by "Qt will be LGPL" will have the opposite effect because people will be quite disappointed when they realize that LGPL 2.1 for a C++ library basically means GPL.

remind me never to invite you to my birthday party. you'd be the person showing up to remind me that i'm older than i've been, which means i'm closer to my death than ever before.

> really supports KDE anymore

is that we nailed that 50 million + student roll out this past year?
is that why Red Flag, #1 desktop Linux retailer in the world, sold 4 million retail units of KDE+Linux on Dell/HP hardware last year?
or how Mandriva has done several massive roll outs in the last couple years? (they are almost exclusively OEM deals these days)
or the EEE PC?
or ...

but you say Sun is a major player, which makes me laugh. a major player in what? they aren't even a major player in the server market anymore. they are a well known name, but hardly a client side player.

Red Hat? they still have an expressed _non_ interest in the desktop space.

as for Ubuntu, they are popular in the enthusiast crowd but are still making their way into a toe hold in the "Real World". let's come back to them in a couple years and see how it pans out.

> but from all I read so far I doubt it

so you read that this is exactly their plan, and based on that you determine based that it isn't their plan. hu-wah? *double take*

When I read that Qt 4.5 will be licensed as LGPL this morning, I was really happy because I think this will give KDE a huge boost. Unfortuately back then I did not know that LGPL 2.1 is basically the same as GPL for C++ libraries. If Nokia is really adding LGPL 2.1 without exceptions nothing changes and Qt / KDE will still not be an option for many commercial software companies.

I really like KDE (I even was a KDE developer a couple of years ago) and it is sad to see that all major distributions are using Gnome as their default desktop now (except maybe Novell, but Gnome is also their default for their enterprise products). Making Qt available for free to commercial software developers would maybe help to reverse this trend. And it would also help to bring more developers to Qt which would make Qt a better product. And that would also benefit Nokia which wants to use Qt for their own products.

KDE 4.2 is really great and I don't think KDE as a project will go away anytime soon, but in the long run KDE will get less significant because non of the major players (Redhat, Sun, Ubuntu) really supports KDE anymore. I really hope Nokia does the right thing and make Qt available for free to commercial developers but from all I read so far I doubt it. And then all the hype generated by "Qt will be LGPL" will have the opposite effect because people will be quite disappointed when they realize that LGPL 2.1 for a C++ library basically means GPL.

"There is an old moral here; for what C++ templates are concerned to the point where third party code is making use of the library and instantiating itself such templates, the GPL and LGPLv2.1 licenses are in effect equivalent in GPL behaviour of the template - based code, while LGPLv3 corrects this slight but mephistophelian oversight on behalf of the LGPLv2.1. This has been discussed over and over by several developers and you have the FSF being clear about it as in the libstdc++ case and the corrections made for LGPLv3."

This issue needs to be worked out before the license change can be a success.

"Legal has been made aware of the issue, and are working on an exception for the LGPL 2.1, to fully enable commercial development towards the LGPL library with all its templates and inline functions, as was the intention."

I bet so many geeks are peeing in their pants because of this news :D :D

Regarding GTK+ and GNOME, I hope that they can coexist well with Qt/KDE and even they can cooperate more. Competition is good, this news might encourage wxWidgets and GTK+ guys to work harder to polish their libraries. And people do have preferences (like prefer C over C++ for GUI programming, or prefer more lightweight library like FLTK)

From my POV, I prefer GPL, but considering the huge impact of LGPL-ed Qt, I also support this movement ;)

Has anyone seen the recent (last Monday?) announcement of KBasic 1.87 ? (KBasic is a Qt-based implemenation of the Basic programming language, and it is cross-platform, and it can be used to easily port Windows Basic programs over to Linux, because the language syntax is the same...)

According to this source: http://www.kbasic.com/doku.php?id=kbasic_s_license KBasic is (dual) licensed (also) under the GPL3. I have no reason to doubt the contents of that website and swap it against your unfounded "But it's proprietary!" assertion.

His software code was GPL open source but because he was the only developer he turned it into a proprietary model. If it becomes part of the KDE project it will be in the playground to maturate and it will be possible to compile it.