I was playing around with my system the other day, and I stumbled across the "Adjust Date & Time" dialog in Ubuntu/GNOME:
At first glance, this was a beautifully designed dialog. Every button has an icon, and the layout is very clean.
I noticed the option to "Periodically synchronize clock with Internet servers", which is something that I thought my Ubuntu machine did already. After checking off the box beside it, I was presented with something that I made my jaw drop:
That's right - Ubuntu knew I didn't have the right package(s) installed, explained to me what I needed to do, and gave me an option right there to do it.
After clicking "Install NTP support", I got exactly what I had hoped for:
Granted, after it installed the NTP packages, I did have to close the date/time dialog and open it again for it to detect the packages (it's a small bug), but the functionality was there nonetheless.
Why did I get excited by this?
An intelligent package suggestion mechanism ("suggest/install a package") should be the next killer feature for Ubuntu on the desktop. Imagine for a moment, you've just installed Ubuntu on your friend's computer. They try to download and play an MP3, but are given a cryptic error message whenever they try to play an MP3 file. They don't know what package to install, or even know that there is a package to install to fix this. Now imagine that they were given a suggest/install a package message instead. They would know exactly how to fix their problem, and could do it with the click of a button.
Why hasn't this been worked on before?
The importance and scope of this concept are huge. For example, if a user tries to open a 3d model file and doesn't have a program installed that can view it, they could be presented with a suggest/install a package dialog that allows them to install a viewer immediately.
Taking things a step further, if someone plugs in a piece of hardware that is supported by some extra modules that need installing, they could be presented with the same dialog, but would instead help them download the required package(s).
Lastly, imagine a new out-of-the-box user cracks open the Apple Trailers site in Firefox. They try to view a movie trailer, and Firefox pops up a suggest/install a package dialog that helps the user download the Totem plugin and/or the required gstreamer packages to playback Quicktime trailers properly.
What are all these situations like right now?
- When a user clicks a file that doesn't have a viewer/handler installed, they get a message saying "Couldn't display....". To view the file, they'll have to know beforehand which package to install, or they'll have to consult the web.
- When someone plugs in a piece of hardware that isn't recognized, and just needs some packages installed for it to work, they'll have to consult the web to figure it out.
- When someone tries to view a trailer from the Apple Trailers site in Firefox, they are prompted by the "Plugin Finder Service" dialog, which tells them that "No suitable plugins were found." You can, in fact, watch a trailer from this site with the "totem-gstreamer-firefox-plugin" package installed (you might need the win32 codecs installed too, but I don't remember).
But there is hope:
- There is a feature specification in Ubuntu Edgy to "Suggest packages to support unknown filetypes". Read more.
- There is also a different specification in Edgy that "aims to provide an interface for unknown file extensions to automatically install a certain packages [sic] when it's called."
- This specification is also known as the "Ubuntu Common Hooker". (includes pictures)
- There's another specification, "Firefox Updates/Firefox plugins" that aims to tie Firefox's update and plugin suggestion mechanism into apt, so that they'll both work properly. Read more.
- Lastly, there's a feature spec. to "Suggest the needed packages to support a new device". Currently, the status of this one is just a "braindump" (ie. just an idea), but I certainly think it's a good one that's worth developing.
- Contribute to these Ubuntu specifications, and help bring them to the attention of developers.
- Better yet, if you have the time and the skills, write some code!