Issue #1 November 2004

Meet Fedora Core 3

Fedora Core 3


Fedora Core 3 is the latest release, from the project sponsored by Red Hat Inc. Every new version of Fedora Core comes with interesting new features and countless bug fixes. This time, it sports newer desktop environments in GNOME 2.8 and KDE 3.3.0 and a newer office package with 1.1.2. Going down towards the system level, the 2.6.9 Linux kernel is included with SELinux enabled in active, targeted mode.

Desktop Improvements

Throughout the development cycle of Fedora Core 3, the desktop team along with the GNOME community, performed usability tweaks to make it look and perform better, and its shows in GNOME 2.8.

File Selector

Further enhancements exist in the new GTK+ file selector. Behavioral improvements like typeahead search have been implemented — you can now just type a few characters and a little “search” box will pop-up as shown in Figure 1, “New File Selector with Look Ahead”, taking you towards the file. While in the file selector, opening up a Location dialog can now be performed via a keyboard shortcut: the '/' key.

New File Selector with Look Ahead
Figure 1. New File Selector with Look Ahead

Web Browser and Email Client

By popular demand the Firefox Web browser and the Thunderbird email client have been moved over from Extras into Fedora Core. With the amount of browsers currently provided, Mozilla has itself become legacy and will probably be removed from Core around the release cycle for Fedora Core 5. The default browser for Fedora Core 3 is Firefox, and the default email client is Evolution 2.0.

Firefox Web Browser
Figure 2. Firefox Web Browser

Evolution 2.0 is bursting with new features — it is now a Usenet newsgroup reader supporting NNTP as well as being an email client, contact manager, and calendering suite. Support for connecting to Microsoft Exchange and Novell GroupWise servers is now available as is support for online calendering (webcal). A most welcome feature is the junk mail filtering, provided via SpamAssassin — just click on the Junk button to mark a message as junk, and it trains the heuristic scanner!

Firefox Web Browser
Figure 3. Firefox Web Browser 1.1.2 is the next major release of the office productivity suite. This release includes many bug fixes, and has a notable mention of having a lot more templates than previous releases. With the Native Widget Framework (NWF) implemented, now takes the native look and feel of the host platform as its GUI – so when in GNOME, it will feel like a GTK+ application; and when in KDE it will feel like a Qt application. It also includes the new GTK+ file chooser, giving it a more integrated look and feel when opening and saving files.

Behind the Desktop

All the interesting work was not only being done to improve GNOME but to also improve the way a user can interact with her desktop. All this is made possible via an underlying layer of magic in the form of hotplug, udev, D-BUS, HAL, and gamin. All of this magic is made possible because of the specifications.

Hotplug in Linux allows devices to be plugged in and immediately accessible — this means users don't have to learn much about configuring devices since most of the configuration is performed automatically. D-BUS is a message system bus, which provides a simple way for applications to “talk” to each other. For example, a message such as “new printer added” can be passed on to a printer configuration utility. Combine this with the Hardware Abstraction Layer (HAL), which merges information from various sources so that desktop applications can easily locate hardware, and now, plugging a new printer into your system automatically prompts you to select a driver for it as shown in Figure 4, “Print Driver Selection”.

Print Driver Selection
Figure 4. Print Driver Selection

USB thumb drives have become rather popular as a means of quick and easy removable data storage; accessing this under Linux used to mean finding the device name, mounting the device, accessing the data, then un-mounting it, all most likely via accessing the terminal. That's a thing of the past now!

The moment a USB thumb drive (including a digital camera) is plugged in, hotplug detects it, udev assigns it a device node, and with a message passed on via D-BUS to HAL, GNOME detects it and automatically mounts it as the user currently logged in. An icon for the drive is placed on the desktop (unless it is a digital camera, which is automatically mounted but behaves differently). A user can now access her files just by double-clicking on the icon placed on her desktop — when done simply closing the open window and ejecting the device is all that's required.

