Category Archives: July 2005

Through The Looking Glass

Are you looking for a present to get for your favorite developer? Davyd Madeley reviews Robert Love’s Linux Kernel Development, 2nd Ed, and finds an interesting use besides the author’s suggested ones.

I am not an operating systems designer; I am an electronic engineering student. I have done a unit on operating systems, but I enjoyed it less than I enjoyed the Pink Shirt Book (you know that one by Peter Norton?). I can program, but I do not class myself as a programmer. All the same, Robert let me read, then write about, the new edition of his book, Linux Kernel Development.

Linux Kernel Development is incredibly comprehensive. Robert starts the reader off gently with an introduction to what Linux is, and how to download it, build it and handle kernel patches. This is the bread and butter of any development with the kernel. From then on we are dazzled as we are shown how Linux implements processes and the scheduler. System calls, interrupt handlers, bottom halves, synchronisation, locking, timers, memory, virtual file systems, block I/O, the list goes on. If there is something you wanted to know about the kernel, it’s covered somewhere.

Most of it was simple enough for even me to understand, yet detailed enough that I think I could actually implement a driver if I wanted. The book includes tables of functions with extensive comments on what they do. However, the book is not an API reference. The would-be kernel developer is given insight into designs in the kernel and the history of previous kernel design. Like touring a museum of old kernel designs, we are told about Linus Elevators, the antique BH interface, and many other designs now replaced in the Linux kernel. This history of the kernel is novel in that it allows new developers to understand why some things are the way they are, what ideas were tried in the past, what turned out to be not such a good idea, and why it was bad. You come to realise that the design of the kernel is very much an experiment in applying the technologies and techniques of the computer scientist. Robert is not afraid to say when these techniques were applied poorly.

Even though each component of the kernel is covered in extensive detail, some parts of it can still be quite daunting. Robert recommends you read the book in conjunction with a copy of the kernel sources as a reference. Some sections of the kernel, like the virtual file system layer, can be quite confusing to understand. By the time you have finished reading pages and pages of detailed C structures, you can’t really recall how they all fit together in the first place. This can also be a problem when more complicated and subtle algorithms and data structures are employed.

While trying to explain the concepts simply and succinctly, Robert still encourages new developers to simply roll up their sleeves, fire up their favourite source editor and get their hands dirty, so to speak.

In addition to those who wanted to get started with kernel development, the book also acts as an excellent reference for anyone who actually has no interest in writing code for the Linux kernel. The information we learn about the implementation of scheduling process management and system calls helps the user space-oriented developer to better understand the core of the systems they are dealing with. I have found that understanding how the Linux kernel works gives the me an insight into understand the entire operating system and why sometimes one implementation is non-obviously better than another. The book refers to both UNIX history and UNIX idioms in an effort to educate the reader in UNIX-like operating system principles as well as be entertaining.

System administrators will find the book an invaluable resource for getting detailed information on the various processor and disk scheduling algorithms available in the kernel as well as how to optimise other features of the Linux kernel.

Not too many people want to hack on the kernel core, and instead usually have an itch to scratch with regards to support for new types of hardware. Linux Kernel Development will be of particular interest to people looking to develop a module or driver for the kernel. We are told what is required to initialise and deinitialise a driver, how to configure it to be built with the rest of the kernel, using kobjects to interface with the common driver interface that was a feature of Linux 2.6 and using sysfs to set hardware properties useful for user space applications. All of this is made easier through additional tips and hints with regards to portability and debugging. Unfortunately there is not enough space in the book to cover every single driver subsystem (such as USB, ALSA, and Network) available in the Linux kernel. Of course, each of these subsystems is complex enough, with its own set of tips and hints, that it would warrant its own book.

There is a saying that any piece of code is three times harder to debug than it was to develop. To help out in this regard, Robert shares with us some of his personal favourite techniques for debugging the kernel, both using the ‘printk’ school of debugging and using a variety of debugging tools such as gdb and kdb. Robert gives examples of subtle tricks that can make the new kernel developer’s life a lot easier, like rate limiting debugging messages, generating back traces for parts of the kernel and exposing information through the /proc and /sys interfaces.

Robert Love’s charming and witty style is prevalent throughout the book. As a more senior developer, and developer of a number of important kernel improvements such as the preemptive kernel space and inotify file change notification interface, he’s not afraid to poke fun at the kernel when appropriate, especially at the sometimes non-sensical nomenclature. New developers realise that sometimes function names don’t make sense even to those who wrote them.

While the first edition of this book was still excellent, you might consider getting the more recent version if you want updated information on the Linux 2.6 kernel. The new edition also includes more information on kernel modules, as well as virtual memory, using the kernel memory allocation functions, getting involved in the Linux kernel community, more debugging tips and lots of new examples.

