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 really doesn't matter that there are parasites who undeservedly benefit from the Internet or from free software -- because the benefits of this symbiosis are so immense as to dwarf the significance of those parasites. The Internet protocols became so widely adopted because of the free availability of BSD code implementing those protocols, and because the code could be "stolen" by the parasites for their own use. But even the parasites did some good, because they strengthened the Internet and made it more indispensible, even while they were taking from free software without directly giving back. And when the Internet became ubiquitous, the collaborative benefits of open and efficient communication between disparate developers increased the productivity of free software developers exponentially, giving rise to the Linux phenomenon.
Project UDI could revolutionize free operating systems, but only if it is adopted as thoroughly as the Internet was. Consider this -- would anyone even think of trying to create a new free operating system (or a proprietary one for that matter) without supporting TCP/IP as a fundamental design choice? Of course not! Because everyone can see (in hindsight) the tremendous value of the Internet. Now suppose it was equally unthinkable not to support UDI in an operating system -- what would be the result? Every hardware vendor would create UDI drivers to cover a vast market with minimal effort. Even if you assume the worst case, that all of these vendor drivers will be closed-source proprietary drivers, it still means that all of the free software community could focus on writing one UDI driver, instead of a Linux driver, a FreeBSD driver, a HURD driver, etc. But they'd have the benefit of being able to observe the proprietary driver in a highly-constrained environment -- and highly-instrumented UDI environments designed to make it easy to reverse-engineer proprietary drivers would probably be created for this purpose.
Vendor-supplied UDI drivers would probably be less likely to be closed-source than people fear. For one thing, the portability promises of UDI only apply at the source code level. Yes, for operating systems that share common architectures and load file formats, UDI intends for the binary ABI to be stable, but the only guarantee is that the source can be compiled, without modification, to run on any platform with a UDI environment. This gives an immediate incentive, on day one, for any vendor to release the source code of a UDI driver -- and even if they don't grant permission to make derivative works, the availability of source would make clean-room reverse engineering that much easier.
UDI drivers could (and should) be developed and distributed independently of OS kernels. Why should a download of the Linux kernel need to include thousands of drivers, most of which a given user would have no need for? It would be much more efficient to have a central CPAN-like archive of UDI drivers and for the user to download just the drivers of interest. And if everyone supported UDI, each of those drivers could be downloaded and used just as easily on FreeBSD or the HURD, not just Linux. Most importantly, kernel developers could focus on kernel development and driver developers could focus on driver development, allowing both to be more efficient.
Adopting UDI would eliminate massive duplications of effort. Not only are drivers for the same hardware being developed over and over again for various operating systems, but existing drivers must be updated to account for kernel changes on a routine basis. This is a maintenance burden which carries a significant cost. All that developer time isn't free, even if they're not getting paid for the work -- every hour spend on porting or maintaining existing drivers is an hour that developer could have been spending on something more interesting and worthwhile.
UDI is the best hope for the HURD, and would stimulate innovative competition between developers of various free operating systems. Microsoft has accused the free software community of "chasing the taillights" to try to just catch up with the competition, while trumpeting their so-called "innovation" (which is rarely innovative). While Linux and the major BSD systems have reached the point where driver support is pretty good, for other free operating systems like the HURD, they're forced into "chasing the taillights" to try to compete with the impressive array of hardware Linux supports -- otherwise, many potential users are lost because of a lack of hardware support. The problem is even worse for small, obscure free operating systems, especially one-man projects. How can any new operating system be taken seriously when implementing a decent level of hardware support is such a massive undertaking? With UDI, on the other hand, a new operating system need only implement a UDI environment, allowing it to leverage the entire base of existing UDI drivers. Imagine how much real innovation we'd likely see in experimental free operating systems, once they were relieved of the burden of all that hardware support?
The free software community should broadly adopt and embrace UDI out of self-interest, without regard to the behavior of proprietary companies. While proprietary companies are sure to act in their own best interests, we shouldn't cut off our nose to spite our face. While parasites may undeservedly benefit from widespread adoption of UDI, we should benefit much more from it, and not sacrifice our own future just to keep the parasites down with us. To quote another cliche: "A rising tide lifts all boats." We should do our best to raise the tide, instead of lamenting about particular "boats" that don't deserve to benefit from our efforts.
This is a situation that calls for vision and foresight, not hindsight. Project UDI is presently trapped in a very real chicken-and-egg dilemma. While the technology has been proven, almost nobody wants to adopt it because they feel satisfied with the status quo, and without a base of UDI drivers to draw upon, the benefits of UDI are unclear. Meanwhile, nobody wants to write UDI drivers because most operating systems don't support UDI. For the massive potential benefits of UDI to actually be realized, it really needs widespread adoption in a big way. IPv6 suffers in a similar quandry. While exhaustion of IPv4 addresses will probably force IPv6 adoption in the next few years (with much kicking and screaming), nothing will ever force cooperation between various operating systems and device drivers -- people can continue the slow, inefficient way indefinitely. And the longer Project UDI withers on the vine, the more likely it is that people will jump to the unwarranted conclusion that this wonderful technology must be fatally flawed somehow, not to have been adopted already.
We've already lost years of the potential benefits of UDI -- let's not lose them entirely! Because of fears that the parasites would be taking advantage of us (and they did hope to), and unwillingness to allow the parasites to benefit from our efforts (no matter how much more we might benefit), the free software community has ignored Project UDI (or worse, treated it with disdain or hostility). The UDI specification has been well thought-out and stable for years now -- it's mature enough for prime time, and we ignore it to our own detriment.
Ironically, this would be a perfect opportunity to turn the tables on the proprietary companies and benefit from their efforts! Project UDI was a joint effort by a number of proprietary Unix and hardware vendors to unify the driver market of all Unix systems to better compete against other proprietary operating systems. Linux and other free operating systems weren't even part of the equation -- these proprietary companies spent years developing a comprehensive and incredibly well-designed specification, yet they chose to release the specification freely to encourage adoption instead of charging a license fee as is so commonly done by proprietary companies. They've done a lot of hard work and done it well -- we can just grab the specification and start using it to our advantage, leveraging their efforts (intended to benefit the proprietary vendors who developed the technology) for our own benefit. Yes, as a consequence, some parasites may benefit, but it's still worthwhile.
The member companies of Project UDI should not be viewed as parasites in this matter. Bear in mind that these companies, while proprietary in nature, did fund Project UDI for many years to bring a complex and difficult technology to fruition. The usual complaint about proprietary companies is that they take from the free software community without ever giving back. Well, in the case of UDI, they've already given quite a lot, by creating this incredible technology and giving it away for free. Of course they would hope to benefit from the adoption of UDI by the free software community, but there's clearly a give-and-take here, even if it isn't in quite the form we're used to. If they do benefit, it's only fair, considering the many years of engineering effort that went into creating the UDI specification.
Microsoft does not stand to benefit from Project UDI. Hardware vendors already create drivers for Windows -- there's no need for Windows to run free-software drivers. Moreover, Microsoft wouldn't want to support UDI if they could avoid it, because it would mean they've lost the war to lock users into Windows via the hardware support, much like Microsoft's late support of the Internet signaled the failure of the proprietary MSN service to lock users into a Microsoft-only network. Microsoft has the most to lose if UDI is widely adopted. (This alone should encourage Microsoft-haters to adopt UDI!)
We should all be supporting Project UDI.
Copyright 2005 by Deven T. Corzine. <deven@ties.org>