Robert Love: Project Utopia

So Nat suggested that we put up some of our Project Utopia use cases.

Joe "Employee of the Year" Shaw 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, 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. 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 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.

Finally!

Anonymous
on
October 10, 2004 - 11:34am

I think all of us would be very happy if this project is going to succeed. Some of us spent days figuring out how to use their hardware with such a powerfull OS. When someone wants to buy a printer/graphical card/gamepads etc., the choice musn't be narrowed because the OS can't handle it. E.g. I want to buy a printer, but I can't buy the good one, cause that model doesn't work...
Anyway, I really want to support Project Utopia. Unfortunately, I'm not very good at programming, nor I understand how the kernel etc. works... I've always dreamed of some kind of "hybrid linux" (That's my interpretation of Utopia ;)). A powerfull desktop OS, with 'perfect' hardware recognition, integration with the desktop environment, ease of use, everything can be configured with GUIs or TUIs, and on top of that, an OS that can handle both linux and windows software. Full integration. No more puzzling with pieces of software. Eventually, make different types of distro's. When I download Fedora Core 2, I download so much software I don't need. I don't want to run a server. The only thing what matters to me, is that everything works out-of-the-box.
Why GNU/linux is so attractive as a OS, is because most of these users have years of extensive experience with computers. You really need to dive into a mind of someone who has little experience, to fine-tune the interaction between user and OS.
But to stay on-topic, all kinds of hardware needs to be recognized and easy configurable. A few weeks ago, I installed a graphic tablet. It was detected by FC2 and I could use it right away. Simultaneously with my mouse, no conflict with X.org. That was great, but I wasn't notified of new hardware, nor I could configure it right away. You should really get that working.

I think your interpretation o

Matt Jacobsen (not verified)
on
April 6, 2005 - 7:40am

I think your interpretation of utopia is a little closer to the original greek meaning than the projects': A perfect place, never to exist.... :)

yes we found it !

Rafaël Carré (not verified)
on
May 19, 2006 - 8:25pm

nearly two years later, we found it! not perfect, but all cases specified in the article exist today on a modern linux desktop ;)
thanks !

Any Chance of KDE integration?

Zubin (not verified)
on
January 8, 2005 - 5:23pm

I love the idea of Project Utopia! I just learned how to do hotplugging scripts last week!

I know you guys are integrating it with Gnome, but is there any plans for KDE ?

thanks,

Zubin

Yes.

Anonymous (not verified)
on
March 17, 2005 - 9:34am

Yes.

"Plug and Play"

Anonymous
on
October 6, 2004 - 9:18am

While I agree with the hotplugging of external storage media, and keyboard and mice that "just work", I think this project needs also to focus on the gamut of external peripherals we users tend to plug in every once in a while. I'd love the day that my Gravis gamepad is automagically detected and configured for me...would save time when I want to game.

I'd also like to see a functionality similar to OSX...when I put in a blank CD, Linux would mount it, place an icon on my desktop, allow me to drag and drop my music to it, and then give me a menu choice for "write CD". I'd like to be lazy and burn CDs without having to actively open a writing program.

writing cds like in OSX

Anonymous
on
November 29, 2004 - 11:13pm

try opening up nautilus, hitting CTRL L (to bring up the location dialog) and typing burn:/ Nautilus does a very good job of this

well, as far as peripherals g

Anonymous
on
November 5, 2004 - 7:19am

well, as far as peripherals go, my gravis eliminator pad is recognised immediately to the sytem. for your cd burning functionality, i believe gnome already opens the nautilus cdburning window (which just looks like a regular file window, you drag files to it then select burn when you're ready)

I don't think keyboard and mouse are the worry here

Anonymous
on
September 13, 2004 - 1:02am

We pretty much already have the keyboard and mouse use cases down, right? I know that when I replaced mine, I did it without rebooting the machine... just yanked out one set and plugged in the next.

Mouse support only half way there

Anonymous (not verified)
on
February 22, 2005 - 7:11am

A lot of the modern mice have more than 3 buttons (or 2 but + wheel ). E.g. the Microsoft Intellimouse Explorer (5 but + wheeel), Logitech MouseMan (4 but + wheel) or the new MX models (5 but + wheel).

None of the distros I have used have been able to properly take advantage of more than 3 buttons and a wheel on these mice, which is frustrating (mandrake, gentoo, redhat/fedora). Even more so, because it is a PITA getting it to work - you need to find a working xmodmap with trial-and-error, then load a imwheel instance with the correct config before (re)starting X, yada yada.

The system can tell the name of the mouse device when plugged in, so it should be able to load the proper configuration and initialize it at runtime. Though I don't know if the problem lies with X, the kernel, hotplugging or something else.

This project might very well be the most important GNU/Linux project with regards to bringing Linux to the masses, so I wish you the best of luck. (And I hope to find time and knowledge to help out. :-)

Cheers

well if you don't use standard keyboards.

Anonymous
on
September 30, 2004 - 8:50am

For example in the Netherlands you often have people using US international keyboards and other people have different ones eg. english layout or german. And you forget the multimediakeys that many desktop keyboards have these days. I would like that these are autodetected and autoconfigured.

They are sometimes not worth the trouble to configure yet are very nice when you have them.

Jerven

not so simple...

Anonymous
on
October 24, 2004 - 11:39am

The problem is, well for 8402 keyboards at least. There is no standard for Multimedia keyboards, so all those extra keys send through different scancodes.

I've been looking at writing a program to generate xkb configurations using a press a key, tell me what it is approach, the same method could be used to detect a keyboard: press all the multimedia keys and try to find a matching keyboard layout. not the best solution, but better than having to look through a list of keyboards, find your's isn't on the list and then try every keyboard untill it works!