Blame doc/ROAD_TO_LGPL

Packit c32a2d
The License of mpg123
Packit c32a2d
=====================
Packit c32a2d
Packit c32a2d
	by Thomas Orgis <thomas@orgis.org>
Packit c32a2d
Packit c32a2d
1. Story: The Odyssey, The Decision
Packit c32a2d
-----------------------------------
Packit c32a2d
Packit c32a2d
This is the 17th of July in the year 2006, after half a year of preparation and the contributor email campaign running for over 3 months, I'm going to draw a conclusion about the licensing of the mpg123 project.
Packit c32a2d
Packit c32a2d
Packit c32a2d
The license conditions of mpg123 have been subject to dispute and rejection by parts of the free software world in the past...
Packit c32a2d
We want to have it straight now.
Packit c32a2d
Michael doesn't have much freetime to maintain the code and bother with requests by companies wanting to use mpglib.
Packit c32a2d
So, he already decided to place mpglib under LGPL and mpg123 under GPL in the past.
Packit c32a2d
Now, after I applied for taking over maintainership we decided on placing as much code of the whole project as possible under LGPL to ease future code migration and merging between mpg123 and mpglib.
Packit c32a2d
Packit c32a2d
That decision was followed by a lot of work to track down as many contributors to both Michael's development tree and my -thor one as possible to ask them for explicit LGPL support statements.
Packit c32a2d
I wrote to every Name/eMail address I could track down (including internet search for new addresses), regardless of the question if there indeed is some code left by that person.
Packit c32a2d
I asked them to utter any problem they may have with LGPL license as well as contacting me if there are _no_ issues.
Packit c32a2d
Packit c32a2d
Of course, without having to ask again, supporters of LGPL are the initial author and the two current maintainers:
Packit c32a2d
Packit c32a2d
	Michael Hipp
Packit c32a2d
	Nicholas J. Humfrey
Packit c32a2d
	Thomas Orgis
Packit c32a2d
Packit c32a2d
Also, new stuff was included with explicit LGPL permission from
Packit c32a2d
Packit c32a2d
	Adrian Bacon
Packit c32a2d
	Romain Dolbeau
Packit c32a2d
	Guillaume Outters
Packit c32a2d
Packit c32a2d
Plus there is stuff pending with permission from
Packit c32a2d
Packit c32a2d
	Zuxy Meng
Packit c32a2d
Packit c32a2d
Now for the folks having made suggestions and contributions over the years...
Packit c32a2d
In the first round starting in March 2006 I wrote the initial mail to anyone I could get. That resulted in some positive responses - examples:
Packit c32a2d
Packit c32a2d
	"I don't remember what I did, but LGPL is fine by me."
Packit c32a2d
Packit c32a2d
	"No problem for me."
Packit c32a2d
Packit c32a2d
	"Any code I may have contributed to the mpg123 project at any time in the
Packit c32a2d
past are hereby licensed to you under the GNU Lesser General Public"
Packit c32a2d
Packit c32a2d
	"it's fine with me if mpg123 goes LGPL. 
Packit c32a2d
	However, my contribution to mpg123 was very minor, and I'm not even sure if 
Packit c32a2d
	any of my code is still in the current version."
Packit c32a2d
Packit c32a2d
A good number of eMail addresses is just broken (years have passed...) and another good number of addresses are either totally unknown or not known to be good or bad since no response (not even bounce - thanks, spam!) came back in over 3 months.
Packit c32a2d
Packit c32a2d
Some statistics for the first run: 86 total , 15 positive, 37 broken email, 34 unknown
Packit c32a2d
Packit c32a2d
Positive:
Packit c32a2d
	Andreas Neuhaus
Packit c32a2d
	Chris Butler
Packit c32a2d
	Colin Watson
Packit c32a2d
	Daniel Kobras
Packit c32a2d
	Daniel O'Connor
Packit c32a2d
	Daniel Skarda
Packit c32a2d
	Erik B. Andersen
Packit c32a2d
	Helge Deller
Packit c32a2d
	Juergen Schoew
Packit c32a2d
	Martin Denn
Packit c32a2d
	Munechika SUMIKAWA
Packit c32a2d
	Oliver Fromme
Packit c32a2d
	Petr Stehlik
Packit c32a2d
	Robert Bihlmeyer
Packit c32a2d
	Samuel Audet
Packit c32a2d
	Shane Wegner
Packit c32a2d
	Stefan Bieschewski
Packit c32a2d
	Steven Schultz
Packit c32a2d
	Tillmann Steinbrecher
Packit c32a2d
	Tomas Oegren
Packit c32a2d
	Tommi Virtanen
Packit c32a2d
Packit c32a2d
Then, an investigation of the code revealed a core of people having actually left traces in the code.
Packit c32a2d
Some more effort was put in tracking them down, with the partial success of having found some new, working email addresses and thus having some more positive responses .
Packit c32a2d
But also, it showed that the main number of people is not reachable anymore.
Packit c32a2d
Packit c32a2d
Creators (of a whole file, driver...): 16 total, 5 positive, 2 broken email, 9 unknown
Packit c32a2d
Packit c32a2d
Positive:
Packit c32a2d
	Andreas Neuhaus
