Google


18
Dec 09

Polite extensions in Chrome

Noticed a nice design in Chrome’s extension mechanism:

Updated extensions requires additional permissions

Extension requests additional permissions


4
Dec 09

Google Public DNS benchmarking

Yesterday, Google announced a public DNS service that promises to speed up your browsing experience.

We here at x7 Labs like our interwebs speedy, so I decided to take a quick look at the service. For testing, I used my home 110 Mbit/s cable modem connection from Welho.

As background information, I wanted to know how long it took for packets to travel to Google data centers compare to my ISP.

TCP/IP packets travelled several additional hops compared to the local ISP  case. First they were beamed to Sweden, adding 10-20 ms to the roundtrip time. From there, they were routed to an unknown datacenter, possibly in UK or continental Europe.

All in all, the roundtrip time for Google DNS wasn’t bad, around 50 ms (see below), compared to 8-10 ms for my local ISP (not shown):

UDP roundtrip test

UDP roundtrip test

A side note: The media was in a frenzy when it was announced that Sweden is allowed to monitor all network traffic flowing through their backbones. At least until Google opens a data center in Finland (which is under construction), the Swedes can easily log DNS queries made by Finnish internet users through Google.

Next, I used the DNS Benchmarking tool developed by Steve Gibson. It does exhaustive tests to find out how long it takes for the DNS servers to return both cached and uncached records. I compared my local ISP, OpenDNS and Google:

DNS Benchmark by GRC

DNS Benchmark by GRC

My local ISP was twice as fast (~100 ms vs. ~200 ms) when serving uncached records, and around 5-6 times faster for cached DNS records (8-9 ms vs. 50-60 ms).

Next, I wanted to see if changing the system-wide DNS setting affects the browsing speed. The test case was very simple: reset all caches, open yahoo.com and record time spent in DNS. For this test, I used the excellent Fiddler HTTP Debugging Proxy.

Using my ISP’s DNS, name resolution time was around 300 milliseconds. Here’s a typical result:

Time spent in DNS (local ISP)

Time spent in DNS (local ISP)

When I changed system settings to Google’s Public DNS, I noticed a difference:

Time sent in DNS (Google)

Time spent in DNS (Google)

Using the Google DNS Public Service increased name resolution time almost by a factor of 10x during actual browsing.

Clearly, Google Public DNS isn’t competitive in performance at the moment.


24
Nov 09

What you need to know about Chrome extensions

A browser action that shows unread messages.

A browser action that shows unread messages.

Extensions for Chrome are about to take off. The functionality has been in developer builds for a while, but Google is poised to bring it to all users.

1. Extensions are web apps

Extensions are ZIP packages with HTML, JavaScript, CSS and images inside. A JSON manifest tells Chrome what the extension does and what features it has.

2. What they can do

  • Edit page content (ad blocking!)
  • Use web APIs (through RSS, JSON etc.)
  • Add buttons and information to the toolbar
  • Open and close windows and tabs
  • Manage bookmarks

All access to tabs, windows and content is done through JavaScript APIs. Each extension is run isolated, and it cannot access other extensions or scripts that run on web pages.

3. What they can’t

  • Run arbitrary code
  • Add toolbars, sidebars, menu items etc.
  • Manage downloads, cookies, proxies etc.
  • Edit browser preferences

Note that future versions may have API hooks that do these. For now, extensions can’t touch the inner workings of the browser.

4. Browser and page actions

These are the two main types of UI for extensions. A browser action is a button that’s always visible. When clicked, it can open a new tab, show an info popup or do some other function. The button can change appearance and have an overlay badge like an unread count.

Page actions are the same, but the button only appears when necessary. This could be used for subscription buttons, for example.

5. Install without a restart

Click to install, enable/disable, update or uninstall. No restarts ever. For someone with a long Firefox background, this was quite the eye-opener.

6. Security model

Chrome isn’t a Firefox-like “extensions can do anything” system. Every extension must declare privileges it needs, like access to bookmarks or a specific domain. These are shown to the user when installing an extension.

7. Userscripts

Google provides a way to package existing Greasemonkey userscripts into Chrome extensions. In fact, userscripts are the way page content is manipulated in Chrome.

8. Background processes

If extensions are just JavaScript, how can you monitor ongoing events? An extension gets an invisible always-open page, where the JavaScript can keep on running.

9. Updates

Updates are fully automatic. An extension’s manifest contains an URL that Chrome listens to for future updates.

10. Gallery

Google already has a gallery for Chrome themes, and an extension one will open soon. Developers are invited to submit their extensions for the gallery.