While reading Vruba’s post on Intellectual Property (with a special, creative-commons or otherwise liberally licensed treat at the bottom), I was realized some things that would make GNOME truly wonderful to use. This falls squarely in the realm of user-visible components of apps. GNOME has a full-featured and growing library of Things You Can Do, but it occasionally lacks the well-polished interface of some other operating systems.

My task of the moment is to download some freely licensed songs from the Internet, and open them in my music player of choice at the moment. I particularly want them to appear in a playlist in order, but since blindly sharing all of ones playlists complete with song contents is problematic to say the least, but I’d be quite satisfied with them just appearing in the order I downloaded them. I can drag together a playlist from within a single well laid out app easily.

First off, every GNOME app that can download files uses a separate file downloading component. My web browser of the moment is Epiphany, and its interface is pretty sweet: that is to say that it’s nearly invisible. You tell it to do something, and it does. Only Safari passes it up, and that’s a pretty close game. It has its own file downloading component, which just stows (for me) everything in ~/incoming. I’m fairly happy with this, but for music it’s a pain. I go to the Epitonic page on Lali Puna and try to download a copy of 603, and it does. Slowly, since the site’s not that fast. So I get distracted. I forget about the file. I wanted to rebuild the afore-mentioned playlist, and I’m missing a file. So I did the logical thing. I dragged the link into Rhythmbox, where I wanted it to be eventually anyway. Rhythmbox even seemed to accept the drop. And you know what happened? Nothing. Zero. Actually, shortly after, Rhythmbox crashed. I don’t know if it was related or not, since nothing happened in the UI. What did I expect? A little box that looked like Epiphany’s download box, and then when that finished, the song to appear in Rhythmbox where I put it. I was dissapointed. I still have the fifteen or so Epiphany windows open from trying to download that music.

What I want

I want a common download control shared across apps. I’d even like a little daemon with a notification area applet that handled the actual work, since occasionally, certain plugins crash Epiphany, certain songs crash Rhythmbox, and the unexpected does occur. I want it to notify the eventual destination that its operations have completed, and even offer periodic updates if the recipient is interested. (A side note: having a progress-bar like Shareaza’s in the Rhythmbox library listing for a song still downloading would be wonderful.)

It’s simple. It’s not a complex thing to code — if Ruby or Objective C were a core GNOME language, I’d do it myself and offer up the code for integration with all the other apps. Compared to other projects, it’s truly trivial. In fact, I wonder why it’s not been done.

I think part of the problem is a false dichotomy in the thinking about interfaces: It’s not just navigational-versus-spatial orientation. You can mix them. One can navigate to a web link, and following a path of links feels rather like large-scale navigation to me. It’s not like my desktop; it’s like traveling to places. The web feels like it models the real world to me. I don’t want to navigate my files, I want them spatial. I want my web browser to stay somewhat navigational, with all the spatial metaphor possible added. And I want direct manipulation, so I can drag a link from Epiphany to Rhythmbox, and have it Just Work. Then I want all other apps to be able to deal with it the same way. Web enabled apps are not optional. This is the Internet Age, after all.

A post scriptum.

You might ask why I don’t just click the link to the MPEG Audio files and let the existing layers do the work. I would, but MPlayer Plugin intercepts that and plays the song in a browser window, which in addition to being a poor interface for audio, doesn’t save the thing for later. It’s exactly what I want from a Windows Media stream, most MPEG videos, and other things that MPlayer Plugin handles, but not songs. You can’t tell what I want to do by MIME type, so don’t bother. (Besides, I may want Lali Puna’s 603 to appear in Rhythmbox, but if I’m just snagging a few songs I despise for a friend who asks, I don’t want them to end up in ~/Music/Brittney Spears and happily indexed by Rhythmbox. I want them in ~/tmp, and to vanish shortly thereafter. There is no default action. I want control.