Log in

GCDS, D-Bus, Telepathy, and other items

Hello, internet! I'm at the Gran Canaria Desktop Summit. I'm a big fan of this "conference beside a beach" concept: interesting people, talks and projects, in the sun beside the Atlantic. There are a *lot* of Collabora people here; the head-count on the roof of the hotel last night exceeded 20, with still more people arriving today (and others stuck in Madrid). As ever, it's good to catch up with colleagues and others!

Bringing GUADEC and aKademy together seems to have been a partial success. It’s interesting to learn about projects from the other side of the fence, and I've had some productive conversations about the state of using Telepathy in KDE. That said, it’s a bit sad that so much of the cross-desktop schedule seemed to be a talk about a GNOME implementation of a concept, followed by a KDE implementation of the same idea. Maybe putting the duplicated effort in people's faces could help improve matters, but that seems unlikely.

Earlier today I gave a talk about profiling and optimizing D-Bus APIs (grab the slides!), including Bustle, a D-Bus visualization and profiling tool I've written to help visualize bus activity and find issues. I think it went quite well, and it lead to some interesting questions and discussions afterwards. In the talk, I mentioned a few examples of sub-ideal API design in other frameworks, but largely focused on the problems we've found in the Telepathy API, and how we’ve gone about fixing them. A couple of people mentioned that this might have reinforced the impression that Telepathy is really hard to use, which was not what I intended at all! On the contrary, the improvements I talked about have made Telepathy a lot more developer-friendly than it was when I first got involved: both the D-Bus API (if you ignore the deprecated bits) and the higher-level client-side convenience libraries (telepathy-glib and telepathy-qt4) have become significantly easier to use. It's telling that a lot of the changes that have made developers' lives easier have also made the D-Bus API more efficient, sane, and correct.

