If you’ve been around the Microsoft architecture “scene” (OK, it’s not a scene, but I don’t know what to call it), you are familiar with the Digital Metropolis metaphor.  Courtesy of Pat Helland (quite possibly the funniest man at Microsoft), it paints enterprise computing in comparison to a typical large city in the 1800s.  The railroads have just empowered the delivery of manufactured goods throughout the entire country (and/or continent for Europe).  Still, the economic benefits are muted due to the lack of standardization for manufactured goods.  Customers were demanding is leading the various industries to drive their development of standards but it will take a number of years.  He uses that time period and the subsequent industrialization to predict the transformation of IT.  The idea is that the retail (app interaction) was enabled to where there was significant caching of goods (data) allowing for richer and simpler shopping (business process) by driving the standardization of goods (data) to create flexible products that optimized the manufacturing and delivery of stuff to the consumer.  This was the fuel that drove major economic advancement. 

 

I actually think that’s a pretty cool analogy, but let me put a different spin on using cities for IT metaphors it to make a different point.  I think I will call mine Digital Gotham (Batman’s city as opposed to Superman’s Metropolis).  Thanks to Metropolis, Gotham was built up as a suburb.  In Gotham, there are a lot of houses getting put up to support the population boom that is bound to happen thanks to IT.  Before the house start going up, the electric, gas, and water guys go out to set up the basic infrastructure to get the general services out to future residents.  And, of course, these services are built in a scalable manner so that more and more houses can be built and all can tap into the gas, electricity, and water manes.  They eventually build a bunch of houses that tap into these services.  As a homeowner, I can take what the house has pre-installed or make my own custom fixtures.  I may want to put in a new shower or garage door opener.  Well, I can tap into my house’s water supply or electrical system pretty easily.  But the beauty is that no one is going to let me touch the central power grid or the city’s water works.  In my own confines, I can depend on the guaranteed services from the experts (running water and 110V of AC power) to enable me to consider those “Do It Yourself” books on how to build my own shower, garage door opener, or whatever else they offer at Home Depot (I am new to the homeowner world, so I am still getting used to the world of these enormous warehouses).  In my case, I prefer the Circuit City “home theater” projects. 

 

So what does this have to do with software? Well, the Central Power Grid or Water Works is Windows, the specific taps in my house (such as power outlets) is the .NET Framework, the existing fixtures are commercial off-the-shelf apps, and, of course, the Bob Villa “This Old House” Do-It-Yourself stuff is patterns & practices.  When you wanna build something yourself, we spell it out for you and give you all you need to know.  Now, when I hear people say Windows should go open source, I think that I don’t know if I want to mess with a power-grid.  Could I do it better?  No and I don’t want to—I won’t get a special benefit in doing it myself.  I would rather focus on my home theater :>.  There’s a lot of open information on the web to maximize my experience there and a lot of flexibility depending on my needs (for example, I don’t need a realistic picture as much as I want Titans QB Steve McNair to be as tall as me on the screen).  By having faith in the power system that a 110V AC current will come out of my wall, I can focus on the less mundane tasks.  The OS and .NET Framework are my 110V plug and I can build my custom solution if I so choose. 

 

Now Microsoft has gone on record as saying that there is probably some way that we can embrace the idea of open source. So a valid question is whether patterns & practices should be more open source-like, er.. shared source-like, given it is the stuff that people should be messing with.  With this suggestion, I don’t mean giving the code away—we already do that.  But can we do some level of collaborative development to evolve the assets.  We could provide solid baseline functionality and then work with the community to add features, providers, extensions, etc.  I believe this would work for Microsoft because it stays away from the area where you need the dependability of proprietary code.  So for those of you waiting for Internet Explorer or IIS to go open up, don't hold your breath.  I just don't think we'll ever turn the keys to the utilities over to the world and we shouldn't.  But the opportunity is to do something really exciting and collaborative at a level above the platform that could be even more useful to developers.  I have been doing a lot of thinking around this, so I’d love your thoughts…

 

{Lost Highway Soundtrack}