Such automated operation also extends to digital cameras (plug in your camera and if it detects new photos it offers to sync them), data and audio CDs, and portable MP3 devices like the popular iPod. The new File Alteration Monitor, gamin, provides notification to the GUI tools within the system about the file system when changes such as creation, modification, or removal occurs. Gamin prevents unnecessary “locking” of devices, even after they're used — a common problem that plagued older releases of Fedora.

Drives and Media Preferences
Figure 5. Drives and Media Preferences

Udev provides a dynamic device directory containing only files for devices that are actually present on the system. As part of the hotplug subsystem, udev creates or removes devices nodes located in the /dev directory based on when a kernel event occurs; it also renames network interfaces when required. For more information about Udev in Fedora Core 3, visit


Networking needs are changing in today's modern environment where laptops tend to move from home, to office, to wireless coffee joint, and back to home. It can be tedious when you have a bunch of different WEP keys to manage and no automatic way to bring your interface up with the correct profile. NetworkManager aims at solving this problem — when a user is at her desk and plugged in via the wired Ethernet connection, it makes use of the faster interface; if she disconnects and takes a walk around the office, it connects her via her wireless interface, all without any user intervention.

Figure 6. NetworkManager

International Language Input

IIIMF (Internet/Intranet Input Method Framework) is the next generation input method framework, meant to modernize the Linux/Unix desktop and replace the old and problematic XIM (X Input Method) protocol. IIIMF features enhancements over XIM engines like full Unicode support, multiple concurrent language engines, and easier client and language engine development. IIIMF is used in Fedora Core 3 for CJK (Chinese, Japanese and Korean) and Indic languages.

For example, previously with XIM an application like Writer had to be started in Japanese language, closed, and re-opened in a second language to input Korean input with XIM. With IIIMF an application like Writer could be run in any language, then using the gimlet language switcher, languages can be changed quickly and easily during during runtime as shown in Figure 7, “Multiple Languages at Runtime”.

Multiple Languages at Runtime
Figure 7. Multiple Languages at Runtime

Currently IIIMF works great with the applications written against the GTK+2 set of libraries but does not yet work with Qt libraries, which are used to write KDE applications. For applications like Qt that lack native IIIMF support, httx is supplied as a XIM to IIIMF protocol bridge allowing native language input. httx bridged input has the same limitations as XIM, so is only usable when run in each respective the native language.

Multimedia and Fun

No release of Fedora Core will be complete without its improved fun features. While Alan Cox was studying for an MBA, he couldn't help but provide extensive quality assurance testing of BZFlag, which is now included in Fedora Core 3. BZFlag replaces Chromium, which now enters Extras.

HelixPlayer is an open source media player, built using GTK, with Helix DNA Client Media Engine. This Engine delivers open source playback of Ogg Vorbis and Ogg Theora. All this is possible thanks to the Helix Community, which is a collaborative effort with Real and the community.

The GStreamer multimedia framework however is what is most interesting — it is integrated well into the Fedora Core and GNOME desktop, and what it does is it provides useful media-handling. There are commands that will allow “ripping” of DVDs from a console, and a wider format support can be achieved just by adding a plug-in. Totem is a simple movie player, that uses the GStreamer framework. Sound Juicer is the preferred application for “ripping” audio CDs into the Ogg Vorbis format. It sports speed improvements and has been integrated with HAL.


Fedora Core 3 breaks further ground by being the first Linux distribution to ship the GNU C Compiler (GCC) version 4.0. It is a technology preview release, as GCC 3.4.2 is still being shipped as a regular compiler. GCC 4.0 has Static Single Assignment (SSA) performance improvements — SSA's usefulness comes from how it simultaneously simplifies and improves compiler optimizations, by simplifying the properties of variables.

The FORTIFY_SOURCE extensions add both compile-time buffer overflow detection, and very low overhead runtime overflow protection. This is an excellent development tool to help improve the quality of code out there, and a current aim is to have the -D_FORTIFY_SOURCE option to compile the entire Fedora Core 4 distribution! (Nothing shipped in Fedora Core 3 makes use of GCC4) For more information on this, refer to a posting made by Jakub Jelinek at