Packit c32a2d
	Juergen Schoew
Packit c32a2d
	Oliver Fromme
Packit c32a2d
	Petr Stehlik
Packit c32a2d
	Samuel Audet
Packit c32a2d
Packit c32a2d
Modders: 7 total, 1 positive, 2 broken mail, 4 unknown
Packit c32a2d
Packit c32a2d
Positive:
Packit c32a2d
	Tomas Oegren
Packit c32a2d
Packit c32a2d
Packit c32a2d
That shows two things:
Packit c32a2d
Packit c32a2d
	1. It's impossible to get a response from everyone having contributed in some way.
Packit c32a2d
	2. Everyone who I reached supports the license change to LGPL
Packit c32a2d
Packit c32a2d
Packit c32a2d
So, for the sake of getting a reasonable step forward, I'm going to close the case.
Packit c32a2d
There are three categories of code:
Packit c32a2d
Packit c32a2d
1. written by Michael or some other contributor who explicitly supports LGPL
Packit c32a2d
Packit c32a2d
	Clear case: LGPL
Packit c32a2d
Packit c32a2d
2. contributed years ago without license notice
Packit c32a2d
Packit c32a2d
	The grounded assumption of can be made that the contributor accepted Michael's conditions, esp. the part about the software being available without cost.
Packit c32a2d
	Furthermore they gave the code into Michael's hands or placed patches in the internet without any claims concerning commercial uses - wich were not covered by the old COPYING file.
Packit c32a2d
	Based on the assumption of acceptance for the mpg123 COPYING file and the included rule of Michael's decision for any further use, this code is to be placed under LGPL by Michael's decision.
Packit c32a2d
Packit c32a2d
3. contributed with notice
Packit c32a2d
Packit c32a2d
	Some code includes a note about it being GPL. Well, one has to respect that.
Packit c32a2d
Packit c32a2d
Packit c32a2d
That results in the bulk of mpg123 being LGPL and possibly some parts GPL only.
Packit c32a2d
Packit c32a2d
Packit c32a2d
2. The Inventory
Packit c32a2d
----------------
Packit c32a2d
Packit c32a2d
I will now examine the files of the mpg123 svn trunk as of 17.07.2006 with their respective legal status:
Packit c32a2d
Packit c32a2d
Stuff added by current maintainers, thus being LGPL:
Packit c32a2d
Packit c32a2d
	scripts/debugdef.pl
Packit c32a2d
	AUTHORS
Packit c32a2d
	autogen.sh
Packit c32a2d
	configure.ac
Packit c32a2d
	Makefile.am
Packit c32a2d
	MakeLegacy.sh
Packit c32a2d
	src/audio_jack.c
Packit c32a2d
	src/audio_libao.c
Packit c32a2d
	src/Makefile.am
Packit c32a2d
	src/audio_alsa09.c
Packit c32a2d
	src/config.h.legacy
Packit c32a2d
	src/debug.h
Packit c32a2d
	src/layer3.h
Packit c32a2d
Packit c32a2d
Non-Code files from Michael, maintainers or just trivial content (safely LGPL, then):
Packit c32a2d
Packit c32a2d
	BENCHMARKING
Packit c32a2d
	BUGS
Packit c32a2d
	CHANGES
Packit c32a2d
	equalize.dat
Packit c32a2d
	INSTALL
Packit c32a2d
	mpg123.1
Packit c32a2d
	COPYING
Packit c32a2d
	TODO
Packit c32a2d
	README
Packit c32a2d
	README.3DNOW
Packit c32a2d
	README.cfa
Packit c32a2d
	README.new
Packit c32a2d
	README.remote
Packit c32a2d
	README.thor
Packit c32a2d
	README.WIN32
Packit c32a2d
	test.pl
Packit c32a2d
	BENCHMARKING.thor
Packit c32a2d
	CONTACT
Packit c32a2d
Packit c32a2d
sources under LGPLv2.1:
Packit c32a2d
Packit c32a2d
by Michael:
Packit c32a2d
Packit c32a2d
	audio.c
Packit c32a2d
	audio_dummy.c
Packit c32a2d
	audio.h
Packit c32a2d
	audio_hp.c
Packit c32a2d
	audio_oss.c
Packit c32a2d
	audio_sun.c
Packit c32a2d
	common.c
Packit c32a2d
	common.h
Packit c32a2d
	dct64.c
Packit c32a2d
	dct64_i386.c
Packit c32a2d
	decode_2to1.c
Packit c32a2d
	decode_4to1.c
Packit c32a2d
	decode.c
Packit c32a2d
	decode_i386.c
Packit c32a2d
	decode_ntom.c
Packit c32a2d
	Makefile.legacy
Packit c32a2d
	equalizer.c 
Packit c32a2d
	getbits.c
Packit c32a2d
	getbits.h
Packit c32a2d
	huffman.h
Packit c32a2d
	l2tables.h
Packit c32a2d
	layer1.c
