{August 18, 2011}   Desktop Summit 2011

A big thanks to Basyskom for the last-minute sponsorship – I’m really glad I made it to the desktop summit. It was awesome. :)

The talks, the bofs, the parties – pretty much everything went well. Even the weather did give us a day or two of sun before going back to the scheduled rain and wind. ;) I was happy to visit Berlin again too – I only had time to get to one of my favourite restaurants, but I came back with lots of delicious things in my suitcase.

There were lots of good talks – which was not entirely a good thing, because I had to make some hard choices at times. I ended up in more community than tech talks – good stuff about how to do outreach to get more contributors and more diversity of contributors (which means not just more women, but more cultural diversity too). I learnt more about wayland and accessibility too (yay qt-at-spi!), and discovered that “session” is an ambiguous word – there are all sorts of lowlevel sessiony things that have nothing to do with documents or windows or tabs, and systemd is trying to clean them up. Some of the keynotes were fascinating – my favourites were the design talk and the toaster talk. :) Oh, and did you know you can use nepomuk to search within movies? OMGWTFBBQ.

Oh yeah, and I did a lightning talk too, explaining why we need to replace XSMP and advertising the bof session. When I asked how many people hated XSMP, there were far more hands than I’d expected. I didn’t know so many people knew what it was!

At sunday’s party I was surprised to discover how many geeks love karaoke. There was a great crowd, and about a one-hour wait for songs! Despite that, there was also dancing in the other room. :) I hear there was dancing tuesday night too – sadly I had a stomach ache that night. Later in the week I dragged a few people out for a smaller karaoke session with some local friends. I love having a private karaoke room; there’s no strangers taking up mic time, you get to sing lots, and it’s much easier to be completely silly about it. :)

The bof sessions started on wednesday – and I started it off with wonderful, wonderful sleep. After getting caught up on that, my stomach was a lot less mad at me, and I spent the afternoon in the intel appup session. Yay, tablet! :) My new exopc is sitting on my desk waiting for me to start hacking on it.

Thursday afternoon was my sessions bof. Unfortunately some people got lost on the way back from the daytrip and didn’t make it, but it turned out pretty well anyways. I knew there was far too much material to cover in one bof session, even a two-hour session, so I tried to keep the conversation on core matters… after a while, we discovered that there really is a lot of overlap between zeitgeist and session management – the apps that are starting to use it are sending it a lot of the info we need – and zeitgeist is gaining traction, so we may team up and just make some zeitgeist extensions to collect the session info. This would make it easier on app devs – instead of giving similar information to two systems, they’d just report it once and be done. :) When I get some free time I’ll go over the meeting notes properly and start looking into this more.

There were lots of other fun things going on – football, Jos’ cooking, amusing attempts to get rid of the excess summit stickers – but I don’t have much time to write, because I’m at LinuxCon right now. :) It’s nice when a conference is only 20 minutes from my apartment. Maybe I’ll blog about it next week – it’s been pretty good so far. :)

{August 15, 2011}   bouncing email

Update: The sysadmins have fixed the bug, and are keeping an eye on it now, so it’s safe to use that address again. :)

I’ve discovered that my email account has been randomly bouncing some email, for at least the last year. Meep. I’m going to go file a bugreport now, but in the meantime, if emailing me has failed, try again. Or use my gmail address (chanika).

Oh, and the desktop summit was awesome, I’ll write about it sooner or later :)

Update: I’ve scheduled the BoF session for thursday, 14:00 in room 1.404/1. I’ll pop into the systemd bof on wednesday, too.

Update 2: It turns out systemd is solving an entirely different problem. :) there’s no overlap between it and sessions-as-in-restoring-windows.

I’ve been trying to write this blog post for months, and always hitting writers’ block or other distractions. So, screw it – I’m just going to start writing and see what comes out. :)

What this is about, is sessions, and XSMP, and wayland. Activities use XSMP, the X Session Management Protocol, to save and restore groups of windows. Before that, it was only used for the login session. It’s actually a better protocol than people give it credit for, and it served well for a few decades – but times have changed. If we want to move forward and do awesome things like sharing sessions between devices, we need something new. Even Activities as they are now push the limits of XSMP – there are a few ugly little hacks hiding in there that I’d prefer not to have. :)

