And now – bling in your sidebar

So, I realized yesterday just how important bling is to creating buzz around free software projects. Today then, I decided to finish something that’d been cooking for a while – Google Gadgets in the sidebar:


Google Gadgets in Online Desktop sidebar

It seems that I need to do some gtkmozembed hacking to kill the scrollbar. But otherwise, it looks cool. Once I figure out fun focus issues, you might even be able to type in the todo list. Also in this screenshot you can see the widget manager which landed recently.

Keeping Firefox integrated

Nicu – the question is, who would you rather have as an ally? Mozilla, or Apple? I know which one I’d pick – the people who open-sourced the browser and have been maintaining the very good Firefox experience for Linux (even if there are details to fill in), not the company making a proprietary platform that competes with ours for desktop marketshare.

That said, there is actually work ongoing now to integrate Tango for example. I don’t think it’s going to be easier or make more sense to change rendering engines just for the remaining integration points that could have been done as a Mozilla patch instead.

Stuff I’m Reading

Summit Happenings

Online Desktop

Owen, Bryan, Marina and I gave a talk on the Online Desktop effort that went pretty well, lots of stuff was demoed and there were some good questions.

Getting started

Bryan and Owen have done some good work improving the wiki; if you’re interested in trying things out, you can follow the JHBuild instructions available here, or if you have the appropriate system dependencies installed you can build from the “summit release” tarballs available here.
Look for a live CD soon.

Getting online-desktop components into GNOME

I mentioned web-login-driver on desktop-devel-list; hoping we can upstream components like this as we go. Possibly if we finish some work we could even make GNOME 2.22.
I also started a discussion about sharing some code between Online Desktop and Gimmie, hopefully something will come of that.

We’re also trying to move into the GNOME infrastructure (SVN etc.) to make it easier for people to contribute in terms of code and bug reports without new accounts, but for now if you’ve tried it out and hit bugs please file them here.

Summit General

So far it’s fun, a lot of people hacking on things here. Gave a short talk about the current state of Hotwire which went well. I think there’s a lot of interest but probably most people are waiting for bugs to be fixed; if you’ve tried it and found some, please file them!

What’s in a human?

(nontechnical blog entry)

Ah, Wikipedia. A few minutes ago I was idly browsing the New York Times, reading an editorial which mentioned an event in Falluja in March 2004 which was supposedly a turning point. Idly curious what that would be, I search and end up on Wikipedia which pretty quickly tells me about the event. Another click or two I end up at the page describing what qualifies someone to be “notable” on Wikipedia.

What I find interesting is that in addition to People, one can find the notability guidelines for other categories like Films, Books and of course, Pornographic actors. Er, what?

It has been suggested that this page or section be merged into Notability (people). (Discuss)

Toying with gadgets

So today, I decided to play around with pygtkmozembed to see how hard it would be to support Google Gadgets on Firefox/Linux. Personally, I am less interested in the random crack gadgets so much as the my data please gadgets.

Now for the most part, gadgets are just packaged iframes with some extra goo (configurable parameters, translations, javascript utility functions) included. Once I figured out how to prevent gtkmozembed from segfaulting, getting things going was fairly easy, modulo the 2 hours I spent staring at Wireshark HTTP traces debugging why the wrong cookies were being sent, when in fact I was copying cookies from my stale firefox development profile…grrr.


Google widgets hack

The current state of things is that any gadget which is a “url” widget (i.e. no extra goo) obviously works; all you need is to have Firefox pointed at the url with the correct cookies from your main browser profile (This latter point I’m still working on doing more robustly). Most other gadgets which are hosted externally we can just point at gmodules.com, which basically returns us pre-rendered HTML. What isn’t supported – and this was actually my main goal – is gadgets which depend on some sort of internal Google gadget authentication like reader and docs. I might see if I can figure out how to compute __ENV_google_apps_auth_path.

One other thing I wanted to mention is the new Files stock for the online desktop sidebar. Basically it started out as a monitor of your recently used files, then Marina added support for pulling in your recently modified Google Docs using the brand new Docs API.


Files stock

I think longer term I want to just add support for Google Widgets to Jackfield, once I add the patch to use the workaround for gtkmozembed so Jackfield doesn’t segfault too.

Update: Turns out __ENV_google_apps_auth_path is used to differentiate between gadgets for regular consumer Google and Google Apps For Your Domain; replacing it out makes it show consumer Docs, whereas replacing it with say a/verbum.org shows my verbum.org docs. Cool.

The Firefox Journal

I was going to write a longish blog entry, but Bryan blogged it quite well. It is in fact as awesome as he says. If you’re willing to run bleeding edge Firefox, you should try it.
The amazing thing to me is just how much ~800 lines of JavaScript and HTML code can totally change one’s computing experience. In terms of usefulness per lines of code, it’s the highest of any free software project I’ve written, not joking. With a bit more work, I think it could be strongly considered as the new default home page for Firefox.

History, Search, and being automatic

It’s kind of funny just how strongly most applications reflect the underlying APIs they use. I think it’s just a manifestation of the path of least resistance principle for programmers. For example, pretty much every editor I’ve seen includes a save button, which maps strongly to the underlying write()/close() APIs. But…there’s no reason to have a save button. Changes I make should be automatically saved (like how GMail does it). Then, allow me to view history and undo. The best example of this is the Eclipse local history. Eclipse still has a save button, but I think they could fairly easily delete it; they just probably don’t have the will to face down the vocal minority.

Yesterday I got motivated by this post on the Hotwire Google Group, so I sat down and hacked for a while to fix some issues that had been bugging me in my day-to-day usage, and add some cool new features.

Hotwire 0.595 announcement.

What I actually want to talk about today is a feature that’s been around for a while in Hotwire, related to the idea of automatic saves:

Remembering what directories you actually use, automatically


Searching for firefox
Quick background: A week or so ago when Bryan and I decided to base the Firefox Journal on Firefox 3, I downloaded the latest Firefox CVS source and built it myself. This is in fact very easy to do, by the way, if you’re interested in joining the Firefox development community too.

Now, when I log into my desktop, I need to start the development version of Firefox, not my system one. This involves changing to my Firefox build tree and executing MOZ_NO_REMOTE=1 ./firefox -P default. Hotwire makes this experience significantly nicer than gnome-terminal+bash.

Whappening in the above screenshot is that I’m in my home directory, and I typed cd firefo. One thing you can notice immediately is that I have a real firefox directory as an immediate subdirectory (this is an older binary distribution). Hotwire offers that to me as the first completion, for compatibility with TAB mashing.

The magic

But what about those other completions? How does Hotwire know to offer me a completion all the way to src/mozilla/build-firefox/dist/firefox, instead of some subdirectory? The algorithm is actually very simple. Hotwire remembers how often you execute commands in each directory, and the cd command is actually a search over your “hot” directories, ordered by frequency of command execution.

I’ll be honest. Hotwire has its bugs. You probably wouldn’t believe me if I told you how Rube Goldberg the process of displaying output from shell commands is internally, for example. But it’s small features like the above that make me never want to back to terminal+bash. Longer term, we can fix bugs that make Hotwire different (as opposed to purely better) than term+bash, but I don’t see the competition evolving the way we are. I doubt bash even has a hash table internally, much less a slick interface to SQLite.

Branding

My long term goal is to get to the point where people think of Hotwire as the “Firefox of development shells”. We have a ways to go to get there, but all Hotwire needs is a few skilled Python hackers to really help bring it to the next level. If you’re interested, jump into development!