Slashdot Mirror


Should Linux Have a Binary Kernel Driver Layer?

zerojoker writes "The discussion is not new but was heated up by a blog entry from Greg Kroah-Hartman: Three OSDL Japan members, namely Fujitsu, NEC and Hitachi are pushing for a stable Kernel driver layer/API, so that driver developers wouldn't need to put their drivers into the main kernel tree. GKH has several points against such an idea." What do you think?

146 of 944 comments (clear)

  1. Oh, I'm all for it. by Anonymous Coward · · Score: 5, Funny

    Linux, with the stability of Windows prior to the advent of certified drivers.

    1. Re:Oh, I'm all for it. by KiloByte · · Score: 3, Insightful

      Driver certification means just that Microsoft received the driver, and agreed to confirm that the driver comes from one of its business partners, and not from a suspicious open-source hacker. You don't even have a guarantee that the driver is free from rootkits.

      The company isn't really interested in fixing any issues with the drivers -- if you have problems with a bug, you have already paid them all the money they are going to get for that particular piece of hardware.

      An example: the !@#$%^&* nVidia proprietary X driver. On some older cards, it will cause kernel oopses, within my usage patterns around once per several hours. Is there anything we can do to fix the problem? I'm not a master kernel hacker, but I do have some rudimentary skills there -- I would have at least some chances to make a fix myself; if I wouldn't succeed, reporting a data-loss bug would make us have it fixed by someone with more knowledge in no time.
      On my current desktop, switching to text mode the first time X is run after a boot puts the console into 80x25 mode without even doing a TIOCSWINSZ. Somehow, if I kill the X server, reset the video mode then start X again, everything is fine, until the next boot/resume. What can I do to fix this annoyance? Begging to nVidia does nyet work.

      --
      The creatures outside looked from Alt-Right to Antifa; but already it was impossible to say which was which.
    2. Re:Oh, I'm all for it. by larkost · · Score: 2, Insightful

      On the driver certification part: it does only certify that the driver came from a Microsoft business partner... but the characterization of why this is a bit off. It is to certify that this is not from an unknown third party. It is done for the same reasons that most linux iso's are distributed with a MD5 hash next to them (which most people ignore anyways): it allows you to be sure of where the code is coming from, and that it is not coming from a nefarious third party.

      I do wish that linux and MacOS X has similar setups, but it is difficult to setup such a system without having a central authority with a great deal of power (to abuse).

    3. Re:Oh, I'm all for it. by LordNimon · · Score: 5, Informative

      It's been a while since I've worked on Windows drivers, but I believe certification also means that the driver has passed Microsoft's very rigorous driver tests. This test suite is much more thorough than anything a Linux driver has been through.

      --
      And the men who hold high places must be the ones who start
      To mold a new reality... closer to the heart
    4. Re:Oh, I'm all for it. by nbert · · Score: 2, Insightful

      It doesn't mean much formally, but if a vendor doesn't bother to certify the driver (it's not that expensive after all) it's a good indication that they might not care about driver improvement as well. Or to put it in different words: Would you believe that a company which can't afford certification would invest more than necessary into driver development? I know that this doesn't apply in many cases, but it's a good rule of thumb.
      I never had significant problems with certified drivers, but I guess that some of you know good examples.

    5. Re:Oh, I'm all for it. by shadowmas · · Score: 4, Interesting

      "....if a vendor doesn't bother to certify the driver (it's not that expensive after all) it's a good indication that they might not care about driver improvement as well...."

      or maybe it improves that its drivers so frequently that it cant keep trying to certify it every single time?

    6. Re:Oh, I'm all for it. by tepples · · Score: 2, Informative

      If Microsoft themselves are certifying the drivers and putting them through 'very rigorous driver tests', why the blue screens? Or is it that un-certified drivers are to blame?

      The latter. Not all peripherals are made by large corporations that have the means to get each driver signed.

    7. Re:Oh, I'm all for it. by SirBruce · · Score: 2, Interesting

      In my experience, most end-users don't run WHQL certified drivers. This is usually because certification takes a long time. In the case of graphics drivers (which is what is commonly the problem), there will be many updates that relate that improve performance or fix a specific game-related bug that are installed by power users long before such fixes make it into an updated driver that's officially certified.

      Bruce

    8. Re:Oh, I'm all for it. by Hal_Porter · · Score: 2, Interesting

      You do realise that most of these problems are more like "with the POS 417 AGP host bridge and a Froon 812 graphics card writes to off screen memory fail 1% of the time when the graphics accelerator is doing a lengthy operation and we see it often now we altered the driver " than "dude I forgot a break; statement"

      With a bit of luck, you can catch the second type of error by running a well thought out test suite. Not always though, I think its an example of the halting problem. The first sort is much harder - there is a lot of variability in PC hardware, even to the point of it being completely broken.

      --
      echo -e 'global _start\n _start:\n mov eax, 2\n int 80h\n jmp _start' > a.asm; nasm a.asm -f elf; ld a.o -o a;
  2. Good idea! by Anonymous Coward · · Score: 5, Funny

    Lets put it in Kernal 2.7.
    Oh wait... OOPS!

    1. Re:Good idea! by Anonymous Coward · · Score: 2, Funny

      OOPS

      subtle...

    2. Re:Good idea! by chphilli · · Score: 4, Funny

      Is that "OOPS, I can't spell kernel?" ;)

      --
      Please ignore any obvious problems in this post.
  3. Excellent suggestion! by scsirob · · Score: 5, Insightful

    Having a kernel API for drivers allows developers to stay away from the mainstream kernel. This will enhance the stability of the kernel in general and also allow hardware vendors to support Linux with less effort.

    --
    To Terminate, or not to Terminate, that's the question - SCSIROB
    1. Re:Excellent suggestion! by IAmTheDave · · Score: 5, Interesting
      Having a kernel API for drivers allows developers to stay away from the mainstream kernel. This will enhance the stability of the kernel in general and also allow hardware vendors to support Linux with less effort.

      I am not a linux contributor, but I would think you'd kinda want to guard access to the kernel kinda closely. I mean, sure, anyone can fork it or grab a copy to putz around with, but contributing back into the kernel - that's gotta be just about as stable as a piece of code can be.

      Despite some loss in efficiency, I've always been an advocate of abstracted access. To many of the pieces of software we write at my job do we add a logical API, so that we don't always have to open the main code branch every time we want to add a feature.

      Driver developers hardly equal kernel developers. Keeping the two logically seperated makes sense - not to mention that driver developers are hardly the only ones that would benefit from this API.

      --
      Excuse my speling.
      Making The Bar Project
    2. Re:Excellent suggestion! by kmmatthews · · Score: 5, Insightful

      No, because we'd (at best!) get the same crap drivers that windows gets. Childish crap spewed out by the lowest bidder, and it destablizes the entire system. Not to mention that no open source coder can _fix_ the damn thing then.

      Look at nvidias drivers on linux! Always well behind other drivers, and filled with bugs because we have to wait for nvidia to get off thier asses and fix the damn thing.

      What happens in 10 years when you're trying to use that binary driver to recover data from an ancient device? If it was an open source driver, you could fix it to work with your system; binary, you're going to have a lot more work to do.

      --
      feh. stuff.
    3. Re:Excellent suggestion! by Anonymous Coward · · Score: 3, Insightful

      Wrong, wrong, wrong wrong wrong.

      Drivers run as kernel-level code.

      Closed source code linked into the kernel gets kernel-level privileges. Alone, that is a scary thing.

      Worse, binary drivers mean support for only the platforms that vendors choose to support. Users of less popular architectures miss out.

    4. Re:Excellent suggestion! by andyross · · Score: 2, Insightful
      Having a kernel API for drivers allows developers to stay away from the mainstream kernel. This will enhance the stability of the kernel
      No, no, no, no. Allowing developers to "stay away from" the kernel is a recipe for weak testing, poor integration and random hackery ("well, I don't know how to do this with the API but I tried this and it seems to work..."). Being isolated, the brain damage will fester without detection.

      That statement is so far off that it occurs to me that perhaps you were being sarcastic. In which case, your moderators should be shot.

    5. Re:Excellent suggestion! by Bloater · · Score: 2, Interesting

      > I am not a linux contributor, but I would think you'd kinda want to guard access to the kernel kinda closely. I mean, sure, anyone can fork it or grab a copy to putz around with, but contributing back into the kernel - that's gotta be just about as stable as a piece of code can be.

      A stable binary driver API that doesn't mean putting the driver into the kernel is already there. It is called the syscall interface. If you have a stable module ABI as proposed (over and over again, about once a month for the past 10 years) the drivers actually *do* go into the kernel - and closed source drivers so if they are broken, they won't ever get fixed.

      This is all a very, very bad idea for Linux stability. Crash and burn, baby, crash and BURN!

    6. Re:Excellent suggestion! by robertjw · · Score: 3, Insightful

      but there are a whole mess of hardware vendors out there that just won't release open source versions of their drivers.

      Sure they will, when they have to so they can remain competitive. Until that time we should support vendors that do provide open source versions of their drivers.

      Yeah, I can see concerns about stability, but at least there would BE drivers for half the hardware out there.

      Do your really believe that the answer is to trade stability for convenience? As the parent said, we would be right back to where Windows is. As more and more of these type of issues come up I think the Linux kernel developers need to stand resolutely on their principals and provide a quality product even at the sacrifice of some usability. It makes no sense at all to trade long term quality of the kernel for a short term solution to the current driver problem. As for the question of who can be 'in the kernel source', anyone can. Anything that gets included in the official stable branch of the kernel will be reviewed by many memebers of the kernel development team. So far I have had excellent success with the official Linux kernels and don't see any reason this will change if they stick with their current methodologies.

    7. Re:Excellent suggestion! by IAmTheDave · · Score: 4, Insightful
      Do your really believe that the answer is to trade stability for convenience? As the parent said, we would be right back to where Windows is. As more and more of these type of issues come up I think the Linux kernel developers need to stand resolutely on their principals and provide a quality product even at the sacrifice of some usability.

      Just to play the devil's advocate - yes. That is, if you want the average Joe Blow to start even thinking about Linux instead of Windows.

      Windows is ubiquitous. OSX has mind share at least in part because almost every peripheral you purchase and plug in just sorta works. Linux has hundreds of thousands of forum posts dedicated to getting standard pieces of hardware - like mainstream video cards - working in the OS.

      So in theory, yeah - I'm for allowing closed source drivers to be developed for linux, because without hardware support, you'll have very little non-tech usership of linux.

      Just my opinion, of course...

      --
      Excuse my speling.
      Making The Bar Project
    8. Re:Excellent suggestion! by robertjw · · Score: 5, Informative

      Just to play the devil's advocate - yes. That is, if you want the average Joe Blow to start even thinking about Linux instead of Windows.

      Your statement has been the subject of several discussions here lately. If you are asking if "I" want the average Joe Blow to start using Linux, the answer is "I don't care". I belive the Linux is an excellent operating system that is stable, robust and powerful. I think average Joe Blow should use it for those reasons. Do I care if he does use it? As long as he doesn't call me to clean up his spyware and viruses, or at least doesn't get pissed when I charge him to clean it up, I'm fine with Mr. Blow using any OS he wants.

      Thing is, if the Linux development community starts making compromises that jeopordize the security and stablility of the OS just to intice ol' Joe to use Linux we haven't gained anything. All of the reasons to use Linux go away and we haven't progressed. Linux has gained market share due to it's quality, stability and performance. Linux will continue to improve and continue gain market share because of these reasons. Eventually a free market should change to embrace a better product. There is no reason to compromise just for short term acceptance gains.

    9. Re:Excellent suggestion! by laughingcoyote · · Score: 2

      Your way -might- make desktop adoption a little faster. However, if it worked, it would guarantee that such desktop adoption would do nothing to advance open-source. One reason the kernel -is- so stable is its open nature. If it's allowed now for the kernel to be tied to closed, binary crap, then no matter how much adoption occurs, it'll always be tied to that. On the other hand, if Linux adoption increases, and the principle remains held firm, any vendor who refuses to open-source will be shut out of an ever-growing market segment.

      Personally, I'd much rather wait a bit. I've never had trouble finding something to get even newer stuff working. Of course, I do try to purchase from companies who have opened the drivers for the hardware I'm purchasing, and I make sure to let them know that's why I bought their stuff. I've received some very positive responses so far to that.

      --
      To fight the war on terror, stop being afraid.
    10. Re:Excellent suggestion! by MobyDisk · · Score: 4, Insightful

      Having a stable API for writing drivers is a completely separate issue from having binary-only drivers. The article summary makes them seem like one thing. Having a stable API would seriously improve the quality of the drivers because developers would not have to constantly modify drivers just to keep them working properly.

      Many drivers suffer quality issues or are just abandoned because drivers must be changed to work with each new kernel. That is time that could be spent stabilizing them, improving them, or writing new drivers. It is probably the single biggest hurdle to getting a broad range of driver support for Linux.

      For some drivers we already do have an API. For example, sound cards can use ALSA instead of coding directly to the kernel. Driver quality and quantity improved significantly because of ALSA. The same thing goes with SANE. The only problem there is that SCSI and USB support has been lagging.

    11. Re:Excellent suggestion! by NickFortune · · Score: 3, Insightful
      Are we so zealous that we want to keep these pieces of hardware from working with Linux?

      With respect, I think there's more than one question to be considered there:

      1. Are we so zealous that we want to exclude binary only drivers from the kernel tree?
      2. Is it reasonable to assume that manufacturers will continue to boycott the kernel unless we gant them access on their terms?
      3. Is it reasonable to assume that in-kernel binary drivers will be superior to current solutions in the majority of cases?
      4. If so, which do we value most, kernel integrity or manufacturer buy-in?

      As I see it:

      1. There are advantages to keeping the core kernel open. If we allow closed drivers we risk a tragedy-of -the-commons situation, where each binary submission has an incentive to exploit the architecutre to the maximum and little to respect the priorities of others. Furthermore, with binary modules, it will be difficult to identify the culprits in cases of abuse. Personally, keeping the kernel open would seem more a matter of practicality than zealotry.
      2. I believe the kernel developers can safely stick to their guns and insist on access, either on their terms or not at all. After all, the commercial world has come in supplication here. This means that they see value in having access, and that value will only increase with linux deployment. Linux got to it's current level of developement with hardware support that was limited to non-existent in the majority of cases. I expect we can continue to grow without granting concessions.
      3. It's by no means clear that allowing binary only driver will improve matters. As many others on this list point out, poor drivers are the source of much of the Windows system's legendary instability. And while I feel that Bill, Steve and Company invoke this excuse perhaps a little more often than circumstances strictly warrant, I also think we'd be fools to court the same problems.
      4. Kernel integrity for those reasons stated above.

      And after all, this is a deal that will be easier to revisit in the future than it will be to revoke once granted. The pressure to allow binary submissions will continue for as long as Linux as a noticable commercial deploymen. The kernel devs can afford to wait and see here. I expect that's just what they'll do.

      --
      Don't let THEM immanentize the Eschaton!
    12. Re:Excellent suggestion! by Dwonis · · Score: 5, Insightful
      It's not that I want to repeat anything, but there are a whole mess of hardware vendors out there that just won't release open source versions of their drivers.

      No, no, no, no NO. We don't want hardware vendors to write drivers. Besides, most hardware vendors don't want to maintain drivers for Windows, MacOS, FreeBSD, NetBSD, OpenBSD, BeOS, HURD, Xen, Linux, Solaris, and each of the incompatible versions of each of them, as well as any new platforms that arise. Even if they do, whether or not they can write good quality, full-featured, secure drivers for all of these platforms is an open question.

      All a vendor needs to do is to make good, solid interface documentation, and make it available without NDAs and other childish restrictions, and the drivers will not only be written, but they'll probably be shipped with the operating systems, and for the most part, just work.

      Companies that specialize in PC hardware should stick to the hardware, and let the software specialists write the software.

    13. Re:Excellent suggestion! by Ender+Ryan · · Score: 2, Informative
      That is simply false. The NVIDIA drivers are the *only* decent 3D drivers available for Linux at the moment. No other drivers even come close in terms of features, performance and stability with 3D applications.

      Sure, it takes NVIDIA some time to catch up to the latest kernel changes, but they do a damn decent job considering the kernel is a moving target. If that were not the case, their drivers, which are already the best available, would be even better.

      Many hardware manufacturers are not in a position to open up their drivers. It's unfortunate, but that's the reality of the market.

      And also, there's no reason we have to accept shoddy drivers if we allow binary-only drivers. Microsoft put an end to that big mess on Windows, and there's no reason we couldn't use similar policies to ensure stability, and we could be even more strict about it. If we had a concerted effort, we could easily pressure hardware companies to fix bugs in their drivers. And for really important drivers, I'm sure there's plenty of folks who'd be willing to sign NDAs in order to get access to the drivers for improving them.

      Of course, it's not my call. If the key devs don't want it, it won't happen. Depending on their goals, though, they may be shooting themselves in the foot.

      --
      Sticking feathers up your butt does not make you a chicken - Tyler Durden
    14. Re:Excellent suggestion! by IamTheRealMike · · Score: 4, Insightful
      Look at nvidias drivers on linux! Always well behind other drivers, and filled with bugs because we have to wait for nvidia to get off thier asses and fix the damn thing.

      Uh, yes. Because everybody knows that being open source is a magical recipe for never having any bugs.

      Writing video drivers is hard dude, and nVidia employ several experienced people who do it full time. I've seen them discuss technical issues in public before and have no doubt in my mind that they are experts.

      Given how many open source drivers are buggy as hell (i810 audio, hello) there must be another explanation. Here's one try.

      I hypothesise that what determines the quality of a driver is the number and quality of developers working on them. Closed source drivers sometimes suffer because the quality and/or quantity of developers writing those drivers isn't good enough. Being open source means that theoretically the quantity and quality of developers is unbounded. However, note that this is theory - being open doesn't actually imply that you will suddenly get legions of experts in video hardware writing your drivers for you. It merely makes it possible.

      To be honest, I have serious doubts that we'd have such good drivers if nVidia GPLd them tomorrow and simultaneously fired all of their Linux developers. Being closed doesn't mean you can't have good people working on it, and being open doesn't mean you will. It simply alters the bounds of the possible.

    15. Re:Excellent suggestion! by timeOday · · Score: 3, Insightful
      I think the stability, performance, and security arguments fall the other way - in support of a binary interface.

      Currently it is almost impossible for hardware vendors can provide a binary driver. It must be adapted to every distro and kernel rev. For the most part they don't bother.

      Instead, we get reverse-"engineered" (i.e. hacked-together) drivers made by people doing their best to get devices working with no real understanding of how the device works. And you think that promotes stability, performance, and security?

      Ideally, we'd have quality open-source drivers for everything. Since that hasn't happened, now what?

    16. Re:Excellent suggestion! by AKAImBatman · · Score: 4, Insightful

      All a vendor needs to do is to make good, solid interface documentation, and make it available without NDAs and other childish restrictions, and the drivers will not only be written, but they'll probably be shipped with the operating systems, and for the most part, just work.

      You're ignoring a LOT of the praticalities of the matter. Many driver manufactuers can't provide OSS drivers or the necessary info because:

      1) It's against the law to provide methods for tampering with the equipment. (e.g. Wifi cards.)

      2) Much of the code and/or hardware design is licensed from other parties, and they can't get permission to open it.

      3) The ever important Time to Market consideration would be quashed if manufacturers had to wait for the driver to enter the tree then get distributed to the major Linux distros before releasing their hardware.

      Besides, most hardware vendors don't want to maintain drivers for Windows, MacOS, FreeBSD, NetBSD, OpenBSD, BeOS, HURD, Xen, Linux, Solaris, and each of the incompatible versions of each of them, as well as any new platforms that arise.

      That's why hardware manufacturers would like to see specifications like UDI and NDIS followed. Unfortunately, those wonderful software people who are apparently so much better at this stuff have decided that they don't need anything as passe as a cross-platform driver API. Mr. Stallman is leading the charge on this one. Personally, I think he's stuck on stupid, but that's just me.

      Here's my personal feelings on this. In the short term driver code has value to manufacturers for whatever IP it may contain. In the long term, driver code has precisely zero value to the OSS community. All they do is allow for more old cruft to hang around. I also think that supporting a cross-platform driver would make everyone's lives easier as Windows, Linux, FreeBSD, and whoever else can simply use the same drivers. Such a world would be a hardware Utopia in comparison to the driver issues we have today.

    17. Re:Excellent suggestion! by bataras · · Score: 2, Interesting

      Hardware vendors MUST write (or supply) drivers at least for Windows. That's the reality. Sure they could release specs and hope someone in the open source windows kernel driver world codes it up. But that ain't going to happen.

      Having actually done windows driver co-development in partnership with a Japanese hardware vendor before, I can tell you they do consider interfaces and protocols into their hardware proprietry. Remember some "hardware" products are actually computers in and of themselves with mini OSs and complicated protocols for communication with the host PC. This isn't your father's PIO serial port stuff. Even as a true blue co-developing partner the best we could get were software APIs to a binary library that we had to link into our drivers.

    18. Re:Excellent suggestion! by TechnologyX · · Score: 2, Insightful

      No open source code can even create the damn thing to begin with. Everyone totes the holierthanthou "I can LOOK at my CODE" but, how many of you even know what the fuck the code is doing anyway, let alone understand enought to actually correct a problem?

      0

      Problem comes up in Linux, go to google, search 5 million forums, eventually find some obscure fix from a real programmer, rinse, repeat.

      --
      Slashdot sucks
    19. Re:Excellent suggestion! by AKAImBatman · · Score: 2, Insightful

      This is a myth perpetuated by PC hardware manufacturers somehow thinking they're special.

      No, try again. The whole driver issue is one of the wiser things that Microsoft ever did. Back in the day hardware manufacturers made hardware, and software providers were expected to purchase the specs and implement their own drivers. Microsoft (despite being a fairly large company) realized that there was no way they could keep ahead of the driver game, so they used their clout in the PC industry to force (yes, force) hardware manufacturers to write drivers for their Windows Operating System.

      Microsoft wasn't stupid. They realized that there are serious advantages to distributing the development among companies other than themselves. Sadly, the Linux developers haven't wrapped their heads around this concept yet.

    20. Re:Excellent suggestion! by AKAImBatman · · Score: 2, Insightful

      Go look at any components distributor, and you'll find ample documentation for all sorts of hardware, especially for commodity stuff.

      BTW, those are simply components. Consumer hardware is a complex collection of all those parts, usually containing its own set of interfaces and design features. Not to mention all the hardware that uses custom ASIC chips (pretty much everything), FPGAs (common alternative to an ASIC), and complex software drivers (e.g. Video cards, Wifi, Modems, etc.) that contain all the logic necessary to actually use the hardware for the intended purpose.

      Basically, what you're saying is "here's a video card that uses brand XYZ Digital YUV to Analog DVI coverter chip, go write a driver for it." Everyone else just sort of looks at you with their mouths hanging open as thoughts of frame buffers, multi-pipelined 3D texturing units, video overlays, Video ROM code, and other complex features float through their heads.

    21. Re:Excellent suggestion! by poofyhairguy82 · · Score: 2
      Many driver manufactuers can't provide OSS drivers or the necessary info

      Then we in the Linux community just won't buy their stuff, or find ways to force it to work when we do (ndiswrapper or reverse engineering).

    22. Re:Excellent suggestion! by Rutulian · · Score: 2, Interesting

      Instead, we get reverse-"engineered" (i.e. hacked-together) drivers made by people doing their best to get devices working with no real understanding of how the device works.

      As opposed to hardware engineers writing code for a kernel they know nothing about? I would much rather a kernel hacker writing a driver off of a spec sheet over an engineer copying a device driver template and sticking in the appropriate bits. In the absence of a good spec sheet, I'll take reverse-engineered drivers any day. They may not support all of the features, but they are usually better quality than a lot of closed source binary drivers. Just look through the Alsa project. The Soundblaster Live driver is a good example. Creative released one of their own (open source even, I believe), but it blew compared to the one written by the Alsa hackers.

      The solution for vendors not wanting to support multiple kernels is to open source their drivers. Once it is in the kernel, the maintenance is taken care of by somebody else. There really is no reason to not open source a driver. The PHB's are just stuck in a rut..."It has to be closed source because...intellecutal property...trade secrets...err, it's mine ."

    23. Re:Excellent suggestion! by AKAImBatman · · Score: 2, Insightful

      Then we in the Linux community just won't buy their stuff

      Good luck on those video games, then.

      or find ways to force it to work when we do (ndiswrapper or reverse engineering).

      I really should be snickering like an idiot at this. Really. Read the first four letters of the driver name you just gave. Now think long and hard about how much trouble could have been saved if Linux had just supported binary NDIS drivers in the first place.

    24. Re:Excellent suggestion! by Rutulian · · Score: 2

      There is support in the kernel for every major class of hardware out there. Ethernet drivers, wireless drivers, sound drivers, usb drivers, scsi drivers, sata drivers, you name it, it is there. The notable exception is hardware accelerated 3D graphics, which Nvidia gets away with because they have no competition (ATI support is much worse in linux). Hopefully something happens with the OpenGraphics Project sometime to help fix this. Will it be a top of the line card...no. But then why does it matter. Linux isn't used for serious gaming.

      There is an absence of drivers for individual devices within a hardware class. Who cares? Buy supported hardware. It's not like it is few and far between. For any collection of ethernet cards, 1 in 50 might not be supported in linux. It really isn't that hard to grab the supported card off the shelf at Best Buy. I've been buying hardware for linux for years, including motherboards with funky chipsets, latest and greatest add-on cards, usb devices, wireless devices. I've never had trouble getting that hardware to work.

      You say more hardware would work with linux if there was a stable binary interface. I don't agree because:
          1) A lot of hardware vendors don't care about linux period. It is much easier to convince them to release specs so that we can do the work than it is to convince them to spend money to support a negligble market. If they are going to be difficult about the specs, chances are they are going to be difficult about a binary driver as well.
          2) If they do agree to make a binary driver, they aren't going to put a lot of effort into it. It will probably be buggy. It might break subsystems in the kernel. It won't support every configuration/architecture. Just look at the ATI/NVidia situation. Sure, they threw a bone to their linux *customers*, but they dug it out of the dumpster and didn't wash it off.
          3) Many distibutions will not be able to ship the drivers out of the box due to licensing issues. You will have to manually download the drivers and edit your configuration files by hand. NVidia has been fairly good about this, but wireless vendors that require firmware to be loaded have not.

      So, I'll wait for the open source drivers. If a vendor doesn't deliver, I'll pick someone else.

  4. No Thanks! by Shads · · Score: 5, Interesting

    No thanks, this is just a great way to promote closed source inside the linux kernel and to make debugging problems totally impossible.

    --
    Shadus
    1. Re:No Thanks! by isometrick · · Score: 2, Insightful

      I would say yes to a formal driver API, but I also think source for the drivers should still be released. The two concepts (formal API, open source) aren't mutually exclusive, but I guess being able to use closed source drivers is, in reality, why these companies are pushing for a formal API.

    2. Re:No Thanks! by Speare · · Score: 5, Funny

      Come on, can't we see through this Cathedral-driven charade? There's no rational thought behind Intelligent Drivers. It's all just a dogmatic rehash of the same old Closed Source thinking forced upon our Open Source kernel laboratories! I say, send these Intelligent Drivers ideologues back to Kansas where they came from!

      --
      [ .sig file not found ]
    3. Re:No Thanks! by b1t+r0t · · Score: 3, Funny
      Come on, can't we see through this Cathedral-driven charade? There's no rational thought behind Intelligent Drivers. It's all just a dogmatic rehash of the same old Closed Source thinking forced upon our Open Source kernel laboratories! I say, send these Intelligent Drivers ideologues back to Kansas where they came from!

      What, you want to support Flying Spaghetti Code Drivers or something?

      --

      --
      "Open source is good." - Steve Jobs
      "Open source is evil." - Microsoft
    4. Re:No Thanks! by pe1rxq · · Score: 3, Insightful

      The idea is not just a formal API, but a formal API that doesn't change for a long (VERY VERY long if it is to be usefull at all) time.
      The problem is that you will be stuck with the mistakes for the same time.
      You can't improve the kernel anymore because you have to keep supporting those mistakes.
      You would have to add huge glue layers to your kernels to keep emulating thos mistakes.
      It is a bad idea. It has only advantages to those driver writers who want to stay far away from the kernel and want to keep using their crap for a long time. The kernel and the kernel writers are not going to get better from it (they only get extra work supporting lazy driver writers) why should they support it?

      Linux development works very easy: do it yourself or convince someone else to do it.
      You can convince other people either by motivating them with proper reasoning (and /. is not the place to do it) or by throwing money at them.
      Nobody has been throwing enough money yet to get the kernel developpers to do it. (And very likely nobody ever will throw enough)

      Jeroen

      --
      Secure messaging: http://quickmsg.vreeken.net/
    5. Re:No Thanks! by IamTheRealMike · · Score: 5, Insightful
      Three points.

      • For many companies, there are no benefits to going open source, and only downsides. The pragmatist recognises this economic reality, the zealot (and Greg KG is a notorious one) doesn't want to hear it. For instance, let's say nVidia GPLd their driver and got it accepted into the main tree. This gives them a competitive disadvantage because ATI or other companies can now look at how their drivers work with much less effort. It doesn't save them any work, because the community would still expect them to maintain the drivers and add functionality to them (and indeed, for cards that are new to the market or in development, they'd be the only ones who could). And there's no guarantee the drivers would be accepted anyway - simply using the wrong coding style is enough to cause problems in the kernel project, let alone doing the sort of things the nVidia drivers do (for instance they used to use a custom TLS scheme).

        Because of this, I'm 100% not convinced making binary driver developers lives harder changes anything. Are large businesses (the type who make hardware that's difficult to reverse engineer) likely to say, hey, gosh, you know this Greg KH guy kind of doesn't like closed drivers, maybe we should open them up to please him? Nope. They'll just work around the difficulties or not provide drivers at all.

      • It's not "impossible" to debug binary software. Please. This is a crappy excuse kernel developers regularly pull out of their asses to confuse people who haven't done much software development. What they actually mean is, "I don't really want to" (and if unloading the driver makes the crash disappear, that's a pretty good way to shift the problem onto the driver manufacturers anyway).

        I've been a Wine developer for years and have spent many hours doing this impossible thing of which you speak, and your average copy of MS Word or Steam is a LOT larger than your average driver. Yes, it's hard. No, it's not impossible. I've heard various excuses as to why kernel development is just different!! to userland software development, and don't buy it. Yes, having to reboot when a crash occurs is a royal pain in the ass, but so is not being able to get a backtrace because the game you're investigating treats any attempt at attaching a debugger as an attempt to hax0r its copy protection. Different space, different challenges. It's still possible.

      • A stable binary module interface would help open source developers too (even if it only existed for a single 2.X series at a time), as new software which relies upon kernel modules or drivers would become much easier to distribute and install for non-technical end users. Take for instance ZeroInstall. The main developer, Thomas Leonard, since abandoned the original (imho quite elegant) approach of using a networked VFS because it required users to install a kernel driver, a task which proved hard to impossible for many non-developers. So the whole thing was rewritten to do things a different way and avoid the kernel, despite that coming with some disadvantages. We've also looked at using a kernel module to fix various speed issues for Wine in the past, but the difficulty of getting even minor patches accepted into the kernel let alone major new subsystems nixed that. If there had been a stable module interface we could have skipped all that and gone straight to improving things for end users without having to worry about what kind of indenting or list structure we should be using.
    6. Re:No Thanks! by Chirs · · Score: 2, Insightful


      Some rebuttals:

      1) A lot of the work involved in maintaining a driver is keeping up with in-kernel API changes. If the driver is in the tree, the kernel developers will handle these sorts of sweeping changes, and the hardware vendor doesn't need to worry about them. Also, the kernel developers are pretty easy-going about driver coding style, as it tends to be isolated.

      2) If you can't see the code for the module, you don't know what the module did. If you load the module, and it tramples some memory, and you unload the module, that memory is still corrupt. This is why loading a module taints the kernel, even after the module is unloaded. It's impossible for the kernel community at large to debug kernels which have had closed-source modules loaded.

      3) Getting the end-user to build and install a kernel module is not hard. Vmware manages to make it an automated part of the installation script. The advantage of shipping source to end-users is that those who are knowledgable will be able to make your module work on other kernel versions, while a binary version is by definition limited in terms of compatibility.

  5. Bad by Anonymous Coward · · Score: 3, Insightful

    Microsoft could license code into the drivers or otherwise maneuver the driver makers to license their IP from MS, the drivers could form a layer between Linux and the hardware, Microsoft could then pull the run from under Linux.

    Don't go there, it protects Linux from getting tripped up, and devalues any hardware that doesn't support Linux.

    Don't underestimate the important of driver support for Linux, you practically can't make any server component without a good solid Linux driver.

  6. Amen! by dusanv · · Score: 4, Insightful

    I have been waiting for that for a long time. The lack of a stable interface is hampering adoption of Linux. Not all of the manufacturers are willing to open source drivers or for that matter to continuously change them as the APIs change. This is very welcome but unfortunately, I think they'll fail. There is just too much politics surrounding Linux these days.

    1. Re:Amen! by Krach42 · · Score: 5, Informative

      This is very welcome but unfortunately, I think they'll fail. There is just too much politics surrounding Linux these days.

      It is not welcome. Linux is about Open Source, and allowing people to link-in binary closed drivers goes against this.

      Too much politics surrounding Linux? Where have you been? It has been the policy of the Linux kernel for a long time that it would never stablize a binary driver interface, in order to prevent people from not making their drivers open source.

      The idea behind Linux is that an Operating System should be Open, and Free (as in speech), and that nothing should hinder this. Binary drivers are exactly this sort of hinderance.

      You may be upset that you don't have drivers for product XY because that company doesn't want to play along, but if you're trying to change the way the world does software, you can't go "ok, just because we *really* want your drivers, we're going to bend the rules for you."

      --

      I am unamerican, and proud of it!
    2. Re:Amen! by Krach42 · · Score: 2, Informative

      *Open* Software, not *Free* Software in this instance, and it's an ideological argument.

      What gives you the right to impose that restriction on me ?

      Um... I write the code? If you don't like it, then you can go use something with better driver support, like Windows.

      If binary drivers were supported and it were up to companies to choose to support them or not, then they wouldn't

      Again, this is all an ideological argument. If you don't like the ideological position that Linux is forwarding, then you're free to use only operating systems that do support binary drivers. What right do you have to tell me what I must do with my code to make you feel better?

      --

      I am unamerican, and proud of it!
  7. Why post this link without the followup? by rRaminrodt · · Score: 5, Informative

    http://www.kroah.com/log/2005/11/07/#osdl_gkai2

    Some misunderstandings were made. But of course, if they posted this link, there'd be no point to posting TFA or the arguments that will almost certainly follow. :-)

    --
    They'll think I've lost control again and leave it all to evolution. -- Supreme Being, Time Bandits
  8. Solves the reason why I gave up Linux by s20451 · · Score: 5, Interesting

    I gave up Linux mostly because I was tired of getting punished for having new hardware, which is often unsupported. Especially on laptops.

    If you don't force the manufacturers to include their driver source in the kernel, you might get them to release actual drivers for their new hardware.

    --
    Toronto-area transit rider? Rate your ride.
    1. Re:Solves the reason why I gave up Linux by s20451 · · Score: 2, Insightful

      This is the point though. I never said I couldn't get it to work, I said I was tired of getting punished for it. I don't enjoy wasting a lot of time futzing with kernel patches and hoping for the best, which seemed to happen every time I did a major upgrade. In short, the onus should not be on me to make it work -- the onus should be on the OS to work without my intervention.

      Also, for the record, Linux doesn't suck. But I found I could get my command line fix with XP and Cygwin, without the hardware annoyances.

      --
      Toronto-area transit rider? Rate your ride.
    2. Re:Solves the reason why I gave up Linux by Holophax · · Score: 4, Insightful

      The typical comment of a Slashdot user. We should all buy new hardware and spend hours on top of hours getting things to work, rather than just "having" things work. Call this a troll if you want, but this is the exact reason that the masses AREN'T running Linux.

      You people need to figure out exactly what you want, Linux for the masses (read: grandma, mom, etc) or an O/S where you have to spend valuable time just getting it to work with regular hardware. You bashed the poster for buying "random hardware" and expecting it to work even though you don't know what the hardware in question was, yet in your own message you bought 3 "bleeding edge" Gateway laptops (a fairly well known manufacturer) and you had to (in your words) "_try_ to make it work."

      I was going to post this anonymously, but it would of course be modded a troll at that point. Let my karma burn for all I care.

    3. Re:Solves the reason why I gave up Linux by dastrike · · Score: 2, Interesting

      The problem is that one shouldn't have to even try to make it work. A desktop operating system in the form of a desktop oriented Linux distribution should be as painless as possible to set up. Preferably there should not be even the need to have a C compiler present. Shove in the installation CD/DVD and boot it up and the installer should take care of everything hardwareconfiguraitonwise.

      With Linux and new hardware this is currently just a distant dream as the drivers simply aren't there when the hardware is new. But after a while after the drivers finally get into the kernel and distributions, the ride gets a whole lot smoother. The problem is that it can take a considerable time for this to happen. First a while for the drivers to appear in the standard kernel, and then a while for that kernel to appear in the various distribution installers.

      A binary kernel driver layer could in some regard alleviate these issues, but only if the hardware manufacturers would actually start releasing Linux drivers themselves, and at the same time as the Windows drivers. And then there are the freedom concerns mentioned here already with such a binary layer.

      Assuming binary drivers targetted for a binary kernel layer would be available from hardware manufacturers as soon as they release new hardware, one could just put them on a USB storage device or something like that and the Linux installer could just ask during the installation if one would like to load 3rd party drivers from just such a device.

      I myself don't have huge problems with having to perform all kinds of dark magic to get things working, but the average user won't cope with most of this. Linux is not just a hacker's plaything anymore. But for it to start gaining ground the installation and hardware configuration must be improved - e.g. it isn't amusing to have the installer not detect any harddrives when there are no drivers for the harddrive controller on the installation disk.

      --
      while true; do eject; eject -t; done
    4. Re:Solves the reason why I gave up Linux by shywolf9982 · · Score: 2, Insightful

      It's funny how the masses always complain about windows being instable and crashing. I have news for you, windows does not (not XP, anyway). All the crashes I've seen in the past years were cause of crappy drivers (mainly nVidia and Ati). That's because Microsoft developers are stupid and can't develop a decent driver API? (because we all know that the average IQ in microsoft is something around 15, and that the legend of the 1000 typing monkeys... ok, but I ain't bein funny)

      I'm perfectly aware of the reasons mentioned in the previous posts. But the decision isn't trivial. There is a compromise/tradeoff to make, and it ain't so simple. Is it worth to attract the masses? I doubt. the real deal for the masses is Apple... masses, in the IT world, don't need to be "free to do things". Because that translates in "free to damage things". So the real deal is a vendor that offers you everything from its own factory, all shipped up in a cool package, with just 4 models to choose from (ok, maybe even 20, doesn't make much difference). You run your thing, you don't need to know nothing, and IT'S FUCKING BETTER YOU DON'T. Everything works, as long as your needs conforms to the standard needs. I'm sure that 99% of the people would be damned happy with this. And to them I say, go Apple.

      For me, this is just a cool version of the Soviet Republic. But I'm a mad anarchist, so just leave me alone with my crappy Linux, that needs days to be configured with mainstream hardware, but that does not "limit" me in any way

      (Many would say mine is just a bunch of politic arg... idiocies. True. Because Linux and Open Source is a political matter. Being opensource does not give a project any mere technical advantage over a closed source one. It has its upsides in how the software interacts with the community of users/developers, and hence is a social/politic matter)

      --
      nbody2002:If you can read this you may be addicted to the internet
  9. No by kmmatthews · · Score: 4, Insightful

    It's a bad idea because what happens when the driver ABI changes? You have to wait umpteen months for the company to get off thier asses and fix it - like nVidia.

    It also precludes anyone else from fixing bugs in the broken, half assed crap most corporates spit out these days.

    --
    feh. stuff.
    1. Re:No by mad.frog · · Score: 2, Interesting

      It's a bad idea because what happens when the driver ABI changes?

      Then you go and fire the developer(s) who called it a "stable" ABI.

      By definition, a "stable" ABI should change very rarely, and provide backwards compatibility.

      Without this, it ain't stable.

    2. Re:No by j1m+5n0w · · Score: 2, Insightful
      It's a bad idea because what happens when the driver ABI changes? You have to wait umpteen months for the company to get off thier asses and fix it - like nVidia.

      It seems unlikely at this point that Nvidia will ever open-source their video card drivers. (They might not even be able to legally - it's not uncommon for commercial software to contain code from third parties.) Assuming that this is the case, a stable ABI would make Nvidia's task much easier and would probably result in higher quality Linux drivers.

      It also precludes anyone else from fixing bugs in the broken, half assed crap most corporates spit out these days.

      Nvidia is no exception to this. Several recent Nvidia driver releases have not worked at all on my GeForce4. When that happens, it is nice to have the option of switching to an earlier driver release. Unfortunately, the way things are now, that may mean installing an earlier kernel as well. About a year ago, "installing" a somewhat older Nvidia driver entailed downloading kernel source so the installer would have something to compile its Linux-to-binary-Nvidia-module interface layer against, then applying a patch to Nvidia's source code to fix some bug, then fixing the Linux kernel source to add an EXPORT_SYMBOL statement that someone had taken out (breaking source compatibility during the middle of a stable kernel series). After recompiling everything, it worked, but it took me several days to figure it out. Most users would have given up.

      This is the sort of thing that drives users away from Linux. I would like to live in a world where all the best hardware was fully supported by open source drivers, but it isn't going to happen any time soon. The current model, in which closed source drivers are tolerated but deliberately rendered difficult to support and maintain, doesn't work very well. It would probably be better in the long run to either disallow binary-only modules (and give up on accellerated opengl on most graphics cards, among other things) or to accept them and at least make a basic effort not to break things.

  10. Re:Only one word by Krach42 · · Score: 4, Informative

    Not just Heresy, but Linus has said directly that he doesn't want a stable binary kernel driver API percisely so that people *can't* write binary drivers for Linux.

    --

    I am unamerican, and proud of it!
  11. of course it should by gonar · · Score: 4, Insightful

    one of the main problems for getting device manufacturers to support linux is the fact that they either have to release a new version of their driver every time the linux kernel changes some esoteric internal API, or be badmouthed for not having good linux support.

    would it really hurt so much to guarantee a stable DKI? doesn't have to freeze the whole kernel, just a subset of functions that will be guaranteed to work as they do now in perpetuity.

    backwards compatibility is just as important to driver writers as it is to app writers.

    doesn't even have to be binary backwards compatible, source level would be sufficient for most.

    --
    The difference between Theory and Practice is greater in Practice than in Theory.
    1. Re:of course it should by Spy+der+Mann · · Score: 2, Interesting

      But what's the problem with hardware manufacturers? Their profits are in the HARDWARE, not the software.

    2. Re:of course it should by Kjella · · Score: 2, Interesting

      one of the main problems for getting device manufacturers to support linux is the fact that they either have to release a new version of their driver every time the linux kernel changes some esoteric internal API, or be badmouthed for not having good linux support.

      Show me one example of a piece of hardware where the specifications are available (not under some absurd NDA), that has no or poor Linux support. The kernel/driver developers seem more than willing to write the driver and keep up with the "esoteric internal API", even so much that they spend tons of time trying to reverse engineer hardware where they get nothing. If you can find me just one such piece of hardware where Linux is the shortcoming, I'll donate to a fund for building that driver.

      --
      Live today, because you never know what tomorrow brings
    3. Re:of course it should by Skapare · · Score: 2, Insightful

      The real problem is this need to have unique drivers for every instance of hardware. Part of that problem is that manufacturers keep wanting to put their code in the host system for various reason. One common reason is to use the host CPU for work they are too cheap to do in the device they are selling. And another that has come out is their desire to access the host system itself (and something in the kernel involves a huge amount of access).

      This practice is bad because it compromises the integrity, reliability, performance, and security of host systems.

      What is really needed is a standard way of accessing hardware devices so there is no need to have unique drivers for each device. And for many devices, such as disk drives, that already exists. This just needs to be extended so that it works for all general and common devices. The only time a new device should need its own driver is when it is so uniquely new, that there is no analogy to what it does in existing devices (e.g. it would also need a new device file name in the /dev directory as well).

      --
      now we need to go OSS in diesel cars
  12. Stability like that leads to stagnation and death by A+nonymous+Coward · · Score: 5, Insightful

    One of Linux's great strengths is the flexibility of changing to meet new needs and not being hobbled by rigid backwards compatibility. This can only be done if all source is open and anyone can update drivers to meet new needs. When someone comes up with a patch to streamline a certain minor part of the kernel, it frequently has repercussions elsewhere in kernel land. It is these small changes which have made linux better and better with breathtaking speed. A "stable" binary API removes the possibility of keeping everything up to date and would dramatically show down the adoption of new features and general improvements.

    Continual refactoring is worth far more than some supposed binary API which prevents changes. Get rid of binary drivers! If companies are so paranoid that they want binary drivers, then the hell with them. Linux can advance better without that baggage.

  13. Of two minds by Kelson · · Score: 3, Interesting

    As someone who has tried to install various Linux distributions on RAID cards, and has had difficulty getting installers to use even third-party open-source drivers*, I'd love a binary driver API.

    As someone who supports free software, and has struggled with NVIDIA's video drivers (and they're at least trying to meet us halfway by making it as easy as possible to install their closed-source driver under the current system) I can see the negative consequences of encouraging binary-only drivers.

    *Example: Promise SX6000. Old cards work with I20, newer ones use their own interface. An open source driver is available, at least for the 2.4 kernel, but good luck if you want to get your installer's kernel to use it. Unless you can create a driver disk, a byzantine task in itself, you're stuck with a few outdated versions of Red Hat, SuSE, and I think TurboLinux.

  14. Binary drivers should be outside the kernel by Animats · · Score: 2, Interesting
    Drivers outside the kernel should be fully supported, at least for USB, FireWire, and printer devices. There's no reason for trusted drivers for any of those devices, since the interaction with memory-mapped and DMA hardware is at a lower, generic level.

    Actually, all drivers should be outside the kernel, as in QNX, and now Minix 3. But it's probably too late to do that to Linux.

  15. As the article says, it's illegal, and a bad idea by SWroclawski · · Score: 5, Insightful

    These companies want a binary layer so they can build binary drivers.

    What people tend to forget about this is that it's a bad idea- from most every perspective.

    The Linux kernel was written as a Free Softwate alternative to the existing *nix systems.

    We have thousands of drivers in the kernel from a combination of development efforts. Sometimes a driver is written by an independant kernel developer, and sometimes it's written from the company producing the hardware, working alongside the community.

    What these companies want is to be able to have thier cake without giving back to the community. This is a very slippery slope at the least, and illegal at best, since these sorts of links to binary kernel drivers have been long known to be illegal to distribute alongside the kernel (unless special previsions are made, such as a userland driver).

    Also, binary drivers have been known to be buggy and essentially removie the kernel developers from a position where they have control over the kernel as a whole project. I won't even go into the issues associated with a possible security hole in a binary driver, or a binary driver with, for example, spyware in it.

    The arguement for it is, of course, that this might mean more drivers. This is a test of our strength as a community. Doing the right thing is harder. It means we won't have all the hardware at all times, and certainly not the newest thing. But we retain control over our computers.

    It's hard to say no, but this looks like a clear case where we have to.

  16. Hell, no! by cortana · · Score: 4, Informative

    Please read The Linux Kernel Driver Interface (all of your questions answered and then some) by the same author before commenting...

    1. Re:Hell, no! by TheRaven64 · · Score: 2, Insightful
      Well done, you've just invented the microkernel. Now go back in time to the creation of Linux, and tell Linus that he should make Linux a microkernel. To make sure he listens, you should pretend to be a respected operating systems researcher like Andy Tanenbaum.

      Oh, wait, it's been done. He didn't listen.

      --
      I am TheRaven on Soylent News
  17. Userspace, anyone? by ettlz · · Score: 5, Insightful

    IANAKH, but couldn't more drivers be moved into userspace (or other lower rings) --- especially for things like USB printers and miscellaneous gizmos? I think it would also be nice to not bundle thousands of drivers and support for architectures I don't have with the kernel. The kernel itself could provide a very minimal layer of hardware protection (like an exokernel?) and there'd be libraries exporting generic abstractions for particular classes of hardware. Is the context-switching penalty really so great these days? Educate me!

    1. Re:Userspace, anyone? by oglueck · · Score: 4, Informative

      For USB and Firewire that's already done. Both busses define like device classes and protocols those use. The actual devices need either no special drivers or those can be implemented in user space. Printer drivers (CUPS) are completely user space. Scanner drivers for Sane are completely user space.

    2. Re:Userspace, anyone? by 0xABADC0DA · · Score: 2, Interesting

      Instead of a binary kernel layer what linux needs is a bytecode interpreter layer... a Java-esque langage for running processes in the kernel address space.

      For a simple "find ~ | ..." over 20% of the real time is wasted just between system call overhead (~1200 cycles) and actually copying data in/out of kernel mode. That doesn't even include the time setting up the copyin/out (it has to add the instruction address to a list for the interrupt handler in case there's a fault, which might have to do a lock I didn't check). And that doesn't even include overhead of context switching time (ie 2 context switches every 4k or 16k for the pipe read/write)! There's no reason a context switch should be taking milliseconds on a modern system. It should be microseconds.

    3. Re:Userspace, anyone? by diegocgteleline.es · · Score: 3, Informative

      It's already happening for scanners and cameras (see libusb) and serial/parallel port drivers (you don't need to insert a kernel driver for your parallel port printer, do you?). You don't really need a microkernel to write driver in userspace, just export the neccesary infrastructure in a sane way.

  18. Binary drivers are evil by poszi · · Score: 2, Insightful
    I've recently installed Linux on an iBook. No 3D acceleration, no wireless, no modem. All three drivers seem to exist (for Broadcom wireless in an ndiswrapper form) as a binary driver in the i386 world. But for PPC you are out of luck. ATI drivers and Broadcom wireless are being developed independently but they are not finished yet.

    In my opinion, binary drivers are worse than no drivers at all because they release the pressure on the manufacturer. They can say they support Linux which in case of binary drivers is simply not true.

    --

    Save the bandwidth. Don't use sigs!

  19. Absolutely by WombatControl · · Score: 4, Insightful

    One of Linux's biggest problems is the lack of device drivers for common devices, especially newer video cards. Let's face it, companies like ATI and NVIDIA aren't going to release fully open-source drivers. It would be wonderful if they would, but it would also be wonderful if we had flying cars.

    Having a stable binary driver interface would make it easier for hardware manufacturers to embrace Linux, give things like wireless chipsets more usability on Linux and drive further adoption of Linux as a viable competitor to more proprietary solutions

    The perfect is the enemy of the good, and the more Linux gains a foothold the better it is for open source. Insisting that device manufacturers need to have on-staff kernel hackers in order to keep ahead of a frequently-changing kernel makes it that much harder for manufacturers to support Linux as a viable alternative.

    Provided Linux can have a stable binary driver infrastructure that doesn't harm stability, it would greatly help in the adoption of Linux worldwide.

    1. Re:Absolutely by Creechur · · Score: 2, Insightful

      Insisting that device manufacturers need to have on-staff kernel hackers in order to keep ahead of a frequently-changing kernel makes it that much harder for manufacturers to support Linux as a viable alternative.

      No one is suggesting that companies shoulder the additional burden of constantly updating their drivers - that is taken care of for them automatically once they submit the driver to mainline. This is only an issue if the manufacturer refuses to do so, e.g. for a binary driver, or for separately maintained source. The former is considered unacceptable by most kernel developers, and the latter doesn't seem to have any benefit to the company.

      The only people who should be clamoring for a stable source-level API are the kernel developers themselves, since they're burdened with the work of updating drivers when an interface changes.

    2. Re:Absolutely by freedom_surfer · · Score: 2, Interesting

      Have you ever tried to use an older windows binary driver with a newer version of windows? It doesn't work so well. Do the hardware manufacturer ever go back and pump out a new driver for newer windows? Rarely. Only in the case of very popular products, and often its Microsoft who necessitates this. Now contrast that with linux. Linux runs fantastic on older hardware...rarely will a piece of hardware be supported in an older version of Linux and not work on a newer rendition. Granted, new hardware in Linux often lags behind driver support in Windows, however, this is not because of any inheirit problem with Linux, its an inheirit problem with IP and how companies protect said IP. If you want good open source driver support, then only buy from companies that embrace the concept. A company makes NO commitment to your long term support if they weld the hood shut on you. Also, is hardware obsolete because the company that made it disappears or no longer provides a driver for the device? Of course not. But, in actuality, it does, often through planned obsolesence.

      (Am I the only one with a 8-bit soundblaster? JK =P)

    3. Re:Absolutely by diegocgteleline.es · · Score: 2, Informative

      Having a stable binary driver interface would make it easier for hardware manufacturers to embrace Linux

      You might aswell read the greg's blog. Linux can't have a stable binary interface unless you: 1) lose performance (WDM-like interfaces come with a cost) or 2) lose freedom to configure your kernel (you don't allow to change some of the current kernel options like ej: regparm)

    4. Re:Absolutely by cortana · · Score: 2, Informative

      A perfect example of FUD. Who forced Ralink off the market after they released Linux drivers for their 802.11 cards?

    5. Re:Absolutely by bfields · · Score: 2, Insightful
      Insisting that device manufacturers need to have on-staff kernel hackers in order to keep ahead of a frequently-changing kernel makes it that much harder for manufacturers to support Linux as a viable alternative.

      They have on-staff kernel hackers right now. (Unless those ATI and NVidia binary drivers I keep hearing about are written by the Linux Kernel Fairy.)

      Merging their code with the mainline linux kernel should allow them to share their maintenance burden, not increase it....

  20. Re:As the article says, it's illegal, and a bad id by bheading · · Score: 4, Insightful

    But we retain control over our computers.

    Tell me, what BIOS do you run ? Do you have the source to the firmware in your IDE disk drive ? In your CD-ROM/DVD-ROM drive ? Do you have the source to your SCSI controller's firmware ?

    If you think you have control over your computer you are suffering under a delusion.

  21. It's much worse than that... by HotNeedleOfInquiry · · Score: 5, Insightful

    If a company is developing an embedded Linux ap for their own hardware. All of a sudden, all of the communications with the board-specific hardware is being done through binary drivers, resulting in an effectively closed system.

    No more hacking WRT54G's for you, chump.

    --
    "Eve of Destruction", it's not just for old hippies anymore...
  22. Thank goodness for "too much politics" by Sturm · · Score: 4, Insightful

    Linux was, is and hopefully will always be "open". I don't want closed drivers in the kernel (even via an API layer) any more than I want a Sony rootkit masquerading as DRM.
    It isn't about "politics". It's about policy and philosophy.
    If the hardware doesn't work with Linux, don't buy the hardware/pester the vendor for an open driver, or don't run Linux.

  23. This is the problem by everphilski · · Score: 2, Insightful

    This is the problem with the open source movement. Putting the code before the user.

    And this is why you fail.

    -everphilski-

    1. Re:This is the problem by Delphiki · · Score: 2, Insightful

      If the majority of people vote for terrible leaders, then how does having the right to cast a vote which doesn't have any effect make me more free than under a dictator? So the dictator is a large group of people (the majority) instead of one person. It doesn't make the minority any more free. So in response to your hypothetical, I would rather be ruled by a fair dictator than a corrupt but popular democratic government. Basically, what I'm trying to say is that who cares it it's Free, free, open or whatever if it sucks?

      --

      Feel free to mod me "-1 - Angry Jerk".

    2. Re:This is the problem by aeoo · · Score: 5, Insightful

      Wrong. It is closed source companies who put the code before the user. They protect the code more than they protect the users. Open source is about protecting the user by allowing unhindered access to code for modification and redistribution.

      It's funny how you warp things around.

  24. Cut the dogma, there are technical reasons by brunes69 · · Score: 4, Insightful

    It is not welcome. Linux is about Open Source, and allowing people to link-in binary closed drivers goes against this.

    Bypassing the dogma of the above, there are numerous pragmatic reasons why this would be better for linux, even if you don't include support for binary third-party drivers.

    • Developing drivers against a stable API is much simpler and more time efficient than developing against a moving target.
    • It is much easier for a part-time open source developer to support one API than a moving target
    • It would make life easier part-time developers of experimental drivers. Right now, if your driver isn't in the kernel, there is no guarentee it will even build against the next stable sub-version of the current kernel. It is a huge pain in the ass.
    • It would make life easier for users. If I download a driver from sourceforge for my webcam, I don't have to download a new version and rebuild when a new kernel is released.

    Sure, some of these are extreme cases. You can usually get away with just re-compiling the driver, and occasionally, you can even use the binary from the existing version.

    The point is you should *always* be able to do this wihtin the same major kernel version. There is no technical reason, aside form the politicis of not wanting to ever allow binary drivers, to not have a stable driver API.

    Imagine if the Mozilla plugin API changed with every new version of Firefox. And look at all the complaints when a new Firefox version doesn't work with all the old extentions. It is the exact same.

  25. Ok that's fine BUT... by Sycraft-fu · · Score: 4, Insightful

    If you are going to take the strategy of "We will do things to attempt to force you to do thigns our way," don't be supprised if the response of companies is "Fine, then we will ignore you."

    The simple fact of the matter is that most companies are not willing to go open source, for software or drivers. You can argue that's a bad thing, but it is the reality of the situation. So, if open source is out in their book, either because of contractual obligations or mentality or whatever, they are left with two choices:

    1) Do Linux drivers, and update them every time the interface changes, which can be as often as every minor kernel revision.

    2) Ignore Linux, and let the community write the drivers if they want.

    The problem is that Linux is a bit player. They are larger than the other bit players, but they are still tiny, less than 10%. Given that the continous rewrites can get expensive, the choice for many will simply be not to write the driver.

    So if you are ok with that, then great, but don't get mad at companies when they won't play by your rules. Are they being unaccomidating? Sure, but so are you.

    In the end, it comes down to needing to make a decision of what you want Linux to be. If you want Linux to try and become the next big thing in OSes and start to really make an entrance in the home market, standardisation is needed. Standard APIs, standard UIs, inter-version consistencies, etc. In essence, it needs to become more like OS-X. Now if you are ok with Linux being more of a geek/server OS then that's not necessary, but you can't demand the world change around you.

  26. Define "Stable" by mad.frog · · Score: 3, Insightful
    I did RTFA, and the author seems to have a different definition of "stable" than I do:

    Assuming that we had a stable kernel source interface for the kernel, a binary interface would naturally happen too, right? Wrong. Please consider the following facts about the Linux kernel:

    • Depending on the version of the C compiler you use, different kernel data structures will contain different alignment of structures, and possibly include different functions in different ways (putting functions inline or not.) The individual function organization isn't that important, but the different data structure padding is very important.
    • Depending on what kernel build options you select, a wide range of different things can be assumed by the kernel:
      • different structures can contain different fields
      • Some functions may not be implemented at all, (i.e. some locks compile away to nothing for non-SMP builds.)
      • Parameter passing of variables from function to function can be done in different ways (the CONFIG_REGPARM option controls this.)
      • Memory within the kernel can be aligned in different ways, depending on the build options.

    But see, the thing is... a "stable" binary interface requires that structures used specify padding, alignment, and fields to be fixed! If these can vary, then by definition , it's not stable. Ditto the variations that depend on kernel build options.

    Now, if you want to make the case that it's not possible / practical to make an interface that can cover all of these conditions adequately, well, by all means, do so (though I'd say that the hundreds of existing operating systems with binary interfaces show that this isn't the case in the general sense).

    But what I see here is a relatively weak technical argument that is being used to justify an ideological decision.

  27. Re:GO FOR IT by croddy · · Score: 2, Interesting
    As a user, the last thing I want is hunting down drivers that will work with the X or Y kernel version.

    Having to "hunt down drivers" is an artifact of the old third-party binary driver world. When hardware specifications are available to developers, those developers can add the hardware support to the kernel -- which means it ships with the distribution.

    If there's one thing you'll guarantee by providing a binary-only driver interface, it's that you'll have to spend a lot of time hunting down drivers.

  28. Benefits kernel users how? by BoldAndBusted · · Score: 3, Insightful

    I am not a Kernel Developer, but I know some. ;) I guess that my open question is how this would benefit kernel users? Yes, I see it would reduce the workload of kernel devs. Yes, I see it would allow driver developers to not have to go through the kernel code vetting process. But, the kernel code vetting process is what is a strong benefit of using Linux, from a user perspective, as I know that the code is well tested by an army of users and developers.

    Once you push driver development out of the kernel, yet give access to kernel internals in this way, you introduce a level of uncertainty in so far as stability and robustness is concerned. One must question why these big comapnies are pushing for this, but most human kernel devs are not.

    1. Re:Benefits kernel users how? by DavidTC · · Score: 2
      The kernel vetting process is probably the one of the two reasons that Linux is successful.

      Linus isn't a greatest coder around, probably not even the best coder working on Linux, and there are all kinds of hardware he doesn't understand at all.

      But one thing he can do better than anyone is look at code and recognize if it's crap or not, and if it's crap he'll say 'No.'. And if it touches too many systems without good reason, even if well coded, he'll say 'No.'. Without this ability, the Linux kernel would have collapsed under its own weight long before now.

      The reason is that he's willing to delegate subsystems to people who have demonstrated they can do the same thing as him. It's like a tree, where code goes downward, where at the top, at entry, it's checked 'does this do the right thing for hardware X?' by people who really know hardware X and how drivers for it work in Linux, and at the bottom Linus checks 'is this actually good code?', possibly without even understanding why it needs to do what it does, sometimes with people in the middle. Neither badly-written nor wrong-doing code makes it in.

      This, incidentally, is why most of the disputes in the kernel development are about things outside this, non-driver things, like devfs/udev, or memory management, or OOM process killing. The code isn't bad, Linus would keep it out, but people disagree what is right and wrong behavior.

      But when it comes to drivers, the process is almost seemless, because 'right' behavior is fairly obvious there. The only problems are in the few singular instances where someone who maintains a rarely-changed subsystem vanishes off the planet, and someone bounces around a while before they can get an update into the filtering tree.

      --
      If corporations are people, aren't stockholders guilty of slavery?
  29. Binary Drivers = Maint. Nightmare + Security Woes by C0deM0nkey · · Score: 2, Insightful
    Did you bother to read either the FA or any of the articles to which it linked? At least read GKH's take on all this binary driver nonsense. If his insightful comments on the issue do not change your mind, fine.

    GKH raises good points about how a stable binary driver interface will open the floodgates to both security problems and to update/maintenance problems. As it stands right now, Linux kernel developers can quickly respond to threats because they are able to fix all instances of a given problem, in all drivers, at the same time. If they do not maintain this flexibility, either some drivers stop working unexpectedly when security fixes are made and the interfaces are forced to change (making Linux appear "unstable") or backwards compatibility must be maintained making the Linux kernel grow over time (whenever a new interface has to be written to address flaws in the old interface).

    Yes, abstraction is good...but, in this case, stability, the perception of the user and maintainability (where the *real* costs lie) must win over abstraction. Most of the kernel developers are not being compensated; how often do you think that backwards compatibility is going to be maintained? Its not. Right now, fixes are accomplished because it is easy to accomplish - global search and replace, etc. Make it difficult and it just won't be done.

    Manufacturers want binary drivers because they want to play for free - they want all of the benefits of open source without any of the costs. Not cool.

  30. Does time change the debate? by Julian+Morrison · · Score: 3, Insightful

    Ignoring for a moment, the ideological points, lets consider a frequently raised practical point: the idea that an API would either get out of sync with the kernel, or be a drag on innovation.

    I agree that when the Linux kernel was young and untried, standardizing a binary API was bound to become a millstone in a short period of time, as the kernel internals were in a constant state of churn and iterative improvement. Nowadays though, surely, the kernel has been "shaken down" enough that it could afford to commit to binary APIs that are stable at least throughout each minor version number?

    Returning to ideology, I can see how a stable binary API would be useful even to open source hardware. How much easier is it, to say "drop this file under /lib/modules/binary/" than "you need to recompile and reinstall the whole kernel with this patch"?. For obscure hardware which will never be in the official kernel, it would be nice to have the ability to easily use it with any linux distro. No need for a slew of precompiled RPMs, DEBs, and a user-unfriendly source tarball, just one driver binary and you're ready to roll.

    In itself, that says nothing, either pro or anti, about the availability of driver source.

  31. Re:Only one word by Anonymous Coward · · Score: 3, Interesting

    What are his reasons for not putting video card drivers in the kernel, like other Unix operating systems?

    Why do we still have to have a user program (X) with device drivers in it? (Would anybody think it's a good idea if the Linux kernel didn't have any sound drivers, and required gstreamer to implement its own?)

    It seems we have two competing driver models in Linux: some are in the kernel, and provide a consistent interface (sound cards, SCSI/IDE/... cards, network cards), and some aren't in the kernel at all, but expose them at a low level and rely on userspace programs to provide actual drivers (X11 for video cards, CUPS for printers).

    I'm against a binary API, not on philosophical grounds (I like gstreamer's binary API), but because it simply never works: I've tried to use binary-only drivers under Linux in the past, and it never works nearly as well as open-source drivers. But whewher or not you agree with Linus' open-source philosophy, can we at least all agree that we need to put drivers in the same, correct abstraction level?

  32. Hardware vendors by Anonymous Coward · · Score: 2, Insightful

    They won't release now, but eventually they will. You don't cave in to "terrorist threats", ever. And that's what this is. If those vendors want in on the open source market that revolves around the linux kernel, then they can play ball, too, end of story.

        Linux is at a really important part in its evolution. Caving in to closed source interests would be counter productive in the long term. It is better to force/cajole the vendors to finally "see the light" with open source and the GPL. Maybe eventually another graphics card vendor will appear and become the champion, precisely from having open source drivers. The manufacture of electronics in Asia in particular is exploding, where there is a market, a vendor will appear. Patience.

  33. Re:Only one word by Altus · · Score: 4, Insightful



    the question I have for this is "why?" wouldn't a stable binary API likely result in far more third party hardware support for linux? possibly more laptops that are actually compatible with linux?

    This seems like a case of open source programmers shooting themselves in the foot because they want everything to be open source... not every application and driver is going to be made open source just to suit the desires of the linux development community. It seems to me that sticking to a hard party line against closed source software instead of trying to co-exist with said software is bound to keep linux in relative obscurity and pretty much ensure that it never becomes a viable competitor in the desktop market.

    --

    "In America, first you get the sugar, then you get the power, then you get the women..." -H. Simpson

  34. A good portion of hardware implemented in software by Deviant · · Score: 2, Interesting

    More and more hardware is being implemented in software. This makes sense because as the CPU has increased in speed and capability it has gained the resources and free-time to pick up the slack for less-expensive hardware implementations. If you look at the new push for multi-core and multi-CPU systems this will be even more true. Plus, as a bonus, if they mess something up then they can more easily get people to install a new driver revison successfully than to flash a device or fix a problem in the silicon.

    The problem for the open-source community is that these drivers are increasingly not just the way to talk to autonomous hardware but actually implement alot of the fucntionality of the device. Taking this in mind, the manufacturers are unlikely to give out the source code for these drivers as they will be giving their competitors a more significant view into their playbook. People in the Linux community complain about the lack of certain drivers like those for wireless cards in many notebooks, which in my understanding work as described, and are left hacking together a solution to run the Windows drivers under linux in order to get them to work. If you want things like that to work and work well in Linux then you have to give them a stable subsystem and make it as easy to port their drivers as possible while providing them the means to not give away the source which contains half of their work in creating the hardware.

    I know that is not the ideal solution but thems the breaks. It is either Linux steps up with an API and binary subsystem or they will be left with fewer hardware options consisting of what more expensive all-hardware alternatives are left for many of these peripherals.

  35. out of touch linux kernel 'hackers' by bored · · Score: 3, Insightful

    Firstly, I get paid to do driver development. Secondly, I have never worked for a company that willingly said, ok lets open source the drivers we spend thousands of dollars writing and optimizing.

    That said, this whole discussion is as silly as the one about not putting a kernel debugger in the main kernel source code. Frankly, linux desperatly needs both a kernel debugger, and an ABI to be a REAL alternative for many customers. It also needs the ABI for driver developers so that we can write a single driver and expect it to work on the dozens of flavors of linux we are expected to support. Saying that everyone should opensource their drivers is like saying food should be free. It isn't going to to happen and wishing for it, won't make it happen any sooner. In the interm, almost all the hardware out there has better support on windows (Our sysadmin can't even get support for major linux distributions, from major hardware vendors, even when they have little linux logos on their hardware and websites) the windows drivers tend, to accually work, and they almost always have better features sets. This isn't going to change as long as the "opensource" community treats hardware vendors that think they have IP in the driver as second class citizens.

    Oh, and for people who don't accually work for hardware companies that ship drivers, driver development is often times an expensive process, not because the software engineers are expensive, but because the hardware and software needs to be tested and certified in particular enviroments. There are orders of magnitude more linux distributions this makes it cost orders of magnitude more to test and support than a half dozen windows enviroments, most of which can be tested at microsoft, or one of the major OEM's if the hardware isn't avialable onsite. Putting 10x the money into a market that may be less than 1/10 of sales is not always a good idea, especially when resources are limited. Creating an proper ABI helps to solve this problem.

    That said, if the damn linux kernel accually had a real architecture, it could support an ABI, and even isolate itself from rogue drivers. As it is, the kernel arch is pretty much non existant and just a pile of code that tends to behave like a real kernel, except when you try to do something a little outside of the mainstream desktop or small web server enviroment. This was fine when the whole kernel was just a few hundred thousand lines, but given its current size its getting massivly unmaintainable. This is proven by the fact that linux system stability seems to have gotten really bad over the last few years. Getting to a stable system, takes a lot of vendor testing by the likes of Suse, Redhat, etc.

    Lastly, the tainted concept works fine for the kernel developers, why not carry it forwared so that any binary driver simply marks the kernel as having a binary module loaded, and uses the standard abstract interfaces instead of linking against all kinds of unneeded kernel crap that just provides the posibility to screw something up.

    1. Re:out of touch linux kernel 'hackers' by ledow · · Score: 5, Informative

      First, I think you're missing the fact that, overall, Linux doesn't care that you can't put your binary-only drivers on it.

      Linus has said publically many times that the reason that there is not ABI is because he doesn't want one. Binary drivers for *anything* end up screwing stuff up. When they do, there is NOTHING anyone but the original author can do. The code stagnates, users get shut out without any help and nobody is any the wiser as to how that hardware actually worked in the first place.

      That's WHY there is stuff like the kernel module license tainting, so that the kernel developers look at a problem, see that you have the massive unknown of a in-kernel binary loaded and can instantly filter your report out. They don't care that your binary driver doesn't work. They can't help you.

      Additionally, setting anything into a static position means that development of it ends and stagnates. You'll never get a static interface that you can use to extend the drivers when new features come along. You end up with all sorts of kludges and interface versioning to try to take account of new things.

      Linux is developed as an independent operating system, not Windows 2006. No-one wants to make you use it if you don't want to. I doubt Linux was ever intended as anything other than a "pure", almost theoretical, system; that is, one that can be constantly redesigned from the ground up to the way it should have been, not kludged to make it fit your eight-year-old driver (which the author is no longer available to update) for a mouse that happens to still use the old interface.

      "Frankly, linux desperatly needs both a kernel debugger, and an ABI to be a REAL alternative for many customers."

      Whoa, magic word customers. Linux doesn't have customers. Your company may have customers. There's no obligation on Linux to help you get/keep your customers. People use Linux because they want to. How often does Linus appear on your telly begging you to buy into Linux? Never. Because he doesn't care if you do or not. However, I do imagine it feels pretty nice to him that you do want to use it.

      "It also needs the ABI for driver developers so that we can write a single driver and expect it to work on the dozens of flavors of linux we are expected to support."

      *You* are expected to support whatever you decide to make. Unfortunately, the linux kernel developers are expected to support YOU, your hardware and everyone else in the world. They don't because they cannot and have no reason to. Even if they had your complete source code, they cannot be expected to maintain your driver for you (which is what will happen when your company goes bust / gets bored with OS).

      Sometimes the best-written drivers in the world are not taken into the kernel because they don't quite fit and the maintainance involved in keeping them in the kernel is too difficult. Your driver, if it is to have any support in the kernel, needs to be able to be updated on any kernel-coder's whim in order to make the whole a better system. You can't do that with binaries, you can't even do it with stable interfaces. You have to have the source.

      The kernel coders have never promised that your stuff will always work (unless it is designed to run purely from userspace... several times Linus has says that userspace interfaces will not MUCH change over time.). They haven't because they cannot.

      The nature of the system is changes to bring improvements, from the interrupt system to the IDE interfaces, from the schedulers to the userspace interfaces such as sysfs or procfs, Linux changes and evolves over time and they cannot guarantee that anything other than userspace syscalls and the like will not be broken, changed or improved between one kernel release and the next.

      When the linux kernel people discover a new way to write drivers that sees enhancements across the board, chances are that they are going to break any of your "single driver" models. That's why they won't give you one. Them im

    2. Re:out of touch linux kernel 'hackers' by guitaristx · · Score: 2, Insightful

      Saying that everyone should opensource their drivers is like saying food should be free.

      Actually, no, saying that everyone should opensource their drivers is like saying that recipes should be free (as in speech).

      We're not expecting vendors to give away their hardware, we just want them to give away the interface to that hardware. Does that open things up for reverse engineering? Possibly, but a reverse-engineered video card probably isn't going to perform as well as the original. It'd definitely be better for the card manufacturer in the long term (which means we need to convince manufacturers that long-term thinking is good), since they would have less load on them for software development, and it'd be better for the Linux community, because we have the hardware specs straight from the horse's mouth, which means we can operate the hardware exactly as the manufacturer intended.

      Yes, changing to an open-source model for drivers is a big step, and will cost manufacturers in the short-term, but the long-term benefits are worth it.

      --
      I pity the foo that isn't metasyntactic
    3. Re:out of touch linux kernel 'hackers' by bored · · Score: 4, Informative

      Oh, where do I start... I could talk about every one of your points.. lets just pick a few.. Firstly, the lack of hardware support for things like grandma's web cam, and caching SATA controllers hurts Linux much more than it hurts adaptec or joe blow's web cam co. If linux is to be just used by hackers for hackers that's probably fine. That isn't the impression I get from "linux people" who are constantly whining about lack of hardware support.

      Additionally, setting anything into a static position means that development of it ends and stagnates.

      Really? Could have fooled me... Windows can still run DOS and Windows applications from 20 years ago, linux can still run application from 10 years ago. When an API is created, usually there are hooks for extending it in the future. I wouldn't say either one has stagnated, over the course of the last 10 years. If that were the case windows wouldn't run on my quad 64-bit athlon.

      *You* are expected to support whatever you decide to make. Unfortunately, the linux kernel developers are expected to support YOU, your hardware and everyone else in the world.

      But its our brand which gets damaged, when plugged into a linux box, and it works at 1/4 speed, or looses data because the developer who implemented the driver forgot some important edge case.

      They really don't care about you and your binary drivers

      No, but the weekly calls by linux users asking for them says that Linus and friends are only a small part of the community.

      Stick a Knoppix CD in a computer and see how much of the hardware is supported by default. 90% if not more? Include binary-only winmodem/USB ADSL/philips webcam etc. drivers and you get close to 99%.
      Sure, linux supports a lot of hardware, but there is a lot it doesn't support, or supports in a seriously half ass way. I would venture a guess that about 40% of the drivers in the kernel don't actually work based on my experience running linux since the early '90s. When I say don't actually work, i'm saying the driver cannot recover from rare hardware error conditions (like FC cable pulls for example), doesn't fully work. Doesn't work in all situations, for example SCSI adapters that work fine with harddrives but don't work with tape drives because they cannot deal with the rare condition of a tape drive returning check conditions and data at the same time. Or, works fine at some fraction of its rated capability. This isn't counting the fact that the kernel developers often break functionality in the kernel drivers when they change stuff and it doesn't get discovered for 6 months, because the developer making the change didn't test the driver that was affected. Now, your average slashdot weeny doesn't see this because they have standard whitebox or dell machines, that are the same as the other 90% of slashdot weenies. In real life there is a vast amount of strange hardware out there, professional audio cards, hardware encryption engines, 4 port fiber channel cards, ficon, 10G ethernet cards, large disk arrays, big memory systems, 10's of different types of system management interfaces for monitoring things like, system ECC soft errors, redundant power supplies status, etc. The list goes on. In many cases the linux driver was written and tested a year ago, a bunch of people are using it in a production environment and it has been broken for 6 months in the mainstream kernels. I was responsible for fixing a number of race conditions in the VMM a couple of years ago, that only occurred with a SMP box that had more than a couple G of RAM (a rarity back then). This was suppose to work, but it didn't because the people with 6G of ram didn't test it with SMP applications and the people with >2 CPU's didn't test with more than a few hundred megs of RAM. Recently I tried bench marking a 3TB disk array in linux, only to discover that it didn't work in over half of the file systems I tried (XFS, Reiser, JFS, ext2, ext3) and in at least one case worked but was so slow it was unusabl

  36. Re:Only one word by IamTheRealMike · · Score: 2, Informative
    That's incorrect, he has said he doesn't mind binary-only drivers but he won't go out of his way to help them. So, if he sees an improvement that would break the module API, he'll do it. That's a LONG way from "I do this so people can't write binary drivers" which is clearly not the case (many companies do, successfully).

    Also a lot of people mix up the issue of "binary vs C" with "closed vs open". You can have open source binary drivers, and that's often a convenient thing for end users to have (because the user experience of installing binaries is generally better than that of installing things from source code).

  37. Re:Stability like that leads to stagnation and dea by Kazoo+the+Clown · · Score: 2, Funny

    One of Linux's great strengths is the flexibility of changing to meet new needs and not being hobbled by rigid backwards compatibility.

    Yeah, let's hobble it with dependency hell instead.

  38. necessary for the desktop by Khashishi · · Score: 2, Insightful

    This is necessary if we ever want Linux to be ready for the desktop. The ability to have driver modules is certainly more advanced than having everything compiled into the kernel, but it's severely lacking in many regards. The module has to be custom made for each kernel, making binary distribution useless because there are 2^100 kernels out there. So unless the manufacturer open sources the driver, they can't make a driver for Linux. Or you could go with an open source interface to a closed source driver.

    Here's a sample of what I put up with. I downloaded Agnula Demudi 1.2.1 and installed it with the 2.6 kernel. I was ready to install some Nvidia drivers. But after some searching, I couldn't find any binary driver interfaces compatible with my kernel. Fine, I can compile my own. So I download the interface sources and launch module-assistant. It complains that riva driver support in my kernel conflicts with the nvidia driver, and I need to recompile the kernel. (I then went through the joy of trying to find the hidden demudi sources and figuring out how to patche them and configure them, ultimately failing to compile it, but this is getting away from the topic.) Finally, I said screw it.

    You might blame the distro, but it's really the kernel at fault here. Recompiling the kernel to support a driver is NOT something that a user should have to do. Windows does not require you to recompile your kernel to install drivers.

    1. Re:necessary for the desktop by cortana · · Score: 2, Insightful

      > So unless the manufacturer open sources the driver, they can't make
      > a driver for Linux.

      Boo fucking hoo. I'll take my money elsewhere...

  39. I would rather have drivers than fanaticism by Anonymous Coward · · Score: 3, Insightful

    First of all, I completely understand that drivers with source are better than binary-only kernel drivers. However, the fact of the matter is that companies do not feel comfortable freely releasing their intellectual property. Given the choice between a piece of hardware in a laptop which doesn't work with Linux at all and one that works with a binary-only driver, I would rather have the binary-only driver.

    As long as Linux kernel developers complain that binary-only drivers are "illegal", Linux will have less hardware support. One of the major complaints people have against Linux is that a lot of devices that one can attach to a Windows machine plain simply do not work in Linux (I still think Linux is far behind Windows when it comes to wireless drivers, for example). I want to see a true alternative to Windows on the desktop; GPL fanaticism and an inability to understnad how big corporations work harms this.

  40. Re:As the article says, it's illegal, and a bad id by merdark · · Score: 2, Insightful

    What you seem to forget, is that for the majority of users, Linux is a 'free' unix like system, and they could give a rats ass about "Free". If "Free" starts making things difficult to use, or preventing companies from supplying drivers for hardware users buy, then not only do users not care about "Free", but they will actively dislike "Free".

    The bottom line is that having code be open is only important to a fraction of *developers*, and an extremely small small fraction of the general populance. Ultimately, "Free" software people want to push their ideoligy on others, they don't care about makeing functional easy to use systems.

    So preach all you want. Very few people care.

  41. Backfire. by Bezben · · Score: 2, Interesting

    At the end of the day, there might not be a choice at all. What's to stop them forking the code and developing their own binary driver api? If people (and by people I mean businesses) want to use the hardware of these companies, it might become widespread.

  42. Re:Only one word by Shimmer · · Score: 3, Insightful

    So in other words, Linus has decided to deliberately damage the kernel (by introducing unnecessary instability) in order to make it harder for people to write software that uses it.

    I thought that Linus usually put technical correctness above political correctness, but it looks like I was wrong.

    --
    The most rabid believers in American Exceptionalism are the exact same people whose policies are destroying it.
  43. Re:As the article says, it's illegal, and a bad id by SWroclawski · · Score: 5, Insightful

    The BIOS is indeed an issue, and there are efforts underway to make a Free BIOS.

    But why not try our best to have as much control as we can?

  44. User-level drivers by spitzak · · Score: 2, Interesting

    Linux should support user-space drivers. Probably through FUSE and some other apis. These can then be binary, just like any other appliation. If they crash they will not take the system down. The API is limited but you will be able to open/read/write them. ioctl can be done with Plan9 style names, ie open "/dev/neato_device/volume" and write the desired volume there, etc.

    Drivers that need more elaborate API's or need more speed will be stuck with the mutable binary interface and occasional GPL restrictions. Too bad. A lot of interesting drivers do not need this speed. And those that do may force the interface to user-level drivers to be improved until it is usable, which is a very desirable result.

  45. Learn to read. by Some+Random+Username · · Score: 4, Insightful

    They don't release the source. There is no source. That's the whole point. They just release the programming docs so anyone can write a driver. There is no IP for them to protect.

    1. Re:Learn to read. by Kjella · · Score: 2, Informative

      They don't release the source. There is no source. That's the whole point. They just release the programming docs so anyone can write a driver. There is no IP for them to protect.

      That's at best debatable. To make any sense, you would have to give not only the specs but essentially the capabilities of the GPU away. I must admit I don't know that much about GPU design, but I imagine there's a lot of timing data to keep the texturers and pipelines and shaders and whatnot occupied. The exact details about how long, which operations can be executed in parallel, the break-down of time required for different steps to render the final image and so on is fairly critical. It would also make it a lot easier to reverse-engineer the closed source code, or at least to benchmark for comparison (it's usually a lot easier when you *know* there's a way to do this faster). Where and how it is hardware-assisted, and what is in pure software can certainly be mapped out with exactness. It's not impossible to do this otherwise either. But it would be lot easier if you had a well-documented hardware interface.

      Kjella

      --
      Live today, because you never know what tomorrow brings
    2. Re:Learn to read. by Billly+Gates · · Score: 2, Informative

      There is a ton of IP to protect.

      What is the difference between a $600 quadro and an outdated $85 Geforce4? THe firmwire is flashed differently and the drivers will optimize for accuracy vs performance between the 2.

      That is why they dont want to open.

      Also designs are copyrighted and if you open the source a competitor could argue that companyA neglected its copyright by opening it to the public, so therefore its ok to steal the design. May not be entirely true since copyright is designed to share work, but an ignorant judge could look at it as carelessness for being open.

      WIFI is required to be closed and proprietary by the FCC under Powell. The government can revoke its license to produce wifi cards otherwise.

      Face the facts. In this day and age of litigation most companies make profit from suing each other and protecting themselves for a *potential* lawsuit. Their shareholders demand closed source and will fire any CEO who willingly let go of its crown jewels to make a few geeks happy.

      Last, many vendors want profesional certified drivers. Not the crappy community ones. Yes commerical ones can suck too but I have had problems with my new geforce6600GT for example. I downgraded to an earlier driver that is "Windows quality certified" and performance is alot better.

      I am sick of the windows trolls mentioning windows is bad because of the drivers. Not because of its design. The fud was started by Microsoft and I have yet to see solaris crash because of bad drivers as an example.

      I find windows just works. No funky problems with acpi turning off the sound, no strange behavior with usb pen drivers, etc. Its because the drivers are good quality on WIndows and not made by hackers who do not know all the details about the hardware.

      I support the kernel api since hackers can use it as well. Also we need a layer of api's of gcc and older kernels. This is why ISV's prefer solaris over linux. You can run a 10 year old app on solaris without a problem. Try that on linux where there are no layers or dynamic linking?

    3. Re:Learn to read. by Peter+La+Casse · · Score: 2, Interesting

      One of the reasons for releasing closed-source drivers is to avoid revealing that you're violating your competitor's patents. The more obfuscation there is, the less likely you are to be sued, if you are indeed doing something illegal. Releasing documentation does not increase obfuscation, so it's not an option for criminals.

    4. Re:Learn to read. by Some+Random+Username · · Score: 3, Informative

      "What is the difference between a $600 quadro and an outdated $85 Geforce4? THe firmwire is flashed differently and the drivers will optimize for accuracy vs performance between the 2."

      That's not protecting IP, its protecting the fact that they are scamming customers.

      "Also designs are copyrighted and if you open the source a competitor could argue that companyA neglected its copyright by opening it to the public, so therefore its ok to steal the design. May not be entirely true since copyright is designed to share work, but an ignorant judge could look at it as carelessness for being open."

      You have absolutely no clue what you are talking about. Copyright does not need to be protected to be valid, that's trademark.

      "WIFI is required to be closed and proprietary by the FCC under Powell. The government can revoke its license to produce wifi cards otherwise."

      Yeah, that would explain why several companies have fully open docs for their wifi chips, thus enabling completely open source drivers for them.

      The rest of your post is irrelivant windows nonsense that has nothing to do with the topic.

  46. It'll happen eventually.. by parryFromIndia · · Score: 2, Interesting

    For an OS which is continually evolving and was not designed with a lot many future developments in mind, it is very natural to say no to the stable binary API/ABI concept for drivers. But as it matures and there is no longer a need to fix interfaces to support some out-of-world functionality, the driver interfaces are automatically going to be stabilized. (Unless kernel folks decide they get bored with having one function name for more than a year or that they want to keep driver writers continuosly on their toes - all of which is unlikely.)

    API/ABI compatibility obviously has it's own pros and cons - some times it's impossible to break things, take Windows for example. The world is going with LP64 model for 64 bit machines but Windows developers had to stick with LLP64 just because they made some design mistakes and now they cannot break the tons of applications. (See http://blogs.msdn.com/oldnewthing/archive/2005/01/ 31/363790.aspx).

    Linux on the other hand can afford to break and fix things until the time where binary and out-of-tree drivers grow to out number the in-tree stuff. By that time I guess there will be a very less need to break things such as driver interfaces and the like.

    And I think the mad rush to put everything in the official kernel tree is not a good idea from maintenance and complexity stand point. So if and when the Linux ABI/API stabilizes that will be a good thing for out-of-tree kernel drivers and Linux itself.

  47. Third-party IP (was Re:Excellent suggestion!) by Kalzus · · Score: 4, Informative

    The day you can get third party IP licensors (e.g. that nice crossbar architecture used in previous-gen nVidia chipset memory control blocks wasn't developed in house by nVidia and they have contractual obligations not to release interface specifications for it) to agree to have their interfaces open by the licensees is the day you'll have fully open register-level documentation for consumer 3D graphics chips.

    --
    "The Devil does not know a lot because He's the Devil, He knows a lot because he's old." -- unknown
  48. Already done by jd · · Score: 2, Informative
    There's the Connector layer, sysfs and fuse. The userspace-in-kernel patches also help. These allow binary-only drivers in userspace with significant kernel access.


    For graphics, GGI and KGI would allow direct binary-only drivers to be written that applications can use, again without modifying the kernel.


    Not sure whether you could make any use of the ABI/IBCS work for drivers, but they certainly allow "foreign" binaries to run under Linux, without anything foreign being put in the kernel itself.


    In other words, a binary-only driver layer would seem unnecessary, given alternatives and mechanisms that already exist. It may be useful in some cases, but I can't see how it would be essential.


    You could also use Xen as a reverse microkernel. Have foreign drivers in a "driver-only" mini OS, running as a parallel kernel. Then all Linux would need would be a way to call the other OS across Xen - and that need not be binary-only/closed-source. Companies interested in binary-only Linux work might even jointly fund development of such a capability.


    The problem is not with the kernel, or even with the kernel developers. The problem is that corporations have unofficial choices rather than something they can put the blame on if their coding is crap. Officially sanctioned solutions are always preferred when being able to blame someone else is important.

    --
    It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
  49. Re:Ugh no by toad3k · · Score: 2, Insightful

    If you give companies a way to use closed source drivers, that is all they will ever use, because that is the way they've always done it. Linux presents a serious change to the way hardware vendors do business, and in the long run I think it would be better for everyone if they would embrace it.

    It is just that once you open the gates, they won't ever be closed again.

  50. Already Got One: NDIS by Markus+Registrada · · Score: 3, Informative
    We already have a stable binary driver interface. It's called NDIS. Just about everything that's wrong with it (and ndiswrapper) would also be wrong with a Linux-only binary spec, and other things besides. That said, anyone complaining about NDIS drivers not working on non-ia32 hosts need only attach an ia32 emulator to NDIS. Again, if that doesn't sound very nice, any binary driver interface is likely to be almost equally, er, not-nice.

    This is an inflammatory issue, but a stable interface doesn't necessarily open the kernel up to proprietary drivers. It's a matter of licensing. Any third party could introduce a GPLed abstraction layer. There are big practical advantages to being able to take a GPLed driver's object file and plug it in to any old kernel. In that case there would be no really fundamental reliability or debuggability problems. The remaining problem would be the increasing mismatch between the abstraction presented to the driver and the abstraction supported by the kernel as it develops.

    It would be good to separate the discussion into two, one for inflammatory license- and/or ideology-related culs-de-sac, and another technical, to address legitimate needs for stability in drivers that are not (yet) in the kernel tree.

  51. This is why I don't write device drivers for Linux by bhurt · · Score: 3, Insightful

    There's a joke- programming is a lot like sex. One mistake, and you're supporting it for the rest of your life. By this measure, writting a device driver for Linux is a mistake. Because even after the feature set and the hardware itself is stable, you are letting yourself into a never-ending task of constantly changing the driver to keep track of the current API changes. At a previous job we spec'd it out at about 1/2 of a full time position to keep up with all the kernel changes. This is your job, from now until eternity, or at least until you're willing to have the driver declared obsolete and abandoned (after all, we all know that there is just three types of software- vapor, beta, and obsolete).

    Well, congratulations. You have your religous purity. And guess what- it's comming at a cost. You wonder why Linux isn't more popular on the desktop? Well, here's part of the reason. It's hardware support will always- ALWAYS- be behind that of Windows. Why? Because when the hardware ships, it ships with Windows drivers that the hardware vendor wrote with it. Note that Windows pulls the same sort of API changing crap that Linux does. The difference is that the hardware vendors look at Windows, and the half man-year per year cost of supporting Windows costs, and go "but we have to support Windows if we want to sell more than 3 units." They then look at Linux, and the half man-year per year cost of support Linux, and go "Supporting Linux is not cost-effective at this time." I know, because I've seen this happen. So now the hardware is out there. And now we wait, for someone willing to step up and volunteer the time to write, and maintain indefinately, the driver. Someone less capable of doing it than the hardware manufacturer (this isn't to question the capabilities of the current kernel developers, but the fact of the matter is that there is a huge advantage to being three cubes down from the hardware developers, and capable of wandering over and asking direct questions, instead of having to reverse engineer what is really going on, having worked both ways).

    So this is the fundamental question: which is worse. Having binary-only proprietary drivers, or being forever behind in hardware support and not having people contribute simply because they don't feel like having to constantly update the driver once they finish it, they'd like to be able to move on. I come down on one side, Linus and the kernel developers down on the other.

    Fine. Their kernel. Their problem.

  52. Formal Methods by darthscsi · · Score: 2

    On network drivers at least, the driver has such a small interface the driver is put through a full formal methods based proof system to prove the driver doesn't have certain classes of bugs. I hear MS has quite a cluster devoted to model checking network drivers. Granted this doesn't work for all classes, but at least some get fairly rigerous verification. I personally wish Linux drivers got this kind of checking.

  53. Linus' words, now for real by diegocgteleline.es · · Score: 4, Insightful

    "Basically, I want people to know that when they use binary-only modules, it's THEIR problem. I want people to know that in their bones, and I want it shouted out from the rooftops. I want people to wake up in a cold sweat every once in a while if they use binary-only modules."

                    - Linus Torvalds on linux-kernel

    And many people forgets that non-gpl drivers may be very well impossible to write at all (at least some lawyers think this), drivers are not at all like an app is WRT to gtk, drivers are more like "plugins". Plus, a closed driver module makes MUCH HARDER to debug bugs if the driver is doing bad things, and you can't know that (which makes harder to stabilize and/or develop the kernel. Several closed drivers can make it a hell or impossible at all.

  54. Re: PLEASE give us a stable driver interface! by KC1P · · Score: 2, Insightful
    I can absolutely give you an example of a device that's not getting community support -- the BCI-2004/BCI-2104 bus interfaces from The Logical Company. These are oddball weird strange devices for interfacing ancient DEC Q-bus/Unibus hardware to PCI-bus machines. The vendor doesn't care about Linux but provides semi-usable documentation and very friendly email support. My customers (I sell a minicomputer emulation package that runs on Linux or DOS -- don't laugh, see below) want to use the device.

    So I wrote a nice driver for it, with help from the excellent Rubini book since there's no frickin' driver documentation and the Linux sources are uncommented (putting your name at the top doesn't count as commenting on any team I've been on). It worked for a few months, until the next incompatible change in the kernel. Then I poked around in the kernel until I thought I'd figured out what had changed. Got it kind-of working (DMA is unreliable and I don't know why). Then the 2nd edition of the Rubini book came out, so I rewrote the driver and got it semi-OK again. For a few months.

    The kernel has had about a zillion incompatible changes in the driver interface since then, ALL UNDOCUMENTED, there's no 3rd edition of Rubini's book to sort it out for me, and I'm just lost digging through the kernel sources. It's always the same pattern: customer complains, I spend a few days fixing it, and it sort-of works for a few months until the next gratuitous interface change.

    OK so I'm a for-profit vendor and therefore deserve to die (how dare I want to be paid for being a programmer, it's only people who don't create new IP who should be allowed to choose what they do for a living). But I'm not the vendor. I wrote the driver for their device (and plenty of other open source stuff) because it needed writing and no one else was doing it. The driver is distributed as fully commented source (obviously), and I've given it out to anyone who asked for it (uhh ... both of them -- this hasn't made me a nickel in extra sales for the package itself, I tell users who want reliable Q-bus interfacing to use my DOS version because there's no OS to break my driver there, it's worked unchanged for YEARS). The users haven't touched a single line of code on their own that I know of, all they do is complain to me. So what's wrong with this picture? Why isn't Open Source magically making everything work, at no cost to anyone?

    It's just plain arrogant to assume that Groovy Open Source will always fix itself, and therefore it's OK to make the kernel interface be a rapidly moving target with no real manual. I'm sure that when we're talking about some extremely commonplace device that hundreds of thousands of people have, it's not hard at all to raise a posse and go after new bugs when the kernel changes. But this device I'm talking about costs $2575 a pop and is of no interest to anyone who isn't keeping a 30-year-old minicomputer system alive with a brain transplant. Absolutely no one is helping me maintain the driver even though they have everything they need to do it. I'm doing a lousy job of maintaining it because it's 0.0001% of my job description, and it's just not my strength (I know how to program bare metal, keeping up with Linux internals would have to be its own full-time job).

    I couldn't care less whether drivers are required by law to be open source (although I really can't believe that's enforcible on a loadable driver, licenses exist to make exceptions to the default copyright restrictions, and interoperation is not copying). If people want to see my I/O code they're welcome to it. Just please stop making it break!!! Especially if you're not going to bother helping me maintain it. I've got my hands full just keeping the user-mode code working (WTF happened to /dev/vcsa7 and up?! and /proc/meminfo?!).

    Anyway my point is, if Linux would pick one driver interface, and commit to supporting it (OK, possibly among other

  55. Re:This is why I don't write device drivers for Li by bhurt · · Score: 2, Insightful

    By the way- another advantage to having a stable kernel API layer is the ability to write a dead-tree book about how to write Linux device drivers and not have it be obsolete by the time it gets published. I have half a dozen books on this subject- half of them were obsolete by the time they were published, they're all obsolete now.

  56. No ABI no fun! by br33d · · Score: 2, Insightful

    A few year ago I wrote and maintained the Aironet driver. The years of maintaining the driver and supporting users (I still support them) has illustrated to me the importance of an ABI. I didn't really notice it at first, but it hit me in stages.

    1) Experimental driver stage. I distributed the source and had online instructions, but you would be surprised at the large number of people that I had to walk through compiling their kernel with the correct .config. It was hell. It was something that neither I nor they wanted to go through. I figured the problem would go away once I was integrated with kernel source.

    2) Late experimental stage. I had all the problems of the previous stage, but now the kernel API was changing under me so I had to put #ifdefs in to deal with it. I figured the problem would go away once I was integrated with kernel source.

    3) In the kernel. Yeah I made it into the kernel. Okay first it was the pcmcia package and then the kernel. But now I had to strip out all the #ifdefs because we don't want that cruft in the kernel, but I still had to maintain the #ifdefs for other kernels. So now I had all the previous problems, but now I had to make patches with and without the #ifdefs. I figured the problem would go aways once everyone moved to the new kernel.

    4) Firmware changes. Oh no! Cisco changed the firmware which changed a bit the I/O interface. Oh and look they are still changing the API in the kernel. So I can patch the new kernel code to support the new firmware, but I can't expect everyone to upgrade kernel just for my driver. (I wouldn't even do that because the XXXX driver doesn't work so well in the latest kernel.) Now I have even more problems to deal with including everything from before.

    5) Throwing in the towel. It became just too much of a time sink. Both sides of my driver was changing like mad (the hardware and the kernel API) and the poor users that were trying to make it all work with kernels that they wanted to use. All my time was being sucked up in maintaining the status quo and I couldn't work on anything new, so I turn the driver over to good hands and moved on.

    Now imagine how nice would be if in the experimental phase I could release the source and a binary for everyone to use. I wouldn't have to tweak and recompile for every new kernel. Anyone would be able to just grab the binary and use it if they wanted to. (Kinda like Windows... Ironically I use ndiswrapper for my new laptop with a broadcom driver and it rocks! I've used the same windows driver in linux for the past year across many versions of the kernel. It sucks that the windows network driver ABI is the only driver ABI that linux has.) If the firmware changed, I or anyone else could fix it and everyone could use it.

    Whether or not we Linux allows closed source drivers is orthogonal to an ABI. Technically you can write closed source drivers now and if you want to, you can prohibit closed source drivers with your new ABI.

  57. and people defrauds it by diegocgteleline.es · · Score: 5, Informative

    Linux is actually much better at this than windows - you can see what the kernel does. Microsoft's test suite means nothing, as explained by a (great) microsoft programmer: http://blogs.msdn.com/oldnewthing/archive/2004/03/ 05/84469.aspx

    "In a comment to one of my earlier entries, someone mentioned a driver that bluescreened under normal conditions, but once you enabled the Driver Verifier (to try to catch the driver doing whatever bad thing it was doing), the problem went away. Another commenter bemoaned that WHQL certification didn't seem to improve the quality of the drivers.

    Video drivers will do anything to outdo their competition. Everybody knows that they cheat benchmarks, for example. I remember one driver that ran the DirectX "3D Tunnel" demonstration program extremely fast, demonstrating how totally awesome their video card is. Except that if you renamed TUNNEL.EXE to FUNNEL.EXE, it ran slow again.

    There was another one that checked if you were printing a specific string used by a popular benchmark program. If so, then it only drew the string a quarter of the time and merely returned without doing anything the other three quarters of the time. Bingo! Their benchmark numbers just quadrupled.

    Anyway, similar shenanigans are not unheard of when submitting a driver to WHQL for certification. Some unscrupulous drivers will detect that they are being run by WHQL and disable various features so they pass certification. Of course, they also run dog slow in the WHQL lab, but that's okay, because WHQL is interested in whether the driver contains any bugs, not whether the driver has the fastest triangle fill rate in the industry.

    The most common cheat I've seen is drivers which check for a secret "Enable Dubious Optimizations" switch in the registry or some other place external to the driver itself. They take the driver and put it in an installer which does not turn the switch on and submit it to WHQL. When WHQL runs the driver through all its tests, the driver is running in "safe but slow" mode and passes certification with flying colors.

    The vendor then takes that driver (now with the WHQL stamp of approval) and puts it inside an installer that enables the secret "Enable Dubious Optimizations" switch. Now the driver sees the switch enabled and performs all sorts of dubious optimizations, none of which were tested by WHQL.


    (IOW: it doesn't guarantee stability or quality at all. It's just a false sense of "stability")

    1. Re:and people defrauds it by Hal_Porter · · Score: 2, Insightful

      Have you actually read the HCT test spec?

      http://www.microsoft.com/whdc/whql/resources/specs .mspx

      E.g for one of a real time virus checkers that layer over filesystem, they test things obscure filesystem features like defragmentation support, and oplocks and reparse points. Plus there is a 14 day stress test. And they update the test to catch common bugs. Of course a decent company will do this sort of thing, but in practice most companies will release undertested code if they are under pressure.

      So the HQL certification means that you run these tests. Then you fix the test failures and submit the log and binary to Microsoft and they sign the binary.

      It's not perfect - as the Raymond Chen post says, but it's a lot better than nothing. But the cool thing is it doesn't really need to be perfect, if the drivers are visibly unstable, people will stop buying the hardware and the company will go bust. Both NVidia and ATI hardware is rock solid with the latest drivers, so who cares if they cheat a bit with 3dmark and HQL.

      --
      echo -e 'global _start\n _start:\n mov eax, 2\n int 80h\n jmp _start' > a.asm; nasm a.asm -f elf; ld a.o -o a;
  58. Re:GO FOR IT by croddy · · Score: 2, Interesting

    In that case, I would prefer that you use some other OS and not try to influence the direction of Linux development. I am quite happy with the driver situation exactly as it is, and I am not interested in giving up any ground to closed-source drivers -- it is far better to have a choice of three wireless cards with open software than thirty with closed software.

  59. Maintaining device drivers by Skapare · · Score: 2, Interesting

    Let's see here. Manufacturers want us to create a kernel than allows them to infect and interfere with its integrity, reliability, performance, and security, just so they don't have to keep maintaining that driver as the design of the kernel continues to be improved? They want us to stagnate the design of the kernel so they can let us use their stagnant device drivers? And they want us to have a system that is no longer viably supported by staff or consultants, while they are most likely not ever going to provide system support (if they can't keep the driver maintained, how the hell are they going to provide support for an old driver)?

    I'd just stay away from their hardware.

    --
    now we need to go OSS in diesel cars
  60. Apple's KPI. Why not? by Stalin · · Score: 2, Interesting

    This is a legitimate question I have. Why not support a system like Apple introduced with their kernel in OS 10.4? When it comes to operating systems, I am just a user. I don't hack on them. So, I could be missing something in the whole "the drivers must be open source so that they can be included in the kernel and updated along with it" thing. I would like a clear explanation why doing things the current way is better than implementing a new system that supports binary drivers in a clean way.

    If you are not familiar with the "KPI" thing, here is a short summary from http://arstechnica.com/reviews/os/macosx-10.4.ars/ 4. I think it is a rather neat solution:

    "With Tiger, Apple is finally ready to put some kernel interface stakes in the ground. For the first time, there are stable, officially supported kernel programming interfaces (KPIs). Even better, there's an interface versioning mechanism and migration policy in place that will ensure that the pre-Tiger situation never happens again.

    From Tiger forward, kernel extensions will link against KPIs, rather than directly against the kernel. The KPIs have been broken down into smaller modules, so kexts can link against only the interfaces that they actually need to use.

    Each KPI has a well-defined life cycle made up of the following stages.

            * Supported - The KPI is source and binary compatible from release to release.
            * Deprecated - The interface may be removed in the following major release. Compiler warnings are generated on use.
            * Obsolete - It's no longer possible to build new kernel extensions using this KPI, but binary compatibility for existing kexts that use this KPI is still assured.
            * Unsupported - Kexts using this KPI will no longer work, period.

    The most significant part of this new system is that the kernel itself can and will change behind the scenes. KPIs will descend towards the "unsupported" end of the life cycle only as kernel changes absolutely demand.

    Best of all, multiple versions of a KPI can coexist on the same system. This allows a KPI to move forward with new abilities and a changed interface without breaking kernel extensions that link to the older version of the KPI. The expectation is that the kernel can undergo a heck of a lot of changes while still supporting all of the KPIs."

  61. Re:GO FOR IT by Draknor · · Score: 2, Informative

    Look, Linux is an operating system. It's supposed to operate and help people do their WORK. Adding philosophical crap on something as flat as "computers and operating systems", is just laughable. The best operating system is the one that WORKS with the smallest needed effort. Windows does that pretty well. If Linux needs special extra work and purchase of extra hardware, then it's not a good operating system (from a user's point of view). Users don't care about the source code. Users want a working machine and OS.

    You make some good points - but having a stable API/ABI doesn't resolve them.

    Right now, the Linux market doesn't seem to have enough pressure to force driver manufacturers to spend resources developing drivers for it. That's not going to change if Linux provides a stable driver API/ABI. What it will do is lower the barrier to providing a closed-source driver. Some may think that's a good thing, but there's enough evidence in this conversation & its links to suggest otherwise:
    1. If you let manufacturers produce a closed-source, binary driver, that's what they'll do.
    2. If they produce a closed-source, binary driver, it'll only work on a specific version of Linux, for a particular architecture, since binary compatibility depends upon the compiler & compiler options being used.
    3. Manufacturers still won't put more resources towards driver development, so you'll get a bunch of half-assed drivers with bugs that now live in kernel space, with the potential to crash your system (ala Windows BSOD)
    4. You also get a bunch of unknown binary code running on your system in kernel space, meaning security flaws in those products can now compromise your entire system. And then we can't fix kernel security bugs, because that might break binary compatibility.

    So, allowing binary drivers gives no real advantages over the long-term. Companies that care about Linux can and do produce Linux drivers. Companies that don't, won't. I see no advantage to making it easier to produce Linux drivers for companies that don't care about Linux - all that will do is give Linux a bad name as companies with faulty drivers pollute users' machines, and make it more difficult for kernel hackers to debug problems due to bad binary drivers.

  62. Re:Only one word by mrchaotica · · Score: 4, Insightful
    A stable binary kernel driver API would have the following effects:
    • There would be no incentive for companies to make their drivers Free Software
    • There would be no way to fix bugs in the drivers which would cause Linux to crash more often
    • There would be no way to verify that the drivers were free from security flaws (e.g. buffer overflows), nor would there be a way to check for malicious behavior (e.g. rootkits, like the Sony CD driver)
    • There would be greater vendor hardware support

    In other words, it would turn Linux into the same kind of piece of shit that Windows is, and defeat the entire purpose of using it!
    --

    "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

  63. LHQL / Driver development costs by bandannarama · · Score: 4, Insightful
    This is about cost. The manufacturers' request is perfectly reasonable, given their costs, and the kernel developers' concerns are perfectly valid given their costs.

    Initial costs associated with a manufacturer-supported driver:

    • Initial development against a specific kernel version. This is the item of least concern to the manufacturers.
    • Initial testing against some specific subset of officially supported distributions. Tweaks or rewrites to handle additional kernel versions. This is where the costs start to go up.
    • Corresponding documentation, release notes, etc.
    • Make driver available on company website (ongoing cost).
    • Put driver on the CD in the box (include documentation on which releases it was tested against)

    Ongoing costs associated with a manufacturer-supported driver:

    • Development and test resources to check compatibility with subsequent kernel versions.
    • Test resources to check compatibility with subsequent specific officially supported distributions.
    • Update documentation for any changes.
    • Update website with updated versions. Handle support calls from confused users.
    • Slipstream CD in the box with updated versions.

    These costs exist even if a version of the driver is merged into the mainline kernel. The only problem solved by such source-level merging is compatibility with the latest kernel version. It is not acceptable to the manufacturers' customers to be required to update to the latest kernel/distribution to be able to use the device.

    Here's the key point: If there is no binary interface between the driver and the kernel, all of the above costs skyrocket. You have M kernel versions against N distributions, with the total increasing over the life of the product. If there is a binary interface guarantee from the kernel development team to change only very slowly and only extremely rarely breaking compatibility -- like the guarantee Windows provides -- then the incremental costs are containable. It is reasonable to expect that 95% of their testing on 2.6.5 is valid on 2.6.14.

    The perfectly reasonable response from kernel developers is that with closed-source drivers they get stuck debugging problems that are't kernel-related (I don't hold ideology to be economically significant so I'll ignore it here, without insult to people's strong opinions on the subject). Their proposed solution is to require the driver's source before they'll help with the debugging.

    From the manufacturers' point of view that's a very draconian requirement. They are justifiably concerned about intellectual property (availability of the source makes it much easier for competitors to reverse-engineer the hardware/firmware). Surely there must be a middle ground. Is there some way to have a relationship between the device manufacturers and the kernel developers that minimizes everyone's costs?

    I think there is. Note that all of the above costs and issues are just as valid in the Windows world as in the Linux world. Microsoft doesn't want to deal with bad drivers crashing their systems, costing them both development/debugging time and reduced perceived stability (--> lower sales). Their solution is the Windows Hardware Quality Lab (WHQL).

    The WHQL is a separate entity from Microsoft. Device manufacturers are required to submit their driver source (effectively under NDA) along with their device. The WHQL staff runs the driver through a battery of tests, probably mostly automated. If the device and driver meet stability standards set by Microsoft, the driver is signed by WHQL. Windows checks for this signature at installation time and warns the administrator if it is not present. Microsoft can reasonably refuse to support non-WHQL-signed drivers when crashes occur, for exactly the same reasons that Linux kernel developers refuse to support drivers without the source. This system has been the single most important factor in Windows' significan

    --
    Bandannarama
  64. What OSS is all about!!! by mabhatter654 · · Score: 2, Informative
    Lest we forget the history of the GPL, you'd understand that the whole reason RMS helped start the FSF was because of proprietary drivers!!! His pivotal moment came when he was a professor and wanted code for a mainframe printer that was "obsoleted" by the manufacturer. He had a perfectly good printer, but the server was upgraded and the company wanted them to buy a new one rather than support it.. so much that they wouldn't offer the source code to an MIT professor!!

    Open Source drivers are the cornerstone of OSS... because if you can't see how something works, or even HOW to make it work then you have nothing but a plastic box on your desk. The point is that you paid for the device, printer, video card, cpu, so you should have to have anybody's permission telling you how or when you can use it.

    While I'd like proprietary drivers too, some stuff is patented or secret and they don't want to share it, offically it will never happen... Linus's view is that he can't fix things if he can't see them.. and he's not going to sign a bunch of NDAs just for drivers, he's too busy. Nor, can he gaurantee what the kernel is doing if you're running a bunch of "secret" stuff that could be doing "god-knows-what" behind your back!

  65. Re:Untrusted computing by ardor · · Score: 2, Insightful

    Then tell us how they should solve IP issues connected with the knowledge resting in the driver. Tell us how ATI and nVidia should handle this. More and more functionality is in the driver nowadays, and the IP in there is littered with patents, royalties, licenses.... and there is also the fact that the drivers often contain company secrets, so better forget about the idea of companies putting their stuff as open source.

    --
    This sig does not contain any SCO code.
  66. Re:GO FOR IT by croddy · · Score: 2, Insightful
    Users don't care about the source code. Users want a working machine and OS.

    When the source code is available for modification, *everyone* benefits, whether they're reading it, hacking it, or just using precompiled binaries. When I need something new in software, I may not be able to code it myself, but I can put it in bugzilla, where others in the community can discuss it, assign it, and eventually implement it.

    Of course the process is not perfect. It is a human process. That is part of its appeal -- the community supports its own software, rather than relying on a company to pump out binaries... who may not be around next week.

    There is nothing elitist about saying that I am perfectly satisfied with what Linux provides, and there is nothing wrong with valuing the freedom that its open nature gives to all users -- remember, those freedoms benefit them whether they read the code or not.

    From this user's point of view, the extra freedom, stability, and community that Linux provides are well worth the wide selection of ordinary hardware -- at ordinary prices -- that I choose to run it on. For me, the value of an operating system is that it provides a platform which offers freedom to me and to my community while we do our work. Putting off-brand generic wireless cards with quick-hacked binary-only drivers into a system does not help me do my work -- even on "supported" systems, that has usually just given me a headache and required a trip back to the shop -- and it would probably force some compromises in the freedom we value.

    For you, it seems that an operating system is nothing more than a collection of software to be used unmodified and unexamined, while you do other tasks, without the need for a community to support you if you need to change it. Those needs are perfecly valid, and perfectly incompatible with the Free Software movement. I would be happy to help you select and purchase such a system from one of the many vendors who will sell it to you. You'll be able to plug cheap hardware with crashy drivers into it 'til your heart's content. For support, you'll be able to call the company, whom you'll soon find have invested even less in support than they did in the cheap hardware.

    And if your needs should change, our community will still be here, and we'll be glad to help you find a system that meets them.

  67. where you miss by ImaLamer · · Score: 3, Interesting

    There is one thing you all keep leaving out about certified drivers:

    Without them you aren't guaranteed support from Microsoft.

    If you are running machines with all certified drivers and WMI/MSI installed applications then Microsoft will be right there with you until the problem is solved. You won't find it written anywhere but Microsoft gurantees that you're machine will not crash (BSOD) if you use certified drivers and MSI installed software. At home this isn't possible, but in some environments it is possible (and a good idea in other places).

    In a way you are locked in to what Microsoft has approved, but if they've approved it then the problem is theirs to fix - not yours. Good luck meeting those two requirements, but if you can: hold them to it.

  68. Re:*I* have an idea! by Chuckstar · · Score: 4, Interesting

    I know you're joking, but how about this for an idea:

    A hybrid kernel. Open source drivers are compiled into the kernel. There is a API for closed-source drivers to run in user-space.

    Does not violate GPL.
    Little compromise to stability.
    Developers who only want to do closed-source drivers can do so.
    Developers have incentive to open source their drivers in order to have better performance and take advantage of newer kernel features (the internal APIs are updated with the kernel, the external APIs stay fixed and fall behind the feature curve).

    Win.
    Win.
    Win.

    Unless its just a philosophical question, in which case ... rant away open source crazies. ;)

  69. Re:GO FOR IT by croddy · · Score: 2, Interesting
    Your list of technologies and dates is marginally impressive -- but I do not see how it relates to the issue at hand.

    Since the Linux community has clearly not provided a system that matches your needs, I will again ask that you do not attempt to interfere in its development by advocating changes that could end up dumping binary drivers on us. We do not want them. We do not want what they will bring to our system.

    I am glad your experience with Windows XP has been so positive. Hopefully you will continue to use it rather than attempt to subvert the Open Source movement with your incompatible agenda.

  70. Linux (and others!) should embrace Project UDI... by Deven · · Score: 2, Interesting

    I'm glad I'm not the only one who recognizes that Project UDI would benefit Linux and free software developers in general. Isn't it obvious that every time someone successfully standardizes open interfaces, major leaps in productivity follow?

    Without open standards, the Internet would not exist. Various proprietary networking standards (Novell Netware, IBM channel architecture, Banyan Vines, etc.) used to work in their own isolated worlds, rarely speaking to each other. And people generally thought that was okay, because that's how it had always had been, and look how well each one works in its own little world! Similarly, email systems were proprietary and incompatible. Then along comes TCP/IP, SMTP and other open Internet protocols, and the world is transformed. Suddenly, everything can talk to everything, and with the 20/20 benefit of hindsight, it's clear to all how much better it is with the Internet than it was with all those proprietary islands.

    Many implementations of the Internet protocols were proprietary and it didn't matter. There were always both free and proprietary implementations of the Internet protocols, but the important thing was that they all agreed on the same standards and (more or less) followed them, which bridged all those little proprietary islands into this wondrous whole we have today, where virtually any networked device is capable of communicating with any other. What mattered was that the standard was open, no matter how many of the implementations were proprietary. (And, of course, natural evolution tends to favor the extinction of most of the proprietary systems in favor of free software whenever such competition occurred, especially since vendor lock-in fails when customers demand conformance with open standards.)

    The computer industry is starting to realize that XML, like TCP/IP, can bridge proprietary islands. Look at the number of legacy systems, interfaces, protocols and file formats which are being interfaced with XML to achieve at the application level what TCP/IP achieved at the networking level. Legacy systems, proprietary systems and even free systems, each with its own way of doing things, can suddenly be made to talk to each other in a robust, loosely-coupled fashion which was unfathomable just a decade or two ago. This process appears to be well on the way to revolutionizing the computer industry yet again.

    Operating systems and device drivers are full of proprietary islands just waiting to be bridged, and it could revolutionize operating systems as much as TCP/IP revolutionized computer networking. Not all of these proprietary islands are "proprietary" in the closed-source sense -- many are also free-software islands which are "proprietary" in the "only works with this system" sense. Just in the domain of free software, there are countless little proprietary islands between various versions of Linux, FreeBSD, OpenBSD, NetBSD, Dragonfly BSD, Darwin, HURD, etc. These aren't "proprietary" as Stallman uses the term, but just try to take a random device driver from one of these random islands and dump it on another at random and see how likely it is to work without changes. Then, of course, there are also the truly proprietary systems such as Windows.

    Bridging all those islands would benefit free software immensely, regardless of whether or not proprietary closed-source vendors jump on the bandwagon. Imagine if every device driver only needed to be implemented once to a common API, and it worked without source code changes on every operating system that supports that API? That's exactly the promise that Project UDI holds for operating systems and device drivers, and it's as revolutionary as the promise of TCP/IP.

    The Internet wouldn't be where it is today without free software, yet free software wouldn't be where it is today without the Internet! This seems like a conundrum -- a chicken-and-egg problem. Actually, it's a truly symbiotic relationship, and it

    --

    Deven

    "Simple things should be simple, and complex things should be possible." - Alan Kay

  71. Re:This is why I don't write device drivers for Li by justins · · Score: 2, Insightful
    Note that Windows pulls the same sort of API changing crap that Linux does.

    No, they don't, unless you are putting Windows XP and Windows 95 in the same category. Just about any Windows 2000 driver will work on any version through service pack 4, but with Linux I need to recompile my drivers whenever a minor version number changes. Joy.
    --
    Now before I get modded down, I be to remind whoever might read this that what I am saying is FACT. - bogaboga
  72. Userspace v. kernelspace. by Grendel+Drago · · Score: 2, Informative

    Why do we still have to have a user program (X) with device drivers in it? (Would anybody think it's a good idea if the Linux kernel didn't have any sound drivers, and required gstreamer to implement its own?)

    That's not exactly a legit comparison. gstreamer is an application; X may run in userspace, but it's part of the system in the same way udev is; it's not in the kernel because it doesn't have to be.

    It seems we have two competing driver models in Linux: some are in the kernel, and provide a consistent interface (sound cards, SCSI/IDE/... cards, network cards), and some aren't in the kernel at all, but expose them at a low level and rely on userspace programs to provide actual drivers (X11 for video cards, CUPS for printers).

    Not exactly. For instance, CUPS may have printer drivers, but it relies on the USB, parport or network communications exported by the printer. There's no compelling reason for it to be in the kernel, since those drivers don't talk directly to the hardware in the same sense that the port drivers do.

    Or consider gphoto. The port drivers are part of the kernel, but the camera drivers are in userspace--because there's no compelling reason to put them in the kernel, since there's nothing in there they need.

    So that's my understanding of why X or CUPS or gphoto have their drivers in userspace, while sound drivers and port drivers are in the kernel.

    --
    Laws do not persuade just because they threaten. --Seneca
  73. Re:Crossbar? by AKAImBatman · · Score: 2, Informative

    In theory, it could be a single port that the driver crams all requests and data into and the GPU does whatever it wants and hands any return data back on a second port, although there are obvious thoroughput problems there.

    Oh Lord. Save me from the ignorant. Hardware systems are NOT that easy to design. The GPU doesn't do JACK other than crunch some numbers, and it's already one of the most complicated devices in existence! (Primarily thanks to the complex pipeline designs, the number of parallel pipelines, and the microcode space and execution hardware carried on chip and intertwined with each pipeline.) ALL the real work is in the software. The hardware just executes its instructions. If you tried to cram all the work the software is doing into the hardware, you'd have something more complex than the latest Pentium and NVidia GPU combined. Not to mention that you'd never be able to increase performance through driver updates.

    And you need to be careful with your concepts of Ports. Bus design is tricky business and can easily bottle up the entire computing platform if you're not careful. Many commands on one bus is something you see more of in general purpose computing where the raw performance isn't an issue. In the case of a GPU, raw performance IS an issue, and the software directly controls the entire bus + the GPU.

    What the hell are you talking about? I wasn't complaining about GPUs or CPUs.

    That's because you have no idea what you're talking about. The hardware doesn't do video processing. I don't know how many times I'm going to have to repeat that. It's all software, and it's all trying to compile the instructions, reorder them, JIT microcode, parallelize the data, and do other complex optimizations that will actually feed the computations into the GPU. The GPU spits out an answer that ends up in VRAM. How nice.

    And, before you ask, I do indeed program, although admittedly it's been a decade since any assembly language.

    No offense, but ASM is way off in left field. We're talking hardware design here. And the only way to truly understand hardware (including the software that drives it and WHY it drives it that way) is to go design some yourself. Unlike yourself, I've actually taken the time to do so, and now understand why things are the way they are. I'm not sure how I can get this through your skull, but complex hardware is HARD and EXPENSIVE. It never makes sense to use hardware when software will do the job just as effectively (or in this case, more so).

    When it does make sense is when you're trying to accelerate very specific and abstract mathematical operations. e.g. Matrix math can be easily accelerated in hardware. Drawing a line on the screen? Not so much. If you want to accelerate something like drawing a line, you'll want to use Microcode. Microcode is tiny software that loads up and executes on the CPU itself. Microcode is pretty micro though, so it can only go so far. To do something more complex, (say, draw a shape with those lines) you want to bump it up to software. The on-chip cache will keep the code running smoothly inside the chip so that the software isn't constantly crossing the bus during the operations. Thus you end up with software that drives the hardware.

    Now imagine that you had software that waited until you had drawn all the objects with lines, then sorted them to figure out which ones get drawn in what order, removes any lines that are hidden, checks which lines can be drawn in parallel because they don't cross, then does a final reordering of the line drawing commands so that the hardware can draw four lines simultanousously (complicated by the fact that some lines are shorter than others, and will take fewer cycles to complete). That is what your big blob of "useless" software is doing.

    If you think there's a better way this stuff can work, then by all means. Go design some hardware and show the world. (It's not that hard to get started. Really.) In the meantime, though, just be quiet. You're making yourself look bad.

  74. We should all be supporting Project UDI. (summary) by Deven · · Score: 2, Insightful
    That's why hardware manufacturers would like to see specifications like UDI and NDIS followed. Unfortunately, those wonderful software people who are apparently so much better at this stuff have decided that they don't need anything as passe as a cross-platform driver API. Mr. Stallman is leading the charge on this one. Personally, I think he's stuck on stupid, but that's just me.
    Isn't it obvious that every time someone successfully standardizes open interfaces, major leaps in productivity follow?

    • Without open standards, the Internet would not exist.
    • Many implementations of the Internet protocols were proprietary and it didn't matter.
    • The computer industry is starting to realize that XML, like TCP/IP, can bridge proprietary islands.
    • Operating systems and device drivers are full of proprietary islands just waiting to be bridged, and it could revolutionize operating systems as much as TCP/IP revolutionized computer networking.
    • Bridging all those islands would benefit free software immensely, regardless of whether or not proprietary closed-source vendors jump on the bandwagon.
    • The Internet wouldn't be where it is today without free software, yet free software wouldn't be where it is today without the Internet!
    • Project UDI could revolutionize free operating systems, but only if it is adopted as thoroughly as the Internet was.
    • Vendor-supplied UDI drivers would probably be less likely to be closed-source than people fear.
    • UDI drivers could (and should) be developed and distributed independently of OS kernels.
    • Adopting UDI would eliminate massive duplications of effort.
    • UDI is the best hope for the HURD, and would stimulate innovative competition between developers of various free operating systems.
    • The free software community should broadly adopt and embrace UDI out of self-interest, without regard to the behavior of proprietary companies.
    • This is a situation that calls for vision and foresight, not hindsight.
    • We've already lost years of the potential benefits of UDI -- let's not lose them entirely!
    • Ironically, this would be a perfect opportunity to turn the tables on the proprietary companies and benefit from their efforts!
    • The member companies of Project UDI should not be viewed as parasites in this matter.
    • Microsoft does not stand to benefit from Project UDI.
    • We should all be supporting Project UDI.

    See the long version of this post for expanded discussion of these points...

    [By the way -- AKAImBatman, please send me some email, I'd like to chat with you further about Project UDI...]
    --

    Deven

    "Simple things should be simple, and complex things should be possible." - Alan Kay