[Ilugc] Re: Re: GNU/Linux trouble

  • From: prem@xxxxxxxxxxxxxxxx (Prem Kurian Philip)
  • Date: Fri Apr 6 13:09:50 2007

*WARNING* - Long email

Karanbir Singh wrote:

Talking about clapping with both hands - it is also the Linux OS
developer's responsibility to present a reasonably stable interface tothe
driver developers which will allow the kernel developers to write drivers
which works across point releases of kernels for drivers in *both* binary
and source. That will make the job of writing drivers for Linux much
simpler.

Firstly, I think your email is based on many assumptions - a few that
are not correct at all.

Please state what those assumptions are.

Then here is a question for you : When was the last time you did a
kernel upgrade on Windows ?  afaik, XP had 1 kernel update, and that too
was a patch into filesystem code to fix a security issue.

There have been multiple upgrades to the Windows XP kernel and the
subsystems. Service Pack 1, and Pack 2 were major upgrades, besides these
there have been many, many more.

Please see the following URL for a list.
http://support.microsoft.com/

The reason you didn't notice that these were kernel upgrades proves my
point that the MS update mechanism for kernels works well. If the kernel
upgrade had required you to recompile your drivers every single time, you
would have noticed it by now.


Right now on Linux, every time the kernel changes even if it is a small
point release, the drivers will have to be recompiled.

This is absolutely not true. eg,. I've had a stable driver on my home
server for the 3ware 9550sx working fine for almost 2 years now ( the
machine has gone through, I've just checked, 11 kernels in the mean time
). My laptop has been running ati prop drivers ( yea, i know :> ), since
Nov 2005 and I've only had to rebuild them earlier this year, since I
choose to rebase to a newer version of these drivers.

You can install compile drivers provided with *source* into the kernel if
you have the kernel headers without recompiling the entire kernel. But if
you don't have the source for the driver, you are out of luck.

Even Nvidia (and I think ATI too) ship binary drivers with multiple
precompiled kernel interface layer code - one for each point release of
the kernel. When a new kernel is released and if you don't have a
precompiled header for it, you must compile the kernel interface layer
code provided.

My point: If binary drivers can be supported by requiring companies to
provide their own kernel interface layers, won't it be simpler to just
provide the kernel interface layer as part of the kernel itself?

I am not a kernel developer. So if there are kernel developers here,
please enlighten if I have anything mixed up or if I am wrong.

If a driver is loaded on a computer with a 2.6 linux kernel, it should
work across all 2.6.x releases of the kernel without requiring a
recompile. But that is not the case right now.

well, thats a bit harsh - are you saying that no development work should
happen on a kernel once its released ? Also, you seem to be confused
about what constitutes the 2.x.x release factors.

Did I say that or are you assuming that I did?

What I am saying is that the driver interface should be fixed, not the
kernel. It is possible to write a driver for Windows which will work
across service packs, kernel updates etc. Major changes to the kernel can
be made without changing the driver interface. On occassion when the
driver interface has to be changed, it should be. But it is unlikely that
each point release of the kernel requires such a change. The kernel
developers can try and keep the driver interface as stable as possible so
that even binary drivers can be used across kernel updates.

In my humble opinion, this is the wrong way of doing things. It should be
the hardware vendor's responsibility to write the drivers - they have the

politics and the blame games of 'your responsibility' and 'my
responsibility' are usually shunned in the open source world. Hey, you
think I am going to hang around waiting for someone to write a driver
that I might want right now ? if I have the time, just do it myself and
push it back upstream.

Hardware manufacturers have an interest in selling their products and so
they will try and have drivers available for as many mainstream OSs as
possible. Is that a difficult to understand concept? The reason they can't
do that very effectively on Linux is because they have to provide the
source.

greatest to gain from it. However, these companies may not be willing to
release the full specification of their device because they want to
protect their competitive edge for a while longer.

Thats again assumption and gross mass generalisations.

If I am making an assumption, specify it. The same applies for
generalizations.

Some questions for you:

a) Why don't you get the source drivers for ATI?
b) If that is not available, how is that you have not gotten around to
writing the drivers for your ATI card yet?
c) Oh, you mean ATI hasn't released the specs for it? Why not? (hint: see
my "assumption" above")

Your answers will explain my point.

you seem to be pointing fingers at these 'linux developers' but you seem
to forget there is no single entity that is the linux-developers,
contributions come in many and varied forms.

Linux is not some amorphous entity which comes about (evolves) all by
itself without anyone making the decisions concerning its architecture.
Decisions about something like a fixed driver layer has been discussed
multiple times on the linux kernel developer lists, but for some reason it
has been decided not to stabilize on a driver interface because the linux
developers want the freedom to modify the interface anytime they want.

I can understand that they want this freedom to be able to make changes to
the interface, but they must contend with the fact that they are making
things much more inconvenient to users and to hardware vendors.

And yes, such as thing as a "user" does exist. Not everyone is going to
sit down and write a driver or make changes to the linux kernel. How often
have you done this yourself and this despite the fact that you perhaps
fall in the < 0.01  odd percentage of people out there perhaps with the
skills and the interest?

Also, I dont see why people seem to moan and groan about driver support
in Linux anymore. eg. OSX supports a very small subset of devices that
Linux does - how many times do you see people on OSX complain about such
things ?

This is an oft-quoted answer to a question about the driver interface so I
will address this.

1) It is a myth that Linux has more drivers than any other OS. What is
true is that Linux kernel *SHIPS* with more drivers than that comes with
any other OS. That is to say that the Windows installation CDs won't have
the same number of drivers as Linux.

But the point is that Windows does not *NEED* to ship with all these
drivers because the windows driver architecture allows hardware vendors to
ship binary drivers with their hardware on driver CDs.

2. OSX - OSX like windows also does not *NEED* to ship with all the
drivers. Also, OSX is shipped by Apple on the hardware they produce
themselves so they have greater control of what hardware to support.

Please note that I fully accept that I may be wrong about the benefit of
having a stable driver API. But if I am, I would like to hear the specific
reasons. Linux fanboy statements don't count as specific reasons.

Thanks for you patience,
PK



Other related posts: