[git commit master] tune2fs: new applet by Vladimir. Only supports -L LABEL

Rob Landley rob at landley.net
Tue May 11 04:04:48 UTC 2010


On Saturday 08 May 2010 17:15:35 Denys Vlasenko wrote:
> > >+++ b/util-linux/tune2fs.c
> > >@@ -0,0 +1,71 @@
> > >+/* vi: set sw=4 ts=4: */
> > >+/*
> > >+ * tune2fs: utility to modify EXT2 filesystem
> > >+ *
> > >+ * Busybox'ed (2009) by Vladimir Dronnikov <dronnikov at gmail.com>
> > >+ *
> > >+ * Licensed under GPLv2, see file LICENSE in this tarball for details.
> >
> > will have to be reimplemented for anything that wants "or later". Bad.
> >
> > Can anyone explain, _in detail_ what's going on there? What's the theory
> > behind that?
>
> There seems to be no concensus on GPLv2 v "GPLv2 or later".

Actually I wrote about this fairly extensively in 2006.  Random example:

http://lists.busybox.net/pipermail/busybox/2006-September/058649.html

> Anyone trying to cherry-pick code under one license out of a project under
> another license is on pretty shaky legal ground to start out with and had
> better be able to show their work.  We _do_ edit this code, regularly, right
> in the middle of it where you won't notice it without doing svn annotate,
> and after svn 16112 those changes are NOT available under GPLv3.  Any laywer
> will tell you that if there's a clean source you can go to that _won't_
> raise these kind of questions, you should use that clean source if at all
> possible.  What you're asking for would only _encourage_ license violations.

Fundamentally, BusyBox went GPLv2 only because it had sucked in code from 
GPLv2 only projects (such as those writen by Linux kernel developers) for a 
full decade.  (Remember, Linus clarified the kernel license 10 years ago now.)  
BusyBox as a whole has only been distributable under GPLv2 only for a long 
time because of that, it was just a moot point until GPLv3 came out because 
the "or later" didn't actually mean anything yet, there was no other license 
it actually applied to, so there was no other license it could be distributed 
under.

In 2006, we made it explicit: the project is only distributable under GPLv2, 
thus the default license for busybox contributions is "GPLv2 only".  (Some of 
us are embedded developers, and like to simplify things.  If the only license 
the project can be distributed under is GPlv2 only, then my code is 
contributed GPLv2 only.)

However, people who contribute code can license it however they want.  (For 
example, my initial bunzip2 rewrite from way back is under LGPLv2 at 
http://landley.net/code/micro-bunzip.c.)  But if one of those licenses isn't 
GPlv2 then it's not compatible with BusyBox and we can't incorporate it.  By 
contributing it here, they implicitly license it under GPLv2.

Some of the code we incorporate has always been dual licensed.  That dual 
license does not apply to the project as a whole, only to some of the 
component copyrights of the derived work.  Think about how rather a lot of our 
applets started out BSD licensed:

  $ find . -name "*.c" | xargs grep Berkeley | wc -l
  37

Does that mean you can copy out any changes we make to the busybox version of 
those applets, and put them into a BSD licensed version?  Not really, no: if 
our changes are under GPLv2, the resulting derived work may only be 
distributed under GPLv2.  If the author hasn't explicitly stated what other 
licenses the code might be under, the ONLY license you can be sure they've 
issued is GPLv2 only.

You can ask the authors if they'll explicitly grant additional licenses so 
that you use the changes under that other license, or if they're trivial 
enough not to be copyrightable or fall under scenes a faire or some such, you 
can go that route.  But code must be under GPLv2 to be incorporated into 
BusyBox and _any_ other license must be explicitly affirmed by every other 
author who ever touches that file.

So basically, "GPLv2 or later" license notices on BusyBox code are about as 
useful as the old BSD notices on some of the code.  They're historical notices 
that some of the components used to have another license, but that license has 
probably bit-rotted.  If you want to re-use this code under another license, 
you have to do forensic analysis, go through source control to see who changed 
what, and track down the authors to see if they're ok with the license you 
want to use.

Essentially, you're sourcing non-GPLv2 code out of a GPLv2 project.  If you 
wouldn't do it out of the Linux kernel, why would you do it out of BusyBox?

And yes, some of files in the Linux kernel have the "or later" notice:

$ find linux -name "*.c" | \
    xargs grep "or (at your option) any later version"  | wc -l
1149

But the Linux kernel itself emphatically does not.

Rob
-- 
Latency is more important than throughput. It's that simple. - Linus Torvalds


More information about the busybox mailing list