I recently met up with Robert at a conference in Australia. He was quite modest about his book when I told him how good I found it. A technical bookstore that had set up at the conference sold out of copies of the book within days. In addition to Robert’s suggested uses for the book (lighting fires and beating your cat) I think that Linux Kernel Development is an excellent resource for the would-be or existing kernel developer, operating system enthusiast or student. I think it has a place on every technical shelf and on the book list for any UNIX operating systems course. If asked to give a rating, I would say about 9 out of 10.

Discuss this story with other readers on the GNOME forums.

Advertisements

An Introduction To Foresight Desktop Linux

Take a glance at a very new and up-and-coming Linux distribution that aims to showcase the latest GNOME desktop and applications within a very tightly integrated experience. Ken VanDine, the original creator of Foresight Desktop Linux, takes you on this journey through what it has to offer.

A look at the new GNOME Desktop distribution showcasing new and emerging GNOME technologies

Introduction

Why a new distribution? There is a real need for a desktop Linux distro that is easy to manage for new users, well integrated, modern, and still appealing to power users. Foresight strives to fill that need. Foresight is not just another Debian or Fedora distro, instead it is something truly innovative. Foresight is still in a beta stage, but is rapidly growing and stabilizing. Built on the Conary package management system, Foresight has a bright future. Foresight focuses heavily on usability and integration, therefore the latest GNOME release is always the standard desktop.

What is Different

One major difference is Mono; Foresight ships Mono as well as quite a few Mono applications by default. The Beagle desktop indexing tool, which is rather tough to get to work well on other distros, works right out of the box on Foresight. This is just an example of the innovative applications that have been included.

Conary takes the headaches out of software maintenance. Conary is the brain child of the guys at rpath, which is mostly made up of former Red Hat veterans. One major problem solved by Conary is package upgrades. Conary always upgrades from the repository it was installed from, not the one with the version that appears to be the newest. This adds a tremendous level of stability. Conary also enforces some package naming and version rules. For more information, take a look at http://wiki.rpath.com. Conary is an exciting new opportunity for Linux and package installation both for users at home and for large deployments of computers in an office setting.

Ease the Pain for Switchers

The Foresight default interface is quite simple and easy for the new user to get acquainted with. Featured is a mostly standard GNOME desktop, with some beautification. The Foresight team includes extremely talented graphic designers/artists with plans to make the desktop look its best while still maintaining the utmost in usability.

Foresight also includes a new tool for systems management, Oversite. Oversite keeps your system up to date all of the time. In the future, Oversite will provide a web interface to manage your desktop and make it trivial to install any new application.

About the Community

The Foresight community is very active and currently includes a wide variety of contributors. There is a strong design/artistic presence. There are new Linux users as well as veteran users and packagers. There are also developers, working on applications such as Oversite and UserManager (a simple interface for user account/profile management).

Package Management

Conary is a distributed software management system for Linux distributions. It replaces traditional package management solutions (such as RPM and dpkg) with one designed to enable loose collaboration across the Internet. It enables sets of distributed and loosely connected repositories to define the components which are installed on a Linux system. That means that there no longer needs to be a single central package server per each Linux distribution.

Conary treats packages as change-sets and not as a bundle of files. This means that when updating a package, Conary communicates with the repositories to determine what needs to change on the system to install the new package and only downloads the bits needed for that change. There are many advantages to this approach, but most visible to the user is the efficiency in bandwidth and speed. When updating a large package for the first time, you will essentially download the full package, however, when updating in the future the downloads could be significantly smaller. Here is an example: installing Abiword 2.2.6 on a system for the first time would be approximately a 15MB download, however updating to Abiword 2.2.7 is only 2.4MB.

Conary also provides roll backs which essentially allows you to revert to a previous state of a package with a single command. So if that Abiword 2.2.7 just doesn’t work for you, roll back.

What’s Included

Foresight includes many modern applications with modern meaning applications that are both relatively new as well as having very current versions.

Package Highlights
Beagle Search tool that ransacks your personal information space to find whatever you’re looking for
F-spot Designed to provide personal photo management to the GNOME desktop. Features include import, export, printing and advanced sorting of digital images
Tomboy Desktop note-taking application
Muine A music player with a simple, elegant interface
Blam Tool that helps you keep track of the growing number of news feeds distributed as RSS
Appliworks Manage your personal multimedia data in a really original way
Abiword GNOME Office Word processor Application
Gnumeric GNOME Office Spreadsheet Application

And so much more available via Conary, all easy to install and well integrated.

Games

The Foresight repository is unlike any other distro’s—Foresight aims to have all of the games playable “out of the box”, with no strange bugs along with menu entries for all—that means no more guessing command lines! Consistency is taken seriously. The Foresight team has contributed back to various projects by providing icons, desktop files, etc.

The Foresight team is creating a “best of breed” set of games—8 versions of Tetris and 4 versions of Asteroids are no use to anyone! Foresight is concentrating on providing a good mix of not only games genres, but also of 3d accelerated and non-3d accelerated games.

Foresight has also worked hard to make sure game development libraries are packaged abundantly, sanely, and responsibly with hopes to become the game developers distro of choice.