This also entails that Fedora Core 3's glibc has the new capability embedded within it, and enabled by GCC4 with the FORTIFY_SOURCE switch. GCC 3.4.2 will be gaining some of this functionality soon, in an update available via the Fedora Updates.

Faster Updates

The Yellowdog Updater Modified (affectionately known as yum) allows the user to automatically update a Linux system using the RPM Package Manager (RPM). Many user requests during the Fedora Core 1 and 2 release cycles included requests to make yum faster and less resource hungry. Yum in Fedora Core 3 has over a 40% speed improvement, thanks to how dependency checking works now.

The new YUM uses a condensing of the header information. It now takes a list of what needs to be done (via the command line), gets the relevant information about it, and then questions rpmlib in regards to dependency resolution. rpmlib then responds, YUM now uses the XML metadata (provided by repodata), which is what makes it quicker, and less memory hungry. For a further speed improvement, once the XML is read once, the information is cached, since Python's XML parsing isn't as fast as it should be – so YUM just reads this metadata when resolving an item. Metadata is an XML package (, where meta information is stored in the “repodata” directory of each repository. This is the XML representation and condensation of the information stored in the RPM package header. This allows YUM to resolve dependencies and get more useful information quicker. Generating a “repodata” source is provided by the createrepo utility. A few new YUM features include: yum list recent – this lists packages added to any of the repositories recently, which is useful if you want to have information about what packages were just added. yum list obsoletes – this lists packages available for obsoletion. yum groupremove [somegroupname] – installation by groups has been supported, now removal of an entire group is supported as well If you download some package from the Internet and use YUM to install it, it will resolve any dependencies the package requires, provided through the repositories listed in your YUM configuration.

Common Gotchas in Fedora Core 3

Like all new releases of software, there are bound to be some changes from the older releases, and Fedora Core 3 is no exception. Some of the most notable changes are:

  1. If you upgraded or moved your home directory over from a system running a previous version of Fedora Core, the permissions of the ~/.ssh/config file need to be changed to comply with the requirements that OpenSSH 3.9 impose. This requires ~/.ssh/config to be owned by the owner of ~/ and its permissions set to 600 — otherwise, the OpenSSH tools will exit.

  2. Being more FHS compliant, Fedora Core 3 now includes the /srv directory. The rationale behind this directory is to store site-specific data that is served by the system: where the httpd, cvs, and ftp services store their data, for example. This directory is not used for this purpose in Fedora Core 3. It is just provided for FHS compliance.

  3. Media is now mounted in /media, rather than /mnt as previously done. So, a typical CDROM drive gets mounted into /media/cdrom, and a typical CD-RW drive is mounted as /media/cdrw.

  4. Fedora Core 3 no longer includes the kernel-source package. Users who want to rebuild the kernel are encourage to download the kernel-<version>.src.rpm source RPM, install it, and build kernel-source from it. However, if a user wants to build a module against the existing kernel, the entire kernel source tree is not required. Refer to the Release Notes for details on both these operations.

  5. Online resizing, via the ext2online utility can allow the growing of ext3 file systems.

  6. cdrecord does not require specification of a device via --dev=0,1,2 anymore. Now, specifying the device itself is all that is required. For example, cdrecord --dev=/dev/hdc example.iso burns example.iso to the CD located in the CD Writer at /dev/hdc.

Looking Ahead

The downloads for the Fedora Core 3 release have been stunning — the torrent at Duke sustained over 16,000 image downloads, exchanging about 37TB in just two days!

The Fedora Project has come a long way, and Fedora Core 3 is a testament to where the distribution is heading — to be a great desktop distribution that the end-user will find largely useful, yet be an operating system that a systems administrator could maintain at a large site.

Work has already begun for Fedora Core 4 including utilizing Python 2.4 in the distribution, so watch out for Fedora Core 4!

About the Authors

Warren Togami is the founder of the project, which has been merged into the Fedora Project. He is a student at the University of Hawaii as well as a Red Hat employee working on the Fedora Project.

Colin Charles ( is a consultant, author, and student who's actively involved in the and Fedora projects. Besides tinkering with computers and other electronic gadgets, he has interests in bowling, cycling, chilling out, and watching movies.