So Nat [1] suggested that we put up some of our Project Utopia use cases.
Joe "Employee of the Year" Shaw [2] and I are managing Project Utopia in a rather interesting way. Instead of having a functional specification, lists of needed components, a description of features at a low-level, and so on, all we have is a set of very high-level use cases, in plain English, describing an action a potential user might perform and then the system's reaction. Around these descriptive use cases, Joe and I designed the solution stack, which as all good boys and girls know, is the oft-mentioned udev, HAL, D-BUS, kernel, hotplug, et cetera. But since these components are not part of our official spec, we are neither constrained to use only them nor are we in fact forced to use them at all. Instead, we are making engineering choices that make the most sense and ultimately satisfy our use cases. And that is what this is all about, right? Making Hardware Just Work.
So, Joe, Anna [3], and myself sat down and hashed out these use cases. What are the typical user-hardware interactions? What does the user do, and what does the user expect? What makes sense?
The following are the first run of use cases, the ones we are aiming at implementing solutions for in the soon-ish time frame. Some of these (such as cases involving block devices) work with today's current Project Utopia stack on SUSE [4]. Others are currently in development; still others are further off.
Although we do not have any technical/functional requirements codified into our specification, Joe and I are still approaching the problems with a few design decisions in hand. We are looking for clean, efficient, simple solutions. No hacks. We want to reuse existing code and smoothly integrate into our desktop. We want to heavily utilize 2.6 kernel features such as sysfs and hotplug. And HAL [5] is very much our shining centerpiece. Basically, we want to do this right and not just (finally!) bring Linux to the level of its competitors, but surpass them.
So, here we go:
Abstract: The goal of Project Utopia is to enable "plug and play" of a variety of external hardware devices on computers running Linux. "Plug and play" means that when a piece of hardware is attached to a computer, the computer identifies the hardware and responds appropriately without requiring user intervention. Responding appropriately may mean showing an icon on the desktop which allows the user to access the device (for devices such as external hard drives), or starting an application to support the device (for devices such as cameras), or simply starting to use the device (for devices such as keyboards).
Use Cases: For the purposes of these use cases, the various components that comprise Project Utopia (HAL, udev, D-BUS, etc) will be considered a black box. Similarly, the various components on which the Linux desktop is built (for example, the X windowing system) will be considered a black box.
These use cases were developed with the needs of a particular target audience in mind. Target audience members are assumed to have basic computer literacy, and to be familiar with a variety of applications and devices. They are not assumed to have developer-level knowledge of their systems, nor are they assumed to have more than a cursory understanding of Linux.
PCMCIA Wireless Card
At work, Charles uses an ethernet cable to connect his laptop to the network. When he takes his laptop home at the end of the day, he wants to use his home wireless network. He inserts his wireless card into the pcmcia slot on his laptop. Immediately, he is able to detect and use his wireless network.
Ethernet Cable
Precondition: Darla must have previously specified the setup method (DCHP or static IP), host name, and routing information for her ethernet card.
At home, Darla uses her wireless network to access the internet. When she takes her computer to work in the morning, she needs to use an ethernet cable to connect her laptop to the company's network. When she arrives at work, she plugs her ethernet cable into her laptop. Immediately, she is able to use the company's network.
Printer
Winifred has purchased a new printer. After plugging in its power cable, she connects the printer to her laptop using a USB cable. When she does this, her computer recognizes the printer. The "Add a Printer" tool appears, allowing Winifred to configure the printer immediately.
This tool is populated with all of the available information about her printer, including its model and manufacturer. She is offered the opportunity to configure the printer (specify its name, model, and type) immediately, and is advised of how to do this in the future if she does not care to configure her printer at this time.
DVD Player and DVD Video
Wesley has purchased a new movie, and he wants to start watching it immediately. Unfortunately, his computer does not have a DVD drive built in, so Wesley has to use an external DVD drive. He inserts his new DVD into the DVD drive, and attaches the drive to his laptop, using a USB cable. When he does this, Totem, his movie playing application, starts. His movie automatically begins to play.
External Hard Drive
Cordelia needs to make a backup of the computer on which her company stores its employees' health records. Since this data is highly confidential, she cannot connect the computer to the company network; she has to use an external hard drive to store this data. She plugs the hard drive into the computer using a USB cable. When she does this, an icon representing the hard drive appears on the desktop. She can click on this icon to access the contents of the drive.
External Mouse
Lorne is tired of using the trackpad on his laptop because it hurts his finger. He buys an external mouse, and connects it to his laptop. As soon as he moves the mouse, the pointer on his screen responds by moving appropriately. The mouse works seamlessly for him; he is able to switch back and forth between using the trackpad and using the mouse without unplugging the mouse.
External Keyboard
Doyle needs to find a new keyboard which is easier on his hands. He borrows his friend's ergonomic keyboard. He unplugs his current keyboard, and plugs in the ergonomic one, using a USB cable. He opens a text editing program with the mouse, and begins to type into the the text editor. Immediately, the letters he is typing appear in the text editor.