Entries from July 2006 ↓

The Plug-ins, They Are A-Changing

One of the things about the 2.14 deskbar-applet release was that, although it supported third-party plug-ins, the GUI to manage them was all-but-nonexistant. Basically, whilst you could enable and disable installed plug-ins via the checkboxes in the preferences dialog, you couldn’t (a) find and install new plug-ins, and (b) update existing plugins through the GUI — both of which Firefox lets you do, for example. Instead, you had to download a file (or download and unpack a tarball) and copy that to a secret directory (~/.gnome2/deskbar-applet/handlers/) — i.e. one that you couldn’t find in nautilus.

In the last few months, Sebastian Pölsterl and the other deskbar hackers have worked on being able to install new plug-ins through a friendly GUI. The deskbar-applet-list mailing list discussion starts in April, continues in May and there’s also the PluginManager wiki page. Here’s the current state of play (no, this isn’t finalized, yes there are issues, which I’ll touch upon at the end of the tour). First off, there’s a new Check For Updates button on the list of installed plug-ins.

Clicking on that invokes the NewStuffManager a new (Python) program that communicates with deskbar-applet via D-Bus. To be precise, NewStuffManager provides the org.gnome.NewStuffManager service. NewStuffManager is not deskbar-applet specific, and could provide any app with update info. The app-specific part is another Python file, deskbar-applet’s spec is the only instance so far, and looks like this:

"repo": "http://raphael.slinckx.net/deskbar/repository/deskbar-repository.xml",
"install-path": "~/.gnome2/deskbar-applet/handlers",

And note that it mentions http://raphael.slinckx.net/deskbar/repository/deskbar-repository.xml, which is the master list of plug-ins and their versions. The intention is that distros can customize this URL, if they choose to. An example snippet of that XML file looks like this:

<name>Yahoo! Search</name>
<description>Search Yahoo! as you type</description>
<author>Deskbar Team <foo@bar.com></author>

NewStuffManager will note that there is a new version of the Yahoo handler, and the UI will show that it is updatable.

Clicking on Update will show a progress dialog box, and under the hood, download the newer yahoo.py from http://raphael.slinckx.net/deskbar/repository/, unpack the archive (if necessary), and copy those files to the right place in the file system: ~/.gnome2/deskbar-applet/handlers/. Note that this is the user’s installed plug-ins, not the globally-shared (and only-writable-by-root) plug-ins at /usr/lib/deskbar-applet/handlers.

The other thing to notice is the New Extensions tab. Switching to this tab will invoke NewStuffManager to check the master list for installable plug-ins. It looks like this:

Again, the Install button will download and install the plug-in. There really isn’t much difference between updating existing plug-ins and installing new ones, apart from that the user was (probably) aware of an existing plug-in beforehand, and updating an existing plug-in might involve an active existing plug-in.

That’s what it looks like. It is indeed easier to find and install plug-ins than before. And plug-ins rock, since they make users go, “I rock”. However, there are two very significant issues:

We will be downloading arbitrary Python files, which could be executed whenever the deskbar-applet initializes all of its plug-ins. This could be a major security hole. Personally, it’s not that I don’t trust Raphael or his web-site, or the third party websites that he chooses to endorse, but I don’t trust (the worst of) the internet. We don’t have digital signatures or other verification mechanisms implemented yet (and GNOME 2.16 is due only a few months from now). Auto-update (and auto–removal of obsolete files) is another issue that should be considered – whilst it is frustrating as a developer that users don’t manually upgrade to the latest and greatest, users should remain in control of their computers. Possible precedent / discussion point: Firefox auto-updates (IIRC).

This design means that http://raphael.slinckx.net/ (or whever the master list(s) get hosted) is pinged every time I look at the New Extensions tab. Possible precedent / discussion point: distros already provide updates, automatically, over the internet.

Clearly, dropping this feature onto millions of GNOME 2.16 users is not a decision to be taken lightly, and I think that to-date the discussion has been on too narrow a forum — the deskbar-applet-list (and the ephemeral IRC) rather than to the wider GNOME community, and I have procrastinated far too long on putting forth my thoughts on this matter. I’m just about to post to desktop-devel-list as soon as I publish this blog post. Join the discussion there, if anywhere.

Two final things – this is not a definite feature of GNOME 2.16 yet, this is a discussion of an unstable version, a work-in-progress. Because I’d hate to be misunderstood. 🙂

Secondly, Sebastian, Mikkel, Raphaël and others have already sunk a lot of time into this, and I’d hate to sound like I don’t appreciate their work, their enthusiasm, their contribution, and their intentions. I do. 🙂 And like Mikkel said: “I really think it’s a cool feature; I would just hate to botch it“.

I’ve Got a Fever…

Working Hard, and Hardly Blogging

It’s been… three months since I’ve blogged!? No, I’m not dead, just dying one day at a time, like the rest of us. Actually, I’m far from glum, just busy busy busy.

Truth is that I’ve been working. Earlier this year I joined Google as a software engineer (on Google Maps / Google Earth). A month or so ago we launched a wagonload of new stuff – you can even see a photo of me from Mike Pegg’s incredible Google Maps Mania blog about the developer day that we hosted, right before Where 2.0. Mike’s a cool guy, who maintains the busy site in his spare time. I’m also fourth from the left, back row at the Sydney Googlers photo, safely avoiding those giant novelty foam letters.

Yeah, Google is awesome to work for – there’s the oft-mentioned perks like the food, there’s plenty of interesting, smart, techy people who work and give talks here (y’know, things like the guy who invented Python answers your dumb posts to the internal Python-help mailing list), and you get to goof around for hours on Google Earth for Linux and call it work because you’re, uh, testing its cross-platforminess.

On the downside, they do work you hard, and especially hard leading up to launch, and addressing the inevitable teething problems afterwards. Which means I have hardly (haha! pun!) done any significant GNOMEy stuff for a long, long time :-(, and I missed what looked like a fantastic GUADEC. Oh, yeah, and then there’s real life stuff like moving house, and the sleep deprivation that was the World Cup. My compatriot Wes sums up the Australian tilt at the goblet (and ‘that penalty’) thusly: “Watching the Soccerroos lose to Italy was
like taking a girl out for posh, gourmet dinner, then drinks at a
quiet dark bar playing jazz, maybe a slow dance – whispering cute
witticisms in her ear; hushed giggles in response, a slow drive home,
and at the last minute, as you walk her to her door, she is shot in
the head by an Italian Sniper

Deskbar sighting #1: Jorge Castro sneaks a peek at what will come in Deskbar 2.16.

Deskbar sighting #2: Mark Pilgrim switches from Mac to Linux, and soon afterwards adds his Bugzilla-searching Deskbar plugin (possibly based on Stewart Smith’s MySQL bug look-up plug-in??) to the GNOME Wiki. Hooray for Python applets in GNOME. No comment on Mono applets :-). Mark Pilgrim incidentally wrote the book that got me into Python. I went to the bookstore a few years ago, and saw a whole bunch of books on Perl, but not many Python books. My hypothesis is that potential Python book authors just give up in the face that Dive Into Python is both awesome and free to download (although the paperback is still nice to have), albeit written by a wacko who adds raisins to his fruit salads.

Deskbar sighting #3: Jokosher hacker Stuart Langridge took the PyGTK API plug-in and uses it to look up GStreamer API docs.