What is the Online Desktop?

It’s pretty simple – the online desktop is this task list. Which is just a start (please add more!). It isn’t a single product you can download, though we’ve been working on prototyping components such as the GConf synchronization, a new sidebar, etc.
I’m excited by discussion like this that shows developers are interested. If you are looking to jump in – a really cool yet discrete project would be implementing the pick-a-service dialog from that todo list. In other words, the thing that should appear from F-Spot if you plug in a digital camera, but don’t have a photo site in your accounts.

Right now, you can get a person’s contact network from the data model, and then enumerate the “external accounts” (sites used) by those people. In fact, this is exactly how the BigBoard Photos Stock works. What you’d need to do is have some way of tagging services by what kind they are (e.g. photos). Then code the widget to query those, uniquify it, order it by some criteria, then just stuff it all in a treeview.

Firefox multilanguage

Mozilla supporting IronPython and IronRuby seems like pretty big news…not sure how I missed it. I’m going to have to pay closer attention to happenings in Mozilla-land.
So if I understand correctly, the way it would work is that Tamarin would include a translator from CIL bytecode to Tamarin bytecode? So finally when a website includes: <script lang=”text/python”>, what would happen is that the code would be compiled via IronPython (which itself was originally in CIL form, now translated to Tamarin) to CIL, and then Tamarin would translate that to its bytecode, and execute it?
Wow…why aren’t they just using Mono directly?

Targets

Really good mail from Bill Nottingham about target markets for Fedora. It is pretty crazy how much software in general is written without thinking about who will be using it, why they’ll want it, and how it will be used.
A current example of the wrong way (in my opinion) to create software is OpenSolaris’ NetworkManager-type program. They call all this work design, but really almost all of it is the engineering implementation design, especially this thread. It has very little to do with how people use the software; there are some sentences to the effect of “oh yeah, there will be GUI popups or something”. The UI page doesn’t exist yet even. To be fair to them, maybe I’m looking in the wrong place, but I didn’t see any non-engineering design.
Having been next to Bryan, Seth and Dan when they were working on NetworkManager, I saw firsthand how a good interaction design and an understanding of the target market is key. For example, in the initial design, they made a decision not to support static IP addresses. That may seem crazy to a programmer, but the target market (Fedora wireless users) basically never uses static addresses. Thus, no need to support them, and the design became much simpler.
Nowadays, I wouldn’t even try to write real software unless I had a good interaction designer on the team. From the start. Not like someone pulled in 70% of the way through to double check the widget spacing on all the incomprehensible popup dialogs I’d created.

Quick (or not so) thoughts

Pyro is the right technology

If you haven’t seen it, Pyro Desktop is a cool project. Alex is spot on about developers and HTML/JavaScript in particular. It’s not that are current desktop APIs are necessarily bad – but they are different. Someone who wants to code something cool that may be coming from a OS X or Windows background will have to drop down for a week while they learn the APIs.

A window manager, or…?

Now, what confused me honestly is that Pyro seems mainly to be focused on being a compositing window manager. Maybe I’m just getting old, but I don’t find the desktop bling that interesting – from any source, Compiz/Pyro/whatever. Sure, it looks pretty, but at the end of the day it feels like there are just a few things (fade-in menus) that are definite improvements, and everything else is just “because we can”. Maybe it’s also because I’m an all-windows-maximized+alt-tab person. I also don’t use workspaces.

The apps

What I thought was missing from the Pyro demo was the apps. To someone who’s not a developer, it looks like a desktop theme. The Flickr feed I see on the website is more interesting to me. Certainly, if I was going to start a project like the Big Board part of the Online Desktop now, it would make a lot of sense to write it using Firefox/Pyro. I had to spend at least a solid week of work on the HTTP library in BigBoard alone. One thought is it may be interesting to embed Firefox iframes inside Big Board.

-JavaScript

If you’re like me, you acknowledge JavaScript’s ubiquity, but you still hate its crazy prototype “object system”. Enter Google Web Toolkit. I can definitely imagine the future of application development being HTML+CSS+Java (or another sane language).

Online Desktop

Havoc had a good summary. One thing I think that should have been stressed more strongly is that in a lot of cases, being online is just a matter of changing workflow or defaults for existing regular GNOME apps, not just dropping them. For example, changing F-Spot to make it easier to get your photos online – getting your account info (or pointing you to some samples if you don’t have one), but still having a good local photo tool for picking which photos to upload, fixing redeye, etc. I think there was actually a talk about this which I missed.

Hotwire

Gave a lightning talk on Hotwire and talked to a few people about it. Seemed like people were interested, but it’s really hard to get people to switch. But I think it’s been successful in letting me prototype out some shell ideas. I have been having some different UI ideas lately though, and am also pretty frustrated right now with the Python runtime (not the language) – the GIL is a serious brick wall for improving Hotwire.
Update – Just discovered POSH when googling for the GIL link – this may be exactly what I need.

Photos

Haven’t seen many people blog their GUADEC photos (I’m sure it’ll happen en masse after the conference), but I tossed my current photo set online.


Beach


Victoria square


Hackers in Etap

The things I change right after installing Fedora

Did a fresh Fedora 7 install on my laptop, and I went through my usual routine of fixing up a few details. We’ve actually gotten pretty good about being “stateless”; I already store almost everything online (GMail, delicious, Last.fm, Mugshot, Picasa, etc.), so there was little data to copy around manually, basically just reinstall developer tools.

