Personal

On moving into the future...

My parents live in Dubuque, Iowa. Over the holidays it is common for me to make a pilgrimage from my home in Redmond (not far from the main Microsoft campus) to the Midwest. Typically the pilgrimage takes me from SeaTac airport to Chicago O'Hare followed by a short hop to the tiny landing strip at DBQ. This year on the four hour flight to Chicago, I decided to get caught up on a couple things going down in my little corner of the blogosphere.

First, if you’ve been tracking any of the other blogs on gotdotnet.com or Scoble or even a couple other blogs around you know that the blogs on gotdotnet.com (like mine) are being moved. There has been quite a bit of uproar about this move both external and internal to Microsoft. The root of the issue is that blogs.gotdotnet.com was just kinda’ thrown together and the server and software was never intended to support the attention it has received over the last few months. So we have to move. The uproar was about where, when, and how the move will take place.

I don’t care to add any more noise to the channel about the incident (Scoble is much better suited for tracking sensationalism than I ever want to be) other than to say that the people responsible for blogs.gotdotnet.com and weblogs.asp.net have done an incredible job incorporating all of the feedback (some of it not particularly constructive) and adapting their plan to accommodate people’s needs and wants as much as possible. Thus, as I understand it, sometime in January 2004 all of my blog entries here (and hopefully the comments, but no guarantees) will be transferred to my new blog at http://weblogs.asp.net/robmen. This blog address (http://blogs.gotdotnet.com/robmen) will then redirect to that new address and the catalog of blogs at http://blogs.gotdotnet.com will point at everyone’s new address.

Now before you update all your favorites and RSS readers to track my new blog (heh, like anybody actually follows this blog, right?) I need to mention that http://weblogs.asp.net/robmen may not be the final address. One of the most prevalent pieces of feedback (both internal and external to Microsoft) about the gotdotnet.com move was that the name “weblogs.asp.net” didn’t accurately represent what many of us blog about here and that adding our blogs to weblogs.asp.net would possibly drown out the community that already exists there. The owners of the two server systems took this feedback so seriously that they are trying to make changes both with DNS name entries and actual modifications to the .Text blog server (that runs weblogs.asp.net) to accommodate it. Again, many thanks go out to the people running these servers for being so responsive.

Okay, enough of that. Let’s talk about what’s on deck for next year. I can’t tell you how excited I am about this.

[Editor’s note: My plane actually landed four days ago but I only recently got an internet connection running into my laptop at my parent’s house in Dubuque , Iowa . I’m now surfing the net at a whopping 14.4 Kbps. Ya’ gotta’ love those country telephone lines.]

For the last four years (ever since I returned to Microsoft after graduating from UMR), I’ve been working, in my copious free time, on this idea I had late in my internship. It started becoming a reality when my mentor from my internship, John Delo (who I often refer to as the “Father of Darwin”), and I got together for lunch one day and found out we were thinking along the same lines. So we spent the next couple weekends banging out a prototype that demonstrated our ideas. Then I took that prototype and over the next couple years found people that were willing to take a bet on the toolset, fixed any bugs they found, and added features to make their life better.

I had so much fun working on this toolset because my customers were close. They’d send email when the tools broke. Then I’d find and fix the bug. I actually got to a point where I could fix most bug reports in under two hours. That was great fun. Later it got to the point where they would find their own bugs and send me the fixes. That was even more fun! They’d also send email when they wanted to be able to do something that didn’t seem possible. Then we’d brainstorm and implement a feature or three to make things work better. They’d even send email when things did work. It is such an incredible feeling to read an email that says, “Thanks for doing this. You just saved me three weeks of effort. This toolset is great.” Probably my favourite email was the shortest, “It just works.”

Quite often being a developer at Microsoft it is hard to truly get close to your customers to hear to what they really want. When I was in Office, I attended every meeting I could where Office customers came to Microsoft to discuss their deployment woes. I also spent a lot of time talking to our product support engineers trying to figure out where the customer pain points were worst. A year’s worth of study cumulated in the last feature I implemented in Office, the Local Installation Source (LIS). “LocalCache” (what we called LIS internally) and how Injector (my code name for the “Office Source Engine” or ose.exe) integrated with the Windows Installer are a couple of my all time favourite ideas. However, it’ll take a couple years before we truly find out if those ideas solved problems customers are facing. But the part that gets me most is that it took two years to even get the idea out to customers. All said it’ll probably be five years from the idea’s conception to actual customer feedback before we know if the idea worked. That’s a long time.

