Google Chrome: 20 processes and not counting…

When first released to public, it was touted to be a fast browser with emphasis on stability. Google Chrome is probably the first to have brought tab-process isolation to the browser market (or was it IE8? The preview got out at almost the same time). And it did live up to its name. Crashing plugin? No problem, the plugin container is killed, and browser resumes as usual. It's fast. It's stable. No cruft. Wait, this is some kind of déjà vu… wasn't Firebird like that too?

From lean bird to fat fox

If you're the type of surfer who avoids using IE altogether, you'd probably have used Firefox at least once. And if you were a Firebird user (which I wasn't), you'd notice the bloat it has become. And the bloat is further compounded by the installation of user add-ons which is supposed to ease browsing or add functionalities. Of course, people asked for it, so they deserved it. You can't get something for nothing. You want function? Trade in your resources. More RAM. More CPU power.

Not all is lost though. People who still want lightweight browsing can choose from myriads of other browsers like K-Meleon, Arora, etc, etc. The engine they use are not guaranteed latest state-of-the-art, but you get stability in return. But their existence doesn't change the fact that people like to personalize their browsing experience. That's why Firefox remained popular among these chaps.

As the version number of Firefox grows, so does its resource usage (memory footprint, mainly). And unstabilities introduced by foreign objects like plugins make browsing less pleasing, especially when a page in another tab you're not seeing at that moment caused the whole browser to hang, you wait painfully until the OS finally gives you the choice to lay it to rest when it's declared it is no longer responding. So here comes a new need: tabs that aren't affected by other tabs when they crash.

Chrome: bringing you back uninterruptable browsing

IIRC, the browsers back then, which didn't have tabs, had seperate processes for each page on display, but I'm too lazy to look up that one. Tabbed browsing put all tabs in one process, so a crash will cause bring everything down. Google Chrome was a project to reseperate all the pages to their own processes, and plugins are seperated too. With this, even if Flash (which Youtube, owned by Google, is a main user) crashed, you can still resume browsing, and just refresh the page if you want Flash to run again. Hooray for casual surfers! But it's no panacea for the rad surfers.

The people moved to Firefox because of its extensibility were very impressed with the speed and stability of the new browser on the market. But they won't jump the ship yet; Chrome was missing the extensibility. That's why adoption rate of Chrome at its genesis was not exciting; it has yet to gain the support of the fashionable people. These people were responsible for Firefox's popularity because they tend to be loud-mouthed (observable in Mac users as well). And these loud-mouthed people are not only not changing sides, they condemn Chrome for not having add-ons support, and kept giving empty threats of "If Google is not giving add-ons, I'm not using it". Those comments gave the impression of Google not being user-friendly for not answering to their demands (though they were not a Chrome user in the first place).

History damned to repeat

The existence of the rad surfers couldn't be ignored by Google, not only because of the large potential user base, but also the damage of the bad hype they're causing if not brought to Google's side. So an extension system that wouldn't compromise the main premise of their browser i.e. stable browsing must be thought up. The developers found a solution: isolation of the extension's in addition to the tabs and plugins.

At a time, it was good. There weren't many extensions, so normal browsing utilizing under 10 tabs wasn't affected. People cheered. The rad surfers, for their demands answered; the casual surfers, for added value with no penalties. It has always been a win for the latter, but for the former, how long did the joy last?

Chrome's extensibility was popular due to the ease of developing them. No XUL like Firefox, no ActiveX like IE, just HTML/JS/CSS and some knowledge of Chrome API. It was not long till Chrome's own extensions directory was populated with various ones which cater to special needs of certain surfers.

Then, a problem crops up for people with too many special needs (yours truly included): too many processes are spawned just for the extensions. Having 10 extensions meant 10 extra process, each with its own overhead, meaning more resources sacrificed, for the sake of maintaining stability. What it also means is that less number of processes available for extra tabs because Google Chrome limits total to only 20, due to OS limitations (mainly Windows). Extra tabs will be consolidated to existing processes, which defeats the original purpose of the Chrome wanting to isolate the browser pages so that one crash won't take down all. Now, if I open 20 tabs, maybe 5-6 of them will share a single process. If one the sharing page crashes, the other 4-5 will have to reload as well.

Can I ever fix my habits?

Note that this had always affected those who browse with hundreds of tabs on. People like me who browse with around 10-20 tabs have only started to see it because of the extra numbers of extensions installed. So it's not really the browser that's to be blamed here, IMO, it's the surfers' habits. Some people want the limit to be raised; they don't mind because they have the extra resources. People like me don't, and we want the option to combine certain processes. For example, I don't mind having all the extensions share the same process because they are not bound to crash often.

But, why is it that our habits have changed so as to consuming so many tabs? I did an observation and found out that there are certain sites that I want to always be ready when required (a Google search tab is in the background at the time of writing this, because I didn't I could alt-Enter). But sometimes, it's just for something that you need to read later, but pressing back button and clicking the next page on list takes time, especially due to the evils of dynamic pages, which won't just reload the previous page without reconfirming.

I have tried fixing this habit by minimizing the number of open tabs as possible, utilizing Read It Later, with some degree of success. It works for something that is serial in nature, or doesn't require cross referencing. If previously, my habit was having 3 tabs for one site: 1 for the page list, 1 for currently reading, 1 for preloading next page; now I can kill the page list and use the Read It Later extension to go to the next page. If I don't need preloading, that'd be down to 1 open tab only.

Will the problem ever go away?

Not as long as people are greedy for more functionalities in their browser (Second-system effect), we probably won't see the light at the end of the tunnel yet. Right now, for me, Lastpass is essential, and some page customizers like Stylish and Tampermonkey are important too. And they are part of the browsing experience. But other extensions I have are actually for web applications that do not effect affect a a page could be made as a standalone application. For example, Chromed Bird: it only fetches tweets and notifies updates, and don't need its own web rendering engine to do it. But having it as an extension causes the bloat in requirement (DOM is expensive). If possible, such application should use native widgets to display the data so that it can function with minimal resources.

0comments:

Post a Comment

I will not post non-constructive comments like "+1 Like", "First!", "You suck!", "Agreed!"