Game Highlights
Neverball Similar to Super Monkey Ball and Marble Madness. Using the mouse, guide the ball through beautifully rendered 3D environments collecting coins to reach the goal. Comes with two variations – Neverball and Neverputt, a crazy golf game
Ppracer An update of the classic game, Tuxracer. Guide tux the penguin down hills collecting herring at tremendous speeds—everything Tuxracer was and more! Beautiful polished graphics
Ultimate Stunts An in progress racing game reminiscent of the classic PC games Stunts, and Stunt Car Racer
Open City An in progress city management game that currently looks and feels very similar to Sim City
Open Mortal Fantastic Mortal Kombat style beat-em-up with a comedy twist
Critical Mass A fast and furious vertical shoot-em-up with stunning openGL special effects

Conclusion

Foresight has a bright future. Many of the technologies that are on the brink of being standard are already included and working in Foresight… no twiddling or pounding on config files to make it work… they just work. This is what it will take to make Linux on the desktop successful, and Foresight has it. Try it, you’ll like it!

References:

http://www.foresightlinux.com/
http://www.gnome.org
http://wiki.conary.com
http://www.gnome.org/projects/beagle/
http://www.gnome.org/projects/f-spot/
http://www.beatniksoftware.com/tomboy/
http://muine.gooeylinux.org/
http://www.imendio.com/projects/blam/
http://appliworks.jondesign.net/
http://www.abisource.com
http://www.gnome.org/projects/gnumeric/

Discuss this story with other readers on the GNOME forums.

An Introduction To F-Spot

With digital cameras getting less expensive, photo and image collections tend to grow faster then ever. Patanjali Somayaji shows how to master the problem with the F-Spot photo management system.

Overview

F-Spot is a photo management system for GNOME built using the Mono platform. It provides features such as importing photos and exporting them to disk, web galleries, web photo management services, and burning images to a CD. F-Spot has a very powerful classification system based on tags, which can be used to organize and catalog your photo collection.

Getting F-Spot

The F-Spot home page contains information on how to download and install F-Spot. Some distributions provide pre-built packages. F-Spot is still in the development phase, however, you can use it quite effectively to manage your digital photos.

Importing Folders

The first step after installing F-Spot is to import some photos to manage. Let’s say these photos are in your home folder, under “photos”. Choose File -> Import… to get the dialog shown below.

Browse through your folders and choose the folder “photos” which contains the photos that are to be imported into F-Spot.

The folder chosen (“photos”) is selected as shown in the figure below. You can assign a tag to each photo that is imported (more on tags for classification later).

F-Spot imports all the photographs and displays them in a thumbnail view. The top left panel contains various “tags” while the bottom of the left panel contains information about each photograph such as the date and time the photograph was taken as well as other pertinent information to a photographer about a particular photograph.

Simple Operations

F-Spot allows you to easily perform simple operations on your photos like rotating the image, cropping the image, red-eye removal, etc.

Rotating a Photo

Consider the photo in the picture below, which needs to be rotated. Double click on the photo to edit it. This opens the photo to be edited.

Right click on the photo and click on f-spot-rotate-90;

and the image is now rotated.

To return to the thumbnail view, click on Browse in the toolbar.

Crop a Photo

To crop a photo, use the crop tool shown below.

Select the area of the photo you want to resize as shown in the image below, then click on the crop tool.

The modified image is stored on disk as a new, “modified” image as shown in the information on the lower left panel of F-Spot. Therefore, cropping the photo does not modify the original image, but rather it creates a new version of the original photo. Using the lower left panel of F-Spot, it is very easy then to switch between your original and modified versions of the photo.

Adjust the Color of a Photo

Use the color adjust tool in the edit photo window to adjust the color of a photo.

You will be presented with a dialog box to adjust the photo color as shown. As in the case of the crop operation, the color adjust tool creates a modified version of the image which is stored on disk, keeping the original version intact.

Adjusting the color gives the following result:

Adding a Comment to a Photo

You can easily add a comment to an image when in the edit view. Just type in the comment in the edit box below the photo as shown in the picture below.

Classifying Photos with Tags

F-Spot allows you to classify photos by assigning tags to each photo. F-Spot already supplies a set of tags by default – “Favorites”, “Hidden”, “People”, “Places”, “Events”, and “Other”. You can create tags in each of these categories, and then assign a tag to a photo or a selection of photos by just dragging the tag onto a photo or a selection of photos.

For example, the photos we imported were from a trip to Singapore. So lets create a new tag “Singapore” under the default tag “Places”, and assign it to all the photos.

Creating the Tag

Right-click on the “Places” tag, click on Create New Tag and fill in “Singapore” in the “Create New Tag” dialog box.

Assigning Tags to Photos

To assign a tag to a photo just drag the tag and drop it on the photo. The first photo that is assigned to a tag is used as the Icon for the tag. You can also drag a tag on a selection of photos to assign a tag to all selected photos.

Selecting Photos Using Tags

