Hardware enablements in Fedora 13
Feature Profile Background
This feature profile hits Freedom, Features, and First - and Friends by way of how some of these were collaboratively engineered. The talking points covered in this feature profile will include "experimental 3D extended to free Nouveau driver," "print driver installation," and "color management."
Features Covered - Informative Links
- F13 Feature List
- Nouveau - Ben Skeggs
- Automatic Print Driver Installation - Tim Waugh
- Color Management - Richard Hughes
Nouveau - Interview
Robyn Bergeron, Ben Skeggs
Ben - please introduce yourself! Who are you, and what do you work on?
I'm talking with members from several of the projects within Fedora that are working on Hardware Enablements for Fedora 13 (and beyond!). I understand you work on the Nouveau feature. Can you give me a high-level overview of how this feature works, and the different aspects involved - I know there is a DisplayPort piece, and also a 3D piece as well.
The Nouveau feature in Fedora covers everything that's involved in providing a useful, and fully open-source driver for NVIDIA GPUs. This is a rather broad feature, covering everything from detecting and putting an image on the attached displays to enabling users to run applications that require OpenGL support, and everything else in between :)
Let's talk about DisplayPort. What is it - and how is this feature helpful to end-users? Can you tell me how easy it would be for an average end user to make this work?
DisplayPort (DP) is a new standard for connecting displays to GPUs. For Fedora, this feature is to implement support for DP-attached devices in the relevant drivers. To the user they should just be able to plug in such a display, and have it "Just Work" as VGA/DVI/HDMI displays do already. DisplayPort is also able to be used as the interface for laptop panels.
The support available in the latest Nouveau packages in Fedora is rather limited. It may work for a lot of cases where the display is already plugged in during boot, but there's a couple of pieces missing in our knowledge of the hardware to be able to offer "perfect" support at this time.
Let's switch over to the experimental 3D drivers. I know that this Fedora 13 will be the first appearance for NVIDIA experimental 3d drivers, but that this has been a work in progress with other video "vendors" for some time now. Can you tell me a bit of history about how this has evolved in the past few releases of Fedora?
Well as you mentioned, F13 is the first appearance of open-source NVIDIA 3D support in Fedora. Upstream, there's been some form of development 3D drivers for quite some time now but until recently nothing that was even close to useful quality.
As it stands now the drivers should be capable of running quite a lot of OpenGL applications across most chipsets, but there's still a large number of issues to be resolved, hence the drivers being in mesa-dri-drivers-experimental :)
How are experimental 3d drivers helpful to end users? What applications are people using that are driving the need for this?
They're useful in that they should enable a lot of people to be able to enable desktop effects, or to try out GNOME Shell. A lot of other 3D applications should work too, and hopefully be a bit more performant than OpenGL software rendering!
Tell me a bit about the community aspects of this project - both within Fedora and outside of Fedora. Who else is working on this project with you?
There's quite a few people involved with Nouveau these days, working on a lot of different areas. Take a look at the Nouveau wiki (link below) and it should give you a pretty good idea about what's going on in the Nouveau world :)
How about testing? Do you have a lot of Fedora community members coming out and saying they're willing to help make sure this works in their environments, with their DisplayPort monitor and/or with their specific graphics cards?
Fedora shipping Nouveau has been great so far, as a result we've seen testing from a lot more users and encountered a number of configurations that we didn't work so well on. The Fedora Test Days have been great at getting a heap of users to thoroughly test the driver and report issues.
What are your future development plans and/or roadmap?
It's difficult to say what issues will arise, but the current plan is to continue to work on improving DisplayPort support, and give a stronger focus to the 3D drivers than previously. Of course, NVIDIA's just released the GF100 series of GPUs so there will be a lot of work needed there to get them supported.
Where can we find out more about Nouveau? Is there a community portal or wiki page, a place to file bugs, or - better yet - a place to report that things are working great?
The Nouveau wiki lives at , and has various links and documentation on the driver and development. Upstream bug reports go to the freedesktop.org bugzilla, or jump into #nouveau on irc.freenode.net.
Automatic Print Driver Installation - Interview
Robyn Bergeron, Tim Waugh
Tim - please introduce yourself! Who are you, and what do you work on?
I'm a senior software engineer at Red Hat, working on the printing side of things. CUPS, Ghostscript, the various printer drivers, printer configuration, etc.
I'm talking with members from several of the projects within Fedora that are working on Hardware Enablements for Fedora 13 (and beyond!). I understand you work on Automatic Print Driver installation - can you give me a high-level view of what this feature provides to end-users?
For quite a while now Fedora has automatically created printer queues for USB printers when they are connected. This works by using the best of the drivers that are installed at that moment. What's new in Fedora 13 is that now it will offer to download and install the relevant drivers first.
It does this using PackageKit, and works in a similar way to fonts, codecs, MIME type handlers, and language packs. Driver packages are tagged with IEEE 1284 Device IDs, special strings that are unique for each printer model. Based on the IEEE 1284 Device ID of the connected printer, packages matching that ID in their tags are installed.
This means that each of the printer drivers needs to declare the IDs all of the printer models it can handle. Currently we have about two thirds coverage: that is, of all the printer models we have drivers for, about two thirds have an associated ID.
Give me an example. Let's say I go and pick up a new printer at the Giant Electronics Store - what is the process I would go through to install a printer? How technical do I have to be to make this work?
The idea is that you don't have to be technical at all. You've come home, switched on your computer and logged in, unpacked the box, and plugged in and connected the printer. The very next thing you should see is a dialog box offering to download and install a driver. After that, you'll see a pop-up notification telling you that it is ready to print.
If the driver is already installed, of course, you'll just see the notification that the printer is ready. The Fedora 13 feature is to make sure we have a driver installed that will work.
This feature works for network printers as well. When setting up a queue for a network printer, any relevant driver packages will be installed as part of that process.
Tell me a bit about the community aspects of your project. Are there other people working on this project - perhaps from other distros or printer manufacturers?
The feedback I've had from various printer manufacturers has been positive.
The most helpful thing that can be done from a community point of view is to collect IEEE 1284 Device IDs. Information about doing this can be found here.
How about testing? Do you have a lot of Fedora community members coming out and saying they're willing to help make sure this works in their environments - both on their desktop and also with their particular type of printer?
Many missing printer IDs have been submitted already and the packages fixed, but we could still do with more.
Do you have additional plans for development in Fedora 14, or other future releases?
Nothing targeted specifically at Fedora 14 yet.
Where can we find out more information about Automatic Print Driver installation? Is there a list of supported printers, a community page, or a place where people can report things aren't working? Or better yet - that things -are- working?
Here is the feature page: https://fedoraproject.org/wiki/Features/AutomaticPrintDriverInstallation
There was a test day held: https://fedoraproject.org/wiki/Test_Day:2010-03-25_Printing
I gave a short presentation on the automatic driver installation feature at the OpenPrinting Summit last week. The slides, and a recording of the session, can be found here: https://www.linuxfoundation.org/collaborate/workgroups/lf/openprinting-summit-san-francisco-2010
Color Management - Interview
Robyn Bergeron, Richard Waugh.
Richard - please introduce yourself! Who are you, and what do you work on?
My name is Richard Hughes, I'm 27 years old, and I work for Red Hat UK in the desktop group. I'm the maintainer of PackageKit, gnome-packagekit, gnome-color-manager, shared-color-profiles, gnome-power-manager and upower, and also contribute to quite a few GNOME and infrastructure projects. I've done a bit of kernel hacking in my time too, so I'm fairly familiar with the entire stack. I work from London, usually working from home (where I'm writing this right now) although I'm of course talking with people all day over VoIP, IRC and email. My IRC name is 'hughsie' which is also my nickname for obvious reasons.
I'm talking with members from several of the projects within Fedora that are working on Hardware Enablements for Fedora 13 (and beyond!). I understand you work on the Color Management feature - can you give me a high-level view of what this feature is?
Fedora, and Linux in general is really broken when it comes to using color management in key applications by default. OSX and Windows 7 show by making color management easy for the end user, it can be a transparent part of the creative process. By providing a way to manage and assign profiles in Fedora we can make it easy for creative people to see on the screen the same color they just scanned, and also then see the same color when the document is printed. Only by making this stuff really easy to use we'll actually get people to achieve this.
Can you give me a more concrete example? Let's say I've just picked up a shiny new laptop, and have installed the Fedora 13 Beta. How easy is this for the average desktop end-user to install and use - and what benefits will it provide me? What are the compelling reasons for me, an average user, to use Color Management?
Sure, I would say I'm probably the average user in this regard (which may surprise you) -- I don't understand all the color transformation maths, I just want to make things work with as few clickety-buttons as possible. This whole GNOME Color Manager adventure started with my hobby, digital photography. I don't pretend to be the next Imogen Cunnningham, I'm really just a guy who likes taking photos. I spent a few months taking photos which looked great on the viewfinder, which then looked "wrong" on the screen, and even more "wrong" when I printed them out. Tweaking the colours (I'm British, really!) one way or another, which seemed really unscientific and a bit of a black art. I just wanted the screen colors to match the camera colors, and the screen colors to match the printed colors. Only through profiling, characterization and calibration could I get near that goal. The existing tools kinda-worked, but were all command line, and were really hard to understand and use. There was no integration in the desktop and they all had to be setup by hand.
So, back to the question. You've just picked up your laptop with a shiny new copy of Fedora 13. There are really two ways you can begin to correct or characterize your devices. Devices in this sense mean input devices like cameras and scanners, display devices like monitors and projectors, and hard-copy output devices like printers. You can either use the manufacturer ICC profiles (usually available from the OEM vendor website, although you might have to unzip a few 'driver' files to find them) which are normally fairly good. I say fairly good as they are obviously the average of a few devices taken from the production line some time in the past. They are probably better than nothing, but if you're getting paid for your artwork, a control freak or a color nazi you possibly want to generate your own profiles. Doing the latter means you have to buy some specialist equipment ($50 for just a display device like the Pantone Huey, or $300 for a printer/projector/display device like the ColorMunki) and then use gnome-color-manager to generate a profile for your device. If you want to profile input devices you also need to buy a color target which is basically a specially printed piece of card which has known color properties. These are usually only a few Euro and are available from a few different places online.
So, all of this sounds very complicated. What does this actually mean for a photographer with a few quid spare, and a bit of time on their hands?
1. You buy some calibration hardware, for instance, I find the ColorMunki is a really great product and is supported in Linux. 2. You buy an IT8 target from someone like Wolf Faust, who sells targets individually, rather than in batches of a few thousand. 3. You take a picture of the target with your digital camera. 4. You connect your camera to the computer and generate a camera profile from the image. 5. You scan an image of the target on your scanner 6. You create a profile of your scanner from the resulting image 7. You connect the calibrator to the screen and create a profile of the screen 8. You print out a few calibration sheets from your printer 9. You measure the patches using the ColorMunki and create a profile
Of course, you don't have to profile /all/ of your devices, but if you do all the input, display and output devices you get something called a color-managed-end-to-end-workflow, which is the digital nirvana that the clever people at places like Pixar try to achieve. GNOME Color Manager tries to make this all as easy as possible with lots of pictures and wizard type dialogs. For most people just assigning the manufacturer supplied display profile (without all this expensive hardware) can make a huge difference.
Let's say I'm a designer. What additional benefits will Color Management provide me?
If you're a professional designer working without color management, so far you've been really lucky. If I send you a photograph that looks great on my uncalibrated IBM T61 screen, and you show it to your boss on a projector, you're going to see a very different image to what I see. If I correct the blue color cast in GIMP before I send it to you (as most IBM screens are quite bluey) it's going to look very yellowy for other people if you upload it to sites like flickr.
By working on calibrated equipment, and ensuring all the images are tagged with the correct color spaces and with the correct device profiles you can be sure that the image you're sending to your friend (who is also color managed) looks pretty much the same it does for you. You've got to be a bit more careful when uploading photos to sites like flickr, as a great proportion of people on the internet do not calibrate devices. Of course this sounds very technical, but we're making sure programs like simple-scan just use the correct profile and embed it in the file automatically so most users are not aware of what's happening. Things just work better.
Tell me a bit about the community aspects of this project - both within Fedora and outside of Fedora. Where is the demand for Color Management coming from, and who are the other people working on this project? Do you work closely with any other projects?
Well, I started the project as most projects do: scratching an itch. Things didn't work for me, and I figured they didn't work for other people either. Red Hat have been great, and I've spent quite a lot of "work time" getting the community up and running, and getting a few releases out of the door. I guess color management is just another (albeit small) cog needed in a modern desktop, and I guess Red Hat realized that. The other communities like Ubuntu have done great things getting the code out to people, but it's really be championed inside Fedora, as we could pull in changes from upsteam projects much quicker. For instance, you need a pretty new GTK to be able to embed ICC profiles in images, and Fedora is always pretty keen to push new upstream code much earlier than some other distros.
Most of the code is written my myself, but quite a few members of the community contribute fixes and small feature enhancements. I'm also no artist so a lot of the artwork, icons and figures have been contributed by the community. The help file in particular is coming on nicely, and is mostly made up from contributors. The latter is important as color management is such a complicated subject, with lots of scope for confusion.
GNOME Color Manager, like much of my other GUI software, is really only the cherry on top of the cake. The real work comes from working with other frameworks like lcms, GTK and using other standards like the ICC profile in X specification. By using open DBus API's and supporting more legacy protocols we can make applications like GIMP and Inkscape "just work" with this fancy new color management thing. So, when standardizing ways to do things, we have to work with a lot of other people. This week I was meant to be at LGM discussing this with other CM geeks, but an exploding volcano scuppered that plan some time ago.
How about testing? Do you have a lot of Fedora community members coming out and saying they're willing to help make sure this works in their environment?
Sure, we did a color management test day which went pretty well. I'm always updating the version in Fedora rawhide (sometimes even just git snapshots), and the people there are always pretty quick reporting regressions, bugs or just features that would make their lives a little easier. The turnaround time can be pretty small when people report a bug and I can upload new versions the next day.
What are your future development plans and/or roadmap?
Well, I really want to support devices that can measure spot-colors. This allows you to use a device such as a ColorMunki to measure a color patch, and then to use it. It's used all the time by designers who want the use the same color on a mug design as they see in a printed magazine. It allows people to get matching colors in websites, printed items and even lets you order bazaar things like custom leather sofas in exactly the same color as your lipstick.
I also want to be able to assign multiple profiles for each device. Whilst this makes no sense for display devices, for things like cameras you might want a "studio" profile and an "outdoor" profile. Similarly you might want a printer profile for "El cheapo own brand paper" and "£1 per sheet coated photo paper" as the two profiles are going to be very different. The DBus interface already supports this multiple-profile scheme, although there's no UI to set such a thing. Yet.
Where can we find out more information about Color Management? Is there a community page, a place to file bugs, or better yet - report that things work great?
Well, for Fedora, there's http://fedoraproject.org/wiki/Features/ColorManagement although you're probably better off subscribing to the upstream mailing list http://mail.gnome.org/mailman/listinfo/gnome-color-manager-list if you're interested in this kind of thing. We're a pretty friendly bunch and we're always looking out for new people to contribute features, fix bugs and improve the spelling and grammar in the documentation. I think it's important we look at color management as an upstream thing, which Fedora is focused on, rather than a Fedora feature that is shoehorned into an upstream project like other distributions have tried to do with other unrelated projects.
I'm talking about color management at GUADEC this year, so if you're there, come grab me and we can talk over a beer.