By Nathan Willis
November 21, 2012
Select a software license can be tricky, considering all of the
effects that such a choice has for the future: library compatibility,
distribution, even membership in larger projects. But agreeing on a
license at the beginning is child's play compared to
trying to alter that decision later on. Case in point: the VLC media
player has recently been relicensed under LGPLv2.1+, an
undertaking that required project lead Jean-Baptiste Kempf to track down
more than 230 individual developers for their personal authorization
for the move.
VLC had been licensed under GPLv2+ since 2001; the development
team decided to undertake the relicensing task for a number of
reasons, including making VLC compatible with various gadget-vendor
application stores (e.g., Apple's). Making the core engine available
under LGPL terms would make it a more attractive target for
independent developers seeking to write non-GPL applications, the
argument goes, which benefits the project through added exposure, and
may even attract additional contributor talent.
The license migration was approved by team
vote in September 2011. The first big milestone was cleared the
following November, a relicensing of libVLC
and libVLCcore (which implement the external API and internal
plugin layer, respectively), plus the auxiliary libraries
libdvbpsi, libaacs, and libbluray. Kempf
described
the process involved on his blog. Because VLC contributors retain
the authors' rights to their contributions, no matter how small, Kempf
needed to locate and obtain permission from all of the roughly 150
developers who had written even a minor patch during the project's
long history.
To do so, he harvested names and email addresses from the project's
git repository and logs, and undertook a lengthy process of
sifting through the records (both to weed out false matches, and to
identify contributors who were credited in unofficial spots like in-line
comments). With the list in hand, Kempf set out to contact each of the
contributors to approve the licensing change. He was ultimately
successful, and the change was committed.
The commit notes that more than 99% of the developers consented to the
change, and those agreeing account for 99.99% of the code, which he
said is sufficient from a legal standpoint.
The modular community
But, as Kempf described
in a follow-up post, the same method was less successful when he set out
in 2012 to relicense the next major chunk of VLC code: the major
playback modules. Together, they constitute a much larger
codebase, with considerably more contributors (including some who are
not necessarily committed VLC team members). After emailing the
module authors, he said, he received responses from only 25% of them.
Two rounds of follow-up emails edged the number up closer to 50%, but
for the remainder he resorted to "finding and stalking"
the holdouts through other means. Those means included IRC, GitHub,
social networks, mutual friends, employers, and even whois
data on domain names.
In the end, he managed to get approval from the overwhelming majority
of the contributors, but there were some "no"s as well, plus a handful
of individuals who never replied at all. At that point, he had to
examine the unresolved contributions themselves and decide whether
to delete them, reimplement them, refactor them into separate files,
or drop the offending modules altogether. He made the license-changing
commit
on November 6, and listed about 25 modules that were not
included. They include the work of 13 developers who either
declined give their approval or were unreachable, plus a set of modules
that were ports from other projects (such as Xine or MPlayer) and thus
not in the VLC team's purview.
By all accounts, the legwork required to hunt down and cajole more
than 230 developers was arduous: in the second blog post, Kempf noted
that it could get "really annoying" to contact people "over,
over, over and over, and over" to ask for an answer. That is
probably an understatement; in an email Kempf said at the outset that
no one thought it would even be doable.
He also elaborated on what comes next. Not every VLC module
was targeted for the relicensing work of the previous year, he said.
Out of the roughly 400 modules being developed, about 100 remain
non-LGPL. First, for those who rarely venture beyond VLC's desktop
media player functionality, it can be easy to forget all of the other
functions it provides; those modules will remain under their
existing licenses. In particular, VLC's media server, converter, and
proxy functionality will remain in GPL modules. Other modules,
including scripting and visualization, will remain GPL-licensed at
least for the time being, because they do not impede the ability of
third-party developers to write non-GPL playback applications, which
was the leading use-case motivating the change. VLC's user interface and
control modules will also remain GPL-licensed, in order to discourage
non-free forks.
Kempf also pointed out that the VideoLAN non-profit organization holds
the
trademarks to VLC, VideoLAN, and other names, and restricts their usage to
open source code. That reflects the project's concern that the move
away from the GPL will be misinterpreted by someone as a move away
from free-ness (in multiple senses of the word); in addition to the
trademark policy, both of the announcements about the relicensing
project have emphasized that despite the change, VLC will remain free
software.
Holdouts
But despite the consensus reached by the majority of core and module
developers, there is still the problem of those twenty-odd playback
modules that, for one reason or another, are not being relicensed.
Kempf explained that the main VLC application will still be able to
use all of the non-LGPL modules, and that only third-party libVLC
applications will encounter any difficulties with license
compatibility.
Authors of such applications may write their own modules for the
missing functionality, or simply migrate to another module —
given the modular nature of VLC, there are several modules
out there that duplicate functionality implemented elsewhere.
"The results might be slightly different, but I doubt many
people will notice. There are a few exceptions, (probably 2 or 3) that
will get rewritten, at some point, I think."
There are two modules Kempf predicted will never be reimplemented
in LGPL code — DVD playback and Teletext support — because
they rely on other GPL-licensed packages without viable non-GPL
alternatives. He still holds out hope for tracking down a few of the
still-unreached contributors, of course — only the authors of
the iOS, Dolby, Headphone, and Mono modules outright declined to
relicense their work.
It is not possible to predict exactly what effect the LGPL-relicensing
work will have on third-party developers targeting iOS or other "app
store" markets, thanks to the often opaque processes governing which
content gets in and which gets rejected. But VLC was yanked from the
iOS App Store in January 2011, a decision believed
to be due to the GPL license. But because Apple does not provide
details about its decisions, the situation remains nebulous.
Nevertheless, hunting down several hundred individual developers from more than a
decade of development is an impressive feat of, shall we say, logistical
engineering. Relicensing a community project is rarely a simple task;
one is reminded of the multi-year process required to relicense the Heyu home automation engine, which
involved tracking down the estates of developers no longer with us.
Many large software projects have contemplated a license change at one
time or another, and typically the scope of tracking down and
persuading all of the former developers is cited as a reason that such
a change is unworkable. For example, VLC's contributor pool is far smaller than
the kernel's, to be sure. But the fact that Kempf was able to
successfully chase down virtually the full set of both uncooperative
and unintentionally-AWOL contributors in such a short time frame is an
admirable achievement. Then again, the VLC team has long enjoyed
a reputation for admirable achievements.
(
Log in to post comments)