You can use tags to select photos, and then perform operations on this selection. In the example below, six photos of a “cable car ride” are classified under a new tag “cablecarride” under “Events”. Selecting the “cablecarride” tag in the tag list on the left selects only those six photographs and shows them in the thumbnail view.

Exporting Photos

F-Spot allows you to export your photos to a variety of locations, including web galleries, gnome-vfs locations (e.g. Samba shares, Ftp locations, etc.), local folders, a CD, and your Flickr account. You can also choose to send photos by mail. Where possible, F-Spot also exports the categories and tags created. You can decide to strip the files of any metadata when exporting as well as resize images.

Exporting to a CD

You can choose to export photos to a CD using Nautilus-cd-burner or export photos to a CD to burn later. After you select the photos to transfer to a CD, choose File -> Export -> Export to CD… to export images to a CD.

Select whether to burn an image or use nautilus-cd-burner to write a CD, and choose other options.

Finally, choose the image file and create the CD.

Sending Photos via Mail

To send photos via mail, select the photos, then click on File -> Send Mail…. This will start your mail client with a new compose message and the selected photos will be attached.

Exporting Photos to Your Flickr Account

Exporting photos to your Flickr. account online is also a very simple process. All you need to do is to choose File- -> _Export to Flickr… and fill in the required details. You can choose to resize your images, and export with tags and categories that continue to be associated when the photos are put online.

Conclusion

F-Spot is a very powerful and usable application that demonstrates the power of the GNOME desktop. It can only get better as more and more features are added to it. For further information you can join the F-Spot mailing list, or join *#f-spot* on irc.gnome.org.

Copyright © 2005; Patanjali Somayaji (patanjalisomayaji gmail com)

Discuss this story with other readers on the GNOME forums.

A Short Preview On Modeling With K-3D

In this article, Claus Schwarm takes a look at the history and the current development version of K-3D, a tool for 3D modeling, rendering, and animation.

 

Introduction

When talking about 3D artwork on GNU/Linux most people think of Blender. And a lot of them think of its unusual interface nearly at the same time. However there’s not just Blender; there are many alternatives. Among them, K-3D is a refreshing effort that you should know about if 3D artwork is your thing.

K-3D is not a KDE application although many think so due to the K in its name. In fact, the project was called ‘Equus-3D’ when it was started early 1994 by Timothy M. Shead on an Amiga computer. When it became clear that the meaning of the original name wasn’t obvious to users anymore, Shead changed it to K-3D on a “particularly un-creative” day according to the FAQ. At this time, he was not aware of KDE, and its naming schemes.

Since its beginning, the project has undergone major changes: It moved from Amiga to Windows, became GPL in 1999 and started a project page on SourceForge in 2002. Written in C++, K-3D at first invented its own bindings to GNOME’s GTK+ toolkit. In its latest stable version, 0.4.*, this is still used. For its development version that aims to implement a new user interface, those bindings were dropped in favour of GTKmm, the official C++ binding to GTK+.

The old interface of K-3D’s stable version is similar to the one used in ‘The GIMP’. It was the “first try before we really sat down and thought about the user interface”, according to Romain Behar, who is now K-3D’s lead developer and maintainer.

Since K-3D’s next stable release with the new interface is planned to be published within the next few months, let’s have a short preview on what users can expect.

Installation

You can download a snapshot of the development version from the project’s SourceForge page. You may find additional binary packages in the ‘Getting Started’ section of the K-3D homepage for your distribution.

If you can’t find a binary for your distribution, you will need to compile the source package. Be aware that compilation takes a long time and needs roughly 1.2 gigabytes on free disk space for compilation. By default, the installed size is 370 megabytes. It includes all information for proper debugging.

At the time of writing, version 0.5.0.25 is the latest source package release. After downloading, right-click on the package and choose ‘Extract here’ to extract the archive. Then, open a terminal window in the newly created directory, called k3d-0.5.0.25.

The usual way of proceeding is to check the README file provided with the package. However, K-3D’s homepage provides several platform specific build instructions and generic build instructions as well. They are easier to read and more clear.

Before you start compiling, make sure all build dependencies are available from your distribution’s package repository and installed. Apart from having the build infrastructure installed (on Debian, you can do this by running “apt-get install build-essential”), you’ll need 5 required development packages, 11 optional development packages, and their respective dependencies. These are listed on K-3D’s homepage as “External Dependencies”.

Another package you may also need is librsvg – a SAX-based renderer library for SVG vector graphics. One of its commands is needed for running ‘make install’ but this isn’t checked by the configure script.

Then, you can follow the build instructions. If you are running into problems although all dependencies are installed, do as if you would use a copy from the CVS revision control system – that is: First, run

 LANG="" ./bootstrap 

This is basically a script that starts other scripts to prepare the build scripts. Then, proceed as described on K-3D’s homepage.

By default, the package is installed in /usr/local/k3d. Thus, the binary may not be found by your shell when you just enter “k3d”. You either add /usr/local/k3d/bin to your PATH variable, or you just take the testing route by entering:

 /usr/local/k3d/bin/k3d & 