Now, the key here is, if we’re going to replace an ancient-but-reliable technology with something new, we want the new one to be not just better but a lot better. Something worth switching to. Small issues like XSMP’s lack of autosave will be easy to correct; the big one is that it’s process-based. Session keys are handed out per-process, and when things get restored, they’re done by calling that particular binary with the session key as an argument. This is the source of two major pains; the first is that when a process has multiple windows (like konsole), you can’t properly put those windows in different sessions – so Activities have to do ugly things to hide this. The second, and larger problem, is that it’s ridiculously non-portable and opaque. What if the program’s binary gets moved elsewhere? what if the user switches to a competing app? And of course, their phone is not going to have the same programs installed as their laptop! Even if they have a meego phone and use Calligra on all their devices, the binary for the phone will be named differently. :P

So, what do we do? We make it resource-based! :) Store data in a standard place and standard format, so that the session manager, instead of seeing “this session had /usr/bin/firefox, /usr/bin/konsole and /usr/bin/okular” sees “this session has web pages X Y and Z, which this device last used firefox to open, with X and Y in the same window; two terminals, which this device last used konsole for; and foo.pdf on page 3, which this device last used okular for”. Then if okular isn’t available it can ask the system for a program that handles pdf, and when the user sends the session to their phone, it doesn’t matter that there’s a different pdf reader, or even that the phone browser doesn’t support tabs. Not only that, but if there were 20 urls open instead of three, the phone could go “whoa, that’s a bit much; I’ll just open the first three and display links to the rest somewhere.” And I could go “hmm, when the heck did I create an activity called ‘shambles’? wtf is in it?” and get an answer without actually having to load it. ;)

Another side of this is, well, the small stuff does add up. I just heard that OSX gained some decent session support; they’ve taken lessons from the iPhone and applied them to the desktop, making a system where it doesn’t matter if an app crashes – the OS may even kill it whenever it pleases – the session support is so good it’ll come back just as it was. I’d love to see that sort of solid session support in linux; KDE apps with XSMP are pretty good right now, but they could be better (and an autosaving protocol would go a long way towards fixing that).

Now, replacing XSMP isn’t an entirely new idea. Gnome people have been sick of XSMP for quite a while, although I don’t think anyone stepped forward with an alternative (and for their purposes, it does work, anyways). When I talked to the Nepomuk guys many months ago, about cross-device sessions, they had already thought of it – but decided the political side of it was too hard. They might still be right – we’ll see. But it’s worth a try. :)

So, what is the hard part, you ask? It’s the reason I stuck with XSMP for activities: a new protocol means persuading apps to support said protocol. XSMP’s support, while patchy in places, is at least decently widespread and un-controversial. A new protocol… well, I’m fairly sure KDE would embrace it, but I want it to be a part of gtk apps too, and pure qt apps, and meego apps, and even the weird proprietary fringe ones (like maple) someday. That is a challenge. :)

So how do we meet this challenge? First, we explain the benefits it brings – I hope I’ve done that well enough above. Second, we offer app developers a well-designed, easy-to-use API that’s had some feedback from actual app developers; just the other day I saw someone on IRC complaining about XSMP being confusing. :) Third, once we’ve got enough support to know this is worth trying, we show them a solid implementation that works (without any fatal bugs). Seeing is believing, right? Nobody wants to spend precious time writing code for a system before it exists, so we get the minimal feature set done, port a couple of apps, and show it off. Fourth – the secret weapon. ;) Wayland is gaining popularity, and when apps start porting to it, they may as well port to this too, right? Wayland doesn’t have any session protocol of its own, so this could be it. :)

So, who’s with me? :) The desktop summit is only a few days away, and surprisingly I will make it (yay!) so I’d love to have a conversation about this there. It’s the perfect place, after all, for something that aims to be cross-device, cross-desktop and all.

TL;DR: a resource-based session protocol would let us do really awesome things, so it’s worth the effort to replace XSMP

Now, I’m going to go into technical details below the cut (I have enough material to write a paper on this but for that damn writer’s block…)
Read the rest of this entry »

et cetera