For the past few weeks I've been slowly making progress on a follow-up blog entry about the Component Rules.  However, I just had all four of my wisdom teeth pulled so I think it is prudent to postpone working on a technical blog entry until more of the drugs wear off.  Instead, I thought I'd post something a bit more personal.  Note I'm probably mostly whinging here but I want to get it off my chest.

On Monday, I will have spent 5 years working as a full-time employee at Microsoft.  In those five years, one of my personal goals has been to improve the state of setup around the company and eventually the world.  All too often, I see teams ignore setup until it was very late in the ship cycle and then scramble to get something working.  Then they'd unleash those setups on our customers.  Never mind that there was no time to determine what the upgrade and patching plan would be for their product going forward.

Over the years, I have worked to spread my philosophy for approaching setup around the company.  I did most of that evangelizing via the WiX toolset and answering questions on internal mailing lists.  Now I'm out here in the public blogging about various aspects of setup and have released the WiX toolset to SourceForge.  And things are slowly improving.  More and more I see setup development being integrated into the daily process (at least in Microsoft, I haven't been invited into any ISVs build labs yet).

However every once in a very long while, after constantly trying to do the "Right Thing" in the setup domain I get very discouraged.  That feeling usually comes after a week where a new employee or temporary contractor sends me email saying, "I have to get the setup for our product built in 2 weeks.  My manager says it should be really easy since all I should have to do is copy a few files and write a few registry keys and some other stuff.  How do I do that?"  Then someone tries to argue with me that "Rollback isn't really important for my setup so I can use SelfReg.  If our registry keys are left behind on the user's machine it probably doesn't really matter."  Then someone starts berating me because, "The Windows Installer XML documentation is horrible.  It doesn't tell me how to do anything that I want to do.  How can you live with yourself?"  Then someone says, "I've copied a file from some other product and tried to install it as part my product, but when I uninstall the file gets deleted.  Why does it do that?"  Then I realize that really it all just comes down to that fact that very few people care about writing a really good setup.  For some reason, they don't seem to realize that the setup portion of their product probably has the highest chance of completely hosing their customers' machines.

It's days like that when I start thinking about what it would be like to work on a feature that people wanted to do correctly.  But what would I do if I didn't continue to "fight the good fight" (as a few of my friends like to say) for setup?

Well, some time ago, I randomly decided that working on the Xbox team would be a place where I could deliver features people want use and use properly.  I mean seriously games are supposed to be fast and cool.  As a developer you would take great care to understand your code and the code you're building on to ensure your game is fast and cool looking, right?  I'm sure it's a very naive point of view, but games are considered far more "sexy" than setup

So, what does this have to do with anything?

Well, first I'm on Percocet so I'm not really sure any of this rambling as anything to do with anything.  Second, this morning the Xbox team did a presentation where they described some of the opportunities on their team.  I figured listening in would a good way to better understand what I really would be getting into if I followed my frustration at the end of one of those weeks when I say, "You know maybe I should just go and work on the Xbox." 

Now before my lead freaks out, let me just say that the Xbox presentation was a great way to put the impending doom of having four teeth removed from my head out of my mind for a couple hours.  I'm also a bit more informed about what it really would be like to be a developer on Xbox.  It was interesting but I'm sticking to the SDM Platform team for now.

What?!?  Why?!?

Because I believe that there is still a lot of work to be done to improve the state of setup and I want to be one of the guys that make those improvements happen.  Fundamentally, despite the frustrations related to working on what most developers consider a very un-sexy problem space, I am devoted to "fighting the good fight" for setup until developers no longer dread building the installation for their product and end-users no longer fear what setup will do to their machines.

I have a long road ahead of me, but I've (almost) always enjoyed the journey.  Keep coding, you know I am.