at the command prompt. In general, the installation procedure works fine.

The interface

K-3D’s interface consists of several segments, partially similar to those a standard application uses, but there are also some important differences.

At the top, there’s the usual menu. However, the common toolbox uses just a small part on the left. The right part is used by the so called ‘shelf’ which provides a shorter way to the various tools listed in the ‘create’ menu.

The middle is split into several panels: After the start, you’ll see three on the left, and a large one on the right. Initially, the left panels are used to display and change information about the objects shown in the larger panel on the right.

The bottom is used for a timeline dialog – useful for doing animations – and the usual status bar.

Just in case, you don’t like the layout: It can be changed completely by using the drop down menus in each panel, and the entries of the ‘view’ menu. The next screenshot shows a layout more similar to other modeling applications. Unfortunately, changes are not saved after closing the application but that’s probably on the todo list of the developers.

In general, the interface looks a little bit rough around the edges. For a development application implementing a completely redesigned interface, this is to be expected.

K-3D also doesn’t look very GNOME integrated. For example, the close dialog ignores button order, proper icons, and the like. The interface icons are also not stock icons. This is probably due to an attempt at better usage of screen real estate, as the icons used are also smaller in size.

Basic usage

The viewport is the most important part of K-3D’s interface. If you’re unfamiliar with 3D modelers in general, think of the viewport as a movie set, represented by the axis in the viewport. You’re watching the set basically through a camera: the viewport display on your monitor. To zoom into the set with your camera, you can simply use your mouse wheel.

To move the position of the camera, keep your right mouse button clicked, and move the mouse. In the movie analogy, this is similar to the famous slow motion scenes of ‘The Matrix’. To move the position of the set, keep you middle mouse bottom clicked, and move the mouse.

By holding [Shift] and your right mouse bottom down, you can now roll your camera around its optical axis. Holding [Shift] and your middle mouse button clicked will ‘aim’ – according to K-3D’s manual, a “tripod like motion, pan and tilt from a fixed point”.

Finally, you can also zoom by holding [Ctrl] and your right button mouse clicked. Then, move your mouse up and down. Something similar happens, when you hold [Ctrl] and your middle mouse button clicked, and you move your mouse up and down: Then, your camera will move into the set. However, it’s hard to see any differences between both methods.

Until you got used to all the possibilities, you will certainly loose your orientation several times. Then, a simple click with your middle mouse button will bring you back on track. It moves the center of the set to the middle of your camera.

You can now create geometric objects in the viewport; either by selecting, for example, ‘Create -> Polygons -> PolyCube’ from the top menu, or by using the upper shelf. To select the newly created object, a single left button mouse click on the object is sufficient – selection is indicated by the objects’ points and edges getting white. In the ‘Objects Properties’ panel you can now edit its attributes such as ‘Name’, ‘Position’ ‘Orientation’, ‘Scale’, and others.

To turn the single cube into a very simple house model, activate the ‘Select faces’ tool, and select the upper face of the cube so that its color changes to red just like in the next screenshot.

Now right-click for the context menu, and select ‘MeshFilter -> ExtrudeFaces’. The number of options in the submenu is incredible, so take your time to look around. After selecting ‘ExtrudeFaces’, you should now see a second cube on the top of the first. This will become the roof of a house.

You may like to make the upper cube a little bit higher. This can be done in the ‘Object Properties’ panel: Just increase the value of the ‘distance’ property. The button to change the value works as usual but users familiar with other 3D modelers will enjoy the option to change the value by mouse movement: Holding the Up/Down button pressed and moving your mouse up or down will change the value.

To make the upper cube a roof, deselect the object first. Then, enable the ‘Select Edges’ tool, and select two upper edges opposite to each other, so that it looks like the next screenshot.

Now right click for the context menu, and select ‘MeshFilters -> CollapseEdges’. This will turn the remaining selected edges into points. Voila, your first (very basic) model of a house.

K-3D is a powerful tool, even if only a small part of it could be shown here. The number of entries in the top and right-click menus indicate that you can do a lot more. Before our simple house can be part of a nice picture, for example, we’d need to apply textures, and install a renderer for rendering the image. This may be part of another look at K-3D in the future.

Conclusion

Version 0.5 is a development version, and thus not ready for productive work. Clicking the wrong menu entry may lead to a crash that may take the whole X-Server down! However, this is what publishing a development version is all about. To make bug reporting easy, a bug report dialog appears when you restart K-3D after a crash.

K-3D is a very promising application: Its new interface is fine even for smaller resolutions; it stopped trying to reinvent the widget wheel by using GTKmm; it tried to very pro-user by doing things like surveys about useful user interfaces, and it tries to be GUI-agnostic and splits basic functionality and interface.

However, for people just interested in getting things done, K-3D’s usefulness is rather low at the moment. Without a stable GUI, making tutorials doesn’t make much sense. And good tutorials are one of the most important assets of a project about complicated issues such as 3D modeling and rendering.

