If I was building an OS today I’d be building what Google just announced.
Like most heavy technology users I’ve been moving heavily toward hosted web applications over the past few years. I don’t use Evolution or mutt anymore, I use GMail. I don’t organize my photos on my laptop and use my own hosted Gallery, I use Flickr. I’ve never been a big office application user, but when I’m forced to open a Powerpoint deck, edit an Excel file or print out a Word document, I do it using Google docs.
I’ve also spent the past four or five or so years working on blurring the line between what’s on your desktop and what’s online. At Flock I worked to synchronize your bookmarks to online services and between machines, to integrate personalized web search into your desktop workflow and to make publishing media from your devices as easy as publishing text from your keyboard. At Songbird we developed APIs to allow web apps to interact with your desktop media player and APIs to let your desktop media player access content from the web. At Rdio I worked on similar things, from a slightly different approach, I don’t think I can talk about them yet.
I’m really excited that Google has the balls (and the skills) to go all out. To commit to offering enough APIs to web applications to allow them to provide the same functionality and user experience as desktop applications would. This isn’t the first time that this has been attempted, but I think this time it just might work. Just a couple of years ago when the iPhone launched and Apple announced that the only way to write applications was to write web applications users and developers rebelled. The iPhone browser wasn’t capable enough. Google have taken the right approach by committing to improving the web platform to support whatever APIs are needed before shipping the product.
I’ll never be running Chrome OS. I rely on too many specialized applications, but I am looking forward to when Flickr can pull photos right off my camera and GMail’s offline features are widely tested enough to actually work right. Much of the innovation in Chrome OS will benefit us all.
So I’ve been at a new job for a couple of weeks now. I left Songbird around when we shipped 1.0 to seek some new challenges. I’ve been doing Mozilla browser development for seven and a half years and I’m sick of it. I still think building browsers is one of the most interesting fields to work in – since we all spend much of our time working and interacting through web sites small incremental improvements to web browsers can have a huge impact on a wide variety of activities. But building web browsers is hard.
Now I’m doing some web stuff. It’s a challenge but in different ways. I’m working a lot with Flash and AIR right now, I’ve just successfully evangelized jQuery to the other developers and about to head back into cross-browser html + css development. The project I’m working on is still under wraps but it’s really exciting and I’m working with some pretty amazing people. I can’t wait to be able to brag about it.
In the mean time I might start talking about more web-y things here.
A couple of months ago my role at Songbird shifted a little. Up till then I was working on the core product, fixing bugs and adding features across the whole product as part of the bird engineering team. Since we started working on 0.7 (aka Fugazi) I moved into a group initially called strategic development which then split and merged with the design and product group.
We’ve been looking through feedback from our users, primarily through surveys to determine what features we can add that will address most users’ feature requests. Doing this outside engineering has been great since they can focus on improving the core product, keeping a clear vision of what the product we want should be, while we’re working directly from end-user feedback.
My first project was a new Last.fm addon using our new playback history API. It was installed by default for all Songbird 0.7 users so it’s had quite a bit of use, some good feedback, some bug fixes and now some translations:
My next project was taking Georges‘ Seeqpod addon, updating it and getting it ready for inclusion in Songbird. It wasn’t ready for Fugazi, but hopefully it’ll be ready for Genesis (our next release). Seeqpod is an MP3 search engine and our addon attempts to integrate it nicely into Songbird. I streamed a lot of random music while developing it. I spent a whole day listening to 80s Metallica.
Now I’m working on better music store integration using Songbird’s Web Page API.
Ten years ago Netscape released the source code to their browser. They called it Mozilla, I downloaded and built it at my work at the time. I didn’t manage to build it immediately, but I worked it out in the end.
Somehow I’ve spent most of the past seven years working with the platform. I touched on it at Eazel where we used Gecko to display HTML, but mostly left the hard work of integrating a barely-ready gtkmozembed to Mike and Ramiro
Then at Danger I ended up as the main engineer working on our licensed fork of the ProxiWeb web proxy (love those innovative names) which used Mozilla (circa M6 or M8 I think) on Solaris x86 to format web pages for display on hiptops and Sidekicks. Later we built our own web proxy based on Mozilla 1.3, following a similar model but with all the lessons we learned maintaining the old code for years.
Eventually I ran away with the circus as one of the first employees at Flock where we were trying to re-imagine the desktop browser experience, based on Firefox. After a couple of years struggling with vision and execution they worked it out – soon after I left. Now it’s showing the potential of moving beyond the dominant Mosaic-with-tabs user experience that the main players are following.
Now I’m at Songbird, building another kind of browser – one whose focus is integrating media consumption and management. We’re building on XULRunner, the application platform that has been spun out from the Mozilla applications. It’s not my favorite platform for building applications, but how else are you going to build a cross-platform web browser.
Somehow this passing interest I had ten years ago has turned into a career.
Six months ago I predicted:
This kind of bundling is often done by the bad guys. If you install Appleâ€™s Quicktime codecs on Windows every update will trigger an iTunes install, even if you havenâ€™t installed iTunes. Iâ€™m sure theyâ€™ll do the same thing for Safari on Windows. Iâ€™m not sure what iTunesâ€™ market share on Windows is but it seems to be significant. If all those users suddenly have Safari installed that could potentially cause a big shake-up in browser market share.
On Friday there was a minor shitstorm on planet.mozilla.org about Apple pushing down Safari to all Windows iTunes and Quicktime users.
If only we had a reusable system-wide XULRunner it would be really easy to do similar but less evil promotion of our growing XUL-based free software suite. Songbird could suggest to users that they might like Firefox – and it would take just a single click and a tiny XPI download to have users running Firefox. We could even get intelligent and suggest Thunderbird to heavy email users or Flock to heavy social networking users.
iTunes’ US market share is around 27% (according to the best numbers I can find). If Apple flips the switch and makes Safari the default browser for all those users Firefox will start looking irrelevant fast.
Recently at Songbird I’ve been working on some guidelines to help us build better APIs. One of the most exciting things we’re hoping to offer users and developers are APIs that give them access to their music and the ability to extend their and others’ music players. Getting these APIs right can be hard and we think we can do better, so we came up with some ideas and we’re trying to get some wider feedback.
- APIs should be orthogonal and symmetrical
- Method naming, argument ordering and error handling should be consistent
- Code that uses the API should read like prose. Words should not be abbreviated. It should be easy to understand code that uses the API without having read the documentation
- The API should follow the terminology, conventions and idioms of the platform that is is built on
- Use cases and target developers should be taken into consideration when the API is being designed and documented
- Developers should be able to continue to use the tools and libraries that they are familiar with when using the API. Their previous development experience should help them learn and understand the API quickly
These are based on research I did – I distilled half a dozen other peoples’ ideas about good API design into ones that we could easily apply to our own work.
The full document fleshes these out a little more, with examples and then goes into platform specific patterns to follow.
If you’re interested, read it and please send your comments.
I’m kind of terrified of public speaking. So I do it as much as possible.
I will be speaking at LUG Radio Live USA 2008 in San Francisco in April. I’m going to be talking about Songbird and the Open Media Web focusing on why what we’re working on over at the nest is especially important to the Linux community. Then I’ll probably show off a few cool things you can do once your digital media platform is open, standards based and extensible.
Here’s what the Lug Radio guys say about their conference:
LugRadio Live USA 2008, the ‘rock-conference’ from the team behind the popular LugRadio podcast, brings the successful and unique formula of the UK LugRadio Live events to The Metreon in San Francisco on the 12th and 13th April 2008. The event is supported extensively by Google and also supported by Dice.
LugRadio Live USA 2008 brings together over 30 speakers across three stages, 30+ exhibitors, a range of BOF sessions, debate panels, lightbulb talk sessions, demos and much more, all wrapped up in the unique event that the UK incarnation has become known for, combining an incredibly loose, social, inclusive, and amusing atmosphere -Â you are new to LugRadio Live, it is nothing you will have seen before.
Sounds like fun to me. There will be a huge range of speakers, from kernel hackers like Ben Collins and Kristen Accardi to server folks like MySQL’s Stewart Smith and Samba’s Jeremy Allison. There are library and application developers like Dan Kegal from Wine and Christian Hammond from VMWare.
Apart from me there will be a ton of folks talking about media. David Schleef (of GStreamer and Dirac fame), John Buckman (from Magnatune), Mike Linksvayer (Creative Commons VP) and Aaron Bockover (Banshee hacker) will all be showing me up.
You can see all this and more for just ten dollars on April 12th and 13th at the Metreon in San Francisco. I’m really excited to be part of the conference and really excited to get to hear and meet all the other participants. So if this sounds fun or interesting to you please join me and register.
Last week we release Songbird 0.3. It’s the release I’ve been working on since I joined the Pioneers of the Inevitable in January. There are a whole lot of improvements in there to various parts of the application – the database engine was rewritten to be faster and more extensible, we added tabs to the browser, etc – but that’s not what’s really cool. What’s really cool is the new Web API we’ve developed.
Web pages being displayed in Songbird can (with the user’s permission) interact with pretty much the whole music player. We’re exposing both basic playback controls (what’s the current track, play, pause, next, etc) and access to the music library (see what’s in the library, add to it, etc). This means any music web site can offer a really rich integrated experience. Sites like last.fm or Pandora could offer recommendations without requiring you to download a plugin or desktop application, music stores like Emusic or Amazon.com wouldn’t need to provide a separate desktop applications and could offer the kind of seamless player / web-service integration that only Apple is providing at the moment, and there are a million other possibilities that we haven’t even thought of yet. Right now you can see this at work on The Hype Machine.
Steve and I have been hacking on Greasemonkey, getting it integrated with the bird and writing userscripts that add new functionality to web sites that don’t yet know about Songbird. My most complete hack is one that adds album previews (courtesy of Amazon.com’s music store) to album reviews on Metacritic and Pitchfork. It’s useful and its fun!
PS: yes, it supports your bloody iPod…