Gnome Outliner: A Proposed Application

Gnome Outliner Interface Mockup

Since I’m now using Gnome as my primary desktop environment on Linux, I find myself wishing I had a simple outlining application along the lines of OmniOutliner. However, there doesn’t appear to be such a thing for Gnome (despite some old/abandoned projects).

Unfortunately, my limited skill set does not include the skill necessary to create such an application. So, instead of coding, I’ve started a draft of a specification for an application-to-be: Gnome Outliner. I’ve written this in hopes of generating developer interest to create such an application.

I’ve written up the idea and done a basic mock-up of the interface. Please let me know if you have any interest in the project.

UPDATE: There is now a project for this on SourceForge: Gnome Outliner.

 

George Orwell would use Firefox

Firefox with Firebird Shadow

When the Mozilla Foundation announced the name change for their web browser from Firebird to Firefox, there was a predictable response of skepticism. It was the second name change and people were understandably skeptical that the name would continue to change.

Even though the Mozilla Foundation was clear that Firefox was indeed the final name and was subject to a significant amount of scrutiny to avoid any future pitfalls with the name (trademarks, etc.), people still felt the need to chime in with suggestions.

And no, Thunderbird will not be called ThunderFox. Ever.

All of this was something of a tempest in a teapot – with the world of developers and webloggers (each of us a marketing expert) with an opinion (see the Slashdot thread – or don’t). Fortunately though, the final name change took place just before Firefox began its foray into the mainstream.

As the good Mozilla Foundation folks predicted, there was a small fire-storm of criticism (thunder-storm?), and then, only a few months later, Firefox has been generally accepted and the name changes forgotten.

While it’s not on the scale of the great Orwellian WWF-to-WWE switch, our own little Orwellian name switch has gone quite smoothly. Except for one hold-out office mate who insists on calling it it “firecat”, people have gotten comfortable with the new name, and with the rate of growth and exposure that will come with the 1.0 release this summer, a growing percentage of the Firefox users will never have even known the previous names.

Firefox is Firefox, Thunderbird is Thunderbird, and we all live happily ever after. Onward to 1.0!

 

The Rise of Interface Elegance in Open Source Software

Open Source software is regularly criticized, often fairly, for lacking in ease-of-use and polish. When a developer wants a new feature – he can add it to the software, and if it gets checked-in by the project owners, it will be there for all to use. The obvious fault with this model is the now well known scourge of “creeping featuritis” – when too many features and options begin to overwhelm and overshadow the core functionality of the software.

The Mozilla browser and suite were a high-profile example of the ills of featuritis. While the software did everything you could possibly want it to, people still seemed to prefer other software packages that did less.

In a well run software project (several of which I fancy myself a part of), any additional feature must be proved valuable before it is incorporated. Even if a patch is already written to add a new feature, there are plenty of reasons not to accept it. More code means more potential bugs and more management. Additional user interface features can detract from other more important features.

Learning to Say “No”

One of the most important acts of a software project manager is to say “no”. No, this patch introduces more code than it should. No, this feature will confuse more people than it will help. No, you’re ugly and stupid (sometimes the manager has a bad day).

The open source software model has dealt with the importance of saying “no” quite well in the realm of code and patches. Projects have a limited set of people with the power to commit code to the project. Anyone can submit a patch, but only the anointed few can accept it. These anointed few are usually determined by right of having founded the project, inherited the project from the founder, or through perceived merit. For more on the issue of project ownership in free software, see Eric Raymond’s Homesteading the Noosphere.

When submitted code isn’t up to snuff, it isn’t accepted (ideally). The practice of saying “no” to patches in open source software is understood and accepted. Now, some projects seem to be learning the value of saying no to ideas and features that will negatively affect the interface and experience of using the software.

Living Examples: Firefox
Firefox icon
The Firefox icon, rendered by Jon Hicks

In discussion about the usability of open source software, the Firefox web browser is sometimes cited as an exception[1]. Out from under the girth of the Mozilla project, this small and simple browser emerged to become one of the more popular open source products and projects. The developers of Firefox leveraged the long and proud history of saying “no” to code patches and applied it to the interface and functionality as well.

