Tuesday, October 5, 2010

Code changes to prepare Gmail for the future

When Gmail launched in 2004, the web was a very different place: people's expectations were different, browser capabilities were less advanced, and certain terms that are now commonplace on software engineer résumés hadn't even been coined yet.

In the past three and a half years we have launched a number of cool features: deep chat integration, voice mail, Google Docs integration, and most recently, free IMAP. During this time we've learned a lot about building large web applications and what happens when you push web browsers to their limits.

So recently the Gmail team has been working on a structural code change that we'll be rolling out to Firefox 2 and IE 7 users over the coming weeks (with other browsers to follow). You won't notice too many differences to start with, but we're using a new model that enables us to iterate faster and share components (we now use the same rich text editor as Groups and Page Creator, and the Contact Manager can be seen in several Google apps). A few other things you will notice are some new keyboard shortcuts and the ability to bookmark specific messages and email searches.

We have also been fanatical about speed. Even on a fast Internet connection, it can take a second to request and render a new web page, and when you read a lot of mail, these seconds can accumulate to hours waiting for email to load. We've spent a lot of time profiling all parts of the application, shaving milliseconds off wherever we can, and figuring out workarounds for some pretty deep-rooted issues with the current browser implementations. Some of the most common actions should be faster now. For instance, we prefetch messages in the current view, so when you open an email your browser doesn't have to talk to Google's server; it just displays the message. These techniques really shine on newer browsers and computers. Using an alpha version of Safari 3 on a MacBook, we're seeing sub-200ms times when opening messages—pretty quick.

One side effect of this change is that if you're using third-party Gmail extensions, they're likely to stop working. We've contacted a number of the developers behind some popular extensions and provided them with an opportunity to create fixes, so check back with them for updates. We're sorry that it may be a bit of a inconvenience, but we're trying to make this change as smooth as possible.

The team has a bunch more things in the works, so stay tuned.

Update (11/9): While we (like most web services) don't officially support third-party extensions like Greasemonkey scripts, we realize that some of our most active users want to write and run them. Because these scripts directly modify a web service's code rather than using a stable API, they tend to be fragile to even small changes in a web app's code (and can even create bugs in the web app itself).

To make this easier on our Greasemonkey users, we've recently added an experimental Gmail/Greasemonkey API that should make these types of scripts easier to write and more robust to code changes. (Note that this applies only to users who have installed Greasemonkey scripts -- if the term "Greasemonkey" evokes little more for you than an image of an oily mechanic, then you needn't worry about any of this.)

No comments: