Relicensing VLC to LGPL

As you might know, or might have read, I am spending a lot of my time to relicense libVLC, aka VLC engine, from GPL to LGPL.

This is a continuation of the LGPL posts, please read the previous post, if you have not done it already.

So, I had a list of contributors on the parts I was considering to relicense, thanks to the previous work.

Cleaning the contributors list

This huge list was dumped in a spreadsheet, using LibreOffice. I used during all the relicensing with crazy big formulas to keep my status up-to-date.

While I thought curating the list was useless, it revealed very important, since some developers use pseudonyms or change e-mail addresses. I thought my list was already unique in the past, but it was not.

Of course, a lot of emails were invalid, so manual corrections where necessary.

Splitting the list

During the core relicensing of VLC, an important number of users allowed us to relicense all the VLC code, so I had to mark them as such in the spreadsheet.

For each group of modules, I had a different blame log, since the complete relicensing seemed too big a task, and logical groups could be relicensed individually.

Then, with an export of the csv, the raw blame.log, a bit of awk, grep, cut, I had a list of people remaining to mail. This list would get update, after every batch of answers.

Mailing

The next step is the obvious one, mailing the developers. I did that with a small Python script made by Ludovic.

This was a short letter, with explanations and a prototype for an answer.

I have mailed no more than 30 contributors in a single batch, because processing the answers (or lack of) could be quite long.

Answers and reactions

In average, the answers were like this:

  • 25% of the emails just bounce,
  • 15% of people answer positively during the next hours,
  • 10% of people answer positively during the next days,
  • 50% do not answer at all.

After a second and a third mail, I usually got around 50% of positive answers.

A few points are interesting:

  • People answering fast were usually the ones that were GPG-signing their mails (this was asked in the LGPL letter).
  • Quite a few people were surprised that I would mail them ("I only wrote one small commit", "This was minor code").
  • Many people explained me they did not care what license the code was under, as long as it was open source. Some of them gave a full VLC relicensing authorization. Two even gave all the transmittable rights to VideoLAN.
  • A few people thanked me for taking the task of relicensing.

Finding and stalking

Now is probably the harder part, where you will think I am crazy.

So, after the first part, we get usually half of the answers. We need the other half.

For the bouncing emails, finding quickly an updated email online, fixing the videolan aliases solved many issues.

But for the rest...

Techniques for stalking

The first ones are obvious:

  • Ask older contributors, especially for people from Ecole Centrale Paris for contact
  • Use google (most of the time, it gives a link to VLC, though)
  • Look on freecode, github, gitorious for an alternative contact
  • Find a website (they are geeks!).

Some are a bit intrusive

  • Use LinkedIn and ask for an introduction
  • Friend them on Facebook
  • Create an account on another weird social network
  • Ask one of their friends and annoy them
  • Ask their boss.

Or clearly bad:

  • Find their phone in a Phone Directory
  • Use whois on some of their domain
  • Use whois on a domain hosted on the same machine of their domain
  • Go to their workplace.

Contact

Then, I used IRC, mails on multiple addresses, phones, fax and other means to get them to mail me.

Over, over, over and over, and over.

This could get really annoying to do, to be honest.

Getting rid of people

At some point, you realize that some of the contributors are not going to answer.

So, now, you need to actually analyze their code contributions and starting working on it.

First, is there code still in place and not deleted? Is the license LGPL, by any chance?

Then, is this module very important? Can we drop its priority?

Then, is this feature important or not?

And then, I deleted some code, reverted some commits, rewrote some and or isolated code from them in a separate files to reduce the future impact.

This is not nice? Well, not answering is not nice either.

Follow up

You can read the last part about this relicensing.