by havoc

Since it’s come up at GUADEC, I wanted to post a bit about D-Bus
licensing. D-Bus is dual licensed under your choice of the GPL or the
Free License 2.1
. The AFL is essentially an MIT/X11 style license,
i.e. “you can do almost anything” – however, it has the following
patent clause:

This License shall terminate automatically and You may no longer
exercise any of the rights granted to You by this License as of the
date You commence an action, including a cross-claim or counterclaim,
against Licensor or any licensee alleging that the Original Work
infringes a patent. This termination provision shall not apply for an
action alleging patent infringement by combinations of the Original
Work with other software or hardware.

In other words, if you sue claiming that D-Bus infringes your patent,
you have to discontinue distributing D-Bus. The patent clause does not
affect anything “outside” of D-Bus, i.e. it does not affect patents on
stuff other than D-Bus, or your right to distribute stuff other than

Versions of the AFL prior to 2.1 had a more scary patent
clause. However, I have not heard any objections to this more
limited one in 2.1.

Let’s compare the situation here to LGPL. LGPL is a dual license; the
LGPL license plus GPL. Quoting from LGPL:

You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library.

As I understand it, this is why the LGPL is GPL-compatible. If you
link your GPL app to an LGPL library, you are using the library under

I believe if you distributed D-Bus under GPL or LGPL, you would be
making a patent grant of any patents affecting D-Bus. The AFL
patent clause does not require you to make a patent grant; it still
allows you to sue. You just have to stop distributing D-Bus while you
do it. With the GPL or LGPL, you can never distribute in the first
place, without giving up the right to sue at all. Unless I’m missing
something, there’s no way the AFL patent clause can be a problem
unless LGPL or GPL would be a problem in the same context.

That said, there may be some advantages to relicensing D-Bus, some of
the options would be:

  • Add LGPL as a choice (so LGPL + GPL + AFL)
  • Add GPLv3 as a choice
  • Switch the whole thing to MIT/X11
  • Some combination of the above

For the record, I’m not against any of these in principle. I would
just say, 1) it’s a lot of work due to all the authors,
so someone would have to volunteer to sort this out (and figure out
what to switch to), and 2) I think some people are not understanding
the current licensing – in particular, at the moment it isn’t clear to
me at least what LGPL would allow you to do that the current licensing
does not. AFL is much less restrictive than the LGPL, and the
GPL is not compatible with the LGPL either – the GPL is only
LGPL-compatible because LGPL programs are dual-licensed under GPL,
just as D-Bus is.

I may be confused on point 2): it would seem the implication is that
if your app is “GPL + exception” you can’t use an LGPL library such as
GTK+, except by adding another exception to allow using GTK+ under
LGPL rather than GPL. This is the same with GPL+AFL. But people don’t
worry about linking their GPL+exception apps to GTK+, and they do
worry about linking them to D-Bus. What am I missing?

Historically, the intent of using AFL rather than LGPL was to be less
restrictive (and vague) than the LGPL, and the intent of AFL rather
than MIT/X11 was to retain some very minimal patent protection for
patents that affect D-Bus itself while keeping the MIT/X11 concept
otherwise. Also, AFL is a slightly more “legally complete and correct”
way to write the MIT/X11 type of license.

There isn’t any ideology here, just an attempt to pick the best
license, and we can always revise the decision.

(This post was originally found at

My Twitter account is @havocp.
Interested in becoming a better software developer? Sign up for my email list and I'll let you know when I write something new.