Two views of freedom and software
[Posted January 7, 2003 by corbet]
Feature freezes can be a relatively boring time to read the linux-kernel
mailing list. Discussions of cool new developments tend to get put to the
side in favor of benchmark results and bug fixes. But even people who wish
for more interesting discourse are likely to agree that when Richard
Stallman starts posting on linux-kernel, things have probably taken a wrong
turn. But, stuffed in between some classic Stallmanisms ("
Just as some
people insist the Earth is flat, or that astrology makes valid predictions,
others believe that the whole system is Linux.") is a discussion of
a fundamental disagreement over the nature of freedom and software.
The issue at hand, yet again, is that of binary-only kernel modules. But
the real, underlying issue has to do with where true freedom is to be
found. Would users of a Linux system that disallowed closed-source modules
be more or less free? In general, what effect does proprietary software
have on freedom?
The point of view championed by Mr. Stallman (and many others) is that
proprietary software is always bad for freedom. For example:
Making a program non-free is denying other people the freedom to
study, change and/or redistribute it. It is an act of domination.
To speak of the "freedom" to dominate others is to stretch the
concept of freedom into a Russell paradox.
According to this point of view, the best case scenario is that a
proprietary program weakens the motivation to develop free alternatives,
and is thus bad for freedom.
The other point of view says that true freedom means letting the author of
a program decide how that program is to be licensed, and letting users
choose which programs they wish to use. A binary-only kernel module gives
Linux users access to (say) more hardware and thus increases their
freedom. Proprietary software can help fund innovation and, even, the
creation of more free software. According to this viewpoint, restricting
proprietary software not only has an immediate (negative) effect on
freedom, it can also impact the availability of free software.
This argument highlights a fundamental division in the Linux community.
It can be swept under the rug much of the time - Linux offers much that is
good for everybody involved, and philosophical differences can be
overlooked most of the time. But the division remains, and it can surface
at inconvenient times.
Any vendor of proprietary kernel modules can not help but be nervous about
this issue. Kernel developers are, as a whole, more concerned with making
the kernel better than with making life difficult for proprietary software
vendors (though they are not always entirely concerned about making life
easy for those vendors). But the potential for lawsuits from a developer
holding copyrights on the kernel source exists. This concern led
developer Andre Hedrick to announce his
withdrawal from Linux development (though he later backed down from that position).
It is thus good that one thing that might actually come out of this long
linux-kernel flame war is a clearer statement of what sort of proprietary
kernel modules are permissible. There may even be an early, rough
consensus along these lines:
- Binary-only modules are acceptible as long as they stick to the
exported API. This is, essentially, the informal understanding which
has been in force for years.
- Kernel header files are considered to be a part of the exported API -
something which has never been clearly stated before. Even more to
the point, inline functions in header files (of which the kernel has
many) are also deemed to be part of the exported API.
This statement, if it holds, makes it clear that proprietary kernel modules
are generally acceptible.
So far, there have not been public objections to this position. If the
kernel developers can settle behind this sort of statement, vendors will
have a better idea of where they stand, and uncertainty in general will be
reduced. The difference over opinion on freedom will remain, but it need
not get in the way of people and companies actually trying to do things
with Linux.
(
Log in to post comments)