on disabling drivers that use non-Free firmware

Richard M Stallman rms at gnu.org
Tue Jan 6 00:01:50 UTC 2009

    Hmm...  I don't like the idea of removing Free Software just because, in
    order to be useful, it pretty much requires someone to run non-Free
    Software as well.

Our policy is already to reject such programs, since they
are "trapped" (the former Java trap was an instance).
For instance, one of the requirements for listing a program
in the Free Software Directory is that it work in
an entirely free system.

    Say, I don't oppose Gnash, Samba, Wine, or FreeDOS, although their
    primary use cases are for people who run non-Free Software,

Those are not similar cases.  None of them _requires_ a
non-free program in order to run at all.  And none of them leads
the user to install any particular non-free program.

    be pushing it a bit to defend it by claiming that they might be used in
    100% Free settings.

But that is not the issue here.  The issue is about drivers which,
for certain hardware, will not work at all without the loading of
non-free firmware.

If we include those drivers unmodified in our version of Linux, users
will try them, and when they use the devices that require non-free
firmware, they will ask "how do I make this work".  And someone will
tell them "here's the file you need", meaning the blob, and they will
"fix it" by installing the blob.

We should change these drivers to make report clearly "This device is
not supported" instead of trying to load the blob.

    FTR, I might be negatively influenced by the fact that my daughter's old
    notebook had a maestro3 card, and I actually extracted the non-Free
    firmware from the non-Free kernels she ran before, and installed it in
    /lib/firwmare to enable audio to work with freed-ora Linux-libre builds.

This is exactly the possibility that I am worried about.

    And then, there may be other drivers that we never even looked at, that
    used the userland firwmare-loading interface and external firmware all
    the way from the beginning and so never triggered our blob-searching

Can we find them because they call a certain function to load the
firmware file?

    - all drivers that require firmware use the firmware-loading interface

    - no firwmare is in the Linux tree

    - some of the firmware is in the separate firwmare tree, some isn't even

    - some of the firmware is Free, some isn't, some is unknown, and for
      some, there might even be multiple alternatives

    Given this picture, how do we decide which drivers to disable or
    discourage, if any?

Whenever a driver calls the firmware-loading interface
to load firmware which isn't free,
we should make it get an error instead.

This might be easier than the changes we make now.

More information about the linux-libre mailing list