Of course, there's still room for improvement. As I mentioned, contact lists are quite awkward to work with, which is a shame because most Telepathy UIs would like to use contact lists. :-) libempathy-gtk has a couple of contact list widgets you could reuse, some of which I'd like to see in a smaller, API-stable libtelepathy-gtk; I hear that there's talk to extract the Python contact list widget that's being written for GNOME Games to a library that other Pythonic Telepathy applications (such as pyhallebard for which I can't find a website right now — thanks Anonymous!) could use.

In other news, Tracker 0.7 sounds (among other things) like a potential solution to the silly unfortunate situation where every music player uses its own library database, and thus your DAAP server either needs a separate database or to be built into your music player. Mojito looks pretty interesting; I'd love to see a UI for it on my desktop. It annoys me that I have to check so many disjoint sources at the moment. It might be nice if it could show me blog post titles from my LiveJournal or Facebook contacts; I suppose I should start hacking. :)

Empathy 2.27.0's Private Mode

An oft-requested feature in Empathy and Telepathy is support for OTR (Off The Record) encryption of messages, interoperating with the OTR plugin for Pidgin and other popular IM clients. We've been resisting implementing it so far, mainly because we think there are better ways to do end-to-end encryption of messages and audio and video calls over XMPP, which we hope to implement in the not too distant future.

However, a nice aspect of OTR as compared to other encryption solutions is that it allows you to plausibly deny having taken part in a conversation. We believe this to be an example of a wider trend towards deniability on the internet, a position which is backed up by the growing popularity of Tor, and by several modern browsers allowing you to cover your browsing tracks out of the box.

As a result, we've been working hard to help secure your privacy while you're using Empathy. We've had to do this quietly for various legal reasons, but we're proud to announce Empathy's new Private Mode. When enabled, your contact list will be anonymized, as will your entry on your contacts'. Thus, you can conduct conversations with anyone without fear of repercussions from their discovering your identity, or of anyone else knowing the conversation took place:

It's not obvious how to bring these privacy benefits to Jingle video calls. We came up with a technique we refer to as Kitten Secrecy (patents pending in all relevant countries), and managed to integrate it with Empathy with the help of our friends at Collabora Multimedia, who constructed a fantastic GStreamer element using only two leaky queues!

We think the results speak for themselves. The source is not quite ready for release yet, but (lawyers permitting) we hope it'll be public by the end of the month. Hope you can wait until then!

the Telepathy and Empathy teams

If you're about to leave an angry comment:

At the Boston Gnome summit, Robert McQueen, Sjoerd Simons and I sketched out a plan for the API for end-to-end encryption of communications (implemented using XTLS, OTR or anything else) and how we'd implement this API for OTR. Work's just started on a challenge-response authentication API, which is a prerequisite. Stay tuned; or, jump onto the Telepathy list or #telepathy on Freenode if you're interested in helping out!

Yesterday night mostly featured Psapp at Cargo. I was expecting to have a great time, and they didn't disappoint: it was easily the best live show by a *tronica band I've seen. (Though, that's not really a fair comparison: all of their music is readily re-arrangable for a live band, particularly their more recent tracks.) Energetic, accomplished, quirky, etc. etc. Kazoos? With squeaky lobsters duct-taped to the side? Oh yes. Plus, closing on Everybody Wants To Be A Cat was a fun touch.

Meanwhile, back in a different genre, Pure Reason Revolution have just released their new album, Amor Vincit Omnia. Apparently, at some point in the three years since The Dark Third they decided that their largely guitar-based nü prog sound could be improved by, well, replacing it entirely with synth bass and some more synths and heavily processed downtuned guitars. To my surprise, it works pretty well: it's not what I was expecting, and it feels a bit overproduced, but they haven't got rid of the vocal harmonies, and the songs are still interesting. That said, for a band who go in for Latin titles and general pretentiousness, they should really have learned to pronounce all three words of Deus Ex Machina. It should be interesting to see if and how they adapt older songs to their new style live.

Which brings me to a question: dear readers, is anyone interested in seeing them play at Dingwalls on Tuesday? I have come to have a spare ticket, and it would be nice for it to be used. If so, let me know via whatever means you feel is the most appropriate.


It's lunchtime at Collabora Towers!

Following the wild success of Telepathy, we're proud to announce our new project:

burgers floating between two heads

Bustle: a D-Bus activity charting tool

When working on Telepathy, I've often wanted to be see which D-Bus methods are being called on whom, when signals are emitted, and so on. Timing information is also handy: I'd like to figure out why cold-starting Empathy takes 12 seconds, and it'd be much easier if I could look at a diagram rather than staring at the unreadable output of dbus-monitor.

Previously, Alban wrote a tool that used a patched version of mscgen, and produced appropriate input with a dbus-monitor-like Python script. I wanted some more D-Bus-specific diagrams, and ended up reimplementing both the monitoring component (by forking dbus-monitor, as its --profile output did not contain quite enough information) and the diagram-drawing component (using Cairo). I'm happy to present an initial release of Bustle:

Screenshot of Bustle 0.1

There's a Telepathy-specific hack in the tool to shorten object paths, but it shouldn't make the tool any less useful for looking at other D-Bus traffic.

I haven't made binary packages yet, I'm afraid, so you'll need to grab the source tarball and build it if you want to try it out. In Debian-land, the dependencies are libdbus-1-dev libglib2.0-dev libghc6-mtl-dev libghc6-cairo-dev libghc6-gtk-dev libghc6-parsec-dev; see README in the source tree for how to build and use it.

The astute among you may have noticed from the dependencies that the diagram-building component is implemented in Haskell, using the excellent bindings to Gtk+ and Cairo. I got a prototype going within a few hours, and the strong correctness guarantees that the type system provides meant that I could refactor it mercilessly with confidence. I'm sure that I would have spent many frustrating hours chasing type bugs had I written it in Python, which is a more conventional high-level language for prototyping and writing tools like this. Next time you're frustrated by such bugs, you should give Haskell a try. :-)

Edit: Bustle now lives at willthompson.co.uk/bustle.

Fridays at Collabora Towers

In what onlookers are already calling “potentially unwise”, our robot overlord ordered various toys from ThinkGeek.

Office toys

Today — being as it is Friday, always the most productive of all days — they arrived! Apparently appropriate tools to control the missile launchers are not yet packaged for Debian. :(

I'm going to the Cambridge Folk Festival this coming long weekend (Thursday 31st July–Sunday 3rd August). The person I was camping with is probably not going to make it, having just had an operation; does anyone want her ticket? The face value is a hundred British pounds; she'll take substantially less. Let me know by the medium of your choice if you're interested!


Jonathan Coulton in London in October!

It comes to my attention that Jonathan Coulton is putting his clogs back on and coming back to the UK in the autumn. His first show here was great fun; you should go out of your way to see him this time around! Tickets are on sale for a show at Shepherd's Bush Empire on October 30th, which is the city I'm most interested in going to. I'll buy some tickets in the next day or so, so if you want me to get you one (and thus sit with a mostly-known set of people) let me know!

(Oxford people might prefer to see him there two days later, but I'm moving out in 10 days. Sniff.)

Le coming-out du cochon

I find the different onomatopoeias used for the same sound in different languages entertaining, not least for the ensuing hilarity when you mispronounce them as English words. When I was in Paris with two of my housemates in December, we found a postcard which serves as a perfect illustration of why I enjoy mispronunciation. According to the back of the card, it depicts “Le coming-out du cochon”.

Le coming-out du cochon.

In the same shop, we found another card featuring a painting of a startled-looking boy playing his accordion, with a monkey dancing on his shoulder. I can’t decide how best to interpret the monkey’s expression.

Accordion Jimmy and his Jivin’ Monkey