Mozilla

Archive for September 28th, 2009

Browser Soup and Chrome Frame

September 28th, 2009

Last week Google released a new product in the browser space called “Chrome Frame.” Chrome Frame aggressively address a serious pain point for Web developers. However, the overall effects of Chrome Frame are undesirable. I predict positive results will not be enduring and — to the extent it is adopted — Chrome Frame will end in growing fragmentation and loss of control for most of us, including Web developers. Here’s why.

The Chrome Frame plugin is essentially a browser-within-a-browser. Chrome Frame inserts an alternative “rendering engine” into your browser, and allows websites to determine which rendering engine you end up using. (The “Why Chrome Frame” section below has a slightly longer description of the problems developers face and of Chrome Frame, for those not so familiar with browser technology.)

Chrome Frame and Loss of Control

Once your browser has fragmented into multiple rendering engines, it’s very hard to manage information across websites. Some information will be managable from the browser you use and some information from Chrome Frame. If the Smart Location Bar in the “browser” doesn’t show the sites you’re trying to return to, then you need to find a way to open Chrome Frame and search there. Your “browser” can no longer aggregate information for you across websites. This defeats one of the most important ways in which a browser can help people manage their experience.

For many people Chrome Frame will make the Web even more unknowable and confusing. Image you download Chrome Frame. You go to a website. What rendering engine do you end up using? That depends on the website now, not on you. And if you end up at a website that makes use of the Chrome Frame, the treatment of your passwords, security settings, personalization all the other things one sets in a browser is suddenly unknown. Will sites you tag or bookmark while browsing with one rendering engine show up in the other? Because the various parts of the browser are no longer connected, actions that have one result in the browser you think you’re using won’t have the same result in the Chrome browser-within-a-browser.

Getting different results will be awkward even for those of us who understand clearly what is going on. Then imagine someone who isn’t immersed in browser technology. Imagine trying to explain to a neighbor that one day he went to a website, clicked on a button to “add Web capabilities to your browser,” ended up with a duplicate “rendering” technology that surfaces and disappears based on website controls, and this now means that the search bar, location bar and other basic UI elements will work in different ways at different times. This affects individuals directly, and Web developers indirectly. It doesn’t help Web developers if basic ways of interacting with the site be
come awkward, for example if I don’t know where my password was stored and how to access it.

Chrome Frame and Fragmentation

Google is not the only website developer that would find this idea useful. Google is providing the set of features it believes are helpful for making powerful websites. Other websites will have browser features they would find useful for their applications. Imagine having the Google browser-within-a-browser for some sites, the Facebook browser-within-a-browser for Facebook Connect sites, the Apple variant for iTunes, the mobile-carrier variant for your mobile sites — all injected into a single piece of software the user thinks of as his or her “browser.” Each browser-within-a-browser variant will have its own feature set, its own quirks, and its own security problems.

The result is a sort of browser-soup, where a given user action serves up some sort of response, but it’s not clear what the result will be: are my passwords and history stored in chrome frame? Some other variant? In what I think of as “my” browser? This makes the Web less knowable, less understandable, and certainly less manageable.

Why Chrome Frame?

Web developers and website applications face a painful and seemingly never-ending problem: wanting to implement capabilities that some browsers don’t support. The degree of pain this causes is high. Imagine trying to cook a really fine meal with an oven that can’t get above 250 degrees F. In some cases it’s just impossible, in other cases it requires rearranging ingredients, cooking time and the order of preparation. Web developers go through this regularly.

One way of fixing this is to get people to use a new browser. This is effective, but hard. Mozilla Firefox has reached some 300 million people, but hundreds of millions more continue to use the browser that came on the machine they bought, sometimes years ago. Google began offering its own browser — “Chrome” — a year or so ago, but this has yet to gain significant traction. This week Google offered a different solution — a version of Chrome repackaged as a plugin for IE.

For those not familiar with the ins-and-outs of browser architecture, you can think of a browser as having two essential parts. One part we humans don’t see — it’s the part that “speaks” computer languages and talks with Web servers. This is often called the “platform” or the “rendering engine.” The other part is the set of things that human beings see and interact with, which is often called the “front-end” or the “application layer.” The application layer includes the basic browser user interface — the window around content, the buttons, menu items, search box, etc. It also includes parts of the browser that appear based on what you are doing — the dialog boxes, the download manager, the password manager, the security warnings and the other messages.

Chrome Frame breaks this connection by inserting a separate rendering engine into your browser, and allowing websites to determine which rendering engine you end up using. If you download Chrome Frame you see the basic front end of your previous browser, but websites cause your browser to toggle back and forth between the rendering engine of Chrome and the rendering engine of the browser you selected. The application layer of your browser and the platform part of your browser are no longer connected.

At first glance this looks like it might be a useful option, offering immediate convenience to website developers in alleviating a very real pain. But a deeper look reveals significant negative repercussions.

Skip past the sidebar