The resulting browser provides a better browsing experience than it’s ancestor, Mozilla Navigator, despite having far fewer features and functions. Smart default settings and an overall better understanding of the experience of using the application by the developers helped make it better for everyone.

Living Examples: Gnome and the Spatial Nautilus
Spatial Nautilus screenshot from ArsTechnica
Spatial Nautilus isn’t really much to look at – you really have to use it to understand it. Screenshot from ArsTechnica.

If you think “Gnome and the Spatial Nautilus” sounds like a line from a novel that Douglas Adams and J.R.R. Tolkien might be collaborating on in the afterlife, please bear with me. Gnome is a group of projects that provide a desktop environment on Linux. Nautilus is the name of the file manager in Gnome, like Explorer in Windows and Finder on the Mac.

The “spatial” browsing metaphor a concept for browsing and managing files and directories of which the details are not important for this essay (to learn more about spatial browsing, see John Siracusa’s seminal article, About the Finder…). Suffice to say, the Gnome project has implemented spatial browsing in Nautilus in their latest release, and a lot of people really don’t like it.

Using the spatial browsing metaphor can take some getting used to, and many people who are used to another metaphor (or no solid metaphor at all) are understandably quite resistant to this new model. A fundamental and controversial shift like this is one I would not have expected an open source project to be able to pull off. While a closed corporation has a hierarchy of power, where one person can make a decision for all, consequences be damned, I was skeptical that such a move could happen in the looser structure of the Gnome project.

I was wrong. The developers of Nautilus debated and then declared their bold intent to “go spatial”. There has been much support, and much resistance. However, regardless of whether they were right (which will likely be proven over time), they deserve credit for making such a strong, clear, and decisive move.

Living Examples: Hunting for Preferences in Gaim
Gaim screenshot
The Gaim messaging client is starting to get simpler with each release with a planned simplification of the preferences.

A third and final example of this pattern of interface elegance in open source software comes from a recent discussion on the development mailing list of the Gaim instant messaging client. Gaim is an open source messaging client that works with a variety of protocols (AIM/ICQ, MSN, Yahoo, Jabber, etc.).

Sean Egan, lead developer on the Gaim project, has posted his intent to dramatically simplify the “Preferences” in the application. He lists many preferences that can simply be replaced by a good default, and others that are just plain irrelevant. Rather than getting bigger and fancier with each release, the project seems to get simpler and more elegant.

Killing the Myth of the “Average User” and the “Power User”

Rather than aspiring to do everything imaginable, we are better off aspiring to do everything we might actually want our software to do in practice. While it may be that I’m attracted to projects that tend towards elegance in interface and design, I suspect that the examples I’ve cited here are not exceptions. Rather, I see them as part of a larger trend in open source software – one where simplicity and elegance in interface design is held in the same respect as elegance in code and engineering has been all along.

A kernel hacker, who we might all consider to be a “power user” may not be a power user when he just wants to burn a CD for his road trip. A database administrator, another typical “power user” may just want to chat with his friends, not perform an orchestra of preferences and settings in a chat application. We are all experts in some area of software and beginners in others (and our experience is constantly changing).

Rather than adding more and more features for the mythical “power user”, or swing to the other end of the spectrum and dumb-down the interface for the mythical “average user”, smart developers are learning that good defaults and elegant interface design makes software better for everyone to use, regardless of their level of experience.

  1. John Gruber cited Firefox and Camino as exceptional in their usability as open source projects in his critical reply to Eric Raymond’s essay, The Luxury of Ignorance. The reasons for the exceptional nature of Firefox and Camino are further discussed by Matthew Thomas.
 

Community-produced audio recording of Laurence Lessig’s New Book

Free Culture by Laurence LessigHaving enjoyed Laurence Lessig’s previous book, The Future of Ideas, I was looking forward to his latest book, Free Culture. The text of the book is available for free online. While I have read long works from my laptop LCD, this 352-page PDF file didn’t seem very appealing on screen.

I thought it would be nice to have an audio-book format. I even considered recording it myself – which would be acceptable considering the Creative Commons license on the book. However, I didn’t have the time, energy, or more importantly, the talent to do a good job at recording this.