However, I have to spend a bit of time killing passwords:

  • Fix usermode to not prompt for the root passwordThis forum thread describes how to do it.
  • Delete my user password – Run passwd -d walters. That way I just click my username. My laptop is either right next to me, or in a trusted environment, so I don’t need a password. Ideally GDM would auto-login the user if they didn’t have a password, so I wouldn’t even have to click.
  • Install Google Browser Sync – By far my biggest annoyance with the web is remembering all my website passwords. Google Browser Sync is the best solution I’ve found so far.

The next thing I’m going to add to this list is to install pam_keyring, just about to try that. Though honestly I’d like a way to basically disable all prompts from the GNOME keyring – I don’t need my local keyring encrypted (for the same reason I don’t need a local password), and I trust my local apps.

Fixing those little things

A while back I came upon this rant about the focus stealing prevention. Recently I realized just how confusing it is; I had a lot of windows open, and so didn’t even notice the Firefox tab blinking at first and thought my clicks weren’t registering. Ick!
So I decided to sit down and spend a day on backporting the upstream patch for this to Firefox 2. If you are a Firefox user (or more hopefully a distributor) interested in having the links you click on the desktop actually appear on the screen without hunting for a pulsing tab, this patch is for you.

Happenings in Python and Portland

In Python

Definitely been enjoying my mostly pure Python hacking recently. It feels so…empowering. Like I can just sit down and bend the computer to my will, instead of fighting details.
Some updates from that front:

  • Put up the code for the guest-account project for Fedora, based on a quick discussion/design session with Bryan about how we can improve account creation and login process. The current code is functional but could use a bit of polish. I had to drop back into C-land to make GDM able to execute my little PyGTK program, but it works. Hoping to squish some of the details in that patch and get it into GDM, then the guest-account programs polished, probably into GNOME SVN, and packaged for Fedora.
  • On the bigboard front, Owen landed a patch for integrating his really cool data model stuff so we get efficient updates from the server. When I get back, going to take a look at using this to help fix temporarily-disconnected operation and caching issues
  • While stuck at the Chicago airport yesterday (and I do mean basically all of yesterday, thanks United), spent a bit of time getting a new release of Hotwire out the door. Nothing earth-shattering, but some important bugs have been fixed, and I’m getting ready to add a dependency on Twisted so Hotwire can start doing some cool things over ssh.

In Portland

Some quick facts about Portland I have discovered in my first day here:

No sales tax

Seeing an item listed at $2.95, walking up to the register, and actually paying $2.95 (instead of $3.1x and therefore receiving a big pile of change) is something I could get used to. Really fast.

Punk lives

Portland has quite a lot of punk. If I still had my early-college ear piercings I’d probably fit in better. I first realized Portland was punk when a 50s-ish woman with dyed blue hair, black leather jacket, and this T-shirt (unrelated photo found via Google image search) walked by while I was eating lunch.
Unfortunately on this trip, I managed to forget my camera. Now if you saw my earlier attempts at photography, you may not consider my inability to take high-resolution photos a great loss to the Internet. However – I had to bust out my phone to get this picture while I was wandering downtown:


Punk guy with Siamese cat perched on shoulder

The cat seemed…well practiced at staying in that position. I have to admit, witnessing punk-guy-with-siamese-cat-on-shoulder was a new experience for me.

Portland is not flat

This one kind of messed up my plan to use my Hypno skates as my primary means of transportation. Because multiple people independently recommended it (and it was close to my hotel), I went to check out the Portland Japanese Garden. Which was very cool, albeit deceptively small. However, my plan to skate there didn’t exactly work out:


Slightly hilly
I had two choices for speed, embodied by the above photo: Thigh-exhaustingly slow, or pedestrian-creaming no-hope-of-stopping fast. I spent most of the time with my blades detached, walking.

Even though I love to program them…

…it doesn’t mean they can’t annoy me.

Currently stuck in the Chicago airport because all the local United airline computer system crashed for almost two hours. So I miss my connecting flight. The next flight to Portland is full, and also delayed on top of that. Who knows what happened to my luggage.

Despite all this, I’m in a good mood. Currently eating some cheap tofu and reading a copy of the wonderfully imaginative Un Lun Dun by China Miéville.

The Good, The Bad, and the Ugly

The Good

VirtualBox – A fairly complete VMWare Workstation replacement, it even supports the VMWare disk format. Worked pretty much out of the box for me – I’m sold. Would be nice if someone stepped up and packaged up the open source version which seems to support everything I want anyways.

PyGTK Shell – Not bad, though it needs to gain the autosaving feature from my version.

The Evergreen Open Files Dialog – The last refuge of hierarchical filesystems nowadays seems to be software for programmers, who apparently want to inflict the pain on others of their kind. I wish my current editor let me type a file name and open it, regardless of where it was or whether had it open currently. It just…makes sense. Not ready to switch to Evergreen yet, but the author has the right idea. (Hotwire‘s current cd command offers something similar for directories).

The Bad

Python zipfile module – Whoever designed this API should have their Python commit access revoked. This is apparently what you have to write to just extract the contents of a zipfile. No. Just…no.

The Ugly

The canvas situation. Honestly, what I would really like to see is a nice API for embedding a (web) browser. I put (web) in parenthesis because most apps would want significantly tighter integration than that offered by something like GtkMozembed – e.g. the ability to easily insert a hyperlink that invokes a callback in your app, have slick DOM control, write scripts in Python instead of JavaScript, etc.

The benefit to this is that you get to reuse all the knowledge about web page programming and layout that basically all programmers today have to know anyways. Now, this doesn’t fill every use case – certainly things like Clutter would still be the sane way to write particular classes of application. Anyways, more and more I find myself hoping someone steps up and really makes something awesome like this – whether it’s based on XULRunner, Gtk-WebCore or something else.