This affects also surrounding issues such as an active user community. Although the K-3D team seems motivated to keep it alive—there’s a forum available, for example—, the lack of a new stable version shows.

Right now, the best place to contact the developers is the project’s mailing list. There’s always work to do, so potential developers and additional testers can expect a happy welcome.

Discuss this story with other readers on the GNOME forums.

RSS Feed Readers For GNOME

Weblogs and other internet sites deliver news on nearly a daily basis. Steven Garrity looks at RSS feed readers for GNOME, so you won’t miss a single item.

 

What is RSS?

For those that live in the world of weblogs, RSS feeds have become ubiquitous to the point of disappearing from view. No one asks if you have an RSS feed for your weblog. If you have a weblog, it is assumed that you have an RSS feed. For the rest of the world, RSS may still be just another acronym.

Without getting into the history of RSS, it is simply an XML-based format that can be used to syndicate information. The most common use of RSS feeds is between weblog publishers and their readers (often the same group of people reading each others weblogs). Most weblog systems automatically publish recent posts and reader comments in an RSS format. A variety of desktop or server-side web applications then aggregate these feeds and present them to the user – often in a format that looks a bit like a traditional email client.

There are a few variations of the RSS specification, and a competing format called Atom. While it might be a mess for developers, most news readers seem to handle most of the various formats.

Why Use RSS?

If you do read weblogs, RSS can become an indispensable way of keeping up with them. It can be especially helpful for weblogs that are only updated occasionally. If someone only posts once a month, you need not check back every few days to see if there is anything new – your RSS reader will let you know.

Don’t care about weblogs? RSS is starting to be used in other ways as well. Still in the realm of weblogs, it has become a great way to keep up on the world of open-source projects. Several significant projects have setup what are called “Planet” sites. These sites are effectively group weblogs, aggregated (using RSS) from the individual weblogs of those that contribute to and write about the project. Planet GNOME and Planet Mozilla are two popular examples, but there are many more.

With these planet sites, you can subscribe to one RSS feed and keep up on the development progress of an entire project community, rather than finding and subscribing to a slew of individual feeds.

Still don’t care about weblogs? Most traditional news sites, like Yahoo News, MSNBC, The New York Times, and BBC News are now publishing dozens of RSS feeds for each different topic they cover. Many Wiki implementations are providing RSS feeds that can be used to track changes to Wikis – something that proved a great help in the planning and organization of the GNOME Summit in Boston in the Fall of 2004. RSS is even starting to be used by developers to track bugzilla and CVS changes.

A Selection of RSS Readers for GNOME

Note that this is not intended to be a comprehensive list of all RSS readers available for GNOME. Rather, this is a selection of applications that I found to be useful and promising. There are others. It should also be noted that all of these applications, while generally stable enough for daily use, are still under regular development.

Straw

Straw is an RSS reader designed specifically for GNOME. It was my primary RSS reading application until recently (more on that shortly). Written in Python, Straw is deliberately simple, providing a traditional three-pane interface and relying on native Gtk and GNOME technologies.

My greatest complaint about Straw was performance. While I did not do any benchmarking, I generally found the application to be sluggish and unresponsive. However, reading RSS feeds isn’t something that demands a lot of speed, so Straw remains a usable and capable RSS reader for GNOME.

Liferea

Perhaps the most complete and comprehensive RSS reader available for GNOME to date, Liferea recently became my default reader. While it does seem to offer a wider set of features than some of the alternatives, reading RSS feeds is a simple enough activity that additional features aren’t always a plus. That said, Liferea is not feature-laden to the point of bloat. The application feels responsive and complete.

Like Straw, Liferea also uses the traditional three-pane interface but also includes collapsible groups for feeds in the left pane. This can be particularly handy if you keep track of a large number of feeds.

Blam!

Blam! is one of the newer RSS readers to become available for GNOME. As such, it has a ways to go before it provides a complete and polished user experience. For example, Blam! does not include any means of grouping or categorizing feeds. That said, based on the application so far, I can easily see Blam! becoming a strong RSS reader available for GNOME.

The greatest hurdle to the adoption of Blam! (in addition to the unfortunate inclusion of an exclamation mark in its name) is that it is built on Ximian/Novell’s Mono development platform. For distributions like Foresight Linux, Mono is included by default. However, this could remain a large hurdle for users of other distributions.

The Email Client / Web Browser Option

Since RSS readers often present feeds and posts in the three-pane view often used in email clients, some email clients have naturally extended their capabilities to include RSS reading. While there was some RSS support in the 1.x series of the popular Evolution email/calendar/contact application, the recent 2.x release of Evolution has removed the RSS module. It is possible that Evolution 2.0 will be extended to include RSS support at some point again in the future.

Another promising email client, Mozilla’s Thunderbird, has recently gained RSS support. While Thunderbird is also available for Windows and Mac OS X, it runs quite comfortably along side other GNOME applications. The RSS functionality included in Thunderbird is relatively new, and not yet complete. However, since many of the aspects of an RSS reader, such as the three-pane layout, are already available in an email client, I expect the feature set to round out quickly.

