CINXE.COM
LKML: Arjan van de Ven: Linux in a binary world... a doomsday scenario
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>LKML: Arjan van de Ven: Linux in a binary world... a doomsday scenario</title><link href="/css/message.css" rel="stylesheet" type="text/css" /><link href="/css/wrap.css" rel="alternate stylesheet" type="text/css" title="wrap" /><link href="/css/nowrap.css" rel="stylesheet" type="text/css" title="nowrap" /><link href="/favicon.ico" rel="shortcut icon" /><script src="/js/simple-calendar.js" type="text/javascript"></script><script src="/js/styleswitcher.js" type="text/javascript"></script><link rel="alternate" type="application/rss+xml" title="lkml.org : last 100 messages" href="/rss.php" /><link rel="alternate" type="application/rss+xml" title="lkml.org : last messages by Arjan van de Ven" href="/groupie.php?aid=30634" /><!--Matomo--><script> var _paq = window._paq = window._paq || []; /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ _paq.push(["setDoNotTrack", true]); _paq.push(["disableCookies"]); _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { var u="//m.lkml.org/"; _paq.push(['setTrackerUrl', u+'matomo.php']); _paq.push(['setSiteId', '1']); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); })(); </script><!--End Matomo Code--></head><body onload="es.jasper.simpleCalendar.init();" itemscope="itemscope" itemtype="http://schema.org/BlogPosting"><table border="0" cellpadding="0" cellspacing="0"><tr><td width="180" align="center"><a href="/"><img style="border:0;width:135px;height:32px" src="/images/toprowlk.gif" alt="lkml.org" /></a></td><td width="32">聽</td><td class="nb"><div><a class="nb" href="/lkml"> [lkml]</a> 聽 <a class="nb" href="/lkml/2005"> [2005]</a> 聽 <a class="nb" href="/lkml/2005/12"> [Dec]</a> 聽 <a class="nb" href="/lkml/2005/12/5"> [5]</a> 聽 <a class="nb" href="/lkml/last100"> [last100]</a> 聽 <a href="/rss.php"><img src="/images/rss-or.gif" border="0" alt="RSS Feed" /></a></div><div>Views: <a href="#" class="nowrap" onclick="setActiveStyleSheet('wrap');return false;">[wrap]</a><a href="#" class="wrap" onclick="setActiveStyleSheet('nowrap');return false;">[no wrap]</a> 聽 <a class="nb" href="/lkml/mheaders/2005/12/5/32" onclick="this.href='/lkml/headers'+'/2005/12/5/32';">[headers]</a>聽 <a href="/lkml/bounce/2005/12/5/32">[forward]</a>聽 </div></td><td width="32">聽</td></tr><tr><td valign="top"><div class="es-jasper-simpleCalendar" baseurl="/lkml/"></div><div class="threadlist">Messages in this thread</div><ul class="threadlist"><li class="root"><a href="/lkml/2005/12/5/32">First message in thread</a></li><li class="origin"><a href="/lkml/2005/12/5/40">Arjan van de Ven</a><ul><li><a href="/lkml/2005/12/5/40">Dave Airlie</a><ul><li><a href="/lkml/2005/12/5/74">Xavier Bestel</a></li><li><a href="/lkml/2005/12/8/103">Graham Murray</a></li></ul></li><li><a href="/lkml/2005/12/5/49">William Lee Irwin III</a><ul><li><a href="/lkml/2005/12/5/57">Pekka Enberg</a><ul><li><a href="/lkml/2005/12/5/162">Alistair John Strachan</a><ul><li><a href="/lkml/2005/12/5/197">Gene Heskett</a></li><li><a href="/lkml/2005/12/6/62">Luke-Jr</a></li><li><a href="/lkml/2005/12/6/408">William Lee Irwin III</a></li></ul></li><li><a href="/lkml/2005/12/6/206">Jon Masters</a></li></ul></li><li><a href="/lkml/2005/12/5/343">Andrea Arcangeli</a><ul><li><a href="/lkml/2005/12/5/375">Brian Gerst</a><ul><li><a href="/lkml/2005/12/5/381">Andrea Arcangeli</a></li><li><a href="/lkml/2005/12/6/43">Dirk Steuwer</a></li><li><a href="/lkml/2005/12/6/171">Pavel Machek</a></li><li><a href="/lkml/2005/12/7/158">Rik van Riel</a></li><li><a href="/lkml/2005/12/8/23">Andrew McGregor</a></li></ul></li><li><a href="/lkml/2005/12/6/34">Arjan van de Ven</a><ul><li><a href="/lkml/2005/12/7/250">Rik van Riel</a></li></ul></li><li><a href="/lkml/2005/12/6/105">Denis Vlasenko</a><ul><li><a href="/lkml/2005/12/6/183">Hannu Savolainen</a></li><li><a href="/lkml/2005/12/7/291">Geert Uytterhoeven</a></li></ul></li><li><a href="/lkml/2005/12/6/212">Jon Masters</a></li></ul></li></ul></li><li><a href="/lkml/2005/12/5/122">Jeff Garzik</a><ul><li><a href="/lkml/2005/12/5/133">Jan-Benedict Glaw</a><ul><li><a href="/lkml/2005/12/5/265">Bernd Petrovitsch</a></li><li><a href="/lkml/2005/12/6/16">Rob Landley</a></li></ul></li></ul></li><li><a href="/lkml/2005/12/5/152">Andrew Walrond</a><ul><li><a href="/lkml/2005/12/5/154">Arjan van de Ven</a><ul><li><a href="/lkml/2005/12/5/205"> jmerkey@ns1 ...</a></li><li><a href="/lkml/2005/12/6/44">"Alexander E. Patrakov"</a></li><li><a href="/lkml/2005/12/6/194">Simon Oosthoek</a><ul><li><a href="/lkml/2005/12/6/259">Luke-Jr</a></li></ul></li></ul></li><li><a href="/lkml/2005/12/5/240">David Woodhouse</a><ul><li><a href="/lkml/2005/12/5/244">Arjan van de Ven</a><ul><li><a href="/lkml/2005/12/5/258">David Woodhouse</a></li></ul></li></ul></li></ul></li><li><a href="/lkml/2005/12/5/284">Matthieu CASTET</a><ul><li><a href="/lkml/2005/12/6/120">Ralf Baechle</a></li></ul></li><li><a href="/lkml/2005/12/5/380">Andre Hedrick</a></li><li><a href="/lkml/2005/12/6/111">Rudolf Randal</a><ul><li><a href="/lkml/2005/12/6/164">Mark Lord</a></li></ul></li><li><a href="/lkml/2005/12/6/193">Jon Smirl</a><ul><li><a href="/lkml/2005/12/6/195">Florian Weimer</a><ul><li><a href="/lkml/2005/12/7/111">Helge Hafting</a><ul><li><a href="/lkml/2005/12/7/117">Alan Cox</a></li><li><a href="/lkml/2005/12/7/194">Jon Smirl</a></li></ul></li><li><a href="/lkml/2005/12/7/198">Lars Marowsky-Bree</a></li></ul></li><li><a href="/lkml/2005/12/7/321">Chase Venters</a><ul><li><a href="/lkml/2005/12/7/374">Alan Cox</a><ul><li><a href="/lkml/2005/12/7/389">Jon Smirl</a></li></ul></li></ul></li></ul></li></ul></li></ul></td><td width="32" rowspan="2" class="c" valign="top"><img src="/images/icornerl.gif" width="32" height="32" alt="/" /></td><td class="c" rowspan="2" valign="top" style="padding-top: 1em"><table><tr><td><table><tr><td class="lp">Subject</td><td class="rp" itemprop="name">Linux in a binary world... a doomsday scenario</td></tr><tr><td class="lp">From</td><td class="rp" itemprop="author">Arjan van de Ven <></td></tr><tr><td class="lp">Date</td><td class="rp" itemprop="datePublished">Mon, 05 Dec 2005 11:52:32 +0100</td></tr></table></td><td></td></tr></table><pre itemprop="articleBody">Linux in a binary world<br /><br /><br />What if.. what if the linux kernel developers tomorrow accept that<br />binary modules are OK and are essential for the progress of linux. <br /><br />a hypothetical doomsday scenario by Arjan van de Ven<br /><br />the primary assumption in this scenario is obviously not going to<br />happen, but all assumptions that follow are based things that are true<br />in some form or another, but of course the names of the "innocent" have<br />been omitted.<br /><br /><br /><br /><br />On December 6th, 2005 the kernel developers en mass decide that binary<br />modules are legally fine and also essential for the progress of linux,<br />and are as such a desirable thing. At first, the development process of<br />the linux kernel doesn't change much other than a bunch more symbols<br />getting exported, and EXPORT_SYMBOL_GPL removed.<br /><br />Within 3 weeks, distributions like Red Hat Enterprise Linux and SuSE's<br />SLES distribution start to include a wide variety of binary modules on<br />their installation CDs. Debian renounces this and stays pure to the<br />cause, as do other open distributions like Fedora Core and openSuSE. <br /><br />The enterprise distros don't just NVidias and ATIs modules, but include<br />all the OEM vendor "fakeraid" modules and the various wireless,<br />winmodem, windsl and TCP-offloading modules as well,. However, unlike<br />NVidia and ATI, most of the binary driver vendors do not provide their<br />drivers in a "glue layer" source form, they provide only the final<br />binaries.<br /><br />Several hardware vendors that have been friendly to open source so far,<br />see their competitors ship only binary drivers, and internally they<br />start to see pressure to also keep the IP private, and they know that<br />they haven't used some features of the hardware because their legal<br />department didn't want that IP in the public. As a result they perceive<br />their competitors binary drivers to be at a theoretical advantage, or at<br />least their own drivers could be at an advantage if they were also<br />closed, because they then can use those few extra features to be ahead<br />of the competition. By February 1st 2006, about half the hardware<br />vendors have refocused their internal linux driver efforts to create<br />value adds in the binary drivers they will release in addition to the<br />open drivers that already exist. Some vendors even openly stopped<br />supporting the open drivers because they don't have enough resources<br />to do both.<br /><br />March 1st. All the new server lines from the top tier hardware vendors<br />come out with the next generation storage and network hardware. This<br />hardware comes with binary drivers for the last 2 versions of RHEL and<br />SLES distributions, and these drivers are already integrated into the<br />February refreshes of these distributions. One of the storage vendors<br />releases their driver in a .o + glue layer format, the others doesn't<br />bother and only releases binaries for these two distributions. Two of<br />the network card manufacturers release an update for their open source<br />driver to minimally support the new cards, the others don't. Consumer<br />hardware is largely unaffected; most consumer chipsets standardize on<br />AHCI for SATA storage and keep the existing feature sets in networking<br />chipsets.<br /><br />April 1st. 2 of the consumer chipset makers have upgraded their chipsets<br />to include a new and exciting audio feature that enables enhanced DVD<br />playback, but unfortunately this caused them to deviate from the<br />'standard' i810 audio hardware interface. One of them releases a binary<br />driver for a handful of distributions, the other doesn't consider linux<br />relevant for the desktop and hasn't bothered to do a linux driver yet.<br /><br />May 1st All of the server class hardware you can buy requires at least<br />one but usually 2 or 3 binary modules to operate. While some of these<br />modules are available in blob+glue form, several are only available for<br />RHEL3, RHEL4 and SLES9 and sometimes the newly released SLES10. Linux<br />users will have the choice of 4 kernels for these servers at this time,<br />but no hope to run a kernel.org kernel on these servers. The Ubuntu<br />people are very upset and are trying hard, with varying success, to get<br />drivers available for their distribution. Due to this lobby success,<br />about 50% of the servers can be used with the Ubuntu kernel as well.<br /><br />June 1st. A huge flamewar, the fourth on this topic since January,<br />happens on the linux-kernel mailing list. Users and some developers are<br />demanding that the kernel.org kernel adopts either the existing RHEL or<br />the SLES module ABI. Investigation shows that this is not possible, and<br />the thread turns into a discussion on designing a new ABI versus<br />freezing the existing one. Many kernel developers feel that the existing<br />ad-hoc ABI is not suitable for freezing and that a new ABI and API,<br />designed such that it can be kept stable more easily is the way to go,<br />while others say that this takes too much time and then won't help for<br />the next 2 years until RHEL and SLES have adopted this ABI, and at least<br />demand an immediate freeze of the kernel.org ABI so that the upcoming<br />RHEL5 release maybe uses it, and thus gets drivers written for it. Users<br />generally use RHEL or SLES for production servers, and clones like<br />CENTOS which have released binary compatible kernels.<br /><br />July 1st. It's increasingly hard to run linux without binary modules on<br />most new consumer PCs. While a year earlier people would have to give up<br />3D acceleration for this often, now even 2D doesn't work without binary<br />drivers, nor does networking (both fixed wire or wireless) or sound. For<br />half the machines there is not enough linux support available at all,<br />while 20% use ndiswrapper like translation layers to run the Windows<br />sound and networking drivers. The Debian project, unable to run on most<br />machines now, is losing massive amounts of users to Ubuntu and<br />Ubuntu-Debian hybrids. Debian-legal and various other project lists are<br />impossible to read by people not interested in this particular<br />flame-topic. Most of the vendors who kept their open source drivers at<br />least somewhat updated have basically stopped doing so.<br /><br />July 14th. Linus declares the kernel ABI stable but also splits off a<br />2.7 kernel and declares that the 2.8 kernel will have a different ABI.<br />In practice, only people who held on to their old machines can assist in<br />the 2.7 development, since none of the vendor drivers, not even the ones<br />who still have a blob+glue construct care about the 'too rapid' moving<br />development tree. <br /><br />August 21st. A serious security flaw is found in the 2.6 series, which<br />turns out to be a design flaw in a key sysfs API. Fixing this flaw would<br />require to break the module ABI and practically all modules out there,<br />while not fixing this flaw leaves a potential roothole open. A quick fix<br />is made available under a CONFIG_ option, but users who need binary<br />drivers have no choice but leave their systems vulnerable. Flamewars on<br />lkml flare up again that say Linus made a mistake in freezing the<br />existing ABI rather than creating a new one designed to be frozen. 2.7<br />development has mostly stagnated and a patch is proposed to have 2.7<br />have the 2.6 ABI again, reverting several key VM subsystem improvements<br />and Ingo's realtime patches.<br /><br />August 26th. A precooked exploit for the security hole hits bugtraq, and<br />has been sighted in the wild as used by various rootkits. A php exploit<br />uses it to go from the httpd user to root. Users are putting pressure on<br />module vendors to release modules for the new ABI, and several actually<br />do so in the next three weeks. Others, mostly in the consumer area, say<br />that the hardware in question is no longer sold and that they aren't<br />going to spend any time or effort on drivers for it.<br /><br /><br /><br /><br /><br /><br />Now this scenario may sound unlikely to you. And thankfully the main<br />assumption (the December 6th event) is extremely unlikely. <br /><br />However, and this unfortunately, several of the other "leaps" aren't<br />that unlikely. In fact, some of these results are likely to happen<br />regardless; witness the flamewars on lkml about breaking module API/ABI.<br />Witness the ndiswrapper effect of vendors now saying "we support linux<br />because ndiswrapper can use our windows driver". I hope they won't<br />happen. Some of that hope will be idle hope, but I believe that the<br />advantages of freedom in the end are strong enough to overcome the<br />counter forces. <br /><br /><br />-<br />To unsubscribe from this list: send the line "unsubscribe linux-kernel" in<br />the body of a message to majordomo@vger.kernel.org<br />More majordomo info at <a href="http://vger.kernel.org/majordomo-info.html">http://vger.kernel.org/majordomo-info.html</a><br />Please read the FAQ at <a href="http://www.tux.org/lkml/">http://www.tux.org/lkml/</a><br /><br /></pre></td><td width="32" rowspan="2" class="c" valign="top"><img src="/images/icornerr.gif" width="32" height="32" alt="\" /></td></tr><tr><td align="right" valign="bottom"> 聽 </td></tr><tr><td align="right" valign="bottom">聽</td><td class="c" valign="bottom" style="padding-bottom: 0px"><img src="/images/bcornerl.gif" width="32" height="32" alt="\" /></td><td class="c">聽</td><td class="c" valign="bottom" style="padding-bottom: 0px"><img src="/images/bcornerr.gif" width="32" height="32" alt="/" /></td></tr><tr><td align="right" valign="top" colspan="2"> 聽 </td><td class="lm">Last update: 2005-12-05 11:55 聽聽 [from the cache]<br />漏2003-2020 <a href="http://blog.jasper.es/"><span itemprop="editor">Jasper Spaans</span></a>|hosted at <a href="https://www.digitalocean.com/?refcode=9a8e99d24cf9">Digital Ocean</a> and my Meterkast|<a href="http://blog.jasper.es/categories.html#lkml-ref">Read the blog</a></td><td>聽</td></tr></table><script language="javascript" src="/js/styleswitcher.js" type="text/javascript"></script></body></html>