With this in the back of my mind, I came across a post by Cory Doctorow on BoingBoing about a weblogger-produced collaborative audio-book recording of the new Lessig book.

Now, only a few minutes after wondering if I should produce this myself, I’m listening to Chapter 1. Cool.

 

Weblogs and the future of Linux desktop development

Gnome Desktop LogoThe future of development on the Linux desktop is being debated and deliberated on the weblogs of key developers this week.

If you are interested in computing platform decisions and open source software, then you may be interested in the debate. However, even if you are not at all interested in these things, it may be interesting in a more abstract sense.

On a campus in Redmond, Washington, smart and talented people are deciding what your computer is going to be like in the next decade. Here, in a parallel universe of sorts, smart and talented people are debating an alternative future for desktop computing — and you can read every word it.

Havoc Pennington, a Gnome hacker from RedHat, Miguel de Icaza, a founder of the Gnome project and Ximian, Robert Love, a kernel hacker with Ximian, and many others are batting around the posible platform options for linux desktop development. It’s strangely empowering to witness.

The debate and dialog continues and can be followed on Planet Gnome, an aggregated weblog of Gnome developer weblogs.

Mailing lists have generally been the primary communication method of open source developers. While mailing lists are still the core of the communication, weblogs have started to play an interesting role. They are especially effective for high-profile debate and dialog like this. Unlike a public mailing list, the signal-to-noise ratio is high.

 

Learning to Love the Command Line

Having been living in Linux for a while (and to a lesser extent, Mac OS X), I’ve had to learn a bit about the ways of the command line. As someone who’s only other experience with a command line interface was with DOS (with which I was about as adept as one could be), I was skeptical of the value of the command line interface, and reluctant to learn.

That said, I have come to learn that while a command line interface makes it difficult to discover what options are available to you, it does come with some inherent advantages. While I’m certainly not willing to give up my graphical user interface for a text-based console any time soon, I have learned to keep a terminal window handy while using both Gnome/Linux and Mac OS X for a few particularly handy tools.

While these tips are probably absurdly obvious to many people, I suspect there are also plenty of people like myself, web developers in particular, that were raised in Window 3.1-through-95 or Mac OS Classic that never ventured near a command line (except maybe to play Commander Keen now and then).

WGET
Usage: wget [-options] [location]
Example: wget http://domain.com/filename.ext

Occasionally I’ll come across a page with an embedded media file, like a QuickTime movie, that I would like to download. QuickTime doesn’t let me save things locally, so I view the HTML source of the page and sniff out the URL of the movie. However, with some file types, depending on how you have your browser and media applications setup, if you paste the direct URL of a media file into the browser, it will load the file in the media player — again, sometimes without any “Save” functionality. If I’m not too annoyed and frustrated to give up trying to download that butt-finger-sniffing-monkey video by now, I would actually have to open a text editor, create a quick HTML file that included a text link with the URL of the item I want to download. Then, I would save the HTML file, open it in a browser, right-click on the link, and choose “Save As…”. Good lord!

With WGET, as long as you have the URL of an item, you can download it. Just type wget followed by the URL.

For bonus points, WGET can resume downloads and supports any kind of downloading option you might need: gzip encoding, SSL, http-authentification.

WHOIS
Usage: whois [domain]
Example: whois www.actsofvolition.com

Who is indeed. When you’re trying to figure out a human name or address behind some evil scheming website (or just checking DNS info for a domain), the WHOIS domain database has your info. I used to use, and suspect many people rely on, sites that offer a web-based interface to the WHOIS database (Register.com, Userland, etc.). It usually faster to to open up a terminal and type whois domain.com. No anoying banner ads, and the results are in a simple text format — which you can even save into a file using…

Piping | Rules

The real power of the command line starts to become apparent when you realize the power of piping. Piping is a simple means of passing output from one program as input into another. For example, to list the contents of a directory, I would type ls. I can search the results of that directory by passing the list of contents into a search tool, grep. ls | grep spaceman will return any files in the directory containing “spaceman” in their name. Similarly, I can pass the results of a WHOIS query into my text editor (GEdit) by typeing whois actsofvolition.com | gedit, or save the results directly into a file using the redirection feature “>” (whois actsofvolition.com > aovinfo.txt).