The popular Firefox web browser was also endowed with some RSS reading capabilities late in the development cycle leading up to its 1.0 release. The RSS capabilities in Firefox come in a simpler form than most full-fledged RSS readers in a tool called Live Bookmark. This feature enables the bookmarking of RSS feeds in a manner that displays the recent items from the feed in your Bookmarks menu. There are also several Firefox extensions that provide RSS reading functionality integrated inside the browser.

Server-Side Options

There are options for reading RSS feeds beyond traditional desktop applications. Several web-based RSS readers have become quite powerful and quite popular. These can be particularly useful if you want to access your RSS feeds from several different computers.

Kinja is a simple web-based RSS aggregator that works comfortably in any web browser. Bloglines is probably the most popular and powerful of the web-based RSS readers. Some of the desktop applications are exploring tying into Bloglines web-services API to keep your feeds in sync between your Bloglines account and your local RSS reading desktop applications. This would be particularly useful for those that want to use a native GNOME desktop RSS reader on their primary computer, but still access their feeds remotly via the Bloglines service occasionally.

Conclusion

While the most visible RSS readers on the web are native Windows and Mac OS application (NetNewsWire, FeedDemon, and others), there are a variety of good native Gtk and GNOME options available. Though most of the popular Linux distributions don’t yet include an RSS reader as part of the default desktop setup, the applications mentioned here are easy to find and install for most distributions. All of these applications are maturing quickly and should meet the needs of most people.

Copyright © 2005; Steven Garrity

Discuss this story with other readers on the GNOME forums.

Marketing GNOME

John Williams, a marketing lecturer and member of the GNOME marketing team, looks at the prospects for the marketing of our favorite desktop environment. Much of this article is a summary of the recent developments on live.gnome.org and the gnome-marketing list.

Introduction

Recently, Jeff Waugh proposed a goal for GNOME: 10% market share by 2010. This has become the slogan “10×10”; you may have seen this lately. This proposal seems to have met with approval by the GNOME community, judging by the reception to his speech at GUADEC and the traffic on the gnome-marketing list, the #gnome-hackers IRC channel, the live.gnome.org wiki and the planet.gnome.org blog aggregation site. In this article, I summarize some recent discussions and developments that have occurred in these forums, and offer my thoughts on how to proceed.

How can we achieve the 10×10 goal?

Free and Open Source Software development is by its nature anarchic, but not necessarily uncoordinated. It is not clear (at least not always clear) exactly who the people who comprise “GNOME” are. However in what follows, I will assume that there exists a group of people who can implement the marketing function of GNOME.

Let me start by making something plain: marketing is not about convincing people to buy (or use) your product or service. That is selling. Marketing is about matching the output of your organization to the demands of the (chosen) market. Put another way, marketing is about finding out what people want, and then giving it to them.

This does not fit the usual picture of the GNOME hacker as someone who “scratches an itch”. However it can fit the picture of someone who wants to give back to the community and liberate people from non-free software.

The immediate implications of the “give people what they want” view is that if we are talking about marketing GNOME, we must first answer three fundamental questions:

  1. Who are the members of the organization that are going to do the marketing? (In for-profit marketing this would be a company, a corporation or a sole trader, for example. As noted above, I will assume that we have some kind of answer to this question.)
  2. Who are the members of the market that the organization is trying to serve? (Sometimes called the “target market” or
    simply “the market”.)
  3. What do they want? (That the organization has the capability and willingness to give them.)

As an aside, more and more marketers are realizing that people very rarely want products, rather, they want services (although a product may be involved in providing that service). There is a saying in marketing: “No one wants a quarter-inch drill. They want a quarter-inch hole.”

In the rest of this article I will describe some ways that we can go about getting answers for these questions.

Who Are the People in the Market of GNOME?

Before you start saying “corporations are not people”, remember that before a corporation buys a product, or enters into a partnership with another organization, a person must approve that decision. All economic decisions are made by people (even if it’s a programmer who wrote the code for an automated purchase system!).

There seems to be a realization that there are at least four main groups of people in the market that GNOME can serve:

  1. Private users
  2. Organizations
  3. F/OSS Distributors
  4. Independent Software Vendors (ISVs)

It should be clear that the needs of these groups of people (“market segments”) are probably quite different. For example, the number one need of private users may be an easy to use and powerful GUI. Whereas the prime need of ISVs may be high quality and complete API documentation.

These are guesses. Who really knows the answers to these questions? When I say “really knows” I mean is their knowledge based on empirical research, or hearsay and opinion? Finding these answers, I believe, is one of the major challenges facing the GNOME marketing team, and one that cannot be delayed.

You may be tempted to call these groups “market segments”. This would only be true if, in fact, these groups:

  1. Have differing needs that we could satisfy
  2. Need different marketing strategies (not tactics) in order to serve them effectively

