[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]
Fwd: Linux headed for disaster?
I don't see this as a discussion for linux-india-general. But
this message that just got posted to comp.os.linux.development.system
is bound to generate a flurry of postings.
Touches many topics - GPL, powers held by Linus et al, FreeBSD etc.
Watch the newsgroup for some interesting debate.
-Arun
> From: KendallB@xxxxxxxxxxxxxxx (Kendall Bennett)
Newsgroups: comp.os.linux.development.apps,comp.os.linux.development.system
Subject: Linux headed for disaster?
Message-ID: <MPG.12b470dce8586acd9896b8@xxxxxxxxxxxxxxxx>
Date: Sun, 5 Dec 1999 12:55:10 -0600
Hi All,
There have been discussions in recent months about why Linux does not
support binary portable drivers, such that binary drivers from one Linux
kernel version will work with future Linux kernel versions without
needing to be re-compiled.
Every single problem that has been mentioned as reasons not to implment
Binary Portable modules for the Linux kernel is solvable. In fact there
are *lots* of incredibly sound reasons for why the Linux kernel should be
re-worked to support binary loadable modules that are portable between
kernel versions, *even* for Open Source drivers, some of which are:
1. A later version of a kernel may well have introduced new bugs into a
previously stable driver. Solving this problem currently requires the
user to revert back to an older kernel revision. Doing so may not be
desireable because the new kernel version may have updates and fixes that
are desired. With binary portable modules, the module a previous kernel
that did work could be used in place without problems (ie: it is expected
to work if unless there is an interface change).
2. Binary portability requires more solid and clearly defined interfaces
between the kernel internals and the modules themselves. By requiring
that there be a clear separation or 'firewall' between drivers and the
kernel internals, you can more easily avoid the classic problems of
coupling where changes in some other part of the code affect other code
that should not be affected. Specifically it makes it impossible for a
driver to implement a 'quick hack' solution by accessing the internals of
some other driver or the kenerl directly. However the *only* way to
enforce this is to design device type specific binary API's, and
*require* that the only way a device driver can talk to the kernel is via
these API's.
3. Binary portability means much less regression testing is required for
new kernel versions. If the driver itself does not get re-compiled, it
does not need to be thoroughly re-tested. If the case of the Linux
monolithic kernel approach, every driver is compiled into each new kernel
version. How do you *really* know that a driver is functioning properly
when a final release of 2.2.100 is made, unless *every* single device
that is supported is properly tested with that particular version?
A clear case in point in my book in the hardware compatibility as
reported by Red Hat on their web site. Go to the Red Hat web site and
check out the hardware compatibility list for network adapters. Red Hat
has the concept of 'Tier 1', 'Tier 2' and 'Tier 3' supported hardware.
Their definitions for this are:
---- Cut Here ---
"Tier 1 Supported Hardware
Tier 1 Supported Hardware is hardware that the Linux kernel can detect
and use. It is known to be reliable in-house and in the field.
Users who have purchased the Official Red Hat Linux 6.1/Intel boxed set
can expect a reasonable level of support when installing the software on
these hardware items."
"Tier 2 Supported Hardware
Tier 2 Supported Hardware is hardware that should be detected and usable
with the Linux kernel. However, some users have reported problems with
some versions of this hardware, or
with the hardwares interaction with other hardware.
Official Red Hat Linux 6.1/Intel boxed set owners can expect installation
support for this hardware, but it will be limited to:
. Providing information about which driver to use, install-time
driver options, and how to enter them into either the installation
program or /etc/conf.modules.
. Determining whether Linux is recognizing the hardware."
"Tier 3 (Compatible, but Unsupported Hardware)
Hardware listed as Tier 3 is mostly compatible, should be detected and
work with the Linux kernel on certain setups. The drivers for this
hardware may be experimental, or the hardware
may be problematic to work with.
Owners of the Official Red Hat Linux 6.1/Intel boxed set can expect
information on which included drivers to use with this hardware and
determining if Linux recognizes the hardware.
Drivers for this category are not always available from Red Hat, and no
support for third party drivers will occur."
---- Cut Here ---
Now in their list of supported adapters, they have only '5' families of
network adapters that are listed as Tier one, and some of those families
do not include popular cards (such as the 3Com 3c905B EtherExpress XL PCI
boards). In particular note the lack of *any* NE2000 compatible adapters
in this list.
Now look at the Tier 2 list. This list is rather larger, but surely more
of the adpaters in this list *should* be working better, since they have
been around for some time and hence the drivers *should* have stabilised
by now? I am sure Red Hat would not list hardware as Tier 2 unless "some
users have reported problems with some versions of this hardware, or with
the hardwares interaction with other hardware".
More important is the fact that NE2000 adapters are listed as Tier 2
supported. In actual fact they don't work very well at all. We tried
using a variant of Red Hat linux 6.1 on a system with two NE2000 ISA
network adapters for a firewall. Guess what? It didn't work. We replaced
it with two PCI 3Com 3c905B adapters and it is now working, but it
doesn't make me feel confident when these adapaters are also not listed
as supported by Red Hat. What is worse is I know that the NE2000's have
worked perfectly in the past with the Linux 2.0.x kernel, as we
originally had a variant of Red Hat 5.2 on the same machine running as a
firewall and it worked fine.
Which brings me back to the original point of my email. It would appear
to me that unless Linux implemented a more clearly defined, binary
portable driver mechanism, compatibility problems will continually creep
in over time, plaguing the operating system with incompatibilities.
Unless these problems are solved, and device driver conformance tests
implemented, Linux is headed for disaster further down the track.
Constrast this again with FreeBSD whose development methodology actively
supports binary portable kernel modules. Perhaps now it makes more sense
why FreeBSD is considered more stable than Linux and that so many web
servers run FreeBSD and not Linux. FreeBSD does not support as much
hardware, but for what it does support, it is more stable.
The problem is that the *reasons* why the powers that be (Alan Cox and
Linus Torvalds) do not want to implement binary portable drivers for the
Linux kernel, are *not* based on sound reasoning. Specifically note the
following correspondance between myself, Linus and Alan from about a
month ago:
---- Cut Here ---
Date sent: Thu, 11 Nov 1999 17:00:56 -0800 (PST)
From: Linus Torvalds <torvalds@xxxxxxxxxxxxx>
To: Kendall Bennett <KendallB@xxxxxxxxxxxxxxx>
Copies to: Alan Cox <alan@xxxxxxxxxxxxxxxxxxx>
Subject: Re: Binary loadable drivers in Linux?
On Thu, 11 Nov 1999, Kendall Bennett wrote:
> > My opinion is that you should just continue to do it from user
> > land.
>
> The problem is that the things we need to do *cant* be done from
> user land. This specifically include the need to hook an interrupt
> handler for DMA operations, which are very important for high
> performance 3D graphics on Linux (and obviously for sound
> drivers).
Well, maybe you should be looking at Solaris/x86 then?
I'm not all that interested in trying to help binary-only drivers, when
people like 3dfx are opening up their specs and their libraries to the
open source community. Why would I go to the extra work to help people
who aren't even willing to help me?
Quid pro quo. That's what the license is all about. I =allow= binary only
drivers, but that is very different from =supporting= them.
Linus
---- Cut Here ---
The *reason* binary portable drivers are not implemented in Linux, is
because Linus and Alan are wielding the power of Linux to *force*
hardware vendors to implement Open Source device drivers. IMHO this is
just as bad as Microsoft using their monopoly power to force vendors to
ship Windows on their PC's.
Surely true Open Source advocates would realise that companies will
embrace Open Source for their products *if* it makes sense for them to do
so? Eric S. Raymond has mentioned numerous times in his musing on Open
Source software that Open Source is not suitable for every company and
every software project. So why should vendors be *forced* to release
information about their hardware just because Linus and Alan feel this is
necessary in order to force Open Source on the rest of the world?
The specific example Linus used in his response above was 3dfx. 3dfx is
opening up their information because it makes sense for them to do so,
not because they are being forced to do so. The information is being used
to implement XFree86 drivers, which are *not* GPL'ed, so obviously it
isn't a GPL requirement that is making them open up their specifications.
XFree86 is under the X/MIT license which specifically allows for use in
commercial projects (same license used by FreeBSD). More importantly
XFree86 4.0 is designed around the concept of user land binary portable
modules, specifically to solve the above mentioned compatibility
problems. On top of this, there are commercial X-server vendors for Linux
that 3dfx could have had implement their drivers, and continued to keep
them closed source. They didn't do that because they realised it is
cheaper and makes more sense to have those drivers be Open Source rather
than closed source.
Lots of stuff available for Linux outside of the Linux kernel is not Open
Source. A lot of stuff is. The stuff that is, is Open Source because it
makes sense for it to be Open Source, not because the developers were
forced to make it Open Source. Open Source software will be successful
because of the power that opening the source code provides. The power
that 'With enough eyes, all bugs are shallow' as Linus once said. Has
Linus forgotten the reasons why Linux is where it is today? Instead he
appears content to wield the power of dictator over the Linux kernel
sources to force vendors to do things his way.
Regards,
--
+----------------------------------------------------------------------+
| SciTech Software - Building Truly Plug'n'Play Software! |
+----------------------------------------------------------------------+
| Kendall Bennett | To reply via email, remove nospam from |
| Director of Engineering | the reply to email address. Do NOT send |
| SciTech Software, Inc. | unsolicited commercial email! |
| 505 Wall Street | ftp : ftp.scitechsoft.com |
| Chico, CA 95928, USA | www : http://www.scitechsoft.com |
+----------------------------------------------------------------------+