This saved me a load of time last week when I wanted to create a chart displaying the sizes of the various components and packages included in the Fedora Linux distribution. First, I needed a list of the file sizes of packages, so I ran ls *.rpm -l > filesizes.txt on the install CDs. This created a text file with the packages names and their file size which I could then open in a spreadsheet application, sort by size, and graph to my heart’s content.

All of this said, I still love a good icon.

 

Getting to Know Gnome

Gnome Desktop LogoFor the last few months, I’ve been using Fedora, a Linux distribution, as my primary operating system along with the Gnome desktop environment. Linux as a desktop platform still has lots of weaknesses, but I’m generally pleased and am very much looking forward to the progress planned in the next year.

I’ve written plenty before about the tiny details that can have a significant impact on the user experience on operating systems. Windows XP is rife with little visual glitches and inconsistencies that seem insignificant when considering individually, but together they degrade the overall polish and sense of stability in the system. It’s like seeing cracks, no matter how small, in a bridge you’re walking on.

I’ve noticed a few little user interface niceties worth sharing:

Smart File Renaming

In Windows XP, one click selects a file, then a second click (and a short delay) renders the file name editable. In Mac OS X, any click on the file name renders the file name editable. In my experience, on both platforms, the file renaming functionality is triggered by accident far more often than it is intentionally.

Gnome, and the Nautilus file manager (the equivalent of Windows Explorer or Mac OS Finder) allows you to rename files only by right-clickling and choosing “Rename…” from the context-menu. While it may seem like the function is “hidden away” behind the context-menu, give that renaming files is a far less frequent tasks then double-clicking on them or moving them (click+drag), this is an appropriate trade-off. Accidentally triggered the file-renaming functionality in both Windows and Mac OS, I’m happy to report that the Gnome technique is much better.

Renaming files in GnomeAlso, when you do rename a file, the file name, not including the file extension is selected by default. So, if I want to rename a file called Diary.doc to Journal.doc, I right-click the file, select “Rename…”, and type the new name. The ”.doc” file extension isn’t select by default, so it goes unaffected. In the rare case that I do want to rename a file, including the extension, I can easily manually select the extension as well. To do the same task in Windows, you must re-select the first part of the file name, manually excluding the file extension (which takes a fair amount of manual dexterity with a mouse) to avoid removing the file extension (Mac OS gets extra points here for avoiding file extensions where it can).

Smart Screenshots

In Mac OS X, when you take a screenshot, a PDF file is placed on the desktop. PDF is an awkward choice for a file format for a screenshot and if the desktop is obscured by windows, as it often is, then there is little feedback of where your screenshot has gone (though, to their credit, the camera-shutter sound is the best audio feedback of a screenshot on any platform). In Windows, the screenshot is sent to the clipboard, and then must be pasted into an application for use. Again, there is no feedback as to where your screenshot has gone.

Gnome Screenshot Window
View Full Size Image

In Gnome, when you take a screenshot, you are greeted by a window with a preview of your screenshot with options to save it. You can also drag the preview from this window directly into an application (an image editing application, or into an email for an attachment). Nice.

Don’t Tie My Hands

Using Windows Media Player, it is quite difficult to get a screenshot of a playing DVD. If you take a screenshot while a DVD is playing, you’ll see a big empty black box where the movie should be. In order to overcome this issues, Totem, the movie player I’m using on Linux (which is a great, simple, media player – something that doesn’t seem to exist on Windows) there is a tool built in to take screenshots of a playing movie. Under the “Edit” menu, select “Take Screenshot”, and you’ll be presented with a window much like the nice Gnome screenshot window with options to save the screenshot.

Pearl Jam DVD Screenshot
A screenshot from a Pearl Jam concert DVD taken by the Totem, the Gnome media player

Who said fonts aren’t good in Linux?

While browsing font files (TrueType, OpenType, etc.) in Nautilus, the file icons are replaced with a small preview of the font. Very handy when you’re browsing for a particular font.

Font Previews in Nautilus
Font Previews in Nautilus: View Full Screenshot

Zooming Files