In other words, a group of people must respond differently to a given marketing mix (product, place, price, promotion) for them to be considered a distinct market segment. We need to survey people from these groups in order to determine whether they do, in fact, have differing needs.

What Do People in the Market of GNOME Want?

I don’t know. Does anyone know? I am aware that information has been gathered, but where is it published? And does it go beyond the quick-and-dirty convenience sample approach that typifies so many web-based polls?

We need to get some answers to these question before we can talk seriously about marketing GNOME. Fortunately, there is a well-established procedure for getting these answers: ask people.

Once you’ve got the answers that your market gave you, you must then think about whether they make sense to your organization. If you asked car owners what they wanted in a car, they would say they want a car that goes forever, never needs maintenance (or fuel), goes really fast, has great brakes, …

But can you deliver that?

Even if the answers seem reasonable, the next test is: if we gave them what they say they want, would they take it? For example: we may get results of a user survey that tells us that thing that the majority of people say is their biggest wish is bug-free software. And if they can’t get that, they are willing to settle for timely bug-fixes.

Imagine that the GNOME community could deliver that. Would that convince users to adopt GNOME? Maybe, but maybe not. There may be other factors (in fact, many of them) that will still be a barrier to the adoption of GNOME. Not the least of these barriers is the perceived learning curve.

The point is that asking people about their wants is just the start of the marketing research process. The next step is finding out what makes people choose our offering over that of our competitors. Very often in marketing research we find that these factors have very little to do with the market’s conception of an ideal product or service.

Once you have a product that people want, the next thing is to make it easy for them to get it. This is, essentially, what branding is about.

Branding

The essence of branding is creating a unique concept in the mind of your audience. This is achieved by consistent communications. All the messages that an audience receives about a brand should be consistent in the sense of being mutually reinforcing and not contradictory.

GNOME is currently suffering from fragmented and contradictory branding messages. The easiest way to see this is by examining the “GNOME websites”; where I leave the definition of that set to you. Whichever sites you include, I am sure that you will agree that they do not seem to form a coherent image of what GNOME is about.

Even more confusing is the distinction between what is “official” GNOME software, and what is not. If an application links against GTK and one or more GNOME libraries, there is probably a case to call it a “GNOME Application”. But in what sense is it “part of” GNOME? This is important for many reasons, not least of which is protecting the brand image of GNOME.

Now we come to the most important part of this article. What do we (GNOME developers? GNOME users? Both?) want GNOME to mean to people? What is the image that should come to mind when they think of GNOME, or see the foot logo?

At GUADEC 2005 Dave Neary gave a talk about GNOME in which he stressed the fact that GNOME is simple and “just works”. This is a fine ideal, but it is not true. There, I’ve said it. We are zeroing in on this goal, but we are not there yet. Applications and infrastructure modules have reproducible user-visible bugs. It is still too difficult to perform some common tasks. What will be the effect on the brand image of GNOME if we make claims that are simply not true for most end-users?

I use Windows XP and Fedora Core on a daily basis (in about a 20%/80% ratio) and I can say that GNOME (on Fedora Core) is no worse than Windows, but it is not really any better.

Recommendations and Ideas

It is easy to criticize and harder to make constructive suggestions. The following are my attempt to redress the balance of the tone of this article so far. At this point I must emphasize that many of these ideas have previously been discussed on GNOME mailing lists, IRC channels and wikis.

  1. GNOME needs a one-stop corporate Internet presence. Anyone who stumbles across a web site or chat-room should be able to recognize whether it is an “official” GNOME site or not. Reporters need to know who to contact.
  2. GNOME needs to clearly delineate what software is “part of” GNOME, as opposed to software that works with GNOME. Specifically, compiled binaries need to be available for the major distributions—- from the GNOME site. Asking users to compile from source is enough to discourage interest for many people.
  3. GNOME software development needs to focus on bug-fixing and usability in preference to new user-level features. (New features that add infrastructure to ease development are probably needed.) We must make the “just works” slogan real.
  4. GNOME needs to include a user-feedback agent and protocol. We need to make it easy for users to give feedback in addition to bug reports. (And bug-buddy needs some love.) This is about being customer focused.
  5. Such a feedback system should include a “phone-home” feature such that every Internet connected machine running GNOME can be counted. This is the most reliable way to begin to assess market share. The implementation of this idea raises ethical issues however.

I don’t see any real technical or logistical problems with
implementing the above suggestions. The barriers will be social. People will say that foo “is not in the spirit of” bar. This is a very real concern. But that’s what marketing is about: a sublimation and subjugation of the organization’s desire to produce, in favor of the demands of the market. If you can’t accept that, you’re in the selling game, not marketing. There’s nothing wrong with that, by the way. But you should realize that explicitly.

Conclusion

The barriers that stand in the way of the “10×10” goal are social and political rather than technical. By concentrating on branding and ongoing market research GNOME stands an increased chance of overcoming these barriers.

Discuss this story with other readers on the GNOME forums.