Packit c32a2d
	layer2.c
Packit c32a2d
	layer3.c
Packit c32a2d
	mpg123.c
Packit c32a2d
	mpg123.h
Packit c32a2d
	readers.c
Packit c32a2d
	system.c
Packit c32a2d
	tabinit.c
Packit c32a2d
	term.c
Packit c32a2d
	term.h
Packit c32a2d
Packit c32a2d
by contributors:
Packit c32a2d
Packit c32a2d
	audio_aix.c: Juergen Schoew, Tomas Oegren, Niklas Edmundsson
Packit c32a2d
	audio_alib.c: Erwan Ducroquet
Packit c32a2d
	audio_esd.c: Eric B. Mitchell
Packit c32a2d
	audio_macosx.c: Guillaume Outters
Packit c32a2d
	audio_mint.c: Petr Stehlik
Packit c32a2d
	audio_nas.c: Martin Denn
Packit c32a2d
	audio_os2.c: Samuel Audet
Packit c32a2d
	audio_sgi.c: Thomas Woerner
Packit c32a2d
	audio_win32.c: Tony Million 
Packit c32a2d
	buffer.c: Oliver Fromme
Packit c32a2d
	buffer.h: Daniel Kobras / Oliver Fromme
Packit c32a2d
	control_generic.c: Andreas Neuhaus, Michael Hipp, Thomas Orgis
Packit c32a2d
	dct36_3dnow.s: Syuuhei Kashiyama
Packit c32a2d
	dct64_3dnow.s: Syuuhei Kashiyama
Packit c32a2d
	dct64_altivec.c: Romain Dolbeau
Packit c32a2d
	dct64_i486.c: Fabrice Bellard
Packit c32a2d
	decode_3dnow.s: Syuuhei Kashiyama
Packit c32a2d
	decode_i486.c: Fabrice Bellard
Packit c32a2d
	decode_i586_dither.s: Stefan Bieschewski, Adrian Bacon
Packit c32a2d
	decode_i586.s: Stefan Bieschewski
Packit c32a2d
	decode_MMX.s: higway
Packit c32a2d
	dct64_MMX.s: higway
Packit c32a2d
	tabinit_MMX.s: higway
Packit c32a2d
	equalizer_3dnow.s: KIMURA Takuhiro
Packit c32a2d
	genre.h: Shane Wegner
Packit c32a2d
	getcpuflags.s: KIMURA Takuhiro
Packit c32a2d
	getlopt.c: Oliver Fromme
Packit c32a2d
	getlopt.h: Oliver Fromme
Packit c32a2d
	httpget.c: Oliver Fromme
Packit c32a2d
	wav.c: Samuel Audet
Packit c32a2d
	xfermem.c: Oliver Fromme
Packit c32a2d
	xfermem.h: Oliver Fromme
Packit c32a2d
	Makefile.win32: Michael Hipp / Tony Million
Packit c32a2d
Packit c32a2d
GPLv2
Packit c32a2d
Packit c32a2d
	audio_alsa.c: by Anders Semb Hermansen, Jaroslav Kysela, Ville Syrjala
Packit c32a2d
Packit c32a2d
Packit c32a2d
To be removed from distribution and thus not licensed in any special way:
Packit c32a2d
Packit c32a2d
precompiled/
Packit c32a2d
tools/
Packit c32a2d
Packit c32a2d
The mpglib source is not part of the core mpg123 distribution anymore - it's written by Michael, it's LGPL, it shall become a real library with own distribution and be married to mpg123 again.
Packit c32a2d
Packit c32a2d
Packit c32a2d
3. Conclusion
Packit c32a2d
-------------
Packit c32a2d
Packit c32a2d
The decoder core Michael's work and under LGPL without question.
Packit c32a2d
Oliver Fromme is more of a co-author than "just" a project contributor, but he explicitly agreed to LGPL anyway.
Packit c32a2d
So, the core functionality is really safe without doubt.
Packit c32a2d
Packit c32a2d
Contributors added mainly output drivers (perhaps coming from some freely available reference implementation) and CPU optimizations.
Packit c32a2d
Having explicit permission from a good deal of major contributors, the LGPL is quite comfortable here, too.
Packit c32a2d
I won't hide that there are explicit statements missing for MMX and 3DNow! optimizations (and the i486 opt, for that matter) due to unreachable authors.
Packit c32a2d
But I feel safe to make it LGPL there, too, because of the argument of them having given the code to Michael to incorporate it into mpg123 - without any own terms, implying that they agree to Michael's terms.
Packit c32a2d
Packit c32a2d
There is one file left that carries an explicit GPL (_no_ LGPL) statement: the old alsa output. This file won't work on current Linux systems, anyway.
Packit c32a2d
Alsa is available through libao. There will probably be a new alsa output.
Packit c32a2d
So, even that one GPL exception may vanish in future, but I'll keep it for now as there may be someone who still has an alsa installation for that it works.
Packit c32a2d
Packit c32a2d
For now that means mpg123 is LGPL with the exception of one file that is GPL only.
Packit c32a2d
Packit c32a2d
End.