Skip navigation.
KDE Developer's Journals

Thinking / ranting on the GPL changes

brad hards's picture

I have been working on providing Microsoft Exchange capability for Akonadi on-and-off for a while. It is coming together - I can suck messages off the server into akonadiconsole. More on that later (or as part of the commit-digest, perhaps).

There is an emerging problem though. The akonadi provider relies on the OpenChange libraries, which in turn rely on Samba 4. That was all fine until the GPL version 3 release. The samba team has decided to adopt GPLv3.

The problem is that GPLv2 and GPLv3 are not compatible. My code is fine - it is "GPLv2 or later". The incompatibility is that Qt is released under GPLv2 (not "or later") - see the top of LICENSE.GPL in your Qt4.

Based on my understanding, that means that KDE4 can't use anything from Samba4 (or Samba3.2+) and Qt4 in the same application.

This is not purely an issue with Samba - GnuPG is has also switched to GPLv3, and I'm guessing GPGME will follow. I'm sure there are other libraries that are switching to GPLv3, and yet others that are GPLv2 only.

There are technical solutions to some of these problems - for example, the openchange resource (which is a separate application) could avoid using anything from Qt/KDE; we could link the smbclient kioslave to the Samba 3.0.25b (forever); and we could find other ways to use GnuPG without GPGME. All of those require precious programmer time, and restrict our options for the future.

I'm not sure I care enough about exchange support to develop so much from scratch. Maybe it would be easier to just delete the code - it will still be in SVN if anyone wants to try.

Its a pity that the FSF couldn't find a way to make GPLv2 and GPLv3 compatible.

I hope the GPLv3 really is good enough to justify this impact.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
mfreeman451's picture

Samba adopts GPLv3

http://news.samba.org/announcements/samba_gplv3/

With this being said, will you be able to continue development of your libmapi integration?

nuscly's picture

Use DBUS between libraries and main code ?

Is it possible to separate in two the code ?

The main application that keep the GPLv2 licence, and the SAMBA GPLv3 libraries can offer an interface in DBUS to others programs ?

brad hards's picture

Possible - but not easy

It is quite possible to do so for something like akonadi (which is designed this way). Not so easy for kioslaves.

In addition, you give up any Qt/KDE capabilities in the "samba side", so it really only suits people who didn't really want to be Qt/KDE programmers - you end up grovelling around in C and raw dbus and having to write IMAP implementations and more stuff that Qt and KDE already have done well. I don't find those things fun. I won't work on that kind of thing for free.

krake's picture

What about QPL

Would the LGPL3 also conflict with QPL?

If not, the exchange provider could at least be distributed for Free Software platforms like Linux, BSD and OpenSolaris

bluestorm's picture

> Its a pity that the FSF

> Its a pity that the FSF couldn't find a way to make GPLv2 and GPLv3 compatible.

This couldn't have happened. GPLv3 is designed to handle new situations (Patents threat, DRM...) and thus is more restrictive.
You cannot add new restrictions while being GPLv2-Compatible. Moreover, making Gplv3 down-compatible would take off every advantage over GPLv2.

They're incompatible by design. The only way to have some sort of compatibility is to let the user choose wich version he wants to use with your code, using the "GPL2 or, at your option, any later version" (or some "GPL2 or, at your option, GPL3") clause.

Concerning your particular problem, i'd say the solution "don't use GPL3 Samba" is too short-term to be useful. More projects are going GPL3, and you would have to do that choice again and again.
I think the best solution is to ask Trolltech to go GPL3 (or, more likely, GPL2 or later). As they have the copyright on the whole library, it's not as difficult as, say, Linux or KDE, but they still would have to care about the librairies they use, and so on.
I hope they will manage (and accept) that soon.

zander's picture

you worry too much!

Its true that LGPLv3 code like samba can not be linked with Qt; 4.3 as seen here; http://www.gnu.org/licenses/gpl-faq.html#AllCompatibility

But I think you are over reacting a little; there are currently no distro's that already ship that LGPLv3 version of Samba (is it even released?) so there is no immediate problem and you can legally work on this stuff without any problems.

There are then 3 scenarios that can unfold; a distro ships the new Samba and your code. It uses a LGPLv2 version to compile your stuff; so all is fine. Second is that the distro refuses to compile your code with an older version of Samba, and thus to ship it.
The last one is that a new release of Qt will get a license update that allows you to use it together with a LGPLv3 lib.

I see 2 our of 3 situations where there is no problem at all; and assuming the one bad situation will happen is IMO a bit hasty. You can expect some leniency from distros and FSF while codebases are upgraded as well.

Bottom line as far as I can see is that there is no immediate problem and we should be more constructive in our communications to avoid future problems.

pipitas's picture

Samba 3.2.0 (a.k.a. 3.0.26) will be GPL3

"LGPLv3 version of Samba (is it even released?)"

No, nothing is released yet.

But the next release (under GPL3) is very close.

The currently latest release is 3.0.25b (GPL2 or later). The next 3.x release was going to be 3.0.26, but it will now be tagged as 3.2.0 to mark the significance of Samba's change to GPL3 which they adopted for "all future releases".

If I understand Brad correctly, he (indirectly) relies on Samba 4 code. Which has no official release yet, is still alpha, is under heavy development, and still quite a long time away from a first official release. But will surely be GPL3...

brad hards's picture

I worry, its true

My code (indirectly) uses samba4 - there is no chance it can work with samba3. Samba 4 is currently in alpha. I can't see anyone shipping less than a beta version (which will almost certainly be LGPLv3/ GPLv3).

Only the last scenario can really help me, if Samba 4 goes GPLv3.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.