So, this little toolset that I worked on in my free time was a perfect outlet for me to constantly rub elbows with customers, even if my customers were only internal.

However, a strange thing happened in my third year at Microsoft. A bunch of teams all over the company started using the toolset. These last two years have seen an incredible growth in the customers for the toolset. It really started three years ago when the SQL Server and BizTalk teams picked up the toolset but grew like wildfire when MSN integrated the toolset into all of their recommended build processes and test teams across the company started using it. Most recently the Office team (six months after I left that organization to join DSI in Windows) replaced their custom solution with this toolset. Now there are hundreds of customers internally using this toolset everyday.

However, my dream was always to release the toolset externally. In fact, for the last 3 years (after SQL Server started using it but before anyone else really jumped on the bandwagon) I’ve been trying to find a way, any way, to get the toolset external to Microsoft. I thought lots of people would benefit from seeing how the toolset works and some other new ways of looking at the problem. What I found was an amazingly intricate system in Microsoft that you had to work through to get something that was developed internally shipped out to the real world.

First, there are lots of different customers to consider from end users, to developers, to ISVs, to small and medium businesses, to large corporations. You really want to understand how something “from Microsoft” will impact each of them (it is so hard to make everyone happy). Second, you need to make sure any “intellectual property” is properly protected. Why? Because, third, you have to consider what competitors and (what I call) “mean people” are going to do if the stuff is released externally. Sadly, Microsoft is a gigantic legal target and from what I’ve seen a lot of time is spent trying to avoid stepping on anybody’s toes (getting sued sucks!). I know this is contrary to a lot of popular belief but there are lots of people at Microsoft that just want to make the world a better place. I hope the LocalCache feature was one of my ways of demonstrating that. I hope getting this toolset public will be another.

Anyway, in the last couple months, I made some breakthroughs internally and finally got a green light to proceed with releasing the toolset externally. Thus I’ve been working with a few people in the legal organization to make sure that the second and third issues from above are appropriately covered. I want to take a moment and call out Bill Harmon and Matt Pearson as two very smart guys that were very helpful in walking me through all of the legal steps. I also made life a little more complicated for them when I told them that I not only wanted to release the toolset but also the source code for the toolset. I’ve talked a lot about the time I put into the toolset but there are many people inside Microsoft that provided ideas, bug reports, and sometimes even code. The toolset was a “community source project” from the beginning where everyone had access to the source code and could fix/change things as necessary and I wanted it to stay that way. Yes, this is a lot like Open Source but without all the political and philosophical mumbo-jumbo (I’ll talk about my beliefs more some day). Fortunately, the legal guys were very helpful in crafting a licensing agreement that preserved the spirit of project.

By now I expect you’re asking so what the heck is this “toolset” he keeps going on about and why do I care? Essentially, it is a set of tools that integrate well into typical build processes that take source code (text files, XML actually) and compiles then links the source code into an MSI or MSM file using the same practices you use to build executable files today. There are many advantages to this approach to building setup, but one of the most powerful changes, IMHO, is that you can now distribute setup development across multiple developers and have an organized way for their work to stitch back together. My plan is to release the toolset and all of its source code into a gotdotnet.com workspace sometime in January 2004. If you build MSI files, I think you’ll be very interested to take a look at how several of the large organizations in Microsoft are building their MSI and MSM files.

To be completely truthful, when I started this blog a few months ago I was hoping that I’d get to use the toolset described above to demonstrate what’s going on with the Windows Installer. Needless to say (although I’ve already said it once), I’m now very excited about all this stuff coming together.

This also means that I’m probably going take another month long break from blogging (most of December I took off for personal reasons) to get this toolset in order. When I get come back to blogging (hopefully around the end of January) it’ll be in my new home (http://weblogs.asp.net/robmen) and I’ll have a new toy to talk about.

Have a happy holiday and until next time, keep coding. You know I am.