Re: On the freeness of a BLOB-containing driver
Glenn Maynard wrote:
In the case of a device driver, that dependency would still be there if
the firmware was in ROM. Which would put pretty much all of our device
drivers, X (talks to VESA code), APM and ACPI (talks to BIOS), and so
on, in contrib too.
It's free, but it has a non-optional dependency on non-free software, which
means contrib, not main.
The only logical demarcation I can see is that we have Free Software
down to the bus programming interface. What lives on the other side of
the bus programming interface isn't our problem unless we have to put it
there, just as the fact that proprietary software runs in the other
systems that we talk to on the network does not comprimise the freeness
of our system.
I agree that it would have to be working firmware and it is anticipated
that it will not be Free Software.
In reality, it doesn't talk to an arbitrary
firmware file; it has to talk to a functional one, or the driver is not
going to do anything useful.
Stuff in contrib generally has a package dependency on something in
non-free that is necessary to install it, and the entire package is not
functional if that dependency is not fulfilled. The driver is a
component of the larger kernel which remains functional.
That type of notice is a big hint that something belongs in contrib, IMO; the
real effects are the same as saying "go download and install this non-free
Moving something from contrib to main doesn't violate Debian's
principles. Moving something from non-free to main or contrib without
the necessary license change would. Contrib is there to tell you that
something is DFSG-free but is not functional without a non-DFSG-free
component. Contrib provides a a message to the user and a convenience
for the Debian developers, it is not a purgatory for almost-free software.
One or two people have argued that these drivers still have a use, even when
the firmware is not available: it can be used as a starting point for
implementing a free firmware; and so it should go in main. I think that's
akin to saying, "this program that requires a non-free shared library can be
used as a starting point for reimplementing the library, so it should go in
main". That's bogus; by that logic, everything in contrib would be allowed