RE: License question

From: David Schwartz
Date: Tue Jan 20 2004 - 12:21:00 EST



> On Mon, 19 Jan 2004, David Schwartz wrote:

> > > Since their code is C++ I already rewote everything in C, but it
> > > also contains the binary firmwares which I can't rewrite. That's
> > > why I asked you about the license.

> > Then you have another problem. You can't place something
> > under the GPL if
> > you don't have the source code to it.

> This issue was raised on the list a few months ago. Someone's opinion was
> that the firmware is not executed by the same processor that runs Linux,
> thus it's data, not code.

The GPL makes no distinctions about what processor runs things, nor does it
make distinctions between data and code.

> Uploading a firmware is like printing an image
> on the screen.

So what difference is that supposed to make? Quoting the GPL:

The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable.

Notice it doesn't say that source code only exists for executables. It
simply clarifies what it means by "source code" by explaining what it means
with respect to executables. If you release a package under the GPL that
includes, for example, a JPG image, you would have to give the "preferred
from of [that] work for making modification to it" to any user who requested
it (or otherwise comply with the GPL requirements).

> Anyway I can upload the firmware from userspace. On most
> (but not all) cards I only need the firmware at startup, so I also save
> memory. Some cards also have an ASIC which must be loaded. That data is
> not code because it's not executed.

Why does it matter whether it's data or code? The GPL doesn't care whether
a work is data or code, it just requires that you provide to a suitably
qualified requester the "preferred form of the work for making modifications
to it". Even data has a "preferred form". Raw versus processed is analogous
to source versus object.

I think the firmware loader can be a license boundary. Just don't put any
GPL notices in the files that contain the firmware as data. While this isn't
'mere aggregation', the integration is across an API that should be
acceptable as a license boundary.

DS


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/