Zoom Controls in NautilusNautilus, the Gnome file manager includes a few simple but powerful tools, always visible. On any window, you can easily zoom in or out, showing more or less information about the files in the folder. For example, if you zoom in, it will show you the file size, but if you zoom out, only the file name is shown. Since Nautilus does a great job of showing thumbnails of image files, zooming in and out in a folder full of photos is particularly useful (this also applies to the font previews mentioned above).

Now when I’m browing files, especially image files, on either Windows XP or Mac OS X, I find myself looking for the zoom controls – a good sign that Nautilus does it right.

Take the good with the bad: Looking forward to a GUI that’s more gooey.

The single greatest weakness I see in using Linux as a desktop is difficult to articulate: the “feel” of the graphics just isn’t there yet. This includes the smoothness and speed with which menus open, windows are moved, etc. Don’t get me wrong, Gnome is easily on par with Windows XP as far as graphics and visual on my laptop (a relatively new P4/2Ghz/1GB-RAM). It’s Mac OS X that has taken a leap forward in this area. The PDF and OpenGL based graphics rendering in Mac OS X gives an overall feel of speed, powerful, and stability that makes Windows and Linux feel like they’re made of paper mache in comparison.

As with most problems on Linux, lots of smart people are working on it. I’m looking forward to progress in the next year in the X windowing system that Gnome uses. Also, I understand the 2.6 Linux kernel, which I’ll be upgrading to soon (I’m running 2.4 right now) offers significant improvements in user interface response times.

 

Responsibility and Accountability in Software Development

Microsoft is being criticized by Amnesty International for supplying “goods and services” to China that was used to violate human rights. Cory Doctorow, of the Electronic Frontier Foundation (and an excellent sci-fi author), brings an interesting perspective to the situation.

Microsoft states that they are “focused on delivering the best technology to people throughout the world. However, how that technology is used is with the individual and ultimately not in the company’s control.”

Doctorow points out that “[t]his is a curious rationale from a company that is shoving DRM down its customers’ throats, effectively telling the entertainment industry that it believes that it can and should control how its users use its products.”

Curious indeed. This is an issue that the open-source/free software world has had to deal with this issue as well. It is a tenant in the open-source world that one should not descriminate against uses or users of their software. As our local ISP owner, Kevin J. O’Brien would say, “it’s just data”.

The venerable Open Source Definition by Bruce Perens states that:

The license must not discriminate against any person or group of persons.

The license must not restrict anyone from making use of the program in a specific field of endeavor. For example, it may not restrict the program from being used in a business, or from being used for genetic research

Is someone who makes a tool responsible for how it is used? Guns and other arms manufacturers obviously come to mind.

As for Microsoft – if they sell Microsoft Windows to government (foreign or domestic) and it is then used to organize evil plots, then Microsoft can hardly be held any more accountable than the people who build buildings for the same governments. However, if Microsoft is paid to provide services, such as installation, customization, or consulting, on projects that are obviously in violation of human rights, then they are indeed in the wrong.

 

Linky: A great extension for Mozilla Firebird

One of the many great things about the Mozilla Firebird web browser (go get it now if you aren’t using it), is a decision the developers made early in the project. In order to keep the application simple, fast, and elegant — any features that aren’t essential or may be limited in appeal to a fringe group of users are not included in the browser. Rather, they have made it easy to build (and easy to install) add-ons to the program, called Extensions.

Linky ScreenshotWith this simple decision, the Mozilla Firebird team has managed to avoid one of the great pitfalls of open source development — creaping featuritis. Whenever someone asks for a new feature, the answer is almost always: that should be an extension (and it usually already is an extension). Extensions can also serve as a test bed for features that may eventually be rolled into the core (under the watchful and discerning collective eye of the core development team).

What prompted this ode-to-extensions was an extension that I find particularly useful. Called Linky, this simple extension adds an extra menu item to the context menu when you right-click on a selected portion of a web page. You can select a portion of a page (a paragraph with a few links, a group of linked thumbnail images, or a list of links), right-click, and choose Open Selected Links in Tabs.

This simple feature is a great time-saver (what I’m saving my time up for, I’m not sure).

There over 100 other extensions available as well.