Dissecting the Google Chrome setup.

I thought the next installation package I would evaluate from the inside out would be the Windows Live Writer Tech Preview. However, before I got around to that, lots of noise was made about Google Chrome's release so I thought I'd pile on and dig in. As usual, I found a few interesting things.

Initiating the download.

First, the installation experience starts by downloading a pretty small bootstrap (474 KB) executable. A bootstrap executable like this is basically required for any distribution over the Internet so the only thing interesting here is that they did not to ship the product embedded in the initial bootstrap executable. Instead, the bootstrap executable contains the Google Updater and the applications to have the Google Updater download then install. Don't forget about the Updater, we'll come back to it at the end.

One important thing to note here is that the bootstrapper is specifically marked for no elevation (<requestedExecutionLevel level="asInvoker" />). That's good because it'd be less than ideal to be downloading from the Internet from an elevated process. What's more interesting though is that there is never an elevation prompt. This means that the Google Updater, Google Chrome and Google Gears are per-user installations. I am always interested in applications that choose to go per-user since there is always a reason behind the choice (usually to avoid a UAC prompt on Vista).  ClickThrough installations are per-user and more spectacularly Live Mesh is per-user. I'll cover the details of per-user installations, why they are interesting and how they differ from per-machine installs in a future blog post.

Before going forward, going back to the very beginning, the EULA dialog is very tricky. I don't know if Google did this on purpose but notice the checkbox in the location where most installs say you must check to "Accept". It actually is the option to opt-in to sending all your usage data to Google. If a user wasn't paying close attention and was just clicking to get to the download they might opt-in to accidentally. Sneaky, if intentional.

Also, I kept looking for some place that explained that we were going to be getting the Google Updater and Google Gears with Google Chrome. Haven't found it.

Actually downloading and installing Google Chrome.

Next, the Google Updater installs itself and starts downloading Google Chrome and Google Gears. After downloading, Google Updater launches the installs for Google Chrome and Google Gears. The progress bar behavior is interesting to watch during this process. During the first initialization the progress bar enters "endless loop" mode (or "confused Cylon mode" for you BSG fans). When the download starts the progress bar fills the bar normally. Then the progress bar goes back to "endless loop" mode during the installation. That means there is no real progress during install itself.

At this point, Google Updater will have installed itself in the LocalAppDataFolder under Google\Update and pointed a HKCU\Software\Microsoft\Windows\CurrentVersion\Run key to start it on every boot. Google Chrome was installed by some opaque (presumably custom) engine using a 7-Zip package as for its data. Google Gears, however, was installed by an MSI. The MSI was created with the WiX toolset (older build) and tailored for the Chrome install location and marked to not show up in Add/Remove Programs itself. That means the Chrome uninstall is responsible for kicking off the package uninstall.  The only real problem here is that the original source MSI is deleted after the installation is complete. That means should the Windows Installer require the original source for any reason, it'll be impossible for typical users to satisfy the source prompt. I am curious why Google chose to use MSI for installing Google Gears but used some other installation mechanism to setup the rest of Google Chrome.

While all of this custom stuff provides a very hands off installation experience for consumers, it doesn't play well with serious enterprise deployments. However, the fact that this is a per-user install means that individuals can probably get Google Chrome installed on their desktops without the Google Gears MSI install since even administrators may block it (the Windows Installer respects global Group Policy settings that can prevent all installations). Of course, it's possible (I'd dare say likely) that Google wouldn't rate enterprise deployment high on their list of priorities for Google Chrome.

First boot experience.

When the install is complete, Google Chrome launches and goes into a "first boot" experience to do let the user configure their settings and migrate any existing bookmarks. This is exactly the right thing to do. I see so many applications make the mistake of trying to do this type of work in setup its refreshing to see someone get it right. I'll go into more details about settings management in the future.

Google Chrome Uninstall FAIL.

To dissect the Google Chrome setup, I had to uninstall several times. On the first uninstall, I saw that Google Chrome's "User Data" directory was left behind. This is fine and, in many cases, desirable. If there is data in there that the user may want later, leaving the data around is the best choice. An option to clean up all the data during uninstall is also a good idea especially since this is a per-user app and it can correctly clean up the appropriate user data. No big deal but that did lead me to the beginning of the badness for Google Chrome's uninstall.

First, the prompt to uninstall is a bit goofy when it asks, "Are you sure you want to uninstall Google Chrome? (Was it something we said?)". Maybe the rhetorical question fits in with the comic book introduction and the cutesy Mac-like fail screens but it certainly doesn't feel very professional. Clicking OK causes the prompt to disappear but there is no indication that Google Chrome is being uninstalled until a short bit later a web browser window pops up navigated to a Google page asking why I uninstalled. The experience is disconnected even though the uninstall is pretty quick. The extra browser launch is also a bit annoying. I wonder what type of feedback they'll get there.

However, this next issue is huge. Uninstalling Google Chrome does not uninstall the Google Updater. That means that Google Updater will start up on every login (because it's still in the Run key) even though you don't have any Google stuff to update. Unless you manually run "%LOCALAPPDATA%\Google\Update\GoogleUpdate.exe --uninstall" before deleting everything in the Google directory, you'll be left with COM goo on the machine.  The real problem is that there is no visible indication that the Google Updater is still on you machine.

Maybe this uninstall problem is just an oversight on Google's part but there is so much registration around the Google Updater that it is surprising it could be forgotten. It is especially important to clean it up because it wasn't really clear that you were getting the Google Updater when you just wanted the Google Chrome.

Conclusion

The initial installation experience didn't really impress me with its vague progress bars but overlooking the uninstall of the Google Updater really ruined my opinion of the overall Google Chrome setup experience. The clean per-user installation and appropriately timed migration experience doesn't outweigh the uninstall problem. If the uninstall just left some dormant files in a directory that'd be one thing but the Google Updater is left active on my machine after I uninstalled everything.

 

The Office family and the Windows division.

Recently Robert Scoble posted a blog entry about how Windows engineers feel Win7 is being managed differently than previous Windows releases. As I read through the list, I immediately thought, "Hey, that's just like Office." It also reminded me of an analogy I came up with when I first joined Microsoft.

Before I continue, I should note that I consider myself to heavily influenced by the "Office-way of software engineering". When discussing software development philosophies with other Microsoft employees I often say that "I grew up in Office". I believe that foundation in large scale software engineering tempered by my exposure to the "Open Source-way of software development" has been invaluable to my development as a software engineer. There was many a day when I was in Windows where I longed for the "Office-way". However, as a disclaimer, do know that I was young when I was in Office and it was a long time ago so nostalgia may have seeped into some of my memories. Also, as always, these are my feelings and views alone... others may see things very differently.

Now, back to my story.

When first at Microsoft I was trying to describe to my Mom the differences between Office and Windows. Not that one was suite of productivity applications and the other was an operating system. Instead, I was trying to explain the cultural differences across the two organizations. It amazed me how incredibly different the culture of two parts of the same company could be. I described it to my Mom back then as the "Office family" and the "Windows division".

In Office, everyone felt like a part of the extended family. I always worked on a "Core" team so the build team and UI team felt like siblings while the "Word" and "Excel" teams felt like cousins and the "Powerpoint" team felt like distant cousins (since they were down in Silicon Valley). Development managers and directors felt like "heads of the household" and the "head of the family" (Steven Sinofsky, during my tenure) all provided direction, discipline and support at their various levels. You were expected to work out issues at your level and not "go crying to daddy". In fact, escalating usually had negative consequences for all of the people involved. Overall, it felt like everyone was working together to ship a very complex and large product on time.

In Windows, it felt like there were all of these small kingdoms vying for attention and resources. Everyone felt very compartmentalized on their particular feature. The development manager and directors were necessary to exert your requirements on other team. Escalation was the norm and sometimes you'd have to go through 6 layers to get the leverage desired. Also, rigorous process seemed to be valued over developer productivity. I think the term "death march" was invented in Windows. Overall, it felt like constant battle to test the mettle of teams and the features to be delivered into the operating system.

Now, to be fair to the culture that developed in Windows, there is a serious amount of pressure to be all things to all people. Not only do you have to build features that capture the imagination of the future but you have to make sure everything that worked in the past continues to work today.  And the OS is always on. If you want to see someone take the responsibility seriously check out Raymond Chen's blog. He's one of the true Microsoft heroes.

Anyway, after I heard Sinofsky would be moving from Office to Windows I hoped that many of the changes Scoble described would occur. When I later heard that Jon Devaan was moving in to lead another part of Windows, I expected a culture change was inevitable. Why? Because the guy that led Office before Sinofsky was Devaan. I believe culture comes from the top and the Windows division got a huge injection of "family values" when Devaan and Sinofsky moved in.

Now I just hope the (IMHO) improved culture creates an incredible product.

 

PS: The Live Mesh team has a different feel than any other team I've been on. I expect that is due to Ray Ozzie's influence (remember, culture from the top). Maybe I'll write more about my feelings on the Live Mesh culture when I understand it better.

 

When it changes it pours, again.

Almost two years ago, I took note that major life changes seemed to "get all bunched up together". I still don't understand the phenomenon but for the last couple months I've been living it again. Like last time I'm facing major updates to my life and my work.

house To the left is a picture of my house. I bought this house over five years ago and it's been a great place to live for me. However, the time has come to sell and move to a new neighborhood.

It isn't that I like the house any less. Quite the contrary.  I love the location and its convenience to everything in my life.  I love the quiet street and private backyard backed up against the greenbelt. I especially love the layout and space inside the house and will miss it all.

But this has always been kinda' my house. I bought the house before meeting Jenny and had two roommates the whole time we were dating. They moved out shortly before we got married but we still unconsciously call bedrooms in the house "Peter's room" or "Reid's room". Jenny still feels like she "moved in".

So we felt like it was time to go find a house together. Of course, there were a great many projects to do to update our house and make it attractive in the competitive housing market. The interior and exterior were painted, the kitchen and bathrooms updated, the yard dressed up with plants and flowers and much much more. Our friends have been amazed with the changes and many people have said we packed 3 months of work into 1.5. It certainly felt like it. But now we're done and the house is on the market. Which brings me to the second change that struck me at the same time.

livemesh Over the last six months my team has been undergoing a change in focus. Throughout the time I wasn't sure if the new direction interested me. For the last few months I started thinking that maybe it was time to get out of setup and try something completely new. I looked around inside the company and even thought about going out on my own. That made my April Fool's Joke this year particularly effective for the people that knew me well.

At the same time we were starting up a million house projects, I decided to get serious about finding a "new home" at work as well. Now feeling completely unsettled in all aspects of life, I started reaching out to friends across the company. Fortunately, a couple of those friends insisted I sit down and talk to their management to learn more about their project. After talking to a couple senior people on one of those teams, I became convinced I had found an opportunity that I just couldn't pass up.

A couple people recently asked me what "9/2" meant. Its simple. On September 2nd, I join the Live Mesh team. I am seriously stoked.

 

WiX Working Group Wrap-up July 24th 2008

Qik.com just hasn't been working out for me the last few weeks when I've wanted to record the WiX Working Group Wrap-up. So after multiple attempts with only 2 seconds to show for it each time I decided to try something different, Jing. I first tried using the built in speakers on my laptop but that (not surprisingly) sounded horrible. Then I tracked down a headset+mic and that seemed to work much better. Not super high quality but certainly good enough... and better than the disjoint video to speech from Qik.

Anyway, without further ado here is the WiX Working Group Wrap-up for July 24th, 2008.

 

 

Slow posting... much going on in the personal life.

Blog posting has been oft delayed the last month since I have been been busy both at work and at home. At work, I was finishing up another Sprint which always seems to take a bit more focus to tie up the loose ends. At night, I'm fixing bugs in the WiX toolset in an effort to finish. On top of all of that, Jenny and I are preparing our house for sale. We have a couple contractors doing all kinds of jobs inside the house and we are doing others. For example, after a couple long weekends of stripping wallpaper from the kitchen and bedroom. As a result I have banned wallpaper in the next house.

I'm tired (quite tired) but the end is in sight. Another couple weeks and the house should be on the market. Another few months and the WiX toolset bug count should be much lower. Of course, the Sprints just keep going...

 

WiX Working Group Wrap-up, delayed.

In my first qik, I mentioned that one of the things I was most excited about doing with Qik was a nightly "wrap-up" of the meetings on Thursday where the majority of work gets done on the WiX toolset. I tried my first "WiX Working Group Wrap-up on July 3rd" but the 19 minute video ended up only about 7 seconds long. I guessed the other 18+ minutes were sacrificed to the "alpha software demons" so I dropped them an email.

I got a response on Monday (which is pretty good considering Friday was a holiday) saying that the current Windows Mobile version of the Qik software does not retry if it loses its connection for any reason. There is a fix in testing. After having a few videos get chopped short, I am definitely looking forward for this update (with high hopes it addresses the problem).

With or without the update, I'll try another wrap-up on Qik this Thursday. Hopefully, it will all eventually take.

 

My 9 year anniversary at Microsoft.

Wow, how time flies. Here's a quick qik where I quickly trace out the last 9 years.

(I am clearly still not quite comfortable talking to the phone. I'm talking way too quickly. However, I really liked the way the whiteboarding worked out so I'll probably do more of that).

 

Qik introduction.

This morning I finally posted my first set of personal videos online using qik.com. I had the qik invite for a week before posting my first video. It took a surprising amount of mental preparation to finally sit down and record myself talking to the world live. I lifted the phone up and stared into the little mirror on the back that tells me I'm in picture several times before putting it down again. I was actually nervous.

However, I finally clicked the "Stream" button and started stammering. Of course, I something had to go wrong so there are two videos to make up one complete thought. <smile/>

   the red room

Expect to see more videos on this blog as I become increasingly more comfortable in front of a live camera. I'm finding it takes only five or so minutes to capture a thought in video compared to the hour or more I agonize over the keyboard.

Thanks to Bhaskar Roy at Qik for getting things set up for me so quickly.

 

WiX v3.0.4206.0 bad, WiX v3.0.4207.0 better.

An MSBuild debilitating bug was accidentally introduced in WiX v3.0.4206.0. We got a fix in later that day and I just pushed a new build, WiX v3.0.4207.0. In case you pulled down 4206 thinking you were getting much goodness, you didn't... 4207 is much better. <smile/>

Sorry for the trouble.

 

Installation Architecture Reviews.

Last night I noticed this blog entry about the lack of Windows Installer Training courses. It got me thinking about an idea that Bob Arnson, Peter Marcu and I toss around occasionally. The idea always ends with this question, "What if we could do the Installation Architecture Reviews outside of Microsoft?"

For over a year now, those of us that volunteer on the WiX toolset have offered to do installation architectural reviews for teams inside Microsoft. Over that time we've seen the whole gambit of installation scenarios from 64-bit registration issues to multi-server Web+DB applications to tiny internal IT apps hurting for a real build process to Internet patch distribution challenges to the very important application that they didn't realize wouldn't install on Vista (until we pointed out the non-deferred system modifying CustomAction).

We usually meet with the team over lunch in some conference room and talk for an hour or two about whatever the team wants to cover.  We always start by understanding the application design before digging into the setup design. Often we end up spending more time talking about the design of their application than their setup since fixing architectural issues at the root is usually easier than creating workarounds at the edge. In the end, both sides have always have a good time and everyone walks away having learned something. Sometimes we even get invited back later to follow up on progress made or to answer additional questions.

So the idea that Bob, Peter and I discuss is what it would be like to provide the same installation architecture reviews for companies outside of Microsoft. We think it would be fantastically fun but aren't sure there would be enough interest to warrant the effort it would take to "break out of the corporate firewall". So, it occurred to me that I should just ask. Duh.

If you would be interested in investigating what it would take to have a few guys that work on the WiX toolset and at Microsoft doing an architectural review of your application or system installation, please contact me. If we get enough interest, we'll see what we can work out.