Say the word “computer” and most people think of the machine on their desktop-a machine they love, hate, or a little of both. But that notion of computer is going the way of the Univac: less than one-tenth of one percent of all computing devices today have Intel inside, or run Windows. The computers that are having the biggest impact on our lives are the ones embedded in thousands of pieces of equipment that surround us every day. These are the devices that tell our antilock brakes when to unlock. They manage factory automation systems. They tell Tickle Me Elmo when he’s being tickled. Soon they will allow our home appliances to diagnose their own malfunctions, and will even call and order their own replacement parts before they fail. These new computers will eventually make a stand-alone desktop system look as anachronistic as the vacuum tube.
But the little smart machines infiltrating our surroundings lack one thing that has made desktop computing so-well, so ordinary. The missing piece is a dominant operating system. Many contenders are already battling for dominance, and it looks as though the proponents of open-source software have a chance to vanquish Microsoft. In some respects, though, the future of “ubiquitous computing,” in which computing power is found in the common objects that pervade our environment, depends less on the particular winner of this battle than on there simply being a winner at all: a common standard that everyone can agree on.
Too Many Choices
For most casual computer users, the phrase “operating system” conjures up a mental image of the Microsoft Windows screen. But an operating system is not just an arrangement of windows and icons; it is the layer of software that coordinates all actions of the computer. The operating system interprets our inputs and translates them into commands that the hardware understands. In very simple embedded devices, these commands can be etched into the hardware itself (that is the case with the heat sensors in digital thermometers, for instance). But the fastest growing segment of the embedded devices market includes personal digital assistants, Internet-capable cell phones, and other Internet access devices, all of which need operating systems nearly as sophisticated as the one running your desktop computer. Which operating system will dominate these newer devices is still up for grabs.
Microsoft makes two operating systems for embedded devices. One is called Windows CE; the other, Windows NT Embedded. In what must be a humbling experience for the Great Software Monopoly in Redmond, WA, Microsoft’s offerings constitute mere slivers of a pie chart along with such geeky names as VxWorks, QNX Neutrino, LynxOS, pSOS and VRTX. In addition, in the last two years more than 40 companies, consortia and academic institutions have begun to distribute versions of Linux for use in embedded devices. As an open-source operating system, Linux is free of licensing costs, available to be downloaded over the Internet by anyone who wants to use it. Linux is sometimes called “free” software, both because of the absence of a licensing fee and because anyone has the right to tinker with the programming code to make it better. In addition to this crazy quilt of choices, nearly half of embedded-systems projects are run on operating systems that developers wrote themselves.
Choice is usually a good thing. Embedded computers, however, provide an exception to the rule. The multiplicity of options is splintering developer talent and making it more difficult to get devices to work together. Many of us have had the experience, for example, of trying to mail a document from a Windows PC to a Macintosh and having the apostrophes disappear; multiply that minor annoyance to imagine how multiple devices in your home of the future might fail to interact. A common operating system could jump-start the innovation process: developers would no longer need to learn a new operating system each time they began a project. Companies could count on hiring people who were already familiar with the operating system.
And all those high-tech gadgets would work together. This consistency is exactly what is needed for the move toward ubiquitous computing-a world where all manner of devices will work together and over the Internet. Your appliances and lighting fixtures of the future might be able to communicate with one another and to load-balance their energy requirements, for example. Or they could order replacement parts over the Internet before a failure occurred. Most of all, they would have a common interface that would save you from needing to relearn how to communicate with them every time you bought something new.
Free at Last!
To Jim Ready, the answer is clear: embedded systems need open-source software. More precisely, they need Linux.
Ready still wears a short-sleeved button-down shirt, the uniform of old-school Silicon Valley before the invasion of Dockers and T-shirts. Back in the early 1980s, he practically invented operating systems for embedded computer systems; his VRTX was one of the first commercial products for embedded systems. He once attended a meeting where an executive at a major chip company referred to Bill Gates as “that pipsqueak.”
Even though VRTX still has its fans, Ready is a dedicated open-source zealot. In 1999, he founded MontaVista Software, staking the company’s future on the prediction Linux would sweep the embedded computer market much as Microsoft Windows did the desktop-PC market. But since Linux is an open-source operating system, this domination could come without all the messy monopolistic overtones that taint Microsoft’s position. “Linux is the Switzerland of operating systems,” Ready says. “You can move to another vendor if you want, and still use Linux.”
Originally created by Linus Torvalds in 1991, Linux code is available to all but obligates developers to make their changes available to others. Linux has benefited from thousands of person-hours of development worldwide and has become the shining example of what’s good about the open-source movement. Linux was originally conceived as a desktop operating system, then stretched to fit the computers that work as network servers. Linux’s next trick, if Ready is right, will be to shrink into embedded devices like cell phones and PDAs.
Step inside MontaVista’s Sunnyvale, CA, facility and you immediately sense you’re not in a typical Silicon Valley startup. No one asks you to sign in. You don’t need an identification badge or an escort. You can attend engineering meetings at will, without being asked to sign a nondisclosure agreement. Nothing is stamped proprietary. The company takes the open-source movement to heart: its main product is Hard Hat Linux, which MontaVista makes available to customers and competitors alike.
Linux has recently popped up as the operating system powering several high-profile embedded projects, including IBM’s prototype of a Dick Tracy-style wristwatch computer, as well as handheld Internet access devices jointly marketed by Gateway and America Online. According to Electronics Market Forecasters, nearly one-third of embedded- systems engineers plan to give Linux a try this year.
The first advantage open-source software gives to developers is access to the so-called kernel-those lines of code at the heart of the operating system. This access is extremely important in the world of embedded computing, where making the hardware and software work together as efficiently as possible is vital.
“Embedded programmers need to know everything, about the hardware, about the operating system, about the application,” says Brad Christensen, director of product marketing for Lineo, an embedded-Linux company in Salt Lake City. “With Linux they can see the source. They can reach right into it and change it. It gives them the control they’re looking for.”
Linux is also attractive simply because it’s there for the downloading. Two years ago, San Jose, CA, startup Kerbango wanted to be the first company to produce a stand-alone Internet radio. For months, Kerbango was stuck in contract negotiations with the vendor of a proprietary operating system, stalling the product’s development. With nothing better to do, one day an employee decided to download Linux and give it a try.
“He had it up and running on our board ten times faster than it was taking us to get a contract signed,” says Carl Hewitt, a founder of Kerbango. In February 2000, the company unveiled the first stand-alone Internet radio. Hewitt estimates that in addition to saving time, the company saved $500,000 in license fees in the first year alone by using Linux. Last year, 3Com bought Kerbango for about $80 million-the brass ring in a summer of soft IPOs. (In March, however, citing the “abruptness and severity of the current technology slowdown,” 3Com announced it would be discontinuing Kerbango and other Internet-appliance product lines.)
In addition to sheer accessibility, open-source software offers an unbeatable price. Embedded systems are extremely cost sensitive, and the operating system often needs to cost pennies per unit. That’s why, about one-fourth of the time, developers write their own operating systems to avoid licensing fees. An open-source operating system lets them avoid both the fees and the work of writing something completely new.
A final advantage is flexibility: you can change open-source code, as long as you share what you’ve done. This allows open-source developers to add any little quirk they need to make something work exactly as they want it to. Significantly, this makes it easy to add features that would never hold enough mass appeal to make their way into a general-purpose operating system-such as a single-line command that could align all the solar panels on a space station for maximum energy collection.
If the story stopped there, then Linux and the open-source movement would triumph over all would-be evil empires in the embedded-systems market. That would be the Hollywood outcome with strong sentimental appeal. But despite its advantages, Linux has limitations that even its legions of flag-wavers can’t seem to fix. And even open source supporters, in some cases, think the embedded-Linux movement is a shameless waste of energy.
Greg Rose is an odd person to be talking about the limitations of Linux in the embedded market. His company, LynuxWorks, sells it. But the San Jose, CA, outfit is hedging its bets by also selling LynxOS, a proprietary operating system for embedded computing.
While operating systems for embedded devices have remained below the radar screen for most of us, they are technologically elegant. They typically need only kilobytes of memory instead of the megabytes that desktop computer systems like Windows hog. And they can run without anyone telling them what to do-many are in “headless” configurations where there isn’t even a user interface. Embedded systems are also built to be fail-safe. After all, a system freeze on a PC is merely an irritation; a glitch in the computer that controls your antilock brakes could be catastrophic.
These operating systems must also be able to perform tasks within a guaranteed window of time. To do this, they interrupt noncritical tasks to make way for critical ones. This feature is known as “real-time” performance. Think automobile bumpers that warn you when you’re about to back into something: it doesn’t do much good if the alert arrives a second too late. At a refinery that’s turning crude oil into gasoline, you end up with a big, charred hole in the ground if the right valves don’t close when they are supposed to.
It is just such real-time operation that skeptics say eludes Linux. Linux is built to run a given command from start to finish. That’s why the embedded systems that run on Linux to date are ones where real time is not critical, such as the Kerbango radio. Disagreement about the best way to make Linux real-time-and whether it’s possible to make Linux real-time at all-are splintering the embedded-Linux movement into less-than-friendly factions.
One proposed solution is to run two operating systems in tandem: Linux plus a separate, real-time kernel. This approach is championed by both Lineo and the creators of RTLinux at Finite State Machine Labs in Socorro, NM. One challenge of such a tandem design is how to get the operating systems to communicate. It also forces developers to work in two different operating environments for every project.
MontaVista supports making Linux real-time by creating “preemption points” within Linux itself. At regular intervals of time, the system will interrupt a given task, check for a real-time request, perform whatever operation is being called for, and then go back to the original task. This method is rather derisively known as “soft” real time in the embedded community. “The problem is, between those preemption points, you can’t interrupt,” says Rose. Preemption, he argues, “works only if when you miss something every once in a while, it’s an annoyance instead of a disaster.”
Rose maintains that no amount of tinkering will transform Linux, created as a desktop operating system, into one that works well for embedded computing. “If anyone really wants to work with a real-time operating system, Linux isn’t going to be the right choice,” he says. “To make it work at all you need to add code, and adding code hurts performance.” Rose sees Linux as just one more of a long line of operating systems for general-purpose desktop computers-like Unix and Windows-that have tried and failed to make any significant mark in the embedded world. In his opinion they are all too unwieldy and slow. “You can try to make a truck run like a Ferrari, but in the end it’s still a truck,” he says.
For the last few years, Linux proponents have been pushing in the opposite direction: trying to beef Linux up, not pare it down. This approach has helped Linux gain ground against mature desktop operating systems like Windows NT. But while loading Linux up with features helps it compete against the likes of Windows NT, embedded systems have cramped memories that put a premium on leanness. Slice Linux too far, though, and you end up, not with Linux, but with pieces of Linux. Even its staunchest defenders say Linux can’t be reduced to less than half a megabyte; most think two to three megabytes is more realistic. “The moment you start to pull pieces out, you’ve broken compatibility with the entire world of Linux software,” acknowledges Kevin Morgan, vice president of engineering at MontaVista. “You’ll never get Linux in a supersmall memory.”
Race to the Middle
Despite these limitations, companies selling proprietary operating systems for embedded computers clearly see Linux as a threat. Indeed, some of them are catching the open-source spirit themselves. Last year, for example, Microsoft began to give developers free access to Windows CE for 60 days, so that they could experiment with the operating system in much the same way they can now download and experiment with Linux. Microsoft also slashed licensing costs (though not to zero). Kanata, Ontario-based QNX announced last year that it was going to make its real-time operating system, QNX Neutrino, available for free indefinitely-adding a new twist to the open vs. proprietary battle. QNX plans to allow free use of its operating system for noncommercial projects, while charging royalties for commercial use. Other old-guard companies, including LynuxWorks, will offer Linux alternatives to customers who insist on it, but recommend their own products whenever possible.
So what you have now is something like a race where two runners sprint toward the middle. Proprietary companies are trying to become more open. Linux supporters are trying to make Linux more embedded. But there might be a better solution than either of these: an open operating system that is designed from the ground up for use in the types of embedded computers that are increasingly pervading our world.
Enter eCos, which stands for “embedded configurable operating system.” ECos is an open-source, real-time operating system sold by Red Hat of Durham, NC-the leading seller of shrink-wrapped Linux software. “ECos doesn’t pretend to be all things to all people,” says Bill Gatliff. Gatliff is a software consultant who describes himself as a “free software advocate,” even though he is skeptical of embedded Linux. “Everyone talks about Linux having an army of engineers worldwide working on improving the code,” he says. “But it’s really just a very small number of programmers that are making substantive changes.” He says that eCos has “a small set of very good contributors, and that’s enough.”
Or perhaps there’s a Linus Torvalds-in-waiting, working quietly somewhere on an open-source operating system designed specifically for embedded devices, who is about to post her work on an Internet bulletin board. The Internet is the perfect way to attract a quorum of developers, enough to jump-start the operating system and give it credibility. It sounds unlikely, but then Linux itself seemed implausible before it happened.
Embedded systems will be the next computing paradigm, yet no clear winner has emerged in the current operating-system war. What happens next could tip the scales as to whether free software will prevail over the proprietary kind that has come to dominate the desktop-computing world. The outcome of this conflict will provide important lessons about how computer technologies evolve in the absence of a monopoly. And it will determine how and when we begin to see ubiquitous computing take shape.
Paradoxically, when the perfect operating system ascends into dominance in the embedded-systems market, it will be an anonymous technological wonder that you’ll never need to worry about. That’s the best kind of technology-something that works so well you forget it’s there. Maybe as we leave these desktop-centric years for a world of ubiquitous computing, we’ll begin to value computers for the functions they perform, rather than for what’s inside. Which is exactly the way it should be.