<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>How Software is Built &#187; microsoft</title>
	<atom:link href="http://howsoftwareisbuilt.com/tag/microsoft/feed/" rel="self" type="application/rss+xml" />
	<link>http://howsoftwareisbuilt.com</link>
	<description></description>
	<lastBuildDate>Fri, 25 Jun 2010 19:53:36 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<!-- podcast_generator="podPress/8.8" - maintenance_release="8.8.4" -->
		<copyright>2006-2007 </copyright>
		<managingEditor>scottswigart@technologyevangelism.com (How Software is Built)</managingEditor>
		<webMaster>scottswigart@technologyevangelism.com (How Software is Built)</webMaster>
		<category>posts</category>
		<ttl>1440</ttl>
		<itunes:keywords></itunes:keywords>
		<itunes:subtitle></itunes:subtitle>
		<itunes:summary></itunes:summary>
		<itunes:author>How Software is Built</itunes:author>
		<itunes:category text="Society &amp; Culture"/>
		<itunes:owner>
			<itunes:name>How Software is Built</itunes:name>
			<itunes:email>scottswigart@technologyevangelism.com</itunes:email>
		</itunes:owner>
		<itunes:block>No</itunes:block>
		<itunes:explicit>no</itunes:explicit>
		<itunes:image href="http://howsoftwareisbuilt.com/wp-content/plugins/podpress/images/powered_by_podpress_large.jpg" />
		<image>
			<url>http://howsoftwareisbuilt.com/wp-content/plugins/podpress/images/powered_by_podpress.jpg</url>
			<title>How Software is Built</title>
			<link>http://howsoftwareisbuilt.com</link>
			<width>144</width>
			<height>144</height>
		</image>
		<item>
		<title>Interview with Joseph Hill &#8211; Mono</title>
		<link>http://howsoftwareisbuilt.com/2008/10/08/interview-with-joseph-hill-mono/</link>
		<comments>http://howsoftwareisbuilt.com/2008/10/08/interview-with-joseph-hill-mono/#comments</comments>
		<pubDate>Wed, 08 Oct 2008 19:59:24 +0000</pubDate>
		<dc:creator>campsean</dc:creator>
				<category><![CDATA[Sean Campbell]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[Moonlight]]></category>
		<category><![CDATA[Wine]]></category>

		<guid isPermaLink="false">http://howsoftwareisbuilt.com/2008/10/08/interview-with-joseph-hill-mono/</guid>
		<description><![CDATA[Interviewers: Scott Swigart and Sean Campbell
Interviewee: Joseph Hill.
In this interview we talk with Joseph. In specific, we talk about:

The case for developing for Mono under Windows
Challenges in coupling open source development to Microsoft platforms
The relationship (or lack thereof) between Mono and Wine
Microsoft tools as they relate to Mono development
Market evolution with Moonlight, Silverlight, and Flash


Sean [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Interviewers:</strong> <a href="http://howsoftwareisbuilt.com/about-scott-swigart/">Scott Swigart</a> and <a href="http://howsoftwareisbuilt.com/about-sean-campbell/">Sean Campbell</a></p>
<p><strong>Interviewee: </strong><a href="http://howsoftwareisbuilt.com/about-joseph-hill-product-manager-mono/">Joseph Hill</a>.</p>
<p>In this interview we talk with Joseph. In specific, we talk about:</p>
<ul>
<li><a href="http://howsoftwareisbuilt.com/2008/10/08/interview-with-Joseph-Hill-Mono#case">The case for developing for Mono under Windows</a></li>
<li><a href="http://howsoftwareisbuilt.com/2008/10/08/interview-with-Joseph-Hill-Mono#challenges">Challenges in coupling open source development to Microsoft platforms</a></li>
<li><a href="http://howsoftwareisbuilt.com/2008/10/08/interview-with-Joseph-Hill-Mono#relationship">The relationship (or lack thereof) between Mono and Wine</a></li>
<li><a href="http://howsoftwareisbuilt.com/2008/10/08/interview-with-Joseph-Hill-Mono#microsoft">Microsoft tools as they relate to Mono development</a></li>
<li><a href="http://howsoftwareisbuilt.com/2008/10/08/interview-with-Joseph-Hill-Mono#moonlight">Market evolution with Moonlight, Silverlight, and Flash</a></li>
</ul>
<p><span id="more-187"></span></p>
<p><b>Sean Campbell:</b> Joseph, would you introduce yourself and tell us a bit about Mono, Moonlight, and the kinds of stuff you work on?</p>
<p><b>Joseph Hill:</b> Certainly. I am the Product Manager for Mono at Novell, which gives me the great privilege of working with Miguel de Icaza, who is the founder of the Mono project as well as GNOME and several other open source projects. Mono is an implementation of the .NET framework that is open source and available for Linux and Macintosh as well as Windows, Solaris, and any other platforms that people want to run .NET code on.</p>
<p>When Microsoft came up with the .NET framework and the CLR (common language runtime), they took steps to make sure that it would be available as a standard. They wanted to get participation from people involved in designing languages and runtimes, so they submitted their specifications for the runtime and the C# language to ECMA.</p>
<p>Miguel chose to implement Mono because he saw that C# is a very nice language that solves a lot of problems elegantly, so it would be a nice language to have available as an improvement over C and C++. The first target for Mono was for Linux desktop applications, where they built and offered GTK# as an improvement over GTK and GTK+, which is a graphics toolkit for the GNOME desktop.</p>
<p>The project started in 2001, around the time that .NET was entering beta. It has progressed from there to encompass a lot more of .NET. Since those initial libraries, Mono has taken on ASP.NET and WinForms implementations, and it has been used in various interesting circumstances.</p>
<p><a name="case"></a></p>
<p><b>Sean:</b> There is a certain amount of skepticism about Microsoft in the open source community; people are always wondering what they are &#8220;really up to.&#8221; I would imagine that people must ask you fairly frequently why they would develop under Mono for Linux, instead of using Java or Python or PHP.</p>
<p><b>Joseph:</b> I think it ultimately comes down to individual preference, and there are actually several different parts to that question. C# is a nice language, and we think it is an improvement over Java, because Microsoft had the opportunity to look at Java and to identify enhancements that they could make in a new language that Java couldn&#8217;t or wouldn&#8217;t.</p>
<p>That is part of what makes C# attractive, and beyond that, the runtime is capable of running code written in VB or several languages that target .NET today. That includes everything from the classic example of COBOL to the newer DLR focused languages like IronPython, IronRuby, and so on.</p>
<p>Mono means different things to different people. Some may want interop, while others want to consume libraries written in one language from another language.</p>
<p><b>Sean:</b> One of the things that everybody points to in terms of building an ecosystem for their platform is the list of applications that are on it&#8211;they always have a marketing slide that says, &#8220;We have 3000 ISV applications.&#8221; </p>
<p>When you are out there evangelizing and touting Mono, what do you usually point to?</p>
<p><b>Joseph:</b> If we do go back to the beginnings of Mono and GTK#, once we got a working GTK#, we at Novell started building a lot of applications. We were shipping .NET applications in Linux well before Microsoft was shipping any .NET applications bundled with its operating system, such as Beagle and F-Spot, which are desktop search and photo management applications, respectively. </p>
<p>The community also built several popular applications like Tomboy, which is a note taking application that is actually considered part of the GNOME standard desktop now. So, there are a lot of popular applications on Linux and a community there. </p>
<p>There are also ISVs such as Medsphere shipping GTK# applications that basically chose Mono because they like .NET and they wanted a good cross platform story for the product they offer in the healthcare industry. </p>
<p>This historically has been the story of GTK# on the desktop, because we ship a very nice desktop, but with the state of Mono today supporting ASP.NET and Windows Forms, we are working to get library vendors and third party control vendors that ship managed applications or managed components to certify that they work on Mono.</p>
<p><b>Sean:</b> It sounds like you guys are really collecting and putting a lot of evidence out there to show people that this isn&#8217;t just kind of a hobby; people are doing real stuff on this. People are making business decisions based on the viability of Mono to be able to run production code on Linux, and it gives them reach across more platforms and it provides a lot of advantages for them.</p>
<p><b>Joseph:</b> The fact that I have been hired into the role that I am in is a clear indication that Novell feels Mono is ready to be used for more than just the applications we have been building. Going forward, we are working to attract ISVs to the platform as well as building out end user customer stories, where people have chosen Mono to deploy on and to build for.</p>
<p>We think that that enhances the story for being able to take customers that have already chosen .NET as their platform, but don&#8217;t want to be limited to just Windows as their target. We give them a way to grow their addressable market.</p>
<p>The other indication I can give is that we are releasing Mono 2.0 in October. That version number is really a statement on our part that Mono is ready to support what customers want from .NET 2.0. .NET is a really big platform and it just gets bigger with every release, but the portions that customers are using tend to cluster around specific functionality.</p>
<p>ASP.NET has been around for six years and has a really huge part of the web&#8217;s market; we support applications based on ASP.NET 1.1 and 2.0 and AJAX very well. Beyond that, the majority of what people are doing with ASP.NET is 100% managed.</p>
<p>At this point, customers have ASP.NET applications that don&#8217;t depend C++ code, and very little ASP still exists in people&#8217;s code base if they have adopted ASP.NET as their platform. Mono can do these things really well without the need for full implementations of WCF or WPF and other recent additions to .NET.</p>
<p><a name="challenges"></a></p>
<p><b>Sean:</b> What challenges do you have in trying to shadow the .NET development process? We talked to the head of the Wine project, and it was interesting to hear about the challenges that surround shadowing the Win32 API. What challenges have you faced, and what observations can you make about the evolution of the framework, given how close you guys have to follow the development process?</p>
<p><b>Joseph:</b> To rewind back to the beginning of the story again, initially the goal of the Mono project was not to emulate what Microsoft was doing; we really just wanted access to the runtime and the C# language. ASP.NET 1.1 was very small and very simple, and it was implemented by very few engineers in a relatively short amount of time.</p>
<p>ASP.NET 2.0 grew a lot from that. It definitely added a lot to the library and the APIs increased by something like 10 fold, but we still had a working ASP.NET 2.0 implementation becoming complete by the end of 2006 when ASP.NET 2.0 had come out in 2005. Even though we are releasing Mono 2.0 today, the 2.0 release has largely been held up by our WinForms implementation rather than the ASP.NET implementation.</p>
<p>Ultimately, we had to add WinForms to the project because we saw increasing demand for it. When we first released Mono 1.0, we didn&#8217;t really have a WinForms story, even though we had an ASP.NET story. </p>
<p>We weren&#8217;t even seeing that much of an uptake of WinForms or a large desire to try to emulate it, but as more customers writing desktop applications began to adopt the Windows Forms platform, it became evident that people expected Mono to have that.</p>
<p>That was when we really saw the need to make the decision to start chasing the API. My personal view is that it creates its own set of problems, and I&#8217;m sure we have a lot in common with the Wine project in that regard. Things don&#8217;t always work as they are supposed to or as advertised, but you have to match the implementation and the behavior of the existing implementation.</p>
<p>WinForms applications tend to have more of a legacy than ASP.NET applications, where somebody had a desktop application and desktop components that may have been around for a lot longer than the company&#8217;s adoption of .NET, and those components tend to live on. </p>
<p><a name="relationship"></a></p>
<p><b>Sean:</b> Do you guys have to rewrite every assembly from scratch? On the one hand, there is the low level stuff that is going to be called into the API, but then on the other hand, in the .NET framework there are higher level control libraries, and they are not calling directly into Win32 APIs; they are just calling to other parts of the framework. </p>
<p>Do you have to re-implement those as well, or are you able to just carry some DLLs that are part of the .NET framework on Windows as part of Mono?</p>
<p><b>Joseph:</b> From a licensing standpoint, that is not allowed, so we write our own implementations for all of those. That does cast light on our WinForms implementation. We took a couple of stabs at it, and the first time around, it was going to be a wrapper around Wine, actually. There were various difficulties with coordinating changes that we had to make to Wine to get our implementation to work right, and it was complicated getting those patches accepted upstream.</p>
<p><b>Scott Swigart:</b> That&#8217;s interesting, because I have wondered whether you ever considered just building something on top of Wine&#8211;maybe focus building an IDE and the higher level abstraction while letting them figure out how to make the framework talk lower down. </p>
<p>It sounds like you eventually found it easier just to take it on yourself.</p>
<p><b>Joseph:</b> That approach let us avoid that dependency, and leveraging Wine for what we are doing was also a bit architecturally convoluted, relative to the 100% managed implementation that we ultimately arrived at. Basically, we draw every component using System.Drawing, which means we have an unmanaged GDI implementation, and we call into that from System.Drawing.</p>
<p>All of our components are managed, whereas Microsoft&#8217;s were all wrappers around existing Win32 controls. That ultimately gave us the benefit that, once you have a System.Drawing implementation working on a platform, you are capable of running WinForms on that.</p>
<p>So, dropping that Wine dependency actually worked out really well, because now we have WinForms running on Mac without a Wine dependency. All you need is Mono and GDI, which we make available in our Mono installation, and then you have access to WinForms.</p>
<p><b>Sean:</b> What do you think about the potential impact of virtualization on the desktop? Do you see a possible future where you would focus more on IDE development and interprocess communication between two OSs&#8217; different apps, and less on trying to build a portable dev platform and framework? </p>
<p>There is still benefit to that, even in a world where everybody is drawing a virtualized set of partitions on a machine, but do you guys ponder that from day to day? Do you wonder what the impact of KVM on the kernel will be, how you leverage it, and that kind of thing?</p>
<p><b>Joseph:</b> I wouldn&#8217;t say we think about it from day to day, although of course, we keep an eye on adoption and how the Linux desktop is enabled or hindered by virtualization solutions. From Miguel&#8217;s standpoint, enabling other operating systems to be virtualized carries with it a certain amount of overhead. It is nice that you can solve a lot of problems with virtualization, but that doesn&#8217;t necessarily make it the best solution for everything.</p>
<p><a name="microsoft"></a></p>
<p><b>Scott:</b> I could see someone thinking of Mono as being just an on-ramp to Windows. They might see it as a way to get people hooked on the .NET framework and C# so they might eventually just take the easier route and use Visual Studio running on Windows.</p>
<p>I see an opportunity in the other direction, though, and I wonder if you have seen much interest from vendors who sell hardware appliances or virtual appliances. For a Windows developer, building an appliance that runs full Windows might not be as attractive as using Mono, in some cases.</p>
<p>It is kind of a heavy weight operating system, and the server core of the .NET framework doesn&#8217;t currently run on Windows Server Core. A lot of appliances use Linux as an operating system, and it seems like low hanging fruit for a Windows developer to build a .NET application for deployment with just enough Linux OS with Mono on top of it. Do you see any interest in that?</p>
<p><b>Joseph:</b> Absolutely. It&#8217;s relevant to both the appliance story and to development more generally that we are all big fans of Visual Studio. As somebody who has been doing ASP.NET development and .NET development in general for several years, I think it is a great IDE.</p>
<p>One great thing is that building an application and compiling it in Visual Studio leaves you with a binary compatible assembly that should be able to run on Linux. To the first part of your question, as much as it is about bringing tools like C# to people developing for Linux, we are also opening up the possibility for Visual Studio developers to develop for Linux.</p>
<p>As to the second part of your question, people who have been developing for Windows are considering Linux because of the opportunity of virtual appliances and appliances in general. We see that as a real advantage for Linux and for Mono.</p>
<p>To that end, Novell participates in the JeOS project, which stands for &#8220;Just Enough Operating System.&#8221; We have a product that has been demonstrated&#8211;SUSE Studio&#8211;that allows people to create appliances through a web interface. It allows a .NET developer to take their ASP.NET application and use the SUSE Studio to create an ASP.NET appliance or .NET appliance that they can turn around and take to a virtual host or distribute as a singular piece.</p>
<p><b>Sean:</b> Have you ever thought that it would be nice if the Visual Studio field reps would like to promote Mono, or develop some other type of relationship? Do you feel like there is any potential for you to work closely with the Visual Studio team to support customers who want to develop cross platform, or do you feel that the gulf just hasn&#8217;t really been bridged yet?</p>
<p><a name="moonlight"></a></p>
<p><b>Joseph:</b> Some people who work on the .NET framework, including some of the decision makers, are interested in Mono on a personal level. Some individuals there see certain aspects of the potential of .NET being realized by Mono, although the company as a whole doesn&#8217;t say a whole lot about it.</p>
<p>The Moonlight opportunity has been really the strongest endorsement we have gotten from them; they see it as a .NET implementation on Linux that can be used with Silverlight, and Microsoft wasn&#8217;t going to deliver that.</p>
<p>Both Microsoft and Novell need to provide what customers want, and in the long run, I guess they will decide to collaborate where it makes sense. It would be nice to see more collaboration; we really like a lot of those guys there.</p>
<p><b>Sean:</b> They see Moonlight as a really nice counterbalance to Adobe, since you can&#8217;t run Flash on multiple platforms, and they don&#8217;t have to invest development team resources, either. Do you feel that this is primarily a way to combat Adobe without having to form a formal alliance?</p>
<p><b>Joseph:</b> That is probably part of it. Microsoft going after Adobe is obviously what Silverlight is about, and with their initial plans to only go after Windows and Mac, I think they felt like they had addressed enough of the desktop world&#8217;s needs.</p>
<p>What I think Moonlight brought to the table more than anything was an opportunity to address people&#8217;s concerns about the open web, which has become more important in the time since the Silverlight announcement. </p>
<p>Silverlight&#8217;s design already had a lot that was open about it, and Microsoft really had no intention or business need or desire to put something out for Linux. I think allowing us to make the official solution there complemented that open story more than anything else.</p>
<p><b>Sean:</b> Catering to the developer community&#8217;s needs in terms of what they want in the language, compiler, and feature set, as well as platform issues and support is one whole thing, and building an IDE that makes them happy is a whole separate undertaking.</p>
<p>Why did you choose to go down the road of building your own IDE as opposed to just plugging into something like Eclipse or some other direction? That seems to be a massive investment, while at the same time you need to catch up to the afterburners-driven .NET framework without getting left way behind.</p>
<p>I imagine that, no matter how well they may be communicating with you, they may still not communicate something important, for strategic reasons, which could leave you in a difficult position. The IDE seems to make that situation even harder, so you must have had some really good reasons for going in that direction; could you speak to that?</p>
<p><b>Joseph:</b> Well, I wish that were true.</p>
<p><b>Sean:</b> [laughs].</p>
<p><b>Joseph:</b> Like I said, I am a Visual Studio aficionado, so I like the fact that we are enabling Visual Studio development, and I think we have a good story there. But early on, all the Mono hackers were using EMACS and VI, and Eclipse plugins do exist for doing C# development.</p>
<p>But, MonoDevelop was born as a fork of SharpDevelop, which was an open source IDE for Windows that the community outside of Novell decided to implement. It provided a lot of nice features for GTK+, and it was simpler than embracing Eclipse.</p>
<p>What happened as MonoDevelop matured and began to see adoption was that it took on sort of a public face of Mono that we weren&#8217;t able to control without contributing to it, so over time, Novell invested resources into making sure the MonoDevelop story is a good one. It is a pretty good looking IDE now, and it supports a lot of great features. I think its major benefit over Eclipse is that it behaves in a very Visual Studio like way.</p>
<p>People that are comfortable with Visual Studio but want to transition their development to a Linux desktop will be more comfortable working in MonoDevelop than they would be in Eclipse. It also offers the benefit of letting .NET developers work in C# running under .NET, rather than trying to get them to switch to a Java based IDE; that is definitely an advantage.</p>
<p><b>Scott:</b> I think it&#8217;s really interesting that you are an avid .NET developer and you saw C# as an improvement over Java. I think it&#8217;s pretty clear that Microsoft looked long and hard at Java and C++ when they were designing C#.</p>
<p>Then Microsoft came along with Silverlight, and a lot of us thought that, since Flash is so entrenched, it would be nearly impossible for it to get traction. And then I went to NBCOlympics.com to watch some Olympics videos, and what did the site make me do? It made me download and install Silverlight.</p>
<p>That convinced me that maybe Silverlight has more legs that I thought. Do you feel that Moonlight and Silverlight could be the next evolution for that kind of rich web application, in a similar way to how C# is regarded by many to be an evolution beyond Java?</p>
<p><b>Joseph:</b> I believe that Silverlight definitely has the benefit of learning vicariously through Flash&#8217;s history, and I also think that at the same time, a lot of people have seen it as trying to take on Flash, which they see as an impossible task.</p>
<p>Early on, looking at what Silverlight was trying to do, I even felt that way, since Flash is so firmly entrenched. But what the Olympics site and other sites doing cool things in Silverlight today are showing us is that rich Internet applications can now do some of the things that they have been trying to do for years but have been limited by performance of the desktop and bandwidth issues.</p>
<p>Flash has been fighting an uphill battle for years, to overcome the implementation, and now the advent of YouTube and things like it shows that RIA development has really come of age. Silverlight had the benefit of waiting for Flash to discover that the market was ready, and at the same time, it can add benefits over Flash that both developers and consumers will hopefully find valuable.</p>
<p>The neat thing for Silverlight is that, for it to be successful for Microsoft, it doesn&#8217;t have to beat Flash. Customers don&#8217;t have an either/or situation in terms of which control they want to install in their browser. Both plugins and additional RIA plugins can be installed in the browser with virtually no cost to the user, and it really is going to come down to developers&#8217; preference.</p>
<p>As more customers begin to expect the kinds of experiences that Flash is able to deliver and now Silverlight, more .NET developers are going to be asked to add this kind of functionality to their web sites. The fact that a whole legion of .NET developers will now be able to write applications for Silverlight when they probably would have far less incentive to learn how to write applications for Flash could mean that you are going to see a lot of Silverlight adoption being enabled.</p>
<p><b>Scott:</b> This was just a great conversation, and I really appreciate you taking some time out to chat with us.</p>
<p><b>Joseph:</b> Thank you.</p>
<img src="http://howsoftwareisbuilt.com/?ak_action=api_record_view&id=187&type=feed" alt="" /><!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em>Bookmark this:</em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://howsoftwareisbuilt.com/2008/10/08/interview-with-joseph-hill-mono/&amp;title=Interview+with+Joseph+Hill+%26%238211%3B+Mono" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://howsoftwareisbuilt.com/2008/10/08/interview-with-joseph-hill-mono/&amp;title=Interview+with+Joseph+Hill+%26%238211%3B+Mono" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://howsoftwareisbuilt.com/2008/10/08/interview-with-joseph-hill-mono/" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://howsoftwareisbuilt.com/2008/10/08/interview-with-joseph-hill-mono/&amp;title=Interview+with+Joseph+Hill+%26%238211%3B+Mono" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://howsoftwareisbuilt.com/2008/10/08/interview-with-joseph-hill-mono/&amp;title=Interview+with+Joseph+Hill+%26%238211%3B+Mono" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.sphere.com/sphereit/http://howsoftwareisbuilt.com/2008/10/08/interview-with-joseph-hill-mono/" rel="nofollow" title="Add to&nbsp;SphereIt"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/sphereit.png" title="Add to&nbsp;SphereIt" alt="Add to&nbsp;SphereIt" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Interview+with+Joseph+Hill+%26%238211%3B+Mono+@+http://howsoftwareisbuilt.com/2008/10/08/interview-with-joseph-hill-mono/" rel="nofollow" title="Add to&nbsp;Twitter"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&nbsp;Twitter" alt="Add to&nbsp;Twitter" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://howsoftwareisbuilt.com/2008/10/08/interview-with-joseph-hill-mono/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Interview with Brad Wilson &#8211; Software Developer &#8211; OfficeLabs &#8211; Microsoft</title>
		<link>http://howsoftwareisbuilt.com/2008/04/08/interview-with-brad-wilson-software-developer-officelabs-microsoft/</link>
		<comments>http://howsoftwareisbuilt.com/2008/04/08/interview-with-brad-wilson-software-developer-officelabs-microsoft/#comments</comments>
		<pubDate>Tue, 08 Apr 2008 20:04:22 +0000</pubDate>
		<dc:creator>campsean</dc:creator>
				<category><![CDATA[Sean Campbell]]></category>
		<category><![CDATA[codeplex]]></category>
		<category><![CDATA[governance]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[OfficeLabs]]></category>

		<guid isPermaLink="false">http://howsoftwareisbuilt.com/2008/04/08/interview-with-brad-wilson-software-developer-officelabs-microsoft/</guid>
		<description><![CDATA[Interviewers: Scott Swigart and Sean Campbell
Interviewee: Brad Wilson
In this interview we talk with Brad Wilson &#8211; Software Developer in Microsoft&#8217;s OfficeLabs team. In specific, we talk about:

CodePlex, the Microsoft open source repository
Community participation other than coding
Open-source governance at Microsoft
Open-source inroads and future at Microsoft



Sean Campbell: Brad, tell us a little bit about your background. 
Brad [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Interviewers:</strong> <a href="http://howsoftwareisbuilt.com/about-scott-swigart/">Scott Swigart</a> and <a href="http://howsoftwareisbuilt.com/about-sean-campbell/">Sean Campbell</a></p>
<p><strong>Interviewee: </strong><a href="http://howsoftwareisbuilt.com/about-brad-wilson-software-developer-officelabs-microsoft/">Brad Wilson</a></p>
<p>In this interview we talk with Brad Wilson &#8211; Software Developer in Microsoft&#8217;s OfficeLabs team. In specific, we talk about:</p>
<ul>
<li><a href="http://howsoftwareisbuilt.com/2008/04/08/Interview-with-Brad-Wilson-Software-Developer-OfficeLabs-Microsoft#codeplex">CodePlex, the Microsoft open source repository</a></li>
<li><a href="http://howsoftwareisbuilt.com/2008/04/08/Interview-with-Brad-Wilson-Software-Developer-OfficeLabs-Microsoft#non-code">Community participation other than coding</a></li>
<li><a href="http://howsoftwareisbuilt.com/2008/04/08/Interview-with-Brad-Wilson-Software-Developer-OfficeLabs-Microsoft#governance">Open-source governance at Microsoft</a></li>
<li><a href="http://howsoftwareisbuilt.com/2008/04/08/Interview-with-Brad-Wilson-Software-Developer-OfficeLabs-Microsoft#inroads">Open-source inroads and future at Microsoft</a></li>
</ul>
<p><span id="more-147"></span><br />
<a name="codeplex"></a></p>
<p><b>Sean Campbell:</b> Brad, tell us a little bit about your background. </p>
<p><b>Brad Wilson:</b> Sure. I&#8217;m a professional software developer, and I have been for about 15 years. I came to Microsoft just about three years ago. My first stop at Microsoft was the Patterns and Practices Group. I worked a little bit on the Enterprise Library, but mostly ObjectBuilder, Composite UI Application Block, and the Smart Client Software Factory.</p>
<p>After I left Patterns and Practices, I went to go work on CodePlex, which is the repository for open source projects that Microsoft runs. </p>
<p>My history with open source is that, for most of my career, I&#8217;ve worked in small companies&#8211;Microsoft being an obvious exception&#8211;all in the Windows space. I really started getting into open source around 2000.</p>
<p>That timing also coincided with the time I started picking up agile practices, because I got introduced to a lot of that stuff all around the same time. NUnit, the unit testing framework for .NET, was my first exposure to a tool that I really ended up using and liking a lot that I also got the source code for, which was kind of strange, but I found it pretty intriguing. Now, working for Microsoft, it is kind of strange to think that I actually contribute to several open source projects, but I do.</p>
<p>Jim Newkirk and I&#8211;he was the guy who worked on NUnit&#8211;came up with a new unit testing framework called xUnit.net, so I contribute to that pretty regularly. The ObjectBuilder project that I started on in patterns and practices&#8211;we kind of spun that off&#8211;was embedded inside of the Composite UI Application Block. We spun it off as its own project on CodePlex, and I&#8217;m still an active contributor there as well. While I was at CodePlex, I also worked on a source control client for Team Foundation Server.</p>
<p>So, quite a few open source projects, even though I&#8217;m a Microsoft employee, which most people think isn&#8217;t really possible. But I think CodePlex has proven that Microsoft is very interested not only in consuming open source, at times, but also in producing it. </p>
<p><b>Scott Swigart:</b> You mentioned NUnit, xUnit, and the ObjectBuilder. Those are kind of &#8220;by developer, for developer&#8221; open source projects. Are those typical of the open source projects that you&#8217;ve contributed to and the kind of open source software that you typically find yourself using? </p>
<p><b>Brad:</b> That&#8217;s true&#8211;the open source projects I contribute to tend to be the &#8220;by developer, for developer&#8221; kind, although I also consume things that are less about development. Like one tool that I&#8217;ve used forever is the GIMP graphics editor, which I love a lot. But I&#8217;ve never contributed to it because, mostly, I&#8217;m an amateur graphics maker, so I&#8217;m not so interested in contributing to the source base. </p>
<p>There are probably other things that I use that are open source, and I might not be aware of it. I think that&#8217;s probably true for a lot of people, or at least we don&#8217;t think about them in terms of being open source projects. We just think about them in terms of something that we use, like web developers still use all kinds of different browsers. Firefox is really popular, and most people don&#8217;t think of it as open source&#8211;they just think of it as a browser. But, obviously, it&#8217;s a huge open source effort. </p>
<p><b>Scott:</b> Do you spend time actually working on CodePlex? </p>
<p><b>Brad:</b> I was a software developer on the CodePlex team, so I did work on the web site itself. Actually, a lot of the time I was at CodePlex, I was working on the source control client, which we released as open source. I spent probably half of my time on the CodePlex team working on that project full time. </p>
<p><b>Scott:</b> Educate me about that a little bit. That was a command line utility that would let people do check-ins and check-outs from CodePlex, to give them sort of a Subversion-like experience, or a CVS-like experience? </p>
<p><b>Brad:</b> Right. We chose Team Foundation Server for our source control. Personally, especially before I came to Microsoft, I had been a big fan of CVS and Subversion, and I like those kinds of tools. When we chose Team Foundation Server for source control, the source control server itself was fine, but the Team Explorer client that&#8217;s built into Visual Studio didn&#8217;t really work the way I was comfortable working.</p>
<p>The biggest thing that our client gives that the original version of Team Explorer didn&#8217;t do very well is the ability to work offline. Most people who are using Team Foundation Server are going to be using it on the LAN at a corporation, where they&#8217;re going to have connectivity pretty much all the time.</p>
<p>But in open source projects, you&#8217;re very often doing work in places where you have slow or no connectivity. Having to constantly hit a server that might be behind a firewall or whatever isn&#8217;t really conducive to that kind of work. We really wanted to provide that offline, edit-merge-commit style of working that people who are familiar with some of the other open source sites would be more comfortable with. </p>
<p><b>Scott:</b> Has a community formed around some of these efforts that you&#8217;ve worked on? You mentioned NUnit, which obviously has its own community. Are there communities around xUnit, Subversion, the CodePlex client, and things like that, where people post suggestions and maybe even post code itself? </p>
<p><b>Brad:</b> There is some community; the unit testing framework is probably the biggest of the three. None of them are really huge, but certainly, people are reporting bugs, discussing features, asking questions and occasionally providing code. </p>
<p><b>Scott:</b> One of the bigger source code repositories before CodePlex was SourceForge. How much did you guys look at that as inspiration in working on CodePlex? And where do you think CodePlex goes beyond something like SourceForge, in terms of the experience that it provides for the users? </p>
<p><b>Brad:</b> There are clearly a lot of similarities between CodePlex and other open source repositories like SourceForge, CollabNet, and things like that. I think the goal for each is different. I can&#8217;t necessarily speak to what the goals are for SourceForge and CollabNet. It was really Jim and Sandy&#8217;s idea&#8211;the other guy who helped start CodePlex&#8211;to provide an environment that was more friendly to Windows developers, especially those who didn&#8217;t have experience with the existing sites, like SourceForge.</p>
<p>Some of those people really prefer that sort of Team Explorer experience, so we wanted to provide that kind of environment for them. Another goal for CodePlex is to have really high quality projects, so we built some features into the software that discourage &#8220;publish it and forget it&#8221; types of projects. And we do try to look around the site and understand what people are using and what they aren&#8217;t using.</p>
<p>One thing that we really focus on is taking community feedback&#8211;letting people know that we really want them to report bugs against our site and talk about the features of our site. And we really do actively go out and look at those things and implement them. I think the users are pretty happy with the turnarounds and our ability to listen to their feedback.</p>
<p>As to where we might go in the future, there are a lot of possibilities. CodePlex as it sits today is a very interesting site, but you can certainly imagine that there are lots of things that could be done, as well as features that other sites aren&#8217;t offering. </p>
<p><b>Scott:</b> What sorts of features would you like the most? </p>
<p><b>Brad:</b> I think the biggest opportunity that CodePlex has in general is to provide a stickier community than what you get at SourceForge. You want to be able to relate to the people working on your project like an extended team, as opposed to a bunch of disconnected individuals. Personally, I would like to see some tighter integration of community features&#8211;things like presence information and chatting, and maybe even integrate some of that stuff into Visual Studio. I think that would be really cool. </p>
<p><b>Scott:</b> Let me drill into something there. A lot of people spend a lot of time writing and thinking about how you build a vibrant community around your project, and how you manage personalities and a lot of that stuff.</p>
<p>But people don&#8217;t really talk much about how important they feel like the site&#8211;whether it&#8217;s CodePlex or one of these other sites&#8211;and the functionality it provides is in building and holding together a community.</p>
<p>You&#8217;ve worked on NUnit and things like that, which were hosted on SourceForge, and you have a lot of experience with CodePlex. How much does it lower the barrier to entry and help keep a community cohesive, if the tool the people are using has these great collaborative features? </p>
<p><b>Brad:</b> That&#8217;s a good point. SourceForge&#8217;s UI seems to be driven very strongly around the idea of the downloader. I feel like when I was using SourceForge that the learning curve for any other activity besides downloading tended to be high.</p>
<p>I definitely think that some sites can certainly do things that make it easier for people to be able to contribute, especially to contribute in small ways. A lot of times, these sites are about the big contributions. I want to write a bug. I want to start a big discussion thread.</p>
<p>But there are also a lot of opportunities for small contributions. We added voting on work items and found it to be really popular with all the project owners because it was a really low friction way for people to say they&#8217;re interested in something. So, the design of the site, the design of the tools and any integration you can give can certainly have a huge impact, in the long-term, on the kinds of communities you can build for your projects. </p>
<p><a name="non-code"></a></p>
<p><b>Scott:</b> There are some projects that are really big, and there are things like the Linux kernel or Apache web server, and they&#8217;ve been around for a very long time. They&#8217;ve got hundreds or thousands of people working on them. And on one end, they tend to be really transparent. There&#8217;s a saying in the Apache community that &#8220;if it didn&#8217;t happen in the mailing list, it didn&#8217;t happen.&#8221;</p>
<p>On the other hand, unless I have the ability to write code, I don&#8217;t really have a lot of ability to get a feature into that project. If there&#8217;s something I want, I could go to the mailing list and say, &#8220;Hi, I have this great idea.&#8221; And the response I&#8217;ll probably get is &#8220;Yeah that sounds cool. When will the code be ready?&#8221; On the other hand, with smaller projects, there tends to be something about the culture of the project where people are more willing to just take feedback that comes in. And the small group that&#8217;s working on the project&#8211;or even the individual that&#8217;s working on the project&#8211;takes that feedback and works on implementing it.</p>
<p>Have you bumped into those same sorts of experiences in your working with open source? And in the projects you&#8217;ve worked on, how have you seen it work where somebody might have an idea and either on one side they&#8217;re expected to be able to code it if they really have the idea, or maybe on another project they&#8217;re not? It&#8217;s fine to just propose a suggestion and kind of hope that somebody else picks it up and works on it. </p>
<p><b>Brad:</b> There&#8217;s no question that there&#8217;s definitely a coding bias to participation, especially in large projects. But it can be really intimidating, and the whole mailing list thing is a great example. There are a lot of people who are not comfortable communicating in email with people, especially if you get into a community where you feel like you&#8217;re going to be shutdown or made fun of for asking easy questions, or suggesting what some people think of as silly features.</p>
<p>There are definitely a lot of opportunities in the sites to be able to provide these alternative means of contributing. For example, voting or tagging models can help. Someone can easily chime in on a feature that someone has requested and say it&#8217;s important, and before you know it, 10, 15, 20 people have said it&#8217;s important, and it&#8217;s the most important thing on the list. All of this is done in a way that&#8217;s non-confrontational, whereas email can sometimes feel a little confrontational. </p>
<p><a name="governance"></a></p>
<p><b>Scott:</b> You mentioned that sometimes people look at you strange when you say you work for Microsoft, but you contribute to open source projects. </p>
<p>We&#8217;ve talked to people in Patterns and Practices who work on the Enterprise Library, and they&#8217;re in this one realm that&#8217;s a little different than Apache or something like that, where it&#8217;s under an open source license, and people can take what Patterns and Practices produces, and they can make their own fork of it and they can do their own work on it.</p>
<p>What they can&#8217;t really do is contribute code back to the Enterprise Library. Microsoft has corporate customers who depend on that, and Microsoft makes certain assurances about that. The company has things like the Security Development Lifecycle and certain processes that they put code through, and they have to know the chain of ownership and know, for example, that some code wasn&#8217;t copied and pasted from something else that somebody else owns.</p>
<p>But then, I&#8217;m guessing that there&#8217;re other projects&#8211;maybe some of the ones that you&#8217;ve worked on on CodePlex&#8211;that would be open to taking community contributions. Can you talk about that balance at all? Is that something you&#8217;ve run into in any of the stuff you&#8217;ve worked on? </p>
<p><b>Brad:</b> There&#8217;s definitely a spectrum. In terms of xUnit.net, which is the unit testing framework, Jim and I set up the project so that the unit testing framework itself is sort of owned by Microsoft. We don&#8217;t really take contributions on that, but that part is actually really small. We have a second project, which is related to it, that allows people to extend the unit testing framework. Almost all the work we do is actually in that second project. We do take community contributions for it, and that&#8217;s worked out pretty well.</p>
<p>Microsoft does own what you contribute, in a sense. Really, in these open source projects, you have to be very careful&#8211;this has nothing to do with Microsoft, but you have to really careful about things like copyright assignments and IP assignments and things like that. All the legal stuff can actually get small projects who aren&#8217;t paying attention to it in a little bit of trouble.</p>
<p>Microsoft has a system called an Assignment Agreement, and if you want to contribute code to this project, you say, &#8220;I agree to assign the ownership of this stuff to Microsoft.&#8221; Of course, it&#8217;s immediately pushed back out, in our case, in the Microsoft Public License, which basically says you can do anything you want with it. You&#8217;re not really losing the ability to use that code, but Microsoft is sort of taking stewardship of it. </p>
<p><b>Scott:</b> Microsoft owns it, but you could fork it and do whatever you want with it, essentially. </p>
<p><b>Brad:</b> Right, exactly. It&#8217;s like the Enterprise Library scenario, except we can take contributions, and now other people can contribute to the code base. It&#8217;s just that someone has to maintain control over all the legal issues, to make sure that there aren&#8217;t any cases of one person claiming to own these seven lines of code, and another claims to own these other nine lines of code. In cases like that, you can&#8217;t really untangle it all, so it&#8217;s pretty important to address all of that.</p>
<p>There&#8217;s another really big project in CodePlex that is very interesting. The Developer Division has an AJAX library called ASP.NET AJAX, and they also have a project called the ASP.NET AJAX Control Toolkit that really takes a lot of contributions from outside of Microsoft.</p>
<p>And again, it&#8217;s the sort of a model where we built the core, and we contribute some of the stuff that sits around outside of it, and the community contributes some. And it&#8217;s a great, single place you can come and get a whole bunch of great utilities to wrap around the AJAX library.</p>
<p>I think this is going to be a pretty common pattern for teams that are interested in having community feedback, which is to set up these projects around something that isn&#8217;t open source&#8211;or that is open source but doesn&#8217;t take outside contributions. They&#8217;ll make it so the community can contribute, and yet everybody who wants to have access to it can come and get it all in one space. </p>
<p><b>Scott:</b> What kind of decision criteria determine what goes in the small core? People at Microsoft might be writing stuff that goes into the larger section that can take community contributions, but then the same people at Microsoft might also be writing stuff that goes into the somewhat proprietary core. How do you decide what needs to go into one versus the other? </p>
<p><b>Brad:</b> I can&#8217;t really speak to the way the AJAX stuff went, because I haven&#8217;t worked on that team, but Jim and I faced the same question when we were dealing with xUnit.net. Our philosophy was that we wanted to have as little there as possible, because we wanted to just set the framework and make it extremely extensible.</p>
<p>Some of it was really a test of all the extensibility points that we put into our framework. How much can we actually push off into this other project and let people look at it and fix bugs in it, and basically get as much of the code as possible out to where it can be worked on by the community. Obviously, that would be a huge bottleneck if the whole thing was just me and Jim.</p>
<p>So, for us, we looked to sort of put the right amount, and the smallest amount we could get away with, into that core project, and push as much out for community inspection and contribution as we could. </p>
<p><b>Scott:</b> Is the source code available for the core project, or is stuff in the core project because that&#8217;s the part where it is kind of proprietary and people can&#8217;t see the source? </p>
<p><b>Brad:</b> In the case of xUnit.net, the source is available. Both projects are actually on CodePlex. It&#8217;s just that in the core project, we don&#8217;t take contributions in the form of source code. I want to make it clear that there are other ways to contribute, but we don&#8217;t take source code. We do provide the source code for everything, because Jim and I are long-time open source advocates. Of course, he did NUnit and put the source code out there for NUnit. He is a big believer in sharing source code.</p>
<p>There seems to be, especially in the &#8220;by developers, for developers&#8221; scenario, a whole set of stuff that belongs in the canon. It belongs to everybody, because how many implementations of a doubly linked list does the world need, right? </p>
<p>There are definitely things that should just be there for you to use, and Jim and I feel that unit testing frameworks are one of those things.</p>
<p><b>Sean:</b> I&#8217;ve got a broader question for you, as well. What do you think Microsoft has learned from the open source community, and what do you think they still have left to learn, if you could just pick a couple things and say, &#8220;I don&#8217;t think we&#8217;ve fully learned how to do this one particular thing, but it would be to our benefit if we do?&#8221;</p>
<p><a name="inroads"></a></p>
<p><b>Brad:</b> Most people probably don&#8217;t realize that Microsoft has been a consumer of open source for a long time. If you go all the way back to the first release of Windows NT, the TCP/IP stack that was in Windows NT 3.1, which was released in 1993, actually came from BSD.</p>
<p>Most people think, &#8220;Oh, Microsoft hates open source,&#8221; but it&#8217;s not actually true. There&#8217;s quite a bit of reusing of code, I think, from time to time, like the TCP/IP stack. There&#8217;s also the use of applications that are open source, so it&#8217;s hard to paint Microsoft with one big brush, even though a lot of people would prefer to do it that way. There are certainly groups that are more open to it and groups that are more closed to it.</p>
<p>I think Microsoft has felt recently&#8211;right or wrong&#8211;that the open source community was out to get them. And some of that is the extreme end of the Slashdot kind of people who say that every misstep by Microsoft is an example of the evil tyranny of giant software companies. But there&#8217;s a lot of common ground, both within and outside of Microsoft, about how beneficial open source can be, which is not necessarily to say that we should open source Windows or Office, because those are clearly good money-makers for us.</p>
<p>I also feel like Microsoft is a bit of a target, just because of who they are, and that any use of open source needs to be looked at very critically, to make sure that we&#8217;re not exposing ourselves to a risk that a smaller company wouldn&#8217;t necessarily have. </p>
<p><b>Sean:</b> Coming from a background where you appreciate the benefits of open source and you have some understanding of it, now you&#8217;re in a closed source company that&#8217;s also making inroads toward open source in various ways. What do you think about this kind of move to a model where people take an open source product in-house, and then they essentially build services on top of it or they service significant product efforts on top of it?</p>
<p>Examples come to mind, like Google. They&#8217;re considered an open source company, and they&#8217;ve done a lot, but the fact is that they get a lot of props for being an open source company, but it&#8217;s not like they&#8217;ve open-sourced their page rank algorithm. There are also a lot of software as a service ventures that are building that way. SugarCRM has gotten beaten around a lot for the way they kind of use it as a bumper sticker on what they do, that they&#8217;re open source and things like that.</p>
<p>What do you think about approaches like that? Do you think that&#8217;s a natural evolution for some open source efforts, or do you think that&#8217;s just a phase? How do you think that&#8217;s going to play out? </p>
<p><b>Brad:</b> Just like Microsoft is not monolithic, the open source community itself isn&#8217;t really monolithic either. I come at open source from sort of a permissive angle&#8211;I favor licenses like BSD and MIT and the Microsoft Public License. There are certainly a fairly significant number of people who come at open source from sort of a viral angle, the GPL-style, LGPL-style licenses. In some sense, there&#8217;s a conflict brewing.</p>
<p>Google&#8217;s a very interesting example, because they really do leverage a lot of open source without necessarily contributing back. And to me, as a permissive kind of a guy, I think, that&#8217;s just fine. Some of the people who are on the sort of GPL-LGPL side of the house are probably less excited about that. They would like some of that source code to come back out. And I think that there&#8217;s opportunity all along the spectrum.</p>
<p>It&#8217;s hard to say that one thing is necessarily going to prevail over the other. I do think, though, for sure, that companies are going to rely more and more on open source, especially small companies, because bootstrapping yourself on the back of available source code and available services is a way to get a company going without spending a lot of money on it. Reinventing the wheel really is an extremely expensive and time-consuming process.</p>
<p><b>Scott:</b> In the case of proprietary companies, somebody does something, it changes the marketplace, and then everybody else in the marketplace reacts to it, so open source is a disruptive force. And so are other things, like virtualization is disruptive to IT.</p>
<p>I think Microsoft is an example of a proprietary company that responded to exactly what you talked about, with their ISV Empower program, where startups can get Microsoft software for dirt cheap. And to me, just from the outside, it seems like a smart move, because the five-person company may become a 250-person company, and I&#8217;m sure Microsoft wants those companies to start out using their software.</p>
<p>At the same time, I see a lot of companies taking a blended approach. Adobe is open sourcing certain things. Microsoft is doing some interesting stuff, like you said, around the AJAX Toolkit and around the Enterprise Library.</p>
<p>What do you think about the future? Do you see Microsoft continuing to go down the road of a blended approach of having proprietary, closed-source stuff, but potentially an increasing amount of stuff where the source code is available? </p>
<p><b>Brad:</b> I definitely think that Microsoft, right now, is in what I would call a growth period in terms of sharing source code. And not only sharing it, but sharing it in a way that makes it really reusable. I think we got beat up a little bit with the whole Shared Source Initiative, about the idea that you can look at the source, but you can&#8217;t really do anything with it. That&#8217;s a first level of utility, though, and in some cases, like some of the libraries that came with Visual Studio, there&#8217;s no question that it was helpful.</p>
<p>As time goes on, Microsoft is clearly becoming more open. I think having whole groups&#8211;like Patterns and Practices and the CodePlex team and the team that&#8217;s responsible for the open source licenses here&#8211;is a good sign. It&#8217;s an especially good sign to see some of the really, historically, closed-source, proprietary teams open themselves up. Knowing that the Developer Division is not only willing but eager to take people&#8217;s contributions on the AJAX Control Toolkit is a great sign. It bodes well for the future here. </p>
<p><b>Scott:</b> Brad, thanks for taking the time to chat with us.</p>
<p><b>Brad:</b> Thank you.</p>
<img src="http://howsoftwareisbuilt.com/?ak_action=api_record_view&id=147&type=feed" alt="" /><!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em>Bookmark this:</em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://howsoftwareisbuilt.com/2008/04/08/interview-with-brad-wilson-software-developer-officelabs-microsoft/&amp;title=Interview+with+Brad+Wilson+%26%238211%3B+Software+Developer+%26%238211%3B+OfficeLabs+%26%238211%3B+Microsoft" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://howsoftwareisbuilt.com/2008/04/08/interview-with-brad-wilson-software-developer-officelabs-microsoft/&amp;title=Interview+with+Brad+Wilson+%26%238211%3B+Software+Developer+%26%238211%3B+OfficeLabs+%26%238211%3B+Microsoft" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://howsoftwareisbuilt.com/2008/04/08/interview-with-brad-wilson-software-developer-officelabs-microsoft/" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://howsoftwareisbuilt.com/2008/04/08/interview-with-brad-wilson-software-developer-officelabs-microsoft/&amp;title=Interview+with+Brad+Wilson+%26%238211%3B+Software+Developer+%26%238211%3B+OfficeLabs+%26%238211%3B+Microsoft" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://howsoftwareisbuilt.com/2008/04/08/interview-with-brad-wilson-software-developer-officelabs-microsoft/&amp;title=Interview+with+Brad+Wilson+%26%238211%3B+Software+Developer+%26%238211%3B+OfficeLabs+%26%238211%3B+Microsoft" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.sphere.com/sphereit/http://howsoftwareisbuilt.com/2008/04/08/interview-with-brad-wilson-software-developer-officelabs-microsoft/" rel="nofollow" title="Add to&nbsp;SphereIt"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/sphereit.png" title="Add to&nbsp;SphereIt" alt="Add to&nbsp;SphereIt" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Interview+with+Brad+Wilson+%26%238211%3B+Software+Developer+%26%238211%3B+OfficeLabs+%26%238211%3B+Microsoft+@+http://howsoftwareisbuilt.com/2008/04/08/interview-with-brad-wilson-software-developer-officelabs-microsoft/" rel="nofollow" title="Add to&nbsp;Twitter"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&nbsp;Twitter" alt="Add to&nbsp;Twitter" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://howsoftwareisbuilt.com/2008/04/08/interview-with-brad-wilson-software-developer-officelabs-microsoft/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Interview with Marc Frons &#8211; CTO &#8211; New York Times Digital &#8211; Part 2</title>
		<link>http://howsoftwareisbuilt.com/2008/03/12/interview-with-marc-frons-cto-new-york-times-digital-part-2/</link>
		<comments>http://howsoftwareisbuilt.com/2008/03/12/interview-with-marc-frons-cto-new-york-times-digital-part-2/#comments</comments>
		<pubDate>Wed, 12 Mar 2008 17:38:19 +0000</pubDate>
		<dc:creator>scottswigart</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[corporate citizenship]]></category>
		<category><![CDATA[journalism]]></category>
		<category><![CDATA[Marc Frons]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[open source licensing]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://howsoftwareisbuilt.com/2008/03/12/interview-with-marc-frons-cto-new-york-times-digital-part-2/</guid>
		<description><![CDATA[Interviewers: Scott Swigart and Sean Campbell
Interviewee: Marc Frons
In this second interview with Marc Frons, CTO for the New York Times digital operations, we discuss the Times use of open source in their infrastructure. In specific, we talk about:

WordPress and blogging at the New York Times
New York Times investment in open source
Licensing issues and corporate citizenship
How [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Interviewers:</strong> <a href="http://howsoftwareisbuilt.com/about-scott-swigart/">Scott Swigart</a> and <a href="http://howsoftwareisbuilt.com/about-sean-campbell/">Sean Campbell</a></p>
<p><strong>Interviewee: </strong><a href="http://howsoftwareisbuilt.com/about-marc-frons-cto-new-york-times-digital-operations/">Marc Frons</a></p>
<p>In this second interview with Marc Frons, CTO for the New York Times digital operations, we discuss the Times use of open source in their infrastructure. In specific, we talk about:</p>
<ul>
<li><a href="http://howsoftwareisbuilt.com/2008/03/12/interview-with-marc-frons-cto-new-york-times-digital-part-2#wordpress">WordPress and blogging at the New York Times</a></li>
<li><a href="http://howsoftwareisbuilt.com/2008/03/12/interview-with-marc-frons-cto-new-york-times-digital-part-2#investment">New York Times investment in open source</a></li>
<li><a href="http://howsoftwareisbuilt.com/2008/03/12/interview-with-marc-frons-cto-new-york-times-digital-part-2#licensing">Licensing issues and corporate citizenship</a></li>
<li><a href="http://howsoftwareisbuilt.com/2008/03/12/interview-with-marc-frons-cto-new-york-times-digital-part-2#support">How they address open-source application support and evolution</a></li>
<li><a href="http://howsoftwareisbuilt.com/2008/03/12/interview-with-marc-frons-cto-new-york-times-digital-part-2#CMS">The role of content management systems</a></li>
<li><a href="http://howsoftwareisbuilt.com/2008/03/12/interview-with-marc-frons-cto-new-york-times-digital-part-2#future">The future of corporate investment in open source</a></li>
</ul>
<p><span id="more-135"></span><br />
<a name="wordpress"></a></p>
<p><b>Sean Campbell:</b> Thanks for taking the time to chat. In our earlier conversation we talked about some of your digital media initiatives at The New York Times, and one thing you mentioned was blogging. Talk a little about your blogging infrastructure.</p>
<p><b>Marc Frons:</b> Sure. About 99.9 percent of our blogs are on WordPress and have been for the past year or two.</p>
<p><b>Sean:</b> What else did you guys evaluate besides WordPress &#8212; or was WordPress just an obvious choice?</p>
<p><b>Marc:</b> We had some of our blogs on Moveable Type. At a certain point we decided to move over to WordPress. The move predates me, but I think one of the reasons was just the personal preference of the developers. WordPress has a lot of plug-ins available. I think it was about the same time The Times acquired About.com, which was also a big user of WordPress, so that might have tipped the scales.</p>
<p><b>Sean:</b> There&#8217;s some recent news about The Times and WordPress. Tell us a little bit about what&#8217;s been happening there.</p>
<p><b>Marc:</b> Sure. I think that over time the relationship between WordPress and The New York Times has deepened, and we&#8217;ve gotten closer to that company and the principals. We recently announced an investment in WordPress and took part in one of their second rounds of financing in WordPress and Automatic, which is the commercial end of the WordPress.org organization.</p>
<p>We&#8217;re very excited about that. As part of that deal, we&#8217;re working very closely with WordPress on NYTimes.com blogs and some special things for The New York Times that WordPress is going to help us with.</p>
<p>Some of our blogs today are not on our own infrastructure and are fairly customized. One of the things we&#8217;re going to do is have WordPress help us move our blogs to our own infrastructure, and do them the right way    meaning a more standard configuration. We had customized them for various reasons, for scalability within our environment as opposed to scalability overall, so they are going to help us do that.</p>
<p>We are also working together to marry the New York Times taxonomy to the larger taxonomy of the blogosphere, so it&#8217;ll be easier for us to find relevant posts that have surfaced on blogs posted by WordPress.com, and to integrate those posts into our own site. We&#8217;re doing a little bit of that right now with another tool we own called Blog Runner. </p>
<p>WordPress will probably be helping us with some training and documentation for our newsroom, so any of our journalists who are new to blogging or really don&#8217;t understand what it&#8217;s all about can 1) learn how to use the WordPress system more easily, and 2) learn a little bit more about blogging in general and how to use these tools.</p>
<p>And finally, I think we&#8217;ll probably be working on some things around security for our environment, and some plug ins around that.</p>
<p>Our intention in all these things is to give back whatever we can to the community and keep it open source.</p>
<p><a name="investment"></a></p>
<p><b>Sean:</b> I&#8217;m just curious &#8212; and forgive my ignorance on this because I just don&#8217;t know &#8212; has The New York Times contributed in a financial way to an open source project prior to this, or is this the first time? </p>
<p><b>Marc:</b> To my knowledge, this is the first time that we&#8217;ve invested in a company that started with an open source model.</p>
<p><b>Sean:</b> So what&#8217;s the thought process behind it?</p>
<p><b>Marc:</b> I think there were a couple of things. One is knowing the principals of the company. We&#8217;re very comfortable with them as business people and as technologists. It’s not often you get the opportunity to invest in an exciting Internet company or a growing software business at a reasonable multiple or any multiple that you can afford.</p>
<p>Finally, our confidence in the WordPress platform and what WordPress stands for as a company, and aligning its values with our own, was something that really attracted everyone here to this particular deal.</p>
<p><b>Sean:</b> Talk about how you see their values aligning with yours, compared to just any open source project. </p>
<p><b>Marc:</b> I think there&#8217;s a real commitment from the WordPress team for quality, for openness, for an exchange of ideas, but in a way that is respectful. The meetings we&#8217;ve had with them have led us to believe that this is a company that cares about quality, that cares about its customers, that has an evolving platform, and that&#8217;s tapping into the community but being smart about it.</p>
<p>One of the things a WordPress founder said was, &#8220;We listen to our customers very closely, but we don&#8217;t do everything they say.&#8221;</p>
<p><b>Sean:</b> Right.</p>
<p><b>Marc:</b> I think that&#8217;s really important for every company to think about. That really resonated with me, because I think that no matter what, you still need a filter on what you&#8217;re doing. There can be good communities and bad communities    communities that are smart, and some that are smarter than others.</p>
<p>I think it&#8217;s up to the people leading a project, and especially an open source project, to be smart about what gets promoted into the code base    what features and functionality one concentrates on and what one doesn&#8217;t. Often a special interest group can hijack a project, in a sense. That hasn&#8217;t happened at WordPress, as far as I&#8217;m concerned.</p>
<p><b>Sean:</b> I know what you&#8217;re talking about, because we&#8217;ve always had a philosophy, just from an entrepreneurial standpoint, that to be effective you have to turn down certain opportunities. In business, you&#8217;ll be offered work that technically you could do, but that&#8217;s just not a smart direction for your company to go. I get really worried when I&#8217;m dealing with another company and I feel like their motto is &#8220;Say yes to anything.&#8221;</p>
<p>It seems that open source projects might be under the same pressure, where someone says that a certain direction will add thousands of users or enable a scenario they feel is critical, and someone on the project has to have the maturity to say, &#8220;Yes, that direction would benefit us, but it would cost us in other areas, and those costs outweigh this one benefit.&#8221; It sounds like you&#8217;re saying the WordPress folks really get that.</p>
<p><b>Marc:</b> I think that&#8217;s true. And I think you should talk to the WordPress guys about that, if you haven&#8217;t already. It would be fascinating to understand their process of deciding what makes it into the core and what doesn&#8217;t.</p>
<p>I mean, one of the things that they said was, &#8220;Look, we have an architecture that allows you to build any kind of crazy plug in you want. But when something becomes really popular and a lot of people find it useful, it becomes part of the code base.&#8221;</p>
<p><b>Sean:</b> Kind of like what they did with tagging recently.</p>
<p><b>Marc:</b> Right.</p>
<p><b>Sean:</b> They didn&#8217;t fold in the Ultimate Tag Warrior plug-in, they didn&#8217;t do every last thing they could do with tagging. They basically said, &#8220;We&#8217;ll support tagging. If you want something fancier, that&#8217;s what the plug in community is for.&#8221; </p>
<p><b>Scott Swigart:</b> Sometimes people are skeptical when they hear about corporate sponsorship of open source. How would you respond to someone who says, &#8220;Does that mean The New York Times has become a special interest that WordPress now has to cater to, even if what the Times wants isn&#8217;t necessarily what the broader community wants?&#8221;</p>
<p><b>Marc:</b> Well I don&#8217;t think we own enough of WordPress to really influence it that much &#8212; we&#8217;re a minority investor. Even if we owned a majority stake or the company outright, the values of the founders and the principals of the company are such that I don&#8217;t think they would let that happen    where they would say, &#8220;The next release of WordPress will be totally customized for partner X or partner Y, and we don&#8217;t care about this community we built.&#8221; That would truly be shooting themselves in the foot, because their community of users is always going to be much larger than any single company. It would also be bad business for any company that acquired them. </p>
<p><b>Scott:</b> Sean and I are both political junkies, so it sounds to me as if a politician explains a contribution by saying, &#8220;This contributor isn&#8217;t asking me to go in a different direction. He&#8217;s supporting me because he agrees with what I do.&#8221;</p>
<p>You&#8217;re saying the interests of The New York Times and the interests of WordPress were already in alignment, and it&#8217;s not about changing their direction.</p>
<p><b>Marc:</b> Right. It&#8217;s not like WordPress was a turnaround situation and we said, &#8220;Gee, we&#8217;re just going to go in there and clean this place up and change their strategy. And, you know, they should be focusing on a different market, and building everything a different way.&#8221; We said, &#8220;We love what you guys are doing, and we&#8217;d love to be a part of it. Since we&#8217;re already using your product, we&#8217;d like to be closer together, both to have more input in what you&#8217;re doing and to hear more about your ideas for our business.&#8221;</p>
<p><b>Scott:</b> Well, let me flip it around too. Let me be a crotchety New York Times shareholder who says, &#8220;Look guys. Focus on the news business. There are all these open source beauty pageants going on. Don&#8217;t get caught up in the hype. Show me how I&#8217;m going to see a return on my investment.&#8221;</p>
<p><b>Marc:</b> We invested in a company that just happens to have an open source model. And as we&#8217;ve talked about before, I don&#8217;t think it&#8217;s accidental that that&#8217;s a reason for their success    or one of the reasons for their success. But I think we primarily invested in them because we think they&#8217;re a good company with a very good sense of their market and their product and their audience, and of how they&#8217;re going to continue to grow and improve.</p>
<p>And I think the fact that open source is a part of that is a really good thing, but if they didn&#8217;t have a clear idea of themselves it wouldn&#8217;t matter whether they were open source or not. So when we look at The New York Times and our strategy from here on in, it&#8217;s really about treating ourselves as a multiplatform content, news, and information company. </p>
<p>If you think about it, we have a newspaper, we have a Web site, we have a mobile site. We have various means of publishing. We have our own internal content management system. We have blogs that are on WordPress. We may have other types of user-contributed content that might be hosted on WordPress or in a WordPress content management system. We have our content on more advanced devices, and we have an R&#038;D group that experiments all the time, that looks around corners and asks, &#8220;What&#8217;s coming next?&#8221;</p>
<p>So for us, the fact that they are open source is terrific, but it is incidental to who they are in terms of our investment.</p>
<p><b>Scott:</b> Right, WordPress is a leader in that space. Obviously, a media company that has a connection to that kind of media infrastructure, a media company working with the people who are working on key underpinnings of the blogging infrastructure, makes perfect sense.</p>
<p><b>Marc:</b> We certainly thought that. And look, it&#8217;s not like they are the only ones out there. There are a lot of good companies doing open source blogging platforms. But I think what impressed us about WordPress is the velocity of its growth, as well as WordPress.com, which I think has come on quite strongly in 2007 and continues to grow nicely as the company really focuses on that mission of providing a robust blogging platform for all kinds of users.</p>
<p><a name="licensing"></a></p>
<p><b>Scott:</b> Let me ask you a question in a completely different area. When it comes to licensing open source projects, there are a number of different licenses a project can use. Does licensing affect your decisions about what open source projects to use or how you use them? Does it matter whether it&#8217;s GPL v3 or v2, or something more commercial friendly like Apache? Do you look at things in-depth or is it just something that sort of floats through in the middle of the decision making process?</p>
<p><b>Marc:</b> I would say the latter.</p>
<p>We don&#8217;t worry about it as much right now because we&#8217;re not producing software in that way. We were working with another company and were interested in licensing the product they&#8217;d built, and then one of the lead developers called me and said, &#8220;Look, we just have to talk to the lawyers because this includes some open source software and we have to make sure that we have all the licenses right and can reuse it in a commercial product, et cetera, et cetera.&#8221; And I said, &#8220;OK, you work that out with the lawyers.&#8221; But generally, it&#8217;s not an issue.</p>
<p><b>Sean:</b> When you mentioned build software on top of open source, it made me think of something I&#8217;ve been wanting to get a perspective on. Google is an interesting example because it is considered an open source company, but it hasn&#8217;t really open sourced any of its significant IP.</p>
<p>With that in mind, do you see a time when The New York Times would potentially open source part of the effort you are building now? You&#8217;ve obviously built a high end Web portal for a very large media outlet. On top of that, The Times has a willingness to engage with the community that maybe a Google    a pure for profit company    doesn&#8217;t have to the same degree.</p>
<p><b>Marc:</b> Sure. Just as Google has &#8220;do no evil,&#8221; one of the core values of The New York Times is to &#8220;enhance society.&#8221; That phrase is in our mission statement. And I think we touched on it a little bit last time. One of the things we did about six months ago was end Times Select, our pay product. Almost the entire Times Web site is now free of charge, or totally advertiser supported.</p>
<p>We think of that as an open model in terms of content. The next step for us is building APIs and applications that leverage our content, and then opening those APIs to the developer community at large so that others can display our content and applications in new and useful ways.</p>
<p>We are actively building those tools, and also thinking about additional ways to pursue that strategy. So on the Times site, we have a blog called &#8220;Open&#8221; that&#8217;s all about our open source efforts. Right now it’s largely if not exclusively written by our developers. We&#8217;re hoping to have our first New York Times developer day later this year. It would be modeled after the Google and Yahoo hack days. Before we do that, however, we’ll distribute a set of our content APIs so that developers outside The Times can create applications that combine our content with functionality they devise &#8212; and basically create open source applications using our technology and our content. So we take the effort very seriously. We think of it as part of our overall strategy of having a positive impact on society as well as improving our own Web site and our own news and information platform.</p>
<p><b>Scott:</b> I&#8217;d also be interested in your perspective on two of the licensing models that exist in open source. On one end of the spectrum, you have Apache foundation licensing, which is very commercial friendly. You can take anything under the Apache license and build on top of it.</p>
<p><b>Marc:</b> Right.</p>
<p><b>Scott:</b> You can include it in your product, bundle it with commercial software, and you are not required to open source your derivative works.</p>
<p>At the other end of the spectrum you have the Free Software Foundation with GPL licensing. Its goal is to &#8220;infect&#8221; projects with its idea of licensing, such that if you extend GPL code, you have to open source your work.</p>
<p>This is in part because the Free Software Foundation takes the view that all source code should be free and should be open. You should not be able to take open source software and derive from it, essentially building on the shoulders of giants, and not give back. You also shouldn&#8217;t be able to patent software, the same way that you can&#8217;t patent a mathematical equation.</p>
<p>So with that in mind, what is your view on intellectual property in general? Do you have any sort of philosophical viewpoint about what&#8217;s right between those two extremes?</p>
<p><b>Marc:</b> On the one hand, I can certainly see the FSF&#8217;s point: if you&#8217;re using open source code you shouldn&#8217;t turn around and try to make it proprietary &#8212; you should give back to the community. But I favor the Apache Foundation&#8217;s approach because I believe it actually encourages more innovation. In other words, if I know I can use open source code to create something new and am not restricted in terms of how I can profit from it, I&#8217;m more likely to use it and hence more likely to create something innovative. But if I have too closed a model, it&#8217;s likely someone will come along with an open one that works better. The marketplace is going to influence the business model.</p>
<p>I think individuals and companies should decide what to make open and what to keep proprietary. But open source as a movement has caught on because as an alternative it’s proving to be a faster path to innovation than closed models. The minute it stops being that, it stops being useful. </p>
<p><a name="support"></a></p>
<p><b>Scott:</b> I&#8217;d also be interested in knowing how you guys get support for the open source software that you use. Obviously you&#8217;ve been able to build a highly scalable, functional Web portal, with lots of different features. Obviously you haven&#8217;t been stopped by any significant issues such as &#8220;This doesn&#8217;t seem to be working right&#8221; or &#8220;I don&#8217;t know how this is supposed to work.&#8221;</p>
<p>Obviously you guys have been able to work through any issues. With that in mind, do you use any paid support options from open source vendors? Or do you just go with the model of, &#8220;We&#8217;ve got really smart people and they&#8217;re able to use the resources at hand and figure stuff out?&#8221; How does that work?</p>
<p><b>Marc:</b> We&#8217;ve used MySQL support in the past, and MySQL consultants. But you could argue that any number of ways. You could say that&#8217;s a consultant who just happens to work for MySQL. Or we could hire a really smart guy who knows MySQL really well. We chose the former because of expediency. </p>
<p><b>Sean:</b> I am curious, though, if you have ever been confronted with an &#8220;abandonware&#8221; scenario. Obviously you are working on very stable projects in terms of Apache, WordPress, etc.</p>
<p>And of course you can have the equivalent of &#8220;abandonware&#8221; with closed source as well. For example, with Vista, companies were concerned that XP would no longer be supported past a certain date. In a closed source company it&#8217;s usually not that it&#8217;s abandoned, it&#8217;s just that support ends, which can have the same effect.</p>
<p>With that on the table, I’m curious about how you analyze an open source project to ask yourself the question, &#8220;How stable is this?&#8221; What elements of the project do you look at to say, &#8220;This project looks stable. It looks like it&#8217;s not going to disappear some day&#8221;?</p>
<p>Because sometimes open source projects disappear for political or organizational reasons that have nothing to do with their technical strength. I am curious how you go about that evaluation process.</p>
<p><b>Marc:</b> I think that we have, by and large, stayed with very mainstream pieces of the open source stack. We haven&#8217;t really looked at anything too esoteric where you really have to worry about, &#8220;Is this going to go away?&#8221; or &#8220;If it goes away, I&#8217;ll never get any support and I&#8217;ll never understand this.&#8221;</p>
<p>We have closed source products in the house that we haven&#8217;t gotten vendor support on for five years because the vendor&#8217;s gone out of business. But we don&#8217;t change them very much, and they still work. In some cases they don&#8217;t, but it&#8217;s not that big a deal because we&#8217;ve moved on.</p>
<p>So I tend to not worry about it too much, because I consider the lifespan of most technologies to be fairly short. </p>
<p><b>Scott:</b> So just to say that back in my own words, your model is to prepare for the fact that all technologies are built on somewhat shifting sand?</p>
<p><b>Marc:</b> Correct.</p>
<p><b>Scott:</b> So you do not plan on something being there for 10 years. You assume that you&#8217;re going to be constantly evolving your technology base; you&#8217;re going to want to rebuild using new technology. And that is just part of the way you guys do things.</p>
<p><b>Marc:</b> That&#8217;s right. Because our main goal is to come out with great features and functionality, and the best news and information for our customers. Technology is the means to that end, not an end in itself. We will use what endures and if it doesn’t we’re not going to worry about it.</p>
<p><b>Scott:</b> Right. And you are in the midst of that right now. You mentioned in our earlier conversation that you had developed your own architecture and language, and you are evolving off of that. And from your perspective evolution will just continue and continue and continue.</p>
<p><b>Marc:</b> That&#8217;s right. As long as that language is serving us well in certain areas and is not a problem, we can keep that alive indefinitely. But we&#8217;re always trying to look ahead as far as possible and anticipate what our needs will be. </p>
<p><a name="CMS"></a></p>
<p><b>Scott:</b> Are there open source projects that you currently are not using but are interesting to you? Something that perhaps you might see being used over the next year or so?</p>
<p><b>Marc:</b> When I talk to my peers in the publishing technology space, I find that one of the things everybody complains about is content management systems. It&#8217;s so core and fundamental to what we do, and it was a space that was and still is dominated by few vendors.</p>
<p>Over the last couple of years, you&#8217;ve seen a lot of open source players come on. I&#8217;m not so much thinking of companies like WordPress here, although that is a kind of CMS, but I&#8217;m thinking more along the lines of Druple, Alfresco, and a few other systems. </p>
<p><b>Sean:</b> So you’re talking about the typical competition between products like SharePoint, Alfresco, Druple, and other CMS systems?</p>
<p><b>Marc:</b> Right. I see a lot of movement in the CMS world toward open source solutions. And I think that&#8217;s very exciting, because these sorts of reusable components and frameworks can help an entire industry build better systems much faster than it could before.</p>
<p>A lot of people saw CMS as a competitive advantage, and I&#8217;m not so sure it is. It&#8217;s one of those tools you use. And in the publishing industry, it&#8217;s something that is ripe for collaboration among people who have similar interests and needs, who may be competing with each other for advertisers, but there&#8217;s no discernable reason they should be competing on that level. </p>
<p><b>Scott:</b> So are you seeing publishers actively collaborating with the open source in the CMS area?</p>
<p><b>Marc:</b> It happens sometimes, but not in an open source way necessarily. Somebody will build a system and somebody else will say, &#8220;Hey, I&#8217;ve just spent X million dollars on this system,&#8221; and maybe it&#8217;s with vendor X and maybe we&#8217;ve done it ourselves. &#8220;Do you want to buy it? Do you want to license it?&#8221; And sometimes the answer is no and sometimes the answer is yes, depending on what&#8217;s going on.</p>
<p><b>Scott:</b> Are you seeing these open source CMS players reaching out to publishers at all? Or is it just that the industry sees what the CMS players are doing as interesting?</p>
<p><b>Marc:</b> I think it&#8217;s kind of the latter, because publishers are all over the map. You have a handful of large newspapers like The New York Times that have very specific needs, and then you have a whole bunch of smaller newspapers that have a whole set of other needs. And then you have magazines and blogs and everything in between.</p>
<p>If I&#8217;m an open source CMS provider, I have to sort of figure out where my target audience is first. </p>
<p><b>Scott:</b> Maybe they go after the corporate intranet because they can make the case that every corporate intranet should be looking at their stuff. Whereas publishers are, like you said, a more specific niche. For example, MySQL does quite a bit of nonrecurring engineering to meet the needs of specific clients.</p>
<p><b>Marc:</b> Correct.</p>
<p><b>Scott:</b> These CMS vendors might find themselves in kind of the same situation, where people need certain things to be a certain way for their business.</p>
<p><b>Marc:</b> Yes, and that&#8217;s the last thing you want to get into. I don&#8217;t think an open source solution is writing one custom piece of your program, for one particular company or individual, that doesn&#8217;t have much reuse. </p>
<p><a name="future"></a></p>
<p><b>Scott:</b> That makes me think back to where we started this conversation. The New York Times is investing in WordPress, Citrix bought XenSource, Sun bought MySQL AB. I&#8217;ve seen people predicting that this trend will continue. What are your thoughts?</p>
<p><b>Marc:</b> I think we will see more established companies investing in open source companies for a couple of reasons. The major one is that entrepreneurial software companies have proven that an open source model is a rapid path to innovation. They have also proven that they can find ways to make money from the growth of that model through services..</p>
<p><b>Sean:</b> So how does a company like yours look at the Sun acquisition of MySQL? Does that somehow limit choice? Do you think people have concerns for what this will mean for MySQL, which so many depend on?</p>
<p><b>Marc:</b> Well, I think there&#8217;s always a concern when a big, established company buys a smaller company. The smaller company&#8217;s agenda and what made it special is going to be subsumed by the agenda of the larger company.</p>
<p>And certainly, you have to look at who the acquirer is and say, &#8220;Does this company have a history of treating its acquisitions well and giving them room to breathe?&#8221; And I think Sun&#8217;s track record there has been kind of mixed.</p>
<p>But I think one interesting thing that has happened at Sun in the last couple of years is that it has, in its own way, embraced open source to a much larger extent. It used to be everything was Solaris or bust, and Solaris was a closed OS. But Sun has opened that up and done a lot of other things    embraced Linux, embraced x86. The company is trying to be much more innovative in that way.</p>
<p>So I&#8217;m a little less concerned about it than I would be if a company with a history of proprietary only technology decided it was going to buy this company and then just make it part of the Borg.</p>
<p><b>Sean:</b> Which brings us to the Microsoft offer for Yahoo! I was really surprised that mainstream media, CNN for example, picked up on the fact that Yahoo! is built up on a bunch of non-Microsoft technology.</p>
<p>What do you think that means when you marry those two business units? Do you have thoughts, predictions, comments on what some people might think is a difficult combination? </p>
<p><b>Marc:</b> I think that if they are really smart about it, they&#8217;ll make the merger work by stressing interoperability and really thinking through the ad network issues. It depends on whether they are going to keep the Yahoo! identity alive, which certainly I would if I were them.</p>
<p><b>Scott:</b> Marc, thanks for taking the time to talk.</p>
<p><b>Marc:</b> Thank you.</p>
<img src="http://howsoftwareisbuilt.com/?ak_action=api_record_view&id=135&type=feed" alt="" /><!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em>Bookmark this:</em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://howsoftwareisbuilt.com/2008/03/12/interview-with-marc-frons-cto-new-york-times-digital-part-2/&amp;title=Interview+with+Marc+Frons+%26%238211%3B+CTO+%26%238211%3B+New+York+Times+Digital+%26%238211%3B+Part+2" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://howsoftwareisbuilt.com/2008/03/12/interview-with-marc-frons-cto-new-york-times-digital-part-2/&amp;title=Interview+with+Marc+Frons+%26%238211%3B+CTO+%26%238211%3B+New+York+Times+Digital+%26%238211%3B+Part+2" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://howsoftwareisbuilt.com/2008/03/12/interview-with-marc-frons-cto-new-york-times-digital-part-2/" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://howsoftwareisbuilt.com/2008/03/12/interview-with-marc-frons-cto-new-york-times-digital-part-2/&amp;title=Interview+with+Marc+Frons+%26%238211%3B+CTO+%26%238211%3B+New+York+Times+Digital+%26%238211%3B+Part+2" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://howsoftwareisbuilt.com/2008/03/12/interview-with-marc-frons-cto-new-york-times-digital-part-2/&amp;title=Interview+with+Marc+Frons+%26%238211%3B+CTO+%26%238211%3B+New+York+Times+Digital+%26%238211%3B+Part+2" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.sphere.com/sphereit/http://howsoftwareisbuilt.com/2008/03/12/interview-with-marc-frons-cto-new-york-times-digital-part-2/" rel="nofollow" title="Add to&nbsp;SphereIt"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/sphereit.png" title="Add to&nbsp;SphereIt" alt="Add to&nbsp;SphereIt" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Interview+with+Marc+Frons+%26%238211%3B+CTO+%26%238211%3B+New+York+Times+Digital+%26%238211%3B+Part+2+@+http://howsoftwareisbuilt.com/2008/03/12/interview-with-marc-frons-cto-new-york-times-digital-part-2/" rel="nofollow" title="Add to&nbsp;Twitter"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&nbsp;Twitter" alt="Add to&nbsp;Twitter" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://howsoftwareisbuilt.com/2008/03/12/interview-with-marc-frons-cto-new-york-times-digital-part-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Interview with Mark Osborne, Developer Division Architect, Microsoft</title>
		<link>http://howsoftwareisbuilt.com/2008/03/04/interview-with-mark-osborne-developer-division-architect-microsoft/</link>
		<comments>http://howsoftwareisbuilt.com/2008/03/04/interview-with-mark-osborne-developer-division-architect-microsoft/#comments</comments>
		<pubDate>Tue, 04 Mar 2008 20:05:47 +0000</pubDate>
		<dc:creator>scottswigart</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[developer productivity]]></category>
		<category><![CDATA[feature crews]]></category>
		<category><![CDATA[mark osborne]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[quality]]></category>
		<category><![CDATA[team foundation server]]></category>
		<category><![CDATA[visual studio]]></category>

		<guid isPermaLink="false">http://howsoftwareisbuilt.com/2008/03/04/interview-with-mark-osborne-developer-division-architect-microsoft/</guid>
		<description><![CDATA[Interviewers: Scott Swigart and Sean Campbell
Interviewee: Mark Osborne

Challenges unique to building developer tools
Changes to how  Microsoft is now building its developer tools
Using &#34;Feature Crews&#34; to build product
Predictability, efficiency, and agility in software  development
Preventing &#34;corner cutting&#34; in development
Defining and enforcing quality gates
600 features, and  no single development methodology
Managing  dependencies


In this interview, Scott [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Interviewers:</strong> <a href="http://howsoftwareisbuilt.com/about-scott-swigart/">Scott Swigart</a> and <a href="http://howsoftwareisbuilt.com/about-sean-campbell/">Sean Campbell</a></p>
<p><strong>Interviewee: </strong><a href="http://howsoftwareisbuilt.com/about-mark-osborne-architect-microsoft/">Mark Osborne</a></p>
<ul>
<li><a href="http://howsoftwareisbuilt.com/2008/03/04/interview-with-mark-osborne-developer-division-architect-microsoft#challenges">Challenges unique to building developer tools</a></li>
<li><a href="http://howsoftwareisbuilt.com/2008/03/04/interview-with-mark-osborne-developer-division-architect-microsoft#changes">Changes to how  Microsoft is now building its developer tools</a></li>
<li><a href="http://howsoftwareisbuilt.com/2008/03/04/interview-with-mark-osborne-developer-division-architect-microsoft#featurecrews">Using &quot;Feature Crews&quot; to build product</a></li>
<li><a href="http://howsoftwareisbuilt.com/2008/03/04/interview-with-mark-osborne-developer-division-architect-microsoft#predictability">Predictability, efficiency, and agility in software  development</a></li>
<li><a href="http://howsoftwareisbuilt.com/2008/03/04/interview-with-mark-osborne-developer-division-architect-microsoft#corners">Preventing &quot;corner cutting&quot; in development</a></li>
<li><a href="http://howsoftwareisbuilt.com/2008/03/04/interview-with-mark-osborne-developer-division-architect-microsoft#qualitygates">Defining and enforcing quality gates</a></li>
<li><a href="http://howsoftwareisbuilt.com/2008/03/04/interview-with-mark-osborne-developer-division-architect-microsoft#600features">600 features, and  no single development methodology</a></li>
<li><a href="http://howsoftwareisbuilt.com/2008/03/04/interview-with-mark-osborne-developer-division-architect-microsoft#dependencies">Managing  dependencies</a></li>
</ul>
<p><span id="more-134"></span></p>
<p>In this interview, Scott  Swigart and Sean Campbell talk with Mark Osborne.  Mark is an architect in Microsoft&#8217;s developer  division, and focuses on the productivity of developers building Microsoft&#8217;s  products.</p>
<p><strong>Scott:</strong> Mark, thanks for taking the time to chat.  Tell us a little about your role at  Microsoft.</p>
<p><strong>Mark Osborne: </strong>Sure.<strong> </strong>As an architect in Microsoft’s developer division, I’m  responsible for the productivity of our developers. Basically, I think about  what we can do at a systems and process level to make sure that the division  runs smoothly and can get quality releases out on time.</p>
<p><strong>Scott</strong>: Let me drill into  that a little bit. When I talk to people at Microsoft, I get the impression  that there’s an incredible amount of effort that goes into pretty much every  line of code. Code gets written by a developer, it gets reviewed, and then there  are all sorts of static analysis tools that get run over it, you have to make  sure it doesn’t break the build, bugs are posted against it, and the developers  have to be thinking about all kind of things simultaneously.</p>
<p>They have to consider performance. They have to make sure there aren’t going to  be localization issues with code. They have to follow security best practices,  coding standards, and all sorts of things. Being a developer, and knowing the  kind of code I write, I think, “Man, it must be really daunting to come on board  and write your first line of code at Microsoft.”</p>
<p><strong>Mark</strong>: I think there is a lot of stuff a developer has  to think about. You mentioned pretty much everything that you have to think  about when you’re actually writing code. We have lots of training courses and  lots of best practices available within the company. The developers use those  as resources so they know how to write great code. And of course we have lots  of people with years of experience that know what to do and what not to do.</p>
<p>But at the end of the day, there’s this kind of tension between needing to get  product out the door, and all the stuff that you have to do in order to produce  a quality product. So at a divisional level, we’re really looking at what can  we do to put a process in place that basically helps developers do the right  thing.</p>
<p>This way when schedule pressure is applied to them, for example, they have a  mechanism to push back and say, “No, actually I need to get the performance  right. I need to get the security right. We’re going to have to cut features or  we’re going to have to slip the release, or whatever, in order to be able to  release with quality.”</p>
<p><strong>Scott</strong>: One thing that seems unique to Microsoft, and  unique to the developer division within Microsoft, is that you’ve got people  building the technology that they then use to build the technologies, right? </p>
<p><strong>Mark</strong>: Yep.</p>
<p><a name="challenges"></a><strong>Scott</strong>: People are working on the .Net Framework, they’re  using Visual Studio, but they’re building the next version of the .Net  Framework and the next Visual Studio, which they can’t necessarily run as their  development tool early in the process, but probably want to switch over to  later in the process. How does that work if you’re building the foundation you’re  standing on, to some degree?</p>
<p><strong>Mark</strong>: [laughs] Yeah, we have to build a compiler to  build the compiler. We have that kind of problem. We have a complicated build  process because of that, but as much as possible we try and dog food the  environment that we’re building. So we try and build the tools with the most  current version of the tools.</p>
<p>We have a process called LKG, which basically stands for Last Known Good. Which  means that the stuff that we use to compile everything with, and all of the  tools that we use, we recompile those about once a month. This keeps us  reasonably up to date, but also keeps the division from being shut down by a  problem in the absolute latest build.</p>
<p>But generally, we’re pretty proactive about dog fooding our own stuff.</p>
<p>It depends which part of the product you’re working on. Some  teams may need a second version of something. For example, the debugger team  might have a second version of the debugger. If you break the debugger because  you’re working on it, you need another version you can actually debug with. So  there are a few teams that fall into that situation and need a safe version.  But generally, people just use close to the latest stuff.</p>
<p><strong>Scott</strong>: How do you guys know that you have a good  version? My understanding is there’s a build verification test that runs  nightly on the stuff that got checked in, but then there are much more in-depth  tests that the product goes through, and it either gets labeled a broken  product as a result of those tests, or considered to be a good build.</p>
<p>Talk a little bit about how long it is between the time that a piece of code  gets checked in, and knowing whether you’ve got a good build that you can roll  people forward to.</p>
<p><strong>Mark</strong>: Yeah. We do have this concept of being able to  get through the build clean without any build breaks, and then on top of that  being able to get through a set of build verification tests. And those are  intended to be a representative set of tests that cover most of the core  functionality on the product, so that that build should be usable by anyone in  any one of the product units in order to move forward.</p>
<p><strong>Scott</strong>: Right.</p>
<p><strong>Mark</strong>: So stuff at the periphery could be broken for a certain team, but you’re not going to take down a large amount of the division.  We do a lot of work at the beginning of the product cycle to make sure the  build verification tests are solid.</p>
<p>One of the big changes that we made at the beginning of the 2008 cycle was that  we changed the way that we check in code. We used to have everyone check into a  set of branches, and then those branches were regularly integrated into the  main branch. What that essentially meant is you have in-flight code from a  couple of thousand developers across the division all being squished together  in main.</p>
<p>Even with build verification tests, trying to keep that stable was very, very  difficult. It was just too much stuff moving at once. For Visual Studio 2008,  we adopted a concept of feature complete and feature crews. Features are now  developed in isolated feature branches. A team works to develop that feature,  to test that feature, and there’s a set of about 15 quality gates that they have  to go through before they can say, “This feature is complete.”</p>
<p>And only when that feature is complete can they actually check it into the  product for integration into main. And in that way the mainline branches that  we have for the product actually stay very stable, because what we have going  in is only completed, well-tested pieces of functionality.</p>
<p><a name="changes"></a><strong>Scott</strong>: As a user on the outside, how would I perceive  that change? When Microsoft was building Visual Studio 2005, you guys might have  popped out a community tech preview, a CTP, every six weeks or so. And  sometimes the CTP felt like it was very broken.</p>
<p><strong>Mark</strong>: Right.</p>
<p><strong>Scott</strong>: I think that’s because of what you said,  right? It was a snapshot of what had been checked in. I remember people in  Microsoft’s developer division messaging to the rest of the world, “OK. You’re  going to notice a change with the 2008 product where the CTPs are going to be a  lot more stable, but a feature that you maybe heard about, or are interested in,  is just simply not in the CTP because it just hasn’t gone through all those  quality gates yet.”</p>
<p><strong>Mark</strong>: Yeah.</p>
<p><strong>Scott</strong>: So do I have it? Is that an accurate way to  describe how it works?</p>
<p><strong>Mark</strong>: Yeah. If you work back from the processes that  we put in place, and the reasons that we put those processes in place, one of  our goals was to keep the main branch customer-ready. The idea was that the main  branch would be customer-ready at all times. That way we could just snap a CTP,  and release it to customers, and the customers could have a good experience.</p>
<p><strong>Scott</strong>: Yeah.</p>
<p><strong>Mark</strong>: What was there in a previous CTP should now not  be broken, and the new features should come together in pieces.</p>
<p><strong>Scott</strong>: Right.</p>
<p><strong>Mark</strong>: You may not have an entire end-to-end scenario  early on, but the functionality for a scenario would slowly come together in  stable chunks over time.</p>
<p><strong>Scott</strong>: I know that after 2005 shipped, <a href="http://blogs.msdn.com/somasegar/archive/2005/11/08/490694.aspx">Soma blogged</a> about something called MQ, or  Milestone Quality. It seemed like that’s where a lot of the reworking of the  process happened.</p>
<p>Talk about how the process for building code in developer division changes.  Because obviously you can’t just be changing the process on 2000 developers  willy-nilly, or nobody could track with the current, correct way to do their  job. So how do you go about changing the process itself, in a way that  everybody can keep up with?</p>
<p><strong>Mark</strong>: Yeah, you’re right. We went into MQ and we  looked at what we’d done before, what had gone well, what had not gone so well,  and we came out with three main goals. One is we wanted to be more predictable.  Basically, being able to say what we’re going to do, and then actually go do  it. </p>
<p>We wanted to be more efficient.  We wanted to be able to push more work upstream and not rework stuff over and  over again because we worked on quality too late.</p>
<p>Finally, we wanted to be more agile. We wanted to be able to  be ready to ship when the time was right and not be held hostage by having  hundreds of thousands of lines of code that needed stabilizing before we could  ship.</p>
<p>So those were the main things that we were trying to achieve by the end of MQ.  We went to the division and worked with the division to say, “Here’s what we’re  trying to achieve. What changes would we have to put in place in order to be  able to achieve that?”</p>
<p>Three things came out of that. The first is, don’t defer work. A lot of our  problems with agility and predictability were because work was being deferred.  We had an incredibly long bug tail. A lot of work was happening after we were  supposedly code complete.</p>
<p><strong>Scott</strong>: Right.</p>
<p><strong>Mark</strong>: And then there might be a year of bug fixing  and DCRs and that kind of thing. And another thing that we want to do, as I  said already, is keep the main-branch customer ready. And we wanted to increase  our investment in automation. </p>
<p>What you don’t do is dream all this up in an ivory tower and  then try and dump it on everyone.</p>
<p><strong>Scott</strong>: [laughs]</p>
<p><strong>Mark</strong>: So we had a very inclusive process where we  worked with the managers throughout the entire division. We came with some  ideas and we worked with the management to refine those ideas. We also did  benchmarking around Microsoft; we looked at what was happening elsewhere in  Microsoft and brought some of those ideas in.</p>
<p>And we came up with three things. One was the way that we planned the products.  We wanted less of a peanut butter approach, which is basically adding a little  bit of functionality across the whole surface area. We wanted an intentional  planning process where we decided what the value propositions for the customers  would be, what those experiences would be, and we then broke those down into  features.</p>
<p>I’ve talked about being feature complete before you check in, so we defined a  set of quality gates, which is really a way of describing what it means to be  complete. The feature crew concepts, we actually took from the Office product  group, and we adapted it. The quality gate concept was something that Windows  had started with and we adapted that. We merged those two together and added in  some ideas of our own and then worked with the division to roll that out. We  did a lot of pilots during MQ to refine that as well.</p>
<p><strong>Scott</strong>: So there are two pieces of terminology to  drill into. Define for me what a feature crew is, and also define or give some  examples of actual quality gates that stuff has to go through.</p>
<p><a name="featurecrews"></a><strong>Mark</strong>: Yeah, sure. A feature crew is essentially a  small interdisciplinary team that is assembled to write a feature and to push  that feature to a completed stage. It would normally be a program manager, a  set of testers—maybe five testers—and a set of developers—maybe five developers.  They work together from somewhere between three weeks and ten weeks to design,  implement, test, and move the feature through all the quality gates.</p>
<p>The next question is, what is a feature? And for us a feature is…well, ideally  it’s something that you can present to the customer; it’s a customer  experience. But in reality, it’s an independently testable piece of work,  because in some cases, when you start breaking things down, you may have a  piece of infrastructure that is required by customer-facing features. That  piece of infrastructure work itself is large enough that you might develop that  as an independent feature.</p>
<p>A lot of work goes in to the planning stage, and breaking down what you want to  present to the customer, and how to arrange that as a set of features, and what  the dependencies between those features are.</p>
<p>And then in terms of quality gates, we’ve basically got simple things like  having the functional specification complete, which is basically defining what  the feature is going to do; having a design so developers know what the  architecture is going to look like—how they are going to design that feature,  what the components are going to be; having a test plan and defining how that  feature is going to be tested; and having a threat model—basically  understanding what the security implications of that feature are and ensuring  that it is secure.</p>
<p>And then we have things like being test-complete, which is basically that all  your tests—all the ones that you have designed—have actually passed against the  feature. Test-complete also says that your automated tests are hitting at least  70 percent of the code. And then we have ones around static analysis, pre-fast,  FXCop, and a number of other ones as well.</p>
<p><strong>Scott</strong>: So now you’ve gone through the new process  from end to end. When 2005 shipped, you reflected on the process you had up to  that point, kept things that worked, changed things in processes where you felt  like things could be improved, and have now spent years building a new product  using this new process.</p>
<p>Where are you at now? Are you back to that period of reflection and figuring  out how to evolve the process again or&#8230;?</p>
<p><a name="predictability"></a><strong>Mark</strong>: Actually, this time, we’re actually very happy with  the results. With 2008, we achieved the goals of predictability, efficiency,  and agility that we wanted. There’s still room for improvement, but as far as  the general process is concerned, we’re happy with the results. Our delta  between when we wanted to ship and when we actually shipped is probably an  order of magnitude better than it was for Visual Studio 2005.</p>
<p>This time we’re looking at keeping the same processes in place and just  tweaking them and refining them and basically baking that into the culture of  the division so they become the normal way of doing things.</p>
<p><strong>Scott</strong>: It sounds to me like it’s a lot easier to—not  to oversimplify it—to basically run a report and figure out how far through  your development process you actually are. If you’re saying you know how many  features you’re slated to build—and features can get added or dropped as a  product moves along—and each feature has these quality gates, and you’re not  deferring work, you can look at it and know where you’re at against the plan. </p>
<p>It isn’t a case where you’re  saying, “Well, our feature’s done, but we’ve got all this testing to do, and  all our unit tests are actually broken, so we don’t have the code coverage. But  we think we’re done.” Right?</p>
<p><strong>Mark</strong>: Yeah.</p>
<p><strong>Scott</strong>: You’re not in that situation. It sounds like  you really know better exactly how “done” everything really is, across the  board.</p>
<p><strong>Mark</strong>: Yeah, definitely. We had 600-plus features. We  had, almost to a tenth of a percent, a very good indicator of how far through the  project we were. We would have these planning milestones, where we would look  at the features we intended to implement during that period, and then what we  actually managed to implement, and then we’d look at what our forecast was,  going forward.</p>
<p>We could use that data in order to re-plan, to reset expectations, to say, “Actually,  we were being a little overly ambitious.” And based on what we’ve learned, we  need to cut some stuff that we were planning to put in the release if we still  want to ship by this date. Or maybe we need to add a little bit more focus in  these areas, because things aren’t going as well as we might want to.</p>
<p>So yeah, breaking it down into features, and actually knowing that a feature  was done when it was checked in, gave us high-fidelity data around which to do  re-planning, which definitely helped us to be more predictable and actually hit  our RTM goal on time.</p>
<p><strong>Sean</strong>: Based on the primary research we’ve done over  the last nine months, if you talk to somebody in the open-source community,  they would say, “Well, we have rigorous processes for checking in code too.”</p>
<p>But they differ, right? If you’re talking about security, people will talk  about “many eyeballs” versus the Security Development Lifecycle. Around  usability, if you talk to someone from OpenOffice, they’ll say, “It’s the voice  of our users on the mailing lists and the forums.” And there’s a certain  legitimacy to everybody’s argument.</p>
<p>But I’m curious, having been through the whole process, end to end, how much of  your ability to push through a level of engineering excellence do you think was  predicated on having a closed-source organization, where you can really kind of  set down some pretty clear guidelines, and have people follow them? You want  them to play ball, and you want them to feel like their voice is heard. But do  you think the same kind of rigor could have been applied in an open source  model, where you can scrutinize the code, but you can’t control the process  that was used to create the code?</p>
<p><strong>Mark</strong>: It’s difficult to say, because when you’re  running a large division, command and control is not the best way of getting  stuff done. You’re really depending on the energy and excellence of the  engineers. What we’re doing is trying to put into place a system that encourages  people to do the right thing. They already knew what the right thing was, but  like I said, they’re under conflicting pressures.</p>
<p>The business pressures to get a product out at a particular time can offset an  engineer’s natural, innate desire to do excellent work. A lot of what we did  with the feature complete concepts, and the quality gates, was really around  putting a system in place, at a divisional level, that allows people to live up  to that expectation. I’m not sure how much being a corporate entity versus an  open-source project plays into that.</p>
<p><strong>Sean</strong>: Can you give me an example of a time you felt  the processes you put in place was able to assist a developer, or a team, to  say, “I know I’d love to have this feature in, but we’re going to have to put that  off, or we’re going to have to delay it to a later CTP, because I just don’t  really feel we’re hitting the quality mark.”</p>
<p><a name="corners"></a><strong>Mark</strong>: Code coverage is a good example. It’s very easy  to skip on the testing side of things. Testing tends to get squeezed during the  product cycle. Being able to write all the automated tests and get the code  coverage that you need can be very difficult. You’ve got all of these other  things that you’re trying to balance. The normal thing that happens is  development rushes ahead, and test gets left behind, right?</p>
<p><strong>Scott</strong>: Right.</p>
<p><strong>Mark</strong>: This happens all of the time. What happens in  the structure that we have now is that there’s this feature crew, with some  developers and some testers in it; if test gets left behind, the feature crew can’t  complete. You essentially have five devs there who are stuck, and they can’t  get out of this feature crew, because they haven’t reached their code coverage  goals.</p>
<p>So what happens in that case is that rather than leaning on the test guys to do  more automation at the end of the cycle, you start having the discussions at  the beginning of the cycle about how everything’s going to get done, and how  the feature’s going to be built to support automated testing.</p>
<p>You get load leveling. You actually get developers helping out to produce  automated tests, and helping to get code coverage up. It’s a much smaller set  of people. It’s not the entire division saying “We need to hit 70 percent”; it’s  a group of ten people who are working closely together, saying “What could we  do to get to 70 percent?”</p>
<p>When you’ve got a small number  of people trying to solve a problem like that, it’s much easier to turn that  around, find solutions, and be creative. You get this accountability for the  quality of the feature that runs across the whole feature crew. Everyone pulls  together in order to achieve that result.</p>
<p><strong>Sean</strong>: Where did the  Engineering Excellence team get its inspiration from? Was this driven by an  internal feeling that things were not going right? When you had those initial  meetings and you said, “We really need to fix this,” was there anything you  were trying to model from?</p>
<p><strong>Mark</strong>: Yeah. I think the  real start of it was going through the Visual Studio 2005 development process  and not feeling particularly excited about how it went at the end. The product  that we produced was great, but we didn’t enjoy the process.</p>
<p><strong>Sean</strong>: Right. The testers  have knee bruises from being dragged across the finish line, and being told to  eat pizza at midnight. You know what I mean? To get stuff done.</p>
<p><strong>Mark</strong>: Yeah. So it’s  really coming out of that and saying, “How can we do better? What can we do to  really improve the game here?”</p>
<p>And I’ve got to give a lot of credit to Soma for sponsoring this effort, for  actually stopping and saying, “We’re going to take three months out and think  about this problem. We’re going to do an MQ. We’re going to invest in our  engineering. We’re going to try and do better next time.” And it really is  difficult, when you’re running a business, to say, “Let’s take three months out  and work on improving our engineering processes.”</p>
<p><strong>Mark</strong>: Yeah.</p>
<p><strong>Scott</strong>: And you probably  maybe only know the answer to this anecdotally, but having been through the  2005 development cycle and having been through the 2008 cycle, do you feel like  you guys made up that three months, just in having a smoother, more predictable  process?</p>
<p><strong>Mark</strong>: Yeah, we were  always aiming for kind of a zero-sum game, which was to improve the process  enough to at least get that time back. We built a schedule for VS 2008 that had  a far more aggressive endgame. We closed down much more quickly than we did for  2005, and we were able to do that because of the investments that we’d put in  up front.</p>
<p>We got a lot of stuff into VS 2008, and we managed to get that stuff in on time  and not have this sort of unpredictable bug tail at the end.</p>
<p><a name="qualitygates"></a><strong>Scott</strong>: Are the quality gates all mandatory across all  features, or are some of them kind of optional?</p>
<p>One that you mentioned was a threat model. And I think, OK, well, if you’re  right-clicking in the IDE and that’s supposed to make a pop-up menu appear, is  that the kind of thing that somebody actually has to do a threat model for? Or  are there certain things that don’t really warrant certain steps?</p>
<p><strong>Mark</strong>: The reality is, there are a thousand things you  have to think about. And when we created the quality gates, it was really about  questions like “Where do we really want to focus people’s attention? What are  the mandatory things that we need to be successful, that are true for everyone  in the division?”</p>
<p>So, really, the quality gates are mandatory for every feature, but the amount  of effort that may go into satisfying a quality gate for each feature may be  different, right? If you do the threat analysis on something that is deep in  the user interface and is building on a bunch of framework code, then it may be  quite easy to say, “Look, we’re not doing anything new or risky.” </p>
<p><strong>Scott</strong>: Right.</p>
<p><strong>Mark</strong>: We’re not producing any new threats. Threat  model done, right? Whereas if you’re introducing a new wire protocol, then you’ve  got a lot of work to do. But the important thing is, by having it on a list, by  actually having a person have to go and check the box and say “Yes, I’ve done  due diligence on this line item,” it doesn’t get missed for the features where  it’s critically important.</p>
<p><strong>Scott</strong>: Do you think there are cases where people were  working on a feature and they thought, “There’s zero risk on this. This thing  doesn’t listen on the network, it doesn’t parse a file. It doesn’t take user  input, no threats.” But then when they actually got to that stage in the  process, somebody said “Well, but what about this?” And people went “Oh, yeah,  yeah, I guess there is an attack vector here that we maybe wouldn’t have caught  if we hadn’t stopped to think about it.”</p>
<p><strong>Mark</strong>: Yeah, and I think that’s really the point—to  make sure that people at least sit down and think about it once. They don’t  just sort of push it to the bottom of their priority list and never quite get  to it. And also, especially for the threat models, we had a separate process to  go and identity all of the features that had an elevated risk.</p>
<p>The ones that had bytes on the wire, and that kind of thing. We did an extra  deep dive into the threat models for those features, to make sure that the due  diligence had been done, and things were going to be secure. So we had that  second level. Again, because we had this inventory of features, it was possible  to do that process.</p>
<p><strong>Scott</strong>: Like you said, there are a thousand things  that people need to think of. When a developer comes in who’s never worked for  Microsoft before, how do they get up to speed? I know that you guys have  formalized training, but there’s a lot of on-the-job education that happens  too. How do you get new people up to speed on the Microsoft way of building  products?</p>
<p><strong>Mark</strong>: I think it’s a combination of training, and the  groups that they’re working with providing that peer feedback, code review,  design review, and helping to provide them with the experience to do a good  job. At a divisional level, we try and address the problems that are going to  help the division to be more effective. But what happens at the team level we  leave very much to the product units and the individual teams.</p>
<p>So we have a bar, we have a set of expectations that we expect them to meet,  but how they achieve those expectations, how they run the teams, is really up  to the teams. Just to give an example of what I’m saying here, a lot of teams  use agile methods—Scrum and Test Driven Development—in order to run their  feature crews, but at a divisional level we don’t mandate that they follow any  particular approach. It’s up to that team to decide what the appropriate  approach for the feature that they’re working on is.</p>
<p><a name="600features"></a><strong>Scott</strong>: Which to me is kind of fascinating, right? I  mean, on one hand, it’s cool that you’ve got a lot of autonomy, and teams can  figure out what they want. On the other hand, people get so religious about  agile methodology or think test driven development is the only way possible to  build code. You have this product with 600 new features, thousands of  developers, thousands of people working on it, and one team might have said, “I  don’t know, waterfall’s always worked fine for us.” And another team says, “Test-driven  development is the only way to go.”</p>
<p>At the end of the day, regardless of which methodology they’re using, they’ve  all gone through the same gates to get those particular lines of code checked  into the source tree and building on the mainline build.</p>
<p><strong>Mark</strong>: We need a process that enables the division to  be effective and meet its goals, but we also need to allow the individual  developers and the individual teams, and the business leaders in those areas,  to be passionate and creative, and not be held down by process. So at a  division level, we don’t want to micromanage what’s happening.</p>
<p>We want to provide just enough structure that it all comes together nicely at  the end, while allowing the teams to be creative. This is the developer  division, and development methodology is something that people are excited  about in this division, so we want to allow teams to experiment, to try out  different techniques, different development methodologies, different tools. We  don’t want to mandate a one-size-fits-all approach.</p>
<p>But at the end of the day, we need all of those features to come together and  fit together and be able to ship at the same time. So that’s really what our  goal was in building this process.</p>
<p><strong>Scott</strong>: I know that Microsoft takes pride in eating its  own dog food, right? For the 2005 time frame, you had some brand new types of  products. You guys were rolling out a new source control system, for example.</p>
<p>You were rolling out kind of a new command line build technology, MSBuild. You  guys were rolling out work items and defect tracking.</p>
<p>Out of that stuff, work items, source control, and build system, what are you  guys using? I realize that you have to have working tools to have a working  build process, but at the same time, you want to be using your own stuff that’s  in development, but you can’t really expect a source repository that’s in  development to be bug free&#8230; So talk about that a little bit.</p>
<p><strong>Mark</strong>: We try and dog food that stuff as aggressively  as possible. It’s my job to make sure that we strike an appropriate balance  here. The division has to continue to be productive and yet we want to be as  aggressive as possible.</p>
<p>So in 2005 we had a good chunk, maybe a third, maybe a half of the division  using the Team Foundation System source control system, and the other half was  using Source Depot. In the next product cycle, we’re going to have the whole  division using the Team Foundation System source control. The way we used both  was through mirroring, where we have certain branches mirrored between the two  source control systems, which allowed us to exist in both worlds at the same  time.</p>
<p>That allowed us to be aggressive about our dog fooding, but also hedge our bets  a bit. As far as the work item tracking was concerned, we used a similar  approach: we mirrored everything between TFS work item tracking and Product  Studio, which is our internal bug-tracking tool. And that enabled people to  exist in both worlds.</p>
<p>For the feature planning, we entered all of the features into TFS. We could  enter that it had completed quality gates, all of that was done inside TFS work  item tracking. That system provided us with the ability to define new work item  types, which we didn’t have with Product Studio. So we try and use as much of  our own stuff as possible.</p>
<p><a name="dependencies"></a><strong>Scott</strong>: It seems like one challenge with feature crews  is dependencies. If my feature is dependent your feature, but you’re not 100  percent done, then your feature doesn’t show up in the mainline build for me to  build on top of. That seems like that would be a big challenge.</p>
<p><strong>Mark</strong>: Yeah, the best approach to that is to identify  those problems during the planning stage so that you can architect your  features in such a way that it takes those dependencies into account. So either  the thing that everyone’s dependent on is produced first, or the codependent  components are being developed at the same time in the same feature crew.</p>
<p>If you can architect the order and the dependencies between the features  correctly, then you can deal with the fact that the code has a lot of cross-dependencies  between different components. If you fail to do that, because you didn’t  anticipate it up front, then you end up using sort of backdoor mechanisms to  share code, and then you have to synchronize when you check in the features.</p>
<p>We had a couple of instances where things were very complicated, and we had  teams mixing code together outside of the checked-in product so that they could  use each other’s interfaces, but then when it came to check-in, they had to  stage the order so that one team went first and then the other team went  afterwards.</p>
<p>I refer to those as coping mechanisms. Ideally, everyone plans this perfect  feature crew model, where everything has nice dependencies and is done in  serial and there’s no overlapping. And then there are these coping mechanisms  which allow things to happen in parallel in real life when things don’t quite  go perfectly, so there’s some built-in slack there that allows people to still  get the job done even if they didn’t do a perfect job of planning.</p>
<p>Actually, this was a learning experience for us, so my hope is next time, when  we’re doing the planning, we’ll think about these things more carefully and we’ll  have fewer instances where we have to rely on coping mechanisms in order to get  things done.</p>
<p><strong>Scott</strong>: It seems like one of the natural outputs of  this is that you guys would have to do more thought up front about the  dependencies, because you wouldn’t be able to depend on partially complete code  checked in.</p>
<p><strong>Mark</strong>: Yeah, and that’s where it’s important to  understand that a feature doesn’t have to be a complete chunk of user-facing  functionality, right? You may want to slice it into little pieces so that you  can start to satisfy some of those dependencies earlier.</p>
<p><strong>Scott</strong>: Oh, sure. I imagine a lot of stuff in the .NET  Framework itself is a feature, but it’s only a code, it’s only an API that  other stuff is going to use.</p>
<p><strong>Mark</strong>: Yeah. If it’s necessary, you might even create  a shim or a subbed-out API so the other people can start coding against it,  even though it’s not hooked up at the back end, and maybe another feature will  then hook that up and complete the scenario.</p>
<p><strong>Scott:</strong> This has been a  great conversation. Thanks for taking the time to chat.</p>
<p><strong>Mark:</strong> Thank you.</p>
<img src="http://howsoftwareisbuilt.com/?ak_action=api_record_view&id=134&type=feed" alt="" /><!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em>Bookmark this:</em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://howsoftwareisbuilt.com/2008/03/04/interview-with-mark-osborne-developer-division-architect-microsoft/&amp;title=Interview+with+Mark+Osborne%2C+Developer+Division+Architect%2C+Microsoft" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://howsoftwareisbuilt.com/2008/03/04/interview-with-mark-osborne-developer-division-architect-microsoft/&amp;title=Interview+with+Mark+Osborne%2C+Developer+Division+Architect%2C+Microsoft" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://howsoftwareisbuilt.com/2008/03/04/interview-with-mark-osborne-developer-division-architect-microsoft/" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://howsoftwareisbuilt.com/2008/03/04/interview-with-mark-osborne-developer-division-architect-microsoft/&amp;title=Interview+with+Mark+Osborne%2C+Developer+Division+Architect%2C+Microsoft" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://howsoftwareisbuilt.com/2008/03/04/interview-with-mark-osborne-developer-division-architect-microsoft/&amp;title=Interview+with+Mark+Osborne%2C+Developer+Division+Architect%2C+Microsoft" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.sphere.com/sphereit/http://howsoftwareisbuilt.com/2008/03/04/interview-with-mark-osborne-developer-division-architect-microsoft/" rel="nofollow" title="Add to&nbsp;SphereIt"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/sphereit.png" title="Add to&nbsp;SphereIt" alt="Add to&nbsp;SphereIt" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Interview+with+Mark+Osborne%2C+Developer+Division+Architect%2C+Microsoft+@+http://howsoftwareisbuilt.com/2008/03/04/interview-with-mark-osborne-developer-division-architect-microsoft/" rel="nofollow" title="Add to&nbsp;Twitter"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&nbsp;Twitter" alt="Add to&nbsp;Twitter" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://howsoftwareisbuilt.com/2008/03/04/interview-with-mark-osborne-developer-division-architect-microsoft/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Interview with Scott Densmore &#8211; Microsoft&#8217;s CodePlex and Patterns &amp; Practices</title>
		<link>http://howsoftwareisbuilt.com/2008/02/20/interview-with-scott-densmore-microsofts-codeplex-and-patterns-practices/</link>
		<comments>http://howsoftwareisbuilt.com/2008/02/20/interview-with-scott-densmore-microsofts-codeplex-and-patterns-practices/#comments</comments>
		<pubDate>Wed, 20 Feb 2008 22:56:33 +0000</pubDate>
		<dc:creator>scottswigart</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[codeplex]]></category>
		<category><![CDATA[enterprise library]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[patterns and practices]]></category>
		<category><![CDATA[scott densmore]]></category>

		<guid isPermaLink="false">http://howsoftwareisbuilt.com/2008/02/20/interview-with-scott-densmore-microsofts-codeplex-and-patterns-practices/</guid>
		<description><![CDATA[In this interview, we talk to Scott Densmore about Microsoft&#8217;s CodePlex and the Patterns &#038; Practice&#8217;s work on the Enterprise Library Version 4:

Forking the Enterprise Library
How Microsoft product teams are using the CodePlex repository for open-source code.
How CodePlex is different from SourceForge
Favorite CodePlex projects
How CodePlex itself is community driven


Scott  Swigart: We talked to some [...]]]></description>
			<content:encoded><![CDATA[<p>In this interview, we talk to Scott Densmore about Microsoft&#8217;s CodePlex and the Patterns &#038; Practice&#8217;s work on the Enterprise Library Version 4:</p>
<ul>
<li><a href="http://howsoftwareisbuilt.com/2008/02/20/interview-with-scott-densmore-microsofts-codeplex-and-patterns-practices/#entlibfork">Forking the Enterprise Library</a></li>
<li><a href="http://howsoftwareisbuilt.com/2008/02/20/interview-with-scott-densmore-microsofts-codeplex-and-patterns-practices/#prodcodeplex">How Microsoft product teams are using the CodePlex repository for open-source code.</a></li>
<li><a href="http://howsoftwareisbuilt.com/2008/02/20/interview-with-scott-densmore-microsofts-codeplex-and-patterns-practices/#difffromsourceforge">How CodePlex is different from SourceForge</a></li>
<li><a href="http://howsoftwareisbuilt.com/2008/02/20/interview-with-scott-densmore-microsofts-codeplex-and-patterns-practices/#favprojects">Favorite CodePlex projects</a></li>
<li><a href="http://howsoftwareisbuilt.com/2008/02/20/interview-with-scott-densmore-microsofts-codeplex-and-patterns-practices/#codeplexcommunitydriven">How CodePlex itself is community driven</a></li>
</ul>
<p><span id="more-131"></span></p>
<p><strong>Scott  Swigart</strong><strong>:</strong> We talked to some  people in Patterns and Practices about the Enterprise Library, which is probably the biggest piece of color that Microsoft released under an  OSI-approved license. I think, if I remember right, you had your own sort of  fork of the Enterprise Library and were rewriting some pieces of it. Is that  correct?</p>
<p>
  <strong>Scott  Densmore</strong><strong>:</strong> This is true, yes.
</p>
<p><strong>Scott  Swigart</strong><strong>:</strong> Talk about that a  little bit. The Enterprise Library is out on CodePlex. P&amp;P had gone a certain direction with it, and you decided to fork it.
</p>
<p><strong>Scott  Densmore</strong><strong>:</strong><a name="entlibfork"></a> When we built version  1 and version 2 of the Enterprise Library, we made some decisions. After a  while you start thinking, &quot;Maybe it&#8217;d be easier if we did things a  different way.&quot; One of the things that came up a lot, just reading the  forums and talking to customers, was why don&#8217;t we have a container model? How  do you manage the dependencies between these libraries? 
</p>
<p>When  we designed it, we thought about how to do dependency injection. Dependency injection  has a lot of different pieces, and one of the ways you can do it is through  factories. That&#8217;s the way we did it in Enterprise Library 1 and 2.
</p>
<p>After  that, I started thinking about some of the stuff we did in CodePlex and some of  the things that we did with Object Builder. I started wondering how we could  put a container in here and have all these libraries tied together through some  container mechanism, rather than through all these configuration files and  factories. 
</p>
<p>I  wanted to make a proof of concept and build a container on top of Object  Builder, and use that container to tie all those libraries (caching, loggings,  data access, etc.) together through that container. Instead of having huge  configurations and having all those dependencies managed through a  configuration file, I wanted to do it through a container. That would make it  easier to plug in and out different implementations of logging, for example. If  I wanted to use something different than what comes with Enterprise Library but  still wanted to use some of the Enterprise Library functionality, I could do it  with a container. That was the basis of having that fork of Enterprise Library.
</p>
<p>After going through a couple of alterations, I also wanted a way to implement  the container and not change the external API of Enterprise Library. This  wouldn&#8217;t break people who are using the Enterprise Library, but it would let  you use it inside the container. The container would be an independent thing.
</p>
<p><strong>Scott  Swigart</strong><strong>:</strong> Because the Enterprise  Library was open source and was available on CodePlex, anybody could have done  this, right? The work you were doing on the Enterprise Library you didn&#8217;t have  to be a Microsoft employee to do. Anybody could go out there and make a fork  and maintain it, and even try to build community around their fork.
</p>
<p><strong>Scott  Densmore</strong><strong>:</strong> In my first version, I  basically did a rewrite to remove a lot of the factories and make it smaller.  And I had a couple of people who were very interested in that and used it,  saying this was an interesting way to solve the problem.
</p>
<p>I have also talked to other people who&rsquo;ve said, &quot;Oh, we did this too, and  we forked our own version.&quot; Anybody in the community can do this. You  don&#8217;t have to be a Microsoft employee, although some of the Microsoft teams  that use the Enterprise Library have forked it and maintain their own version.
</p>
<p><strong>Scott  Swigart</strong><strong>:</strong> Now you&#8217;re back with  Patterns and Practices and working on version 4. You&#8217;ve said you hope this will  be the last version, because ultimately you just want it to be part of the  platform. You want it to be part of the .NET framework class libraries, I am  guessing.
</p>
<p>What do you think is the advantage of doing it that way versus the other  direction you could go, which is that it stays a library and actually becomes  owned by the community and would have committers on it who aren&#8217;t Microsoft  employees?
</p>
<p><strong>Scott  Densmore</strong><strong>:</strong> When I say that it  should be in the platform, I think there are two pieces that go into that. I  don&#8217;t think everything will go into the platform. I think it is interesting to  have the platform own the infrastructure pieces that make it easier to build  these assets. But the assets themselves I would love to see out in the  community, and to have them be built by the community. It would be interesting  to have the community own it because they are the ones working with the  Enterprise Library every day. We here at Microsoft build it, and we use it, but  we don&#8217;t necessarily use it in the same way as our customers do. 
</p>
<p>They  would actually be able to contribute to it more often than the Microsoft plan  probably allows us to. We have a cycle we have to ship on and we have  commitments that we have to keep. It is much easier for the community to do  that themselves and be able to drive it themselves than it is for us to do it.
</p>
<p>We can provide the infrastructure to make it easier for them to drive it, but I  think it is awesome that they can drive it themselves. When I say I don&#8217;t want  to ever do another version of Enterprise Library, I envision it as driving some  of the infrastructure into the platform, and then letting the community take  the rest of it on. 
</p>
<p><strong>Scott  Swigart</strong><strong>:</strong> I don&#8217;t think Microsoft  has ever done what you are talking about. On the one hand, companies want to  have community involvement in their stuff, but on the other hand, they don&#8217;t  necessarily want to lose control over it.
</p>
<p>If you take a look at something like the Linux kernel, you will have employees  at IBM, Red Hat, and other places who are staffed full time writing code. But  it is not entirely up to them whether or not their code makes it into the  kernel. It has to pass this community bar, it has to pass the bar of these  maintainers, who probably aren&#8217;t IBM or Red Hat employees.
</p>
<p>If you look at the way an Apache project is governed, for example, each of the  60 Apache projects has to have maintainers from at least three different  companies, so that no one company ultimately owns it.
</p>
<p>If you take a look at the way that Sun does it, on the other hand, it is  exactly the opposite. For some Sun open source projects, the governance  documents say that it has to be controlled by Sun employees. If those employees  leave the company, then the people governing the project would be replaced by  people who work for Sun.
</p>
<p>Across open source projects, there are a lot of different ways that projects  can work. Can you foresee a day when projects like the Enterprise Library have  people in Microsoft who are contributing to them but the actual maintainers  might not be Microsoft employees? They might actually be people in the  community, people in other companies who&#8217;ve invested in this, and so Microsoft  would just be a contributor like everybody else.
</p>
<p><strong>Scott  Densmore</strong><strong>:</strong> That is hard to say.  It would be nice to see that, but unfortunately, since I am not a lawyer, I  don&#8217;t know all the realities of it. I don&#8217;t even play one on TV. But I do  believe that there is this idea that Microsoft can help foster the community. 
</p>
<p>I think Microsoft can help foster that and help put that in place. Microsoft  could help recruit some of those people, just like we have the MVP nominations.  That could help build a community around these projects and we could say that  these people are probably the best initially at governing the project. 
</p>
<p>The project gets started, and it is put out there, and we need to think about  how you build the community and get everybody involved, and make sure that  everything is up and running. As you send it on its way, it is not going to  just fall on its face. Or if it does, it happens on the merits of the project,  not because you didn&#8217;t give it a chance.
</p>
<p><strong>Scott  Swigart</strong><strong>:</strong> There are a lot of  examples of that, where people just throw the source code out there and say,  &quot;Well, we hope somebody in the community picks it up,&quot; and nobody  does. There is definitely a right way to do those kinds of things.
</p>
<p>Let&#8217;s switch gears. We mentioned CodePlex, but talk about it more broadly for  people who don&#8217;t know what CodePlex is, don&#8217;t know what kind of a playground it  provides for people interested in working on open source projects.
</p>
<p><strong>Scott  Densmore</strong><strong>:</strong> CodePlex is a great  collaborative development environment. CodePlex is a way for you to go out,  start a project, and then try to build a community around your project. You can  interact with other projects that are on the site and be able &ndash; through  tagging, your forums, and other things &ndash; to build that collaborative  environment.
</p>
<p>For example, if I want to start a project, I can relate it to another project  through my own taxonomy of tagging. I can let other people contribute to it.  There are no ads on CodePlex, it is not like SourceForge with ads. Not that ads  are a bad thing, but CodePlex is just clean and easy to use.
</p>
<p>CodePlex is big about building the community around your projects. That is the  biggest focus you see. CodePlex itself is very community-driven. I think the greatest  thing we have is that I can create an issue, and then people can vote on it.  CodePlex really listens to those, and that is what drives the site. If you put  something out there and people vote on it, we look at that and say, &quot;Wow,  people really want to have this feature; we should do this, because it is the  highest voted item.&quot;
</p>
<p><strong>Sean  Campbell</strong><strong>:</strong> What are some examples  where CodePlex has influenced official Microsoft products?
</p>
<p><a name="prodcodeplex"></a><strong>Scott  Densmore</strong><strong>:</strong> I know with SQL Server  and SharePoint, a lot of different teams are using it as a way to build a  community around specific deliverables that are not necessarily pure product  features. 
</p>
<p>The product groups are still learning how to do this, but they want to build a  community around their products, and around some of the things that they ship  out of the regular release cycle. Look at the AJAX Control Toolkit. They have  people who are non&#8209;Microsoft who commit to the toolkit. People download  and use that the toolkit everyday. <strong></strong>
</p>
<p>They  also have Microsoft people here in Redmond looking at it, triaging issues and  monitoring the forums. They built a successful community around the AJAX  Control Toolkit.
</p>
<p><strong>Sean  Campbell</strong><strong>:</strong> It is rare to find a  project that is completely disconnected from anything that came before it.  There is some level of inspiration from what existed before.
</p>
<p>When you guys started CodePlex and you looked at something like SourceForge or  Google Code, what did you look at and say, &quot;That would be great to  emulate, but this thing I don&#8217;t think they&rsquo;ve done so well, so we&#8217;ll take that  in a different direction&quot;? 
</p>
<p><strong><a name="difffromsourceforge" id="difffromsourceforge"></a>Scott  Densmore</strong><strong>:</strong> When you look at  SourceForge, and there are other things like Collab.Net, one of the things that  you think about is user experience and navigation, and what are the features  that drive you most.
</p>
<p>One of the things that CodePlex wanted to do was keep it simple. That&rsquo;s what  everybody always says, but we wanted to keep it simple enough and provide  useful features. When we looked at SourceForge, we decided we didn&#8217;t want a  bunch of ads. We wanted something that allowed you to showcase your project,  and have feature requests, and let people log issues around the project. How do  you do that in a way that&#8217;s easy to use? 
</p>
<p>We were using Team Foundation Server. That lets you connect right from the  Visual Studio IDE. We have other clients that connect to TFS. There are even  ones that work on Linux and Mac. There&#8217;s also a command line TFS client for  Windows.
</p>
<p>We wanted to let people vote for features. We wanted to provide an easy place  to put the releases that was easy to manage. We did simple things with the UI  that made the site much easier to use. We have people who come to the site  saying, &quot;Hey, I&#8217;ve heard this is a cool project. I&#8217;m not necessarily a  contributor. I&#8217;m just a user. I&#8217;m going to come to CodePlex to find it. I can  get to the default release, and I can easily find the one I&#8217;m looking  for.&quot; Project owners have the ability to customize the text for their  project. They have a wiki for the contributors and the coordinators of the  projects so that they can talk about their project.
</p>
<p><strong>Sean  Campbell</strong><strong>:</strong> Where do you think  CodePlex hasn&#8217;t quite achieved the level of success you think it could? What&#8217;s  the next step for CodePlex? 
</p>
<p><strong>Scott  Densmore</strong><strong>:</strong> I think one of the  things that would be nice is a community around CodePlex and the UI itself. I  think there are even better ways we can go about making it simple. People still  get confused and ask, &quot;How do I go to a project and post something to the  forum for the project? When I come to the home page of CodePlex, I don&#8217;t really  know how to get to the project.&quot; It&#8217;s amazing the amount of questions you  will get about Ent Lib, or the AJAX Control Toolkit, that get posted to the  actual discussion forums of CodePlex itself.
</p>
<p><strong>Sean  Campbell</strong><strong>:</strong> So it sounds like it&rsquo;s  a discoverability piece.
</p>
<p><strong>Scott  Densmore</strong><strong>:</strong> Right. So making that  experience better is key. I think the other thing is building the community  around CodePlex itself: how do you get coordinators and developers in touch  with one another, how do you build that community? If I am a developer and I am  looking for projects to work on, how do I find one? Who do I talk to and what  do I do?
</p>
<p>I  think there are different kinds of personas, classifications of people, who use  open source. There are the people who start a project. There are people who  want to contribute to a project. There are people who lurk around projects.  There are people that just go, &quot;Oh, this project does what I need. I&#8217;ll  just use it.&quot;
</p>
<p>So how do you build a community around that? Maybe CodePlex could have an  online chat, or let you view the availability of people on the project. Maybe  you could use CodePlex and say, &quot;Hey, I&#8217;d like to work on a project, or I  would like to start a project. Who would be willing to help out?&quot;
</p>
<p><strong>Sean  Campbell</strong><strong>:</strong> What are some CodePlex  projects that have caught your attention?
</p>
<p><strong><a name="favprojects" id="favprojects"></a>Scott  Densmore</strong><strong>:</strong> There are two projects  that I was blown away by. One is called the Vista Battery Saver. Some guy went  through and found all the services and things that, if turned off in Vista,  help save battery power on your laptop.
</p>
<p><strong>Sean  Campbell</strong><strong>:</strong> I came across that  project when I was reading a post where some guy was complaining about the fact  that Vista just soaks up the battery when you run it in boot camp on a Mac.
</p>
<p><strong>Scott  Densmore</strong><strong>:</strong> It just organically  grew, and it was the most popular project for a couple of weeks. It&#8217;s still  very popular. That one just blew me away. It is something very useful for  people, but it is not something that is like an AJAX Control Toolkit. It is not  something that is true software in terms of what I do day to day. It is more of  an end-user thing. It is not something I would have thought would have ever  made it up on CodePlex, but it did, and that is cool.
</p>
<p>The other one is &ndash; I am sure you&rsquo;ve heard of this game called World of  Warcraft?
</p>
<p><strong>Sean  Campbell</strong><strong>:</strong> Oh yeah.&nbsp; [laughs]
</p>
<p><strong>Scott  Densmore</strong><strong>:</strong> They built a Visual  Studio package for writing World of Warcraft add&#8209;ons. A Microsoft guy in  the DPE put this package out there, and I was like, are you kidding me? I can&#8217;t  believe this. It is just not something you would expect to come from Microsoft. 
</p>
<p>But there is a developer community out there for writing LUA. World of Warcraft  isn&#8217;t the only thing that uses LUA. This guy built a package for the Visual  Studio IDE, for LUA scripting. There are a lot of open source projects that are  LUA based. For example, there&#8217;s WowAce, where you can get a lot of LUA  scripting for </p>
<p>World of Warcraft. They built in pieces for using the WowAce  libraries in this Visual Studio package.
</p>
<p><strong>Sean  Campbell</strong><strong>:</strong> These seem like  precisely the types of projects that would be somewhat difficult to incubate  inside a pure closed source development environment.
</p>
<p>I mean if you look at the power management project, that&#8217;s potentially  difficult because Microsoft has OEM partnerships, you have issues with  discussing the sanctimonious nature of battery life on a given platform and how  many hours it really has. In Warcraft, that one is a little more obvious,  right?
</p>
<p>You&#8217;re not going to take some dev&#8217;s time, even if they are working on Express  or some kind of community-facing product, and say, &quot;Go build this plug&#8209;in  for Warcraft.&quot; It seems to me that&#8217;s a benefit Microsoft gets from having  an open source portal attached to a closed source company. 
</p>
<p><strong>Scott  Densmore</strong><strong>:</strong> That&rsquo;s exactly right.  I think if you look at the add&#8209;in for scripting for World of Warcraft,  it&#8217;s not something that Microsoft is interested in doing. But the fact that  someone is doing it helps promote Visual Studio as a platform for doing these  types of things. 
</p>
<p><strong>Scott Swigart</strong><strong>:</strong> How much does  the community influence the way CodePlex itself is going to get enhanced and  the features that are going to be added?
</p>
<p><strong><a name="codeplexcommunitydriven" id="codeplexcommunitydriven"></a>Scott  Densmore</strong><strong>:</strong> If you go to CodePlex,  you can create an issue for CodePlex itself and people vote on it. We can&#8217;t do  everything, but we are driven by the community. 
</p>
<p>Instead, we built command line clients, and you don&#8217;t have to have Team  Explorer installed to use those. We actually built a thing called subversion  bridge, or SVN bridge, which basically allows you to use the subversion client,  but it will take the SVN commands and convert them into something TFS  understands, so you get the best of both worlds. That&#8217;s an ongoing project  we&#8217;re doing so that people who are interested in using SVN can still use it. As  people vote on issues, we just take the highest voted issues, or if they are  bugs or anything else like that we look at that and use that, bring it in, fix  it, put it out. And since we release on a three-week schedule, that&#8217;s kind of  how the pace goes; every three weeks this is what we do.
</p>
<p>We also look at other things, like how people are using CodePlex, and how we  can help them be more community&#8209;driven and build more community around  their projects. We try to do that every day. We look at that, think about it,  and try to come up with a solution for it. By having a release every three  weeks, if we make the wrong decision, well, we can fix it in three more weeks.
</p>
<p><strong>Scott  Swigart</strong><strong>:</strong> Right.
</p>
<p><strong>Scott  Densmore</strong><strong>:</strong> It&#8217;s not something  that happens every three years. We are going to make mistakes and that&#8217;s OK,  but I think we&#8217;d rather have people give us feedback on an ongoing basis than  having them give us feedback and wait five years.
</p>
<p><strong>Scott  Swigart</strong><strong>:</strong> What are some examples  of surprises? I&#8217;m guessing there&#8217;s got to be times when people on the CodePlex  team think, &quot;Wow, I had no idea so many people would have wanted such and  such a feature, but it looks like people really do, so let&#8217;s work on  that.&quot;
</p>
<p><strong>Scott  Densmore</strong><strong>:</strong> In the beginning, we  exposed everything through RSS, and it&#8217;s amazing that people like mailing lists  better than RSS. People want mailing lists. They want to be able to do digests  and everything like that. I guess we just assumed that everybody was RSS-happy.
</p>
<p>We got a little RSS-happy ourselves and came to find out that it was not the  right decision, so we&#8217;re working on that and trying to integrate mailing lists  with the discussion forums. We have a simplified version of that right now;  it&#8217;s not the greatest in the world, but we wanted to get something out there.  And again, we like to get these things out there so people can use them and  give feedback on them, so that we can fine-tune the direction we&#8217;re going. One  of the things that surprised us was that RSS wasn&#8217;t as popular as we thought it  was.
</p>
<p><strong>Scott Swigart:</strong> Any final thoughts?
</p>
<p><strong>Scott  Densmore</strong><strong>:</strong> I would like to see  Microsoft foster more community. I think we are doing a better job. We haven&#8217;t  hit the sweet spot yet, and I don&#8217;t know exactly what that is. It&rsquo;s kind of one  of those &quot;feeling&quot; things. Once we completely get there, we will know  it.
</p>
<p>But I feel like we are moving in that direction, and I would really like to see  us build even more community, because it is about the adoption of the platform.  How do you get people out there excited about something, and then with  CodePlex, how do you build infrastructure that helps people run projects and  build their own community? CodePlex is getting better at that all the time.
  </p>
<p><strong>Scott  Swigart: </strong>Thanks for taking the time  to chat.</p>
<p><code></p>
<img src="http://howsoftwareisbuilt.com/?ak_action=api_record_view&id=131&type=feed" alt="" /><!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em>Bookmark this:</em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://howsoftwareisbuilt.com/2008/02/20/interview-with-scott-densmore-microsofts-codeplex-and-patterns-practices/&amp;title=Interview+with+Scott+Densmore+%26%238211%3B+Microsoft%26%238217%3Bs+CodePlex+and+Patterns+%26%23038%3B+Practices" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://howsoftwareisbuilt.com/2008/02/20/interview-with-scott-densmore-microsofts-codeplex-and-patterns-practices/&amp;title=Interview+with+Scott+Densmore+%26%238211%3B+Microsoft%26%238217%3Bs+CodePlex+and+Patterns+%26%23038%3B+Practices" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://howsoftwareisbuilt.com/2008/02/20/interview-with-scott-densmore-microsofts-codeplex-and-patterns-practices/" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://howsoftwareisbuilt.com/2008/02/20/interview-with-scott-densmore-microsofts-codeplex-and-patterns-practices/&amp;title=Interview+with+Scott+Densmore+%26%238211%3B+Microsoft%26%238217%3Bs+CodePlex+and+Patterns+%26%23038%3B+Practices" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://howsoftwareisbuilt.com/2008/02/20/interview-with-scott-densmore-microsofts-codeplex-and-patterns-practices/&amp;title=Interview+with+Scott+Densmore+%26%238211%3B+Microsoft%26%238217%3Bs+CodePlex+and+Patterns+%26%23038%3B+Practices" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.sphere.com/sphereit/http://howsoftwareisbuilt.com/2008/02/20/interview-with-scott-densmore-microsofts-codeplex-and-patterns-practices/" rel="nofollow" title="Add to&nbsp;SphereIt"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/sphereit.png" title="Add to&nbsp;SphereIt" alt="Add to&nbsp;SphereIt" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Interview+with+Scott+Densmore+%26%238211%3B+Microsoft%26%238217%3Bs+CodePlex+and+Patterns+%26%23038%3B+Practices+@+http://howsoftwareisbuilt.com/2008/02/20/interview-with-scott-densmore-microsofts-codeplex-and-patterns-practices/" rel="nofollow" title="Add to&nbsp;Twitter"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&nbsp;Twitter" alt="Add to&nbsp;Twitter" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://howsoftwareisbuilt.com/2008/02/20/interview-with-scott-densmore-microsofts-codeplex-and-patterns-practices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interview with David Campbell &#8211; Technical Fellow &#8211; Microsoft &#8211; Part II</title>
		<link>http://howsoftwareisbuilt.com/2008/02/11/interview-with-david-campbell-technical-fellow-microsoft-part-ii/</link>
		<comments>http://howsoftwareisbuilt.com/2008/02/11/interview-with-david-campbell-technical-fellow-microsoft-part-ii/#comments</comments>
		<pubDate>Mon, 11 Feb 2008 18:57:11 +0000</pubDate>
		<dc:creator>scottswigart</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[David Campbell]]></category>
		<category><![CDATA[enterprise]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[sql server]]></category>
		<category><![CDATA[virtualization]]></category>
		<category><![CDATA[windows server]]></category>

		<guid isPermaLink="false">http://howsoftwareisbuilt.com/2008/02/11/interview-with-david-campbell-technical-fellow-microsoft-part-ii/</guid>
		<description><![CDATA[Interviewers: Scott Swigart and Sean Campbell
Interviewee: David Campbell
In this interview with David Campbell we talked to him about:

How the development methodology of SQL Server has changed.
How the changes affect the ability of customers to give feedback.
How virtualization makes it easier for users to test-drive SQL Server.
As products and open-source projects grow, the developers have to [...]]]></description>
			<content:encoded><![CDATA[<p><b>Interviewers:</b> <a href="http://howsoftwareisbuilt.com/about-scott-swigart/">Scott Swigart</a> and <a href="http://howsoftwareisbuilt.com/about-sean-campbell/">Sean Campbell</a></p>
<p><b>Interviewee:</b> <a href="http://howsoftwareisbuilt.com/david-campbell-technical-fellow-microsoft/">David Campbell</a></p>
<p>In this interview with David Campbell we talked to him about:</p>
<ul>
<li><a href="http://howsoftwareisbuilt.com/2008/02/11/interview-with-david-campbell-technical-fellow-microsoft-part-ii/#sqldevmethod">How the development methodology of SQL Server has changed.</a></li>
<li><a href="http://howsoftwareisbuilt.com/2008/02/11/interview-with-david-campbell-technical-fellow-microsoft-part-ii/#custfeed">How the changes affect the ability of customers to give feedback.</a></li>
<li><a href="http://howsoftwareisbuilt.com/2008/02/11/interview-with-david-campbell-technical-fellow-microsoft-part-ii/#sqlvirt">How virtualization makes it easier for users to test-drive SQL Server.</a></li>
<li><a href="http://howsoftwareisbuilt.com/2008/02/11/interview-with-david-campbell-technical-fellow-microsoft-part-ii/#nottarget">As products and open-source projects grow, the developers have to realize that they are not the target user.</a></li>
<li><a href="http://howsoftwareisbuilt.com/2008/02/11/interview-with-david-campbell-technical-fellow-microsoft-part-ii/#mostknobs">David&#8217;s belief that the best product doesn&#8217;t necessarily have the most knobs. </a></li>
<li><a href="http://howsoftwareisbuilt.com/2008/02/11/interview-with-david-campbell-technical-fellow-microsoft-part-ii/#sqlcommunity">Building a community around a closed-source product like SQL Server.</a></l>
</ul>
<p><span id="more-130"></span></p>
<p><strong>Scott  Swigart:</strong> David, thanks for taking the time to chat with us again. One of  the things you mentioned in the first interview was the common engineering criteria.  I&rsquo;ve seen that mentioned in a number of different places, but I have never seen  it explained. And I&rsquo;m guessing that the common engineering criteria impact a  product like SQL Server. It might be good to start off just by explaining what they  are.</p>
<p><strong>David  Campbell:</strong> It started in the Windows Server system. We&rsquo;ve been telling  customers that one of the advantages of our stack is that it works better  together. It does, but we started really challenging ourselves by asking, &ldquo;OK,  what are the real things we&rsquo;re doing to actually make it be better together?&rdquo;  The way I think about it is, &ldquo;What are the things that would add value for  customers who require coordination or consistency across groups that otherwise  wouldn&rsquo;t happen organically?&rdquo;</p>
<p>We started this a number of years back, when Paul Flessner was running the  Windows Server group. We have a set of requirements, which are updated every  year, and all the enterprise products within the Server and Tools Business (STB) have to adhere to those requirements. These  are things like having a best practice analyzer, having a Management Pack for  System Center before you RTM, having consistent user education, continuous publishing, a community engagement program, that kind of stuff.</p>
<p><strong>Scott:</strong> Previously when we talked, you also mentioned that SQL Server went through a  pretty big change in its development methodology between 2005 and 2008. Talk about that a little bit.</p>
<p><strong>David: </strong><a name="sqldevmethod"></a>This is something that a small group started, and it ultimately took great  effort across the division to pull off. It will never be &ldquo;done,&rdquo; but it has  been an amazing, fascinating transformation. I&rsquo;ve learned more in the last few  years about culture and change management in a large organization than probably  anything else.</p>
<p>I&rsquo;ve been working on the product for a long time. Back in the good old days, we  had something like 20 people who knew the whole server, end to end. Back then,  as you worked on things, if you had an issue you just walked across the hall,  sketched something out on somebody&rsquo;s whiteboard, and went back and coded it up.  Because things were so intimate, you could keep things moving at a rapid pace.</p>
<p>To somebody who understands the standard Microsoft development methodology, one  of the things that&rsquo;s very important is the daily build. We continuously build  and test the product, and one major vital sign is the health of the daily  build. Back when the product was small and there were 50 to 100 people working  on it, you could do the daily build live, with everyone just checking stuff in  and keeping it together.</p>
<p>But as the team grew and the size of the code base grew by several orders of  magnitude, you just couldn&rsquo;t have as many hands in the soup at the same time  and get anything that tasted good.</p>
<p>In SQL 2005, we had sort of a standard large-team, waterfall model. If we were  doing a feature that spanned several component groups, we would have one group  get together and they&rsquo;d do everything by the book. We had a process and  everyone followed it. They&rsquo;d write the spec. They&rsquo;d develop a test plan. They&rsquo;d  review the test plan. They&rsquo;d write the code. They&rsquo;d test it. They&rsquo;d check it  in.</p>
<p>Then the next component team in the sequence, maybe it was the client data  access team, would pick it up and they&rsquo;d start working with it. And they&rsquo;d go, &ldquo;Hey,  wait a minute. This interface isn&rsquo;t quite right. There is something wrong here.&rdquo;  They&rsquo;d go back to the first team and ask them to change it. Of course, the  first team had moved on to something else, so if they had to go back and do  major surgery, it was a hassle. </p>
<p>We had one feature in particular that, to be honest, we built two or three  times during the course of SQL 2005 and we still didn&rsquo;t have it right. So I  said to the program manager at one point, &ldquo;Look, either we take it out of the  product or you get everyone, end to end, involved, get them in a room and just  sit till you work it out and get the thing going.&rdquo;</p>
<p>This involved the storage engine, the language parser, the query processor, the  client data access libraries, the management tools. They had done it serially  several times. They just never had it work correctly, end to end, when  integrated.</p>
<p>They all got in a room. Of course, you know how that works. They were able to  figure it all out and get it all done. We said, &ldquo;OK, what can we learn from  this?&rdquo; We completely threw the development process up in the air and changed it  around. How do we go &ldquo;back to the future&rdquo; and try to capture the intimacy of  what we had in the &ldquo;good ol&rsquo; days&rdquo; now that the team and product are many times  larger and more complex.</p>
<p>When  we had a small team rebuilding the database engine for SQL Server 7.0, a number  of people had the whole system in their heads. Furthermore, when we did SQL  Server 7.0, we really didn&rsquo;t need to think about the market that much. We were  building a new relational database engine and introducing an OLAP system. The  playbooks were already written for these technologies and the markets were  already established. Now, we did it in a way that was different; we tried to make  the product much easier to use so we could actually grow the market and bring  the technology to a much larger base. For SQL Server 2000 and, to a lesser  extent, SQL Server 2005, we were building out on the architectural base we had  established with SQL Server 7.0. </p>
<p>The  original model worked great for several releases, but when we got to SQL Server  2005, the product was much bigger, the team was much bigger, and the market  expectations were much higher. Things just weren&rsquo;t fitting together in terms of  consistency across the product. So the other piece that we had to add for the  SQL Server 2008 process was, instead of defining the release from the bottom up  in terms of what we were going to do, we had to create a definition process  that looked both at the market, top-down, and at what needed to happen to the  technology base of the product and what people wanted to do, bottom-up, and  bring them together.</p>
<p>The way we framed it to the team was, &ldquo;Look. We want to have the PowerPoint  presentation that we&rsquo;re going to use in the keynote for the launch before we  write the first line of code.&rdquo; So we developed a set of themes for the release.  With each theme we had this notion of scenarios that were end-to-end value  propositions for customers. Underneath those scenarios, we had a number of what  we called improvements, instead of features.</p>
<p>An improvement is what we would consider an engineering transaction. The idea  is that we bring virtual teams together to work on an improvement. An  improvement team is cross-discipline&mdash;development, testing, and program  management&mdash;and it&rsquo;s cross-component. For example, the database engine, data  access, and management tools teams can come together to work on a single  improvement. So if a particular improvement needs focus from four different  components, they&rsquo;ll all come together as a virtual team.</p>
<p>We assign an improvement team lead, who&rsquo;s got a set of requirements they need  to meet to integrate the result into the source base, but we&rsquo;re not very  prescriptive about how they run the team. If they want to use Scrum and have  stand-up meetings and do a series of sprints, that&rsquo;s fine. If they want to use  a test-driven development methodology, etc., that&rsquo;s up to them. We&rsquo;ve got tools  and a playbook that we encourage them to use, but we&rsquo;re pretty liberal in terms  of how they go about it. There&rsquo;s a very strict contract in terms of what needs  to be done before it is integrated into the main branch of the product source  code, however.</p>
<p>These improvement teams work in their own separate branches in the code  management system. Once they believe that the improvement is ready to ship to  customers, then and only then will we integrate it into the product. What&rsquo;s  interesting, if you think about it from outside SQL Server, from the customer&rsquo;s  perspective the release looks much, much different than it used to look.</p>
<p>It used to be the case that&mdash;let&rsquo;s say we were going to do 300 features.  Everyone gets started on them. We put a bunch of stuff together and put it out  for Beta 1. Everything would work about 30 to 50 percent. Then we&rsquo;d keep going  for Beta 2. We realized, &ldquo;We&rsquo;re not going to be able to finish 20 percent of  these things, let&rsquo;s cut them.&rdquo; With Beta 2, things are working about 70 to 80  percent correctly. Then you have Beta 3, a bit better. And in the end, you&rsquo;re  still trimming stuff out, cutting it, and refining it to get it ship ready for  customers. </p>
<p>We  were constantly in the mode of having stuff that kind of worked in Beta and  trying to get feedback from customers. We flipped it around with the new process. What customers see  now in a particular drop is very high quality. They used to see the 120 percent  of the ultimate features in Beta 1 in some measure. Now they only see 20 or 30 percent of the features early, but they all work. We also changed the name from Beta to Community Tech Preview, or  CTP.</p>
<p>As we go through each successive CTP, more and more of these improvements show  up. They&rsquo;re baked, end to end, and they accumulate in number. What a customer  is seeing is that the quality is actually very good the whole way through, so  it&rsquo;s an interesting change.</p>
<p><strong>Scott:</strong> It seems as if the SQL Server team went through the same process the Visual  Studio team did: Instead of putting code out there that is 30 percent  functional and people can&rsquo;t really get it to work end to end, they decided it&rsquo;s  better to wait until a given feature is 100 percent even if that means  customers see it much later. </p>
<p>  But  there has to be a trade-off, because your window for getting customer feedback  is smaller, and you have potentially invested a good deal more time in the  original code before you get any feedback. Talk about that balance.</p>
<p><strong>David:</strong> <a name="custfeed"></a>That&rsquo;s a great question. One aspect of the previous releases is that we were  frankly playing catch-up in an established market. We knew what we wanted to  build and we knew how we wanted to differentiate in the market so we really didn’t need a lot of customer feedback on the feature set for SQL 7.0 because in many ways we were rearchitecting and reimplementing the existing product. This approach worked for  SQL Server 7.0 and 2000, but one consequence is that we hadn&rsquo;t built up muscle  around how to engage customers earlier in the design process for completely new features. In some sense, we  built stuff and threw it against the wall to see if it would stick. This worked  well for awhile, but it made much less sense starting in SQL Server 2005. </p>
<p>  Basically,  you could say that the old process was quite inefficient, in the sense that we  built a bunch of stuff, actually committed code, before we even knew what would  stick in the market. Now we&rsquo;re trying to do that through more concept testing,  more up-front work, spending more time with customers to look at their real  pain points. Are you going to build a set of features that&rsquo;s going to be  compelling? That&rsquo;s one piece of the puzzle. Are you building something all up  that will be valuable to your customers to you customers end to end considering they way they really work? That’s another pieces of the puzzle.</p>
<p>But then the question becomes, have you built each feature in a way that makes  sense to the customer and is useful? So it&rsquo;s less about the value proposition  of having a particular capability and more about have you designed and built  each thing correctly, on an improvement-by-improvement basis.</p>
<p>One fallacy around the Beta process, in my opinion, is that we would throw a Beta  out there, and tens or hundreds of thousands of people would download it. A  small fraction would really play with it, a smaller fraction would actually  think about how they&rsquo;d use a new feature, and a fraction of those people would  actually give us any real feedback. It wasn&rsquo;t very structured. Our TAP program tried to target specific features and scenarios but it mostly kicked in after we had written the code.</p>
<p>I believe it&rsquo;s a bit different in the Developer division, because you&rsquo;re close  to developers. One of the challenges we have with SQL Server is that, for our  real validation, you need to get closer to a production environment. And it&rsquo;s  very difficult to get the feedback from the production team.</p>
<p><strong>Scott:</strong> Right. With SQL Server, a single dev banging away isn&rsquo;t a real test. You could  get somebody banging away at the feature, but that doesn&rsquo;t really tell you  whether it will scale, whether it will be reliable, whether it will be secure.</p>
<p><strong>David</strong><strong>:</strong> Right, exactly. So what happened with  this release was, we had some teams that said, &ldquo;Oh, crap. What are we going to  do to get feedback for this really complex improvement?&rdquo; For the database  engine there&rsquo;s an improvement called a Resource Governor. It allows you to  constrain queries that consume specific resources so you can limit a particular  connection to 10 percent of the CPU, and that kind of stuff.</p>
<p>The question is the mechanics of getting the architecture and user interface  right. We think very hard architecturally about separating mechanism and  policy. In this case, the mechanism would be things like how do we keep track  of the various resources and who do we attribute the resource usage to. The  policy would be how the user describes her intent in a way that allows the  mechanism to enforce it. In the case of the Resource Governor, there&rsquo;s a  complex interaction between the policy and the mechanism, &ndash; not the least of  which is that we needed to build new mechanisms to hold and enforce various  policies. This is a great example, because what we would have done before was  stare at the whiteboard, do a design, and throw something together. We&rsquo;d ship  it out in a Beta and hear, &ldquo;No, that&rsquo;s not what we need.&rdquo; So it turns into a  rock fetch. &ldquo;No, this thing stinks. &hellip; This thing stinks. &hellip; You&rsquo;re getting  warmer &hellip;,&rdquo; etc. It&rsquo;s a pretty inefficient process all up.</p>
<p>In the case of the Resource Governor, we got together with some of our MVPs and  key customers who had a need for the improvement and did more of an outside-in  design process starting from use cases. What&rsquo;s interesting is that this outside-in  approach is completely natural for many people building applications, but for a  development team that&rsquo;s been creating low-level system software for 10-plus  years it&rsquo;s quite different. </p>
<p>The  bottom line is that we definitely needed to figure out how to engage customers  differently with our new development process, and there are opportunities for  design councils, concept testing, early prototypes, and early builds. In fact,  things like virtual machine technology allow an improvement team to create a  build of their early thinking and test it with a small group in a focused way  without having to integrate everything else that&rsquo;s in various states of  completion, like we used to do with the standard Beta process. They just create  a VHD with their bits and have some customers try it. With this model they can  iterate faster than was possible with the old Beta process. Ultimately, I think  we&rsquo;ll get better improvement feedback by finding the right 10 to 20 customers  and working closely with them rather than putting it together in Beta and  throwing it out to 100,000 people hoping they&rsquo;ll give us valid feedback. I&rsquo;m  overstating things a little bit to make the point, but the general concept  still holds, although not everyone here agrees with me on this one.</p>
<p><strong>Sean  Campbell:</strong> I&rsquo;m curious about the point you just brought up, because Scott  and I have been knee-deep in virtualization for a long time. The point you just  made about letting people evaluate it on a VM, how has that impacted the  overall development process for the SQL Server team? Has it given you the  ability to basically give, let&rsquo;s say, broken bits out earlier and get more  people working with it earlier because they don&rsquo;t have to install it, they don&rsquo;t  have to configure it? I&rsquo;m sure in the past people would try to install it on  top of whatever else they already had. You could tell them a hundred times,  right? And they&rsquo;re going to try to install it as a multiple instance on top of  what they&rsquo;ve already got. </p>
<p><strong>David:</strong> <a name="sqlvirt"></a>It has, in exactly the ways you said. These applications are so complex, and  the state that they put on the machine is so complex, and we work so hard to  make sure uninstall really uninstalls all the stuff that it put there in the  first place.</p>
<p>The other piece is that it&rsquo;s hard for us to build and test the setup and the  installation. With VHDs, we can basically handcraft them and then clone them,  and they don&rsquo;t pollute any other state on an existing machine. So it&rsquo;s much  easier to get together. The bulk of the savings is in the setup, for us to  construct both the setup and the uninstall, to make sure we don&rsquo;t pollute the  machine state.</p>
<p>So I think from that perspective, it&rsquo;s very, very helpful. I think we saw that,  but we haven&rsquo;t really perfected it as a process yet. I think we&rsquo;ll probably go  a little bit deeper on it in the next release.</p>
<p><strong>Scott:</strong> In talking to a lot of people in the open source world, especially community-driven  open source, like the Linux kernel and the Apache Web Server, I hear there is a  pretty strong correlation between your ability to request a feature and your  ability to actually code it. You will get on a mailing list and say, &ldquo;Hey, it&rsquo;d  be great if the Web server did this.&rdquo; And the response is basically, &ldquo;Yeah,  that would be cool. When will you have the code ready?&rdquo;</p>
<p>  What  you have talked about is very different from that, in terms of interviewing  customers, interviewing influencers, and putting together a team. Talk a little  bit about how a specific feature happened from end to end, how the feature was  initially conceptualized, how you validated it, the portions of the product it  touches, etc.</p>
<p><strong>David:</strong><a name="nottarget"></a> Well, I&rsquo;ll talk about it in the meta form, and then I&rsquo;ll talk about a  particular feature. It goes back to the thing I was saying about technology  evolution. And it&rsquo;s actually one of the challenges.</p>
<p>  One  of the challenges the open source community faces, and this will be a sweeping  statement that I get flamed for, is that they don&rsquo;t yet generally appreciate  the difference between the consumer and the producer. By that I mean, as a  technology matures, the gap between who&rsquo;s using and who&rsquo;s producing it becomes  greater. It&rsquo;s a challenge we face at Microsoft; we are no longer simply  building products for people like us, the engineers. In one of the talks I give  to the product development community at Microsoft, I stress, &ldquo;Look. We&rsquo;re no  longer just building products by engineers, for engineers. The PC is moving  toward a consumer electronics device for many users and we must build a product  that interacts with them on their terms, not ours.&rdquo; I then show screen shots of  Task Tray bubbles talking about &ldquo;Virtual Memory&rdquo; and &ldquo;Pagefiles,&rdquo; etc. My  friends and family shouldn&rsquo;t have to know what virtual memory is.</p>
<p>  We&rsquo;ve  seen the same thing in the database space. Twenty years ago, every DBA had to  be a wizard and needed to know how to fiddle with hundreds of knobs, figure out  how to manage raw disks, and learn all sorts of low-level details just to  create and maintain a database. When we were building SQL Server 7.0, I used to  troll the database newsgroups an awful lot. You&rsquo;d see people asking perfectly  reasonable questions and you&rsquo;d see responses like &ldquo;RTFM&rdquo; or &ldquo;You don&rsquo;t belong  here if you don&rsquo;t know that.&rdquo; So we started this campaign to fix what I called  the &ldquo;you dummy&rdquo; questions. Basically, if an expert responded to a question with  a &ldquo;you dummy&rdquo; tone, we saw it as an opportunity to address the issue by  engineering&mdash;teach the product to do it rather than teaching hundreds of  thousands of DBAs. We turned the &ldquo;you dummy&rdquo; on ourselves and did something  about it. </p>
<p>  I  don&rsquo;t have to be an expert on my automobile to keep the thing running, and that&rsquo;s  fine. If Toyota wanted to come to me, I wouldn&rsquo;t have to talk to them about  ignition advance, dwell time, and those things anymore. I&rsquo;d talk more about my  experience and what I wanted the car to do for me. I think that&rsquo;s just an  evolution, and you can certainly see it in the database space.</p>
<p>To get back to the specific feature, I think the Resource Governor is a good  one, where there was a complex set of mechanisms inside our system that we  needed to go off and engineer, but how we constructed those and how we  presented them to users was the challenge, right? What is the policy? How does  someone describe a policy around constraining resources in a particular query  or session? And then how does someone bind different policies to different  classes of users or applications or queries or times? What degrees or what  dimensions do they need?</p>
<p>Another way to think about this, from the perspective of design, is that the  software development community has not made the leap yet from expressing the  product control surface as knobs on the underlying mechanism to capturing the  user&rsquo;s intent or objective and then acting to achieve that. A simple example is:  Rather than having an administrator configure how many dirty database pages  will trigger a database checkpoint, we can capture the user&rsquo;s intent in terms of  the trade-off between fast recovery in the event of a failure, which can be  achieved by increased checkpoint frequency, or better run time throughput,  which can be achieved by fewer checkpoints. Having a control that captures how  long the administrator is willing to wait for recovery to complete in the event  of a restart looks directly at the business intent rather than fiddling at the  level of the mechanism. I mean, how many dirty log blocks can I have on a  particular database and still have it recover in 60 seconds, anyway? Instead of  publishing some equation in the documentation, capture the user&rsquo;s intent and  treat that as a constraint during run time.</p>
<p>  So  to go back to the Resource Governor&mdash;we go to the customer and ask, &ldquo;OK. What  sorts of things do you want to constrain? What dimensions are most important?  Are they applications? Are they time of day? Are they this or that?&rdquo; And then  gather all that, design something that&rsquo;s consistent from the user intent  perspective, and then figure out how we build a mechanism underneath to marry  up with it.</p>
<p>Certainly, there&rsquo;s a lot of success in the open source community, using open  source technology in consumer electronics. But I don&rsquo;t think that they&rsquo;ve gone  end to end in terms of doing a great job of user-centered design.</p>
<p><strong>Sean:</strong> Well, that&rsquo;s one of the things I&rsquo;ve talked to people about, too, and that I  personally feel pretty passionate about, innovation in the usability area.</p>
<p>I am curious, from a closed source company perspective, about what processes  you feel should be put in place in order for a development team to excel in  terms of usability. You go out and talk to people about potential features to  help make sure that a feature doesn&rsquo;t turn into engineers building it just for  engineers, and that you actually end up with something&mdash;like the Ribbon in  Office&mdash;that honestly has been a success, if only because, after release, nobody  complained about it.</p>
<p>  It&rsquo;s  the proverbial tree that fell in the forest and nobody heard it, but everybody  was freaked out about it. And I keep telling people, &ldquo;Well, think about this.  Microsoft changed the UI on the one application people use the most, on a daily  basis, and yet nobody really complained once Office launched.&rdquo; There must have  been something that really went into the thinking, in terms of usability.</p>
<p>For you guys, especially with a product like SQL Server, where I&rsquo;m sure you can  lose yourself in B-tree discussions until the end of time, how do you ensure  usability in the product?</p>
<p><strong>David:</strong> It&rsquo;s a great question and a great challenge. It&rsquo;s funny, but one of the things  I&rsquo;ve been doing for awhile that&rsquo;s had a good effect is to hold the mirror up to  the product development community at Microsoft, to get them to see that we&rsquo;re  no longer building products for people like us. </p>
<p>  I  have a set of slides that I&rsquo;ve been using for six years or so, where I have  collected some crazy error messages and I have real-life scenarios. I&rsquo;ve got a  screen shot where, in Windows XP, if it extends to your page file, you get this  balloon coming out of the system tray that says, &ldquo;Your virtual memory is low.  We&rsquo;re extending the page file. Blah blah blah.&rdquo; I came home one night and my  wife hit this and she said, &ldquo;Hey, I think my computer&rsquo;s broken. It says  something here.&rdquo; So I started describing to her virtual memory and page files,  and she said, &ldquo;Shut up! Just fix it.&rdquo;</p>
<p>  It  dawned on me that perhaps 99 percent of the people using PCs these days are not  engineers, yet we&rsquo;re still throwing these exceptions and doing these sorts of  things as if they were. And we ridicule the users instead of ourselves. I go  help my neighbors fix their machines, and they all start with, &ldquo;Oh, I feel like  such an idiot around computers.&rdquo; And I just want to say, &ldquo;No, you&rsquo;re not the  idiot. We are, because we&rsquo;re not building computers for you yet.&rdquo;</p>
<p>And so I have a set of rules, or things that I&rsquo;ve captured, that I talk about,  such as the &ldquo;principle of least astonishment,&rdquo; where a reasonable user action  should do something reasonable with least astonishment. The example I use is  another story from my wife. I don&rsquo;t know how many years ago, when I first got  her a PC, someone emailed her some pictures. She said, &ldquo;How do I look at these  pictures?&rdquo; I said, &ldquo;Just double-click on the filename right here.&rdquo;</p>
<p>So, of course, up comes the picture in the picture viewer. And there are little  buttons down on the bottom of the viewer: &ldquo;Next picture,&rdquo; &ldquo;Previous picture.&rdquo;  What do you think happens if you click on &ldquo;Next picture&rdquo;? You don&rsquo;t get the  next picture in the set of attachments. You get the next picture of whatever  the next file was in your IE cache or whatever it happens to open.</p>
<p>  And  she&rsquo;s going, &ldquo;What the hell is this?&rdquo; She gets some random icon from the temp  directory or something like that. So I started talking to her about temporary  directories, the IE cache, and blah blah blah, and again she&rsquo;s like, &ldquo;Shut up!  Just tell me why it&rsquo;s broken.&rdquo;</p>
<p><strong>Sean:</strong> She&rsquo;s saying, &ldquo;I&rsquo;m looking at photos. I want the next photo.&rdquo;</p>
<p><strong>David: </strong>Exactly. And you see that even in the database space. We&rsquo;ve taken the  market from tens of thousands of servers out to millions or tens of millions of  servers. You can&rsquo;t have every one of them require a highly skilled DBA. We just  couldn&rsquo;t do it economically. And so you have to get out of the mind-frame of an  engineer and go adopt a perspective of what the customer needs and how the  customer wants to express their intent.</p>
<p>That&rsquo;s the other sort of piece I talk about: In terms of the degrees of control  and the dimensions of control, get rid of all of those dimensions of control  that don&rsquo;t capture any user intent and figure out which dimensions of control  are orthogonal with respect to the customer&rsquo;s intent, and then figure out how  you build your system, and express things that way. That&rsquo;s been the most  effective thing I&rsquo;ve found to motivate the change.</p>
<p>The bottom line is that the software development community doesn&rsquo;t teach &ldquo;design,&rdquo;  certainly not with a capital D. Most developers believe that if they think for  10 minutes before coding up some function, then that&rsquo;s design. It&rsquo;s not. This  isn&rsquo;t a development methodology thing, but rather a cultural change that we  need to go through across the entire industry.</p>
<p><strong>Sean:</strong> That&rsquo;s great. The chief creator of a project called Quicksilver for the Mac was  giving a talk at Google, and I just saw the video of it the other day. His  theme for the project is &ldquo;act without doing,&rdquo; which has an interesting  similarity to what you are talking about. If you saw the app, you would  probably see some interesting things in it.</p>
<p>To follow along that line, I have a question about Oracle. Oracle, through the  years, treated the product as though the more complex the cockpit, the better it  was. If you walked in and it looked like an old 727 cockpit with 50,000  switches, that was nirvana. And you were paid to know every position of every  switch, right?</p>
<p><strong>David:</strong> Yep.</p>
<p><strong>Sean</strong><strong>:</strong> The open source community has, to  some degree, a similar bent, right? Not in everything, but in a fair amount of  places. But even in a product like Ubuntu, which is seen as the ultimate of end-user  experience&mdash;and it has made some great strides&mdash;there&rsquo;s a massive list of steps  just to join that machine to a Windows domain, for example, if that is  something you wanted to do.</p>
<p><strong>David:</strong> Yep, yep.</p>
<p><strong>Sean</strong><strong>:</strong> So, do you see any similarities with  this line of thought in the way Microsoft helps you to administer a database  and the way open source helps you with administration in projects like MySQL? </p>
<p><strong>David:</strong><a name="mostknobs"></a> That&rsquo;s another good question. Yes, Oracle&mdash;I think I mentioned it earlier, they  marketed our ease of use against us, frankly. They said, &ldquo;How can this thing be  a real enterprise database product? It doesn&rsquo;t have nearly as many knobs as  ours does.&rdquo; And when we left Digital&mdash;this is an interesting little story&mdash;we had  a product, RDB, that had roughly as many knobs as Oracle did at that point.</p>
<p>And like engineers, we were saying, &ldquo;Oh, shoot! Hardly anyone knows how to turn  the knobs on this thing.&rdquo; So we wrote more software, something we called RDB  Expert, which was a physical database design and some other things, to  recommend and actually turn some of the knobs for you.</p>
<p>I think the first step that you go through in this evolution is to put a facade  on it, whether it&rsquo;s a system that recommends turning the knobs or a GUI to  cover up knobs in config files. But really, at that point, you haven&rsquo;t got a  good end-to-end design, because you haven&rsquo;t, in my opinion, eliminated those  points of interaction or control. You haven&rsquo;t captured user intent.</p>
<p>It&rsquo;s like having a TV that still has horizontal and vertical control, but you&rsquo;ve  put something on the TV that can watch it and turn the knobs for you. So I  think the next step in the evolution is to have the system software itself  become more adaptive.</p>
<p><strong>Scott: </strong>That&rsquo;s true. TVs used to have horizontal and vertical knobs on the back.  They don&rsquo;t have those knobs anymore, even though TVs are much more complex, and  no one misses them.</p>
<p><strong>David: </strong>And what you wind up with&mdash;here&rsquo;s the key point, and this is something I  didn&rsquo;t understand a priori, but after the fact it really made a lot of sense.  In SQL Server 7, when we did some of the memory work to have the system  automatically adapt to the environment and adjust the amount of memory it  consumed, we changed the system so that you could adjust the amount of memory  that it was using dynamically. And the mechanism was dynamic as well, so we had  an automated policy that was a closed loop, but for those people who wanted to  get under the covers, they could change it themselves.</p>
<p>But the neat thing about the way we reimplemented it top to bottom, and not  just put a facade on it, was that the underlying mechanism itself was dynamic.  By that I mean you could change the amount of memory that SQL Server used while  it was running and not have to shut it down and restart it to get it to adopt a  new value.</p>
<p>It&rsquo;s back to the separation of mechanism and policy. We made the mechanism  dynamic, we made the policy automated, and, where it made sense to try to  capture user intent, we allowed user intent to be captured and actually  influence the policy. And that takes architecture, top to bottom. I think the  evolution is: You recognize it&rsquo;s an issue, you put a facade on it, whether it&rsquo;s  a GUI or whether it&rsquo;s some other code, and then you have to step back and  architect the thing, top to bottom, to do it correctly.</p>
<p><strong>Scott:</strong> One of the attitudes I ran into back in my C programming days was, &ldquo;Look,  programming was hard for me. It&rsquo;s hard for a reason. It should be hard. If it  isn&rsquo;t hard, anybody could do it, and that&rsquo;s the last thing in the world you&rsquo;d  want.&rdquo; I run into that attitude whenever I look at systems administration and  other technical issues, where people say, &ldquo;Look, this is complicated. It should  be hard. You should have to be a little bit of a rocket scientist, otherwise  you have no business doing it.&rdquo;</p>
<p>So one of the complaints is, &ldquo;Well, yeah, Microsoft&rsquo;s made it so that any idiot  can set up a Web server, therefore every idiot does, and they don&rsquo;t keep it  patched, and it&rsquo;s vulnerable.&rdquo; Same thing with the database: &ldquo;Sure, people  could install the database and set it up, but they won&rsquo;t create their indexes  correctly, and they won&rsquo;t keep it patched.&rdquo;</p>
<p>So there are certain people who would say you should stop more people at the  front door and not let them in. Because if you do let them in, they get farther  down the path, thinking that they know what they&rsquo;re doing, and then they run  into a disaster. What would be your response to that kind of attitude?</p>
<p><strong>David:</strong> I think it all comes down to, or goes back to, design in the sense that if you  have the means within the technology to bring it out to a broader market and  let people do the job, then I think it&rsquo;s incumbent on you to try to figure out  a way to do that. It&rsquo;s a great example and a great point around physical design  of the database&mdash;how do I design the index set? It&rsquo;s very difficult.</p>
<p>One of the things we did here is, we designed the Database Tuning Advisor. This  was work with Microsoft research where we&rsquo;ll look at a workload and actually  propose indexes based upon the workload, and do physical design that way.</p>
<p>And the way we test that is kind of interesting. We bring databases in, we  measure their response against a real user workload. Then we strip all the  indexes and we use the Tuning Advisor to rebuild the index set. More often than  not, the Tuning Advisor does a better job than the guy who gets paid a lot of  money to do it by hand. Of course we can&rsquo;t see the reporting jobs that are  running at the end of the month if they haven&rsquo;t been part of the workload, but  it does a pretty darn good job. So I think it&rsquo;s a matter of how far can you  take the technology.</p>
<p>Another sort of thought experiment here is if you go back to the TV front. Go  back to 20 or 30 years ago. Every small town had two or three TV repairmen. The  technology is more complex now than it was, but it&rsquo;s perhaps 50 or 100 times  more reliable. So you don&rsquo;t see the TV repairman in every small town anymore.  The TVs just go and go and go until you decide you want a slick new plasma one.  I think that&rsquo;s the way software is going to move as well.</p>
<p><strong>Sean:</strong> Obviously, one of the strengths of open source is the community. I think that  is one contest they tend to win hands-down, if for no other reason than that open-source  projects were driving community long before closed source companies were. But  at the same time, I know Microsoft has been making some significant efforts in  this area too.</p>
<p>You mentioned in the previous conversation about CodePlex. I knew about  CodePlex, but I have not really looked at it with an SQL Server focus before. A  brief glance at it showed me some of the activity that is SQL Server related. Talk  to me a little bit about what is happening there, how that activity is  affecting the product team, etc.<strong></strong></p>
<p><strong>David:</strong><a name="sqlcommunity"></a> I agree with you. I think I mentioned earlier that tapping into the energy of  the community is super valuable. I think of a lot of these things in terms of  closed loops and how quickly can you run the loop, how fast can you get the  feedback, and how fast can you incorporate it. Tapping into the community is a  super way to do that. There are lots of examples of closing a loop, like  Watson, to have the machine send back error information and actually close the  loop and automate things to enable continuous improvement.</p>
<p>As I think about community, absolutely I give the open source guys credit for  tapping into that phenomenon first, but I don&rsquo;t think it requires open source  in terms of the development or distribution model to engage the community. I  think about community engagement in terms of layers. With the product itself  there&rsquo;s a way of tapping into the community by harnessing their feedback to  improve the product over time. I think with the documentation content and  general knowledge around how to use the product, there&rsquo;s a deeper way of  tapping into the community. As we publish content for the product, can we allow  people to modify it, link to it?</p>
<p>Some of our content could provide a spine for community activity. For example,  we could build a collaborative site around the product error messages and allow  the community to link their responses into each error message to help one another  out when they hit a particular issue. Today much of this happens in forums and  newsgroups, but it&rsquo;s not done in a way that closes the loop effectively. If we  did it in the way I just mentioned, it would be much easier for the product  development team to review and mine the activity to improve the product going  forward.</p>
<p> I  think the next level beyond documentation would be extensions and tools. Things  that you could build around the product where the core of the product is still  in a closed source model but you could open up and distribute add-ons, add-ins,  and other sorts of tools and actually build the community around that.</p>
<p><strong>Sean:</strong> This has been a great conversation, David. Thanks for taking the time to chat.</p>
<p><strong>David:</strong> Thank you.</p>
<img src="http://howsoftwareisbuilt.com/?ak_action=api_record_view&id=130&type=feed" alt="" /><!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em>Bookmark this:</em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://howsoftwareisbuilt.com/2008/02/11/interview-with-david-campbell-technical-fellow-microsoft-part-ii/&amp;title=Interview+with+David+Campbell+%26%238211%3B+Technical+Fellow+%26%238211%3B+Microsoft+%26%238211%3B+Part+II" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://howsoftwareisbuilt.com/2008/02/11/interview-with-david-campbell-technical-fellow-microsoft-part-ii/&amp;title=Interview+with+David+Campbell+%26%238211%3B+Technical+Fellow+%26%238211%3B+Microsoft+%26%238211%3B+Part+II" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://howsoftwareisbuilt.com/2008/02/11/interview-with-david-campbell-technical-fellow-microsoft-part-ii/" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://howsoftwareisbuilt.com/2008/02/11/interview-with-david-campbell-technical-fellow-microsoft-part-ii/&amp;title=Interview+with+David+Campbell+%26%238211%3B+Technical+Fellow+%26%238211%3B+Microsoft+%26%238211%3B+Part+II" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://howsoftwareisbuilt.com/2008/02/11/interview-with-david-campbell-technical-fellow-microsoft-part-ii/&amp;title=Interview+with+David+Campbell+%26%238211%3B+Technical+Fellow+%26%238211%3B+Microsoft+%26%238211%3B+Part+II" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.sphere.com/sphereit/http://howsoftwareisbuilt.com/2008/02/11/interview-with-david-campbell-technical-fellow-microsoft-part-ii/" rel="nofollow" title="Add to&nbsp;SphereIt"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/sphereit.png" title="Add to&nbsp;SphereIt" alt="Add to&nbsp;SphereIt" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Interview+with+David+Campbell+%26%238211%3B+Technical+Fellow+%26%238211%3B+Microsoft+%26%238211%3B+Part+II+@+http://howsoftwareisbuilt.com/2008/02/11/interview-with-david-campbell-technical-fellow-microsoft-part-ii/" rel="nofollow" title="Add to&nbsp;Twitter"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&nbsp;Twitter" alt="Add to&nbsp;Twitter" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://howsoftwareisbuilt.com/2008/02/11/interview-with-david-campbell-technical-fellow-microsoft-part-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interview with Britten Martin &#8211; Group Manager &#8211; Customer Service and Support &#8211; Microsoft</title>
		<link>http://howsoftwareisbuilt.com/2007/12/21/interview-with-britten-martin-group-manager-customer-service-and-support-microsoft/</link>
		<comments>http://howsoftwareisbuilt.com/2007/12/21/interview-with-britten-martin-group-manager-customer-service-and-support-microsoft/#comments</comments>
		<pubDate>Fri, 21 Dec 2007 01:24:34 +0000</pubDate>
		<dc:creator>campsean</dc:creator>
				<category><![CDATA[Sean Campbell]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[Britten Martin]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[support]]></category>
		<category><![CDATA[support engineers]]></category>
		<category><![CDATA[system center]]></category>
		<category><![CDATA[triage]]></category>

		<guid isPermaLink="false">http://howsoftwareisbuilt.com/2007/12/21/interview-with-britten-martin-group-manager-customer-service-and-support-microsoft/</guid>
		<description><![CDATA[Interviewers: Scott Swigart and Sean Campbell
Interviewee: Britten Martin
In this interview with Britten Martin we talked to him about:

The role of support inside Microsoft.
A walkthrough of how a support request is handled.
The ways in which the outside community can interact with the internal support processes.
How a product is supported differently in beta than when it&#8217;s finally [...]]]></description>
			<content:encoded><![CDATA[<p><b>Interviewers:</b> <a href="http://howsoftwareisbuilt.com/about-scott-swigart/">Scott Swigart</a> and <a href="http://howsoftwareisbuilt.com/about-sean-campbell/">Sean Campbell</a></p>
<p><b>Interviewee:</b> <a href="http://howsoftwareisbuilt.com/about-britten-martin-group-manager-customer-service-and-support-microsoft/">Britten Martin</a></p>
<p>In this interview with Britten Martin we talked to him about:</p>
<ul>
<li><a href="http://howsoftwareisbuilt.com/2007/12/21/interview-with-britten-martin-group-manager-customer-service-and-support-microsoft/#support">The role of support inside Microsoft.</a></li>
<li><a href="http://howsoftwareisbuilt.com/2007/12/21/interview-with-britten-martin-group-manager-customer-service-and-support-microsoft/#walkthrough">A walkthrough of how a support request is handled.</a></li>
<li><a href="http://howsoftwareisbuilt.com/2007/12/21/interview-with-britten-martin-group-manager-customer-service-and-support-microsoft/#community">The ways in which the outside community can interact with the internal support processes.</a></li>
<li><a href="http://howsoftwareisbuilt.com/2007/12/21/interview-with-britten-martin-group-manager-customer-service-and-support-microsoft/#beta">How a product is supported differently in beta than when it&#8217;s finally released.</a></li>
<li><a href="http://howsoftwareisbuilt.com/2007/12/21/interview-with-britten-martin-group-manager-customer-service-and-support-microsoft/#bugfix">How a bug eventually become a fix in the product.</a></li>
</ul>
<p><span id="more-122"></span></p>
<p><b>Scott</b>: &nbsp;Britten if you could just introduce yourself for the record. That is usually a good place to start, and then I&#8217;ve got an initial question after that.</p>
<p> <b>Britten</b>: &nbsp;Cool. So, my name is Britten Martin, I am a group manager within CSS which is Customer Service and Support. I&#8217;ve been with Microsoft since 1999 where I came in as a support engineer supporting Windows 2000. So I have been a support engineer, I have done some work with our outsource partners in a partner technical lead role, then I moved into frontline management and did that for about three years. In my current role I am a manager of managers, I have an organization of about 75 people and I am the global sponsor for System Center Support, which is your SMS and MOM products.</p>
<p><a name="support"></a><b>Scott</b>: &nbsp;So  talk a little bit about what falls under the scope of support inside of Microsoft. I mean, engineering rather has its domain, marketing has its domain: what is support defined as and what are kind of the responsibilities roll up under that inside Microsoft?</p>
<p><b>Britten</b>: &nbsp;That is a good question. It really depends on which segment of support. It is a great clarifying question, Scott, because I am within Commercial Support which is the enterprise-based support, your back&#8209;end, your servers, many of your big customers that buy dedicated support contracts, the government, many of the major companies around the world. We also have certainly have a consumer end which is your home user running Vista, Office, also Xbox, Zune. Any product that you can think of that is released by Microsoft has support. So really what it is, the thing that separates, I think, Microsoft from other companies in that, is that no matter what&#8217;s out there, you can pick up the phone, call 1&#8209;800&#8209;MICROSOFT, tell them what your product is, and you&#8217;ll get through to someone to support your issue. Although it certainly depends on the customer segment that you are in, who you are routed to, where you go and how much it costs.</p>
<p><b>Scott</b>: &nbsp;Sure.</p>
<p><b>Britten</b>: &nbsp;In Commerical Support, we support customers who have technical how-to questions about the products and certainly those who are getting error messages.† Also, if you need help setting it up, if you need more consultative type services, we do that as well.</p>
<p><b>Scott</b>: &nbsp;OK. Then one other thing I was somewhat curious about too is &#8209;&#8209; one thing I have always been curious about I guess &#8211; is how a problem works its way through the cycle.</p>
<p><b>Britten</b>: &nbsp;OK.</p>
<p><a name="walkthrough"></a>: &nbsp;So, you start out when the phone&#8217;s ringing and you have one customer, two customers, and three customers: they seem to be having a similar issue. How does it work its way through the process from the technician helping them on the phone, to maybe later on deciding it needs a KB on it, to maybe a hot fix, to maybe being rolled up in a Service Pack?</p>
<p><b>Britten</b>: &nbsp;That is a good question too. OK. I will speak in today&#8217;s terms because major things have shifted over the last couple of years. There used to be a lot of process behind just what you were saying, which is, you know: &quot;When do we do a KB? How many issues before we make a hotfix?&quot; Nowadays with the advent of blogs, which is kind of, what you are doing, you know, what this interview is about, in support we have become a lot more proactive with getting immediate information out to our customers. I will give you an example from my group, within System Center: last week we had an issue with SCCM, the new version of SMS. Just like you described: one call, two calls, three calls. All of a sudden we are like, &quot;Wait a minute, there&#8217;s something going on here!&quot;</p>
<p> So we got some information together, dumped it out into our blog so it was out there. On the back&#8209;end our support engineers, who are your front&#8209;line resources, are working with the escalation team, our escalation engineers who do the debugging, who look at source code, who work with the product group. They are debugging the issue, and they get it down to, &quot;OK, this is clearly a bug.&quot; At that point, that escalation engineer has a hotline per se to the product group, they pass along all of their research, they are reproducing the steps, reproduce the issue, send it on to them, all the documentation.</p>
<p> Then it is kind of in the product group&#8217;s hands to decide, &quot;Is this something that we need to fix now. Do we need a hotfix, is it just something that we can put documentation out.&quot; You know kind of that form of decision making process. In this case it was a major issue, it was a deployment blocker, huge customer pain, so they released a hotfix. Then once again, depending on the urgency, is it a publically available hotfix or is it something that you have to call support to get a hold of? In this case, we knew this was a major issue so we made it available out on Microsoft.com, put a KB article out there, and linked the hotfix to it. Therefore, customers could immediately just go and download that hotfix.</p>
<p> Down the road certainly that&#8217;s going to be in the Service Pack 1 or similar, so you can pretty much figure for all of our major products, any bugs that we fix, or any hotfixes we release up until, there&#8217;s a cut&#8209;off date, will make it into the Service Pack.</p>
<p><b>Scott</b>: &nbsp;And then talk to me a little bit about the timeframe, right, between the time where maybe the first few calls came in, until the time that hotfix and that KB article are out there. </p>
<p><b>Britten</b>: &nbsp;Well, once again it is very, very dependent upon the criticality and the widespread nature of it. </p>
<p> In this case from first call to KB/hotfix was about five days. In addition, some of those delays &#8209;&#8209; they had identified the code, they had written a hotfix within about two days, but there were some delays, you know, going through legal on official KB review, and getting everything up there and replicated. So from beginning to end, about five days.</p>
<p><b>Scott</b>: &nbsp;Yeah, that is fast. I do not think most people would ever think of Microsoft turning something around that quickly.</p>
<p><b>Britten</b>: &nbsp;Some times, I think Microsoft is seen as very slow to respond, but in reality, itís often not the case.† †If it is truly a deployment blocking issue or something that causes widespread customer pain you will see a quick turnaround on it and you will definitely see the documentation out there in a timely manner. I have been here eight years, I have seen issues where it was tough to figure out what the fix was, what the resolution was. Where it was something that would hide itself into multiple components so it was a complicated fix to write, it takes a little longer. However, if we can identify it, if we do a good job on the support side with identifying it, providing reproduction steps to the product group, you know, they can turn it around quickly.</p>
<p><b>Scott</b>: &nbsp;So one question then too, would be, what does the triage process look like if after reproducing the bug you quickly realize that it has security implications versus something that&#8217;s a deployment blocker, which might be the next layer and then further down which are just kind of usability or general  problems in using the software?</p>
<p><b>Britten</b>: &nbsp;Yeah, I think, once again when you are running into security type issues what you get with that is even more resources thrown at the problem. We have security aliases internally, they have product group members, and they have certainly a high-level support presence as well, that if something comes out we can fire it up and quickly. There †is a whole process that is enabled. Let us say there is a new Sasser or Blaster or any of those. We have processes in place that will quickly call together members of support, product group. We have open lines 24 hours a day. It is kind of the war room type mentality.</p>
<p> It has product group members on it. It has support members. So people on the field can call in and say, &quot;Look, I have got an issue with this bug or with this security hole and just want to make sure I have the up to date information&quot;. So they can call into this grid, they can get the information.</p>
<p> On the back&#8209;end, it is hard to say how long it is going to take, depending on the fix but you are going to have even more resources available. You will see a fix as quickly as we can get it out there. After the Sasser/Blaster/Nimda pain, we really turned the corner not only on product development but also on the support side to ensure we could have a quick turnaround.</p>
<p><a name="community"></a>: &nbsp;What do you think the level of community involvement is in the support process because obviously that is a huge piece of the open source model. Right down from many eyes looking forsecurity bugs to a very well populated mailing list where there is a high discussion level, traffic, and things like that. However, at the same time with the closed source support process while the team is staffed potentially adequately with full time employees, there are general concerns out there with a closed source model in terms of how much the community can get involved.</p>
<p> So what are the avenues the community can actually affect the support<br />
process at Microsoft and/or see what is happening under the covers of the support process?</p>
<p><b>Britten</b>: &nbsp;Yeah, I will tell you that it has really been something we have been working on for the last few years. The product groups and the support teams have been trying to find ways to tap into that community model because there are many folks out there that do our support day in and day out with customers that have a lot of knowledge that could be helping the broader community.</p>
<p> So, one of the things that we have is the MVP program, the Microsoft Most Valuable Professional. One of the things that these folks do is to actively take part in the public newsgroups for our products. I can point to a couple of products &#8209; Small Business Server is the poster child for that. It has a very strong community. Customers can go up to the Small Business Server forums and post problems and the MVPs will quickly get involved to help resolve the issue.</p>
<p> There is a lot of energy around building a stronger MVP community and empowering the MVPs to help solve customer issues. Many of the product groups have CPE, Customer Partner Experience, teams, that are really focused on tapping into that partner community.</p>
<p> Another example from my world System Center Essentials, or SCE. We actually launched support for that on a complete forum based model, where we had engineers from CSS monitoring the forum, and we worked to build strong partner participation. If the partner could not answer the question, or did not answer the question within 24 hours, someone from support would jump in. We are trying to grow more community presence around support.</p>
<p> </span>Globally, there is more partner presence out there as well. A good example is SoftGrid or Softriciy, a recent acquisition. In Europe, before Microsoft took over, there was not really a ton of dedicated support. It was all done through the community. Therefore, we have been looking and trying to learn from them on how they involve the partners, and how we can keep that type of interaction going. I know there is a log of energy around this and it is a<br />
huge initiative. </p>
<p><b>Sean</b>: &nbsp;Well, one question which is really back to the second part of the original question which, is that a lot of the product groups in Microsoft are being affected by the open source model.† For example recently we talked to Shawn Burke who has been instrumental in getting the source code† for the framework out the door. How much of push to learn from the open source community is affecting the support team in general? For example could you see a day where the status on bug fixes is more open and less a black box until the actual fix arrives out on the web?</p>
<p> <b>Britten</b>: &nbsp;So thinking more about &#8209;&#8209; I am partner, I am out there. I find a bug or a hole, I put it out there, and really being more transparent if that is going to be fixed. Is that kind of&#8230;?</p>
<p><b>Sean</b>: &nbsp;Yeah, exactly. I realize it&#8217;s not going to be a plate glass window &#8209; it never is. But at the same time I think a lot of people will look at support right now and say, once I send in my support request I don&#8217;t really have a lot visibility of how they are stacking it, ranking it, prioritizing it, and where it goes, until maybe I get an email that says you have been deferred. Right?</p>
<p> So I am just curious, I know a lot of the product groups specifically are trying to expose a fair amount of their development processes, so I was curious if maybe that was making its way over to the support side.</p>
<p><b>Britten</b>: &nbsp;You know it is a fair point. Let&#8217;s say you are running a beta version of the product and you are involved in the one of the official beta programs, such as TAP ñ our Technology Adoption Program.† †The beta version is fully supported and you can actually go and directly file a bug. In addition, I know that they try to make a lot of that process transparent, so you know if the bug is a duplicate. Is it being fixed? Is it being deferred to the Service Pack 1&#8230;whatever. So actually, I know on some levels we do that.</p>
<p> On the support side, I think we make good use of our blog. There is a huge blogging effort, because there is a lot of knowledge within our support engineers and within our internal databases. For one reason or another that has never been made public. So I think we try to do some of that as well. But I can see the point. I mean maybe someday and maybe that some day is not too far away where you can log in and say, here is a bug that I submitted. Alternatively, even better for Windows, here is the bin of things that are going to be fixed in the next two weeks, months, whatever.</p>
<p><b>Sean</b>: &nbsp;Exactly</p>
<p><b>Scott</b>: &nbsp;Well, and so you know not every support request anymore comes in through a phone call, right? There are things like the Connect site. There are things like Windows Error Reporting services. I guess if you would not mind talk for a minute about some of the different channels that, a problem can kind of come in through and&#8230; Go ahead.</p>
<p><b>Britten</b>: &nbsp;No, no, it is fine. So today, and if I use Americas Commerical Support as a kind of a measuring stick, somewhere around 85% of our support issues come in via the phone &#8209; very traditional means of operation. We are really trying to push more of our online type offerings. One is online submission where you can go up and create your issue; you can attach data, submit it to a support engineer. That support engineer reviews that data and calls you back, hopefully with an answer.</p>
<p> The Connect site is a lot more beta focused at this point. I am not an expert there, but that&#8217;s where you get into many of the cool things where you can actually submit bugs and all that. We also have the managed forums, which we talked a little bit about. The managed forums are a completely different avenue. Most of those are staffed by Microsoft support engineers as well as product group representation and the partner community.</p>
<p> </span>So you have an issue with Windows, you can go up to a specific Windows forum, post a question. You might get an answer fromsomeone in the product group, a partner, or a support engineer. Therefore, you have those as well.</p>
<p> </span>On the consumer side, they do really cool things with automated responses. Therefore, you submit an issue and it checks your data, checks your error log to see if it is a known issue. Before you would hear back from the support engineer, you might get an automated response with, you know, try these two things. If this does not work respond back and the engineer will contact you, then as you said, you had the whole Watson or error reporting. The error reporting stuff is very cool, because regardless of bugs filed or anything else that goes on, all the product groups take all of their Watson or their error reporting data and they make sure that as they look to roll out service packs, with new versions of products especially, they want to handle those top 15, top 20, top 50 Watson issues. They want to make sure that they are knocking those off.</p>
<p> Therefore, it is an interesting mix of many different avenues for customers to submit data, and in some cases, a Watson log, the error reporting, customers might not always think they are really contributing to the next version of the product, when in essence, they truly are.</p>
<p>  <a name="beta"></a>: &nbsp; I realize, too, that you are right, that is largely a mechanism for when a product is in Beta. I guess, I have two questions, but one is a follow up on this thread initially. Talk a little bit, I guess; about how a product is supported differently while it is in beta, versus once, it has been released?</p>
<p><b>Britten</b>: &nbsp;That is a good question. We have a few different types of beta opportunities for customers.† There are more formal relationships, such as TAP (Technology Adoption Program) and RDP (Rapid Deployment Program).† With these formal programs, customers agree to deploy this product into some type of production environment. In return, they get access to submit bugs, they get access to product group members, and they get<br />
  access to dedicated support engineers. </p>
<p>From within support, let us say we have a new version of Windows, we might have three or four support engineers in the US dedicated to this beta support. These engineers get a hold of the product early, they get access to product specs, they visit the product group, and they may even get to go out on site to customers who are deploying this product so they get some real world hands on experience.</p>
<p>Now, that is for the structured beta program. If you&#8217;re not a customer in one of these programs, you likely can still download beta copies of the software. Even in these situations, there is support out there, through the forums that we talked about before. Once again, you probably get answers from those same beta engineers and some of the product group folks. You just do not have that one-to-one interaction in a lot more, you know.</p>
<p>Does that make sense?</p>
<p><b>Scott</b>: &nbsp;Yeah. Yes, very much so. One of the other things that &#8209; I will kind of circle back to something you said earlier &#8211; If it needs code to solve the problem, you know, if it is not just configuration file that was messed up or any one of the myriad of things that could cause a problem. You know, some registry key got corrupted or whatever. However, it actually needs the coding hot fix, you could hand it over to the engineering, send it over to the product team and they triage it, compared to other stuff.</p>
<p> I mean, have you ever run into situations it seems like this would inevitably happen where they&#8217;ve got their engineers dedicated to building the next version of the product, and meanwhile, there&#8217;s an endless list of bugs in any complex software that they could be tasking engineering resources with. In addition, it seems that they kind of have to make that call about pulling people off engineering new features to work on a hotfix or something like that.</p>
<p><b>Britten</b>: &nbsp;Yeah.</p>
<p><b>Scott</b>: &nbsp;And how does that process of triage work? Because support is kind of on the front line with the customers, it seems like sometimes you guys might have to go back to them and say, &quot;Um, you know the time frame that you&#8217;re looking at fixing this in probably isn&#8217;t really going to work, so think about it again.&quot;</p>
<p><b>Britten</b>: &nbsp;Right. In addition, I will tell you, it is really dependent upon the product group. You look at something like Windows. Windows has a whole team, and you hear it from time to time called Win SE. ,Windows Sustained Engineering. They have a whole team dedicated to current version, and whatever supported versions are out there, on the hotfix front.</p>
<p> </span>With some of the smaller products, you may run into situations where they have to pull developer resources off the next version to fix current version or legacy version problems. However, I tell you, in my time here, I have never seen that as being a blocker in getting something fixed. If there is truly an issue that needs to be resolved in the current version of the product, especially if its security related, you can be assured that they will find someone to handle it.</p>
<p> However, as a general rule of thumb, all big product groups have sustained engineering, folks that are dedicated to current version problems, or legacy version, so it is not necessarily that huge resource problem that you would think.</p>
<p><b>Scott</b>: &nbsp;OK. Therefore, many times, they are not pulling people off features. They have people who are dedicated just to the maintenance and hot fixes.</p>
<p><b>Britten</b>: &nbsp;Right. That is your sustained engineering folks, for the most part. As I said, I think you would run into some smaller product that might not be in that same boat, but the major ones have sustained engineering.</p>
<p><b>Scott</b>: &nbsp;It seems, too, like support, it is a little bit of a difficult situation, because, I guarantee, if I call with any bug, it is a critical show&#8209;stopper. The world will end if it does not get fixed. So how do you kind of manage customers, who are generally going to feel the importance of their bug is high, but Microsoft does not necessarily determine it so in the grand scheme of things?</p>
<p><b>Britten</b>: &nbsp;Yeah. I tell you, our people are experts at conflict management and really setting customer expectations, and certainly the empathy piece as well. I mean, you have to be empathetic with the situation, but you also need to be very transparent and upfront.. It is saying, &quot;Look, here&#8217;s where the bug is at this point. It is something that may or may not get fixed. Here&#8217;s the timeline.&quot;</p>
<p> With many of our customers in the Commercial space, these customers also have account managers that are Microsoft employees that really serve as the liaison between support and the customer. Therefore, we do a lot of work with the account managers to help us on the customer maintenance side of things, when maybe the messaging isn&#8217;t as good as we&#8217;d like it to be.</p>
<p> However, frankly, all major problems end up getting fixed. They might not get fixed in the period the customer would like to see it, but, between a hotfix, the next service pack, and the next version of the product, all issues do end up getting resolved.</p>
<p> Once again, it is really just dependent upon how many customers are having the same problem. Is it something that other customers could run into? In addition, really prioritizing, like you said before. I mean, the product group, while they have a sustained engineering team, has a limited number of resources, and they need to prioritize what are the big-ticket items that need to be worked on.</p>
<p> However, that skill of conflict management is one of the key pieces for successful support engineers, because, every day, when we answer the phone, when we respond to an email, that is generally that networking administratorís worst day of the year. The servers are down. They are catching heat from their management.† Something is going on, they are being yelled at. Our engineers deal with this on a day in and day out basis and as a result, they get very good at handling the heat.</p>
<p><a name="bugfix"></a>: &nbsp;So one question  I am curious about is, how do you deal with it when the support engineer knows that it is really a usability issue and not a bug, sure there is a sequence of phone calls and bug reports, but it is pretty clear that this isn&#8217;t a bug, it is more of an issue of usability. And it might be in the land of the undiscovered feature right? We were told, if I remember, some person in the office team told me that something like 90 percent of the feature requests for office, are already in the product, but nobody knows the feature is in there. So how do you people educate the product teams and what does that flow look like? How do you finally classify that, &quot;OK this isn&#8217;t really a bug, it is an issue of usability?&quot;</p>
<p><b>Britten</b>: &nbsp;That is a good question.</p>
<p><b>Sean</b>: &nbsp;Because obviously the product team, like everybody else is blind to what they build, right? Of course, it is useable. Because I built it, I mean every developer has fallen to that problem and we all have seen some pretty horrible UIs over the years. So how does the support team educate the product teams on this point?</p>
<p><b>Britten</b>: &nbsp;Yeah. In the past, if you back up five years, 10 years, support was as you said an island. We were out here, taking all the heat and there was limited interaction with the product group. About five years ago, things drastically changed.† we started doing what is called supportability in our world. We review what are the top issues, how long does it take us to solve those issues and how much do they cost the company for us to support these issues?</p>
<p> Therefore, we came up with a list of the top 10 issues. We then present that back to the product group. Now the interesting thing about that is the product group actually funds us to do support for their product. So, when they see that a problem in their coding is †costing them $800,000. they to take some notice , and say wow OK, what does right look like, what are we missing here?</p>
<p><b>Sean</b>: &nbsp;Well, just a quick follow up to that. What are some examples of things where you feel like you touched the product, and you made a real delta that the customers ended up bettering from, but at the same time you folks probably would never personally got credit for it</p>
<p><b>Britten</b>: &nbsp;That is right. I donít have a list in front of me but DNS is one that consistently scored high for Windows 2000 and even some into Windows Server 2003.In addition, there was so much push and so much interaction that there were some major changes that happened later in 2003 and into 2008 that have drastically changed the way DNS works. </p>
<p>Another one I can give you that clearly had all the supportability people driving this was terminal server licensing. Terminal server licensing, when you go back to 2000 and once again, kind of into 2003 with a complete and utter nightmare for something that should be very simple. Consistently that silly process ended up top two, top three on our supportability list for Windows Server. And some very small tweaks based on advice provided by support completely changed this, dropped out of the top 10, out of the top 20 in support issues and saved the company a lot of money.</p>
<p> Those are two examples of technologies I know we beat on. However, on all the products out there, SQL, Exchange, Windows, SMS, MOM, they had the supportability groups that review the top 10 issues. In fact, I was just in Redmond last week, looking for the SMS side and they do cool things with it. I mean they look at top 10 issues for previous version of the product, look at the top 10 issues for current version, and review whether or not they fixed the top 10 call generateors? If not, what do we need to do to make sure it is in the next version that we do? Support is a huge data mine that we are just starting to realize the power of all the data that we have.† We are a great voice of the customer.</p>
<p><b>Sean</b>: &nbsp;One quick follow up to that and then Iíll turn it back to Scott. I am curious because you mentioned that five years ago there was some type of a change, right? In addition, all of a sudden, you folks were a lot more integrated. What drove that? In addition, I realize with all changes ongoing, there is probably stuff you can say and stuff you cannot, but I am sure somebody reading the interview is going to be like, &quot;Wait, wait, and ask him that.&quot; So what drove it at a high level?</p>
<p><b>Britten</b>: &nbsp;I think that is fair. I wish I had some great and gory backroom drama to share, but if it happened, I just donít know the details.† In my opinion, you know, part of it was just the fact that, wow, especially on the Enterprise side, Windows Server 2000 started to really turn the corner and become a huge enterprise related product. People were out there buying it and implementing it and someone on the CSS side as well as, I can guarantee you, the Windows product group was like &quot;We need to tap into this.î </p>
<p> Around this time, I was a support engineer and I suddenly realized that the product group was really listening.† In all businesses you started hearing about some monthly conference calls where we were there to provide feedback on top issues.</p>
<p> It was a time when we were moving from being just a consumer, home user company to being a legitimate player in the enterprise. In addition, there was a lot of pressure at that point to make sure these products were just better, and I think someone realized &quot;Wow, CSS has a lot of knowledge out there; we need to tap into it.&quot; </p>
<p><b>Scott</b>: &nbsp;Well, how much now do you guys get involved in product development from the standpoint of, you guys are looking at the product, while it is in development and saying, &quot;You know what, if that error happens, there is no way we will able to trace it back and figure that out. We need instrumentation here, we are going to need these things, spit it out to a log file, we are going to need these kind of support features built into the product to be able to kind of quickly<br />
  and officially troubleshoot things.&quot;</p>
<p><b>Britten</b>: &nbsp;That is a huge piece of our beta involvement. I know we talked about it before. For each beta, we dedicate engineers from our support teams to the pre-released product. Well, one of the way they make an impact is by providing that ongoing feedback to the product group. They are not only working with beta customers, they are not only answering newsgroups, but they are also messing with the product itself.</p>
<p> </span>Therefore, they filed their own bugs. They have supportability war room meetings where they say, look there needs to be some logging here, or this error message does not make sense, or if this component is blowing up, I need something to trace it back. That is generally our involvement. </p>
<p> </span>We do spec review. So many of our engineers have been on betas before, they are hooked in with the product group contacts. As the next version of the product is being planned, our engineers get involved to review specs, and just generally throughout the beta process from the beginning of our involvement through RTM, we are providing that ongoing supportability feedback.</p>
<p> </span>So not only are we always supporting our customers, but we also look to help the product group on the supportability side. It is like you said, I mean, they are focused on here is a new component, here is a new thing that customers can use, maybe not always focused on how would I support that if it breaks?† Letís be honest Ö if we donít provide our feedback to the product group on what we need, it just causes more pain for us once the product is released.</p>
<p><b>Scott</b>: &nbsp;One other one question is, so a new product is coming out and how do you get support folks up to speed on it?  In the OpenSource model the development team in some cases is the support team and there is a tight integration between that team and the open source community so there isn&#8217;t really a need to educate the &quot;support team&quot; in this case. So how do the support engineers come up to speed on a given product?</p>
<p><b>Britten</b>: &nbsp;This is another benefit of our involvement on the beta side.† †We get access to the source code. We get engineers playing with the product. We get that constant interaction with new builds of the product as it comes out. As a result, months, in some cases years, before the product actually ships, we have experts on this product.</p>
<p> </span>Now, our experts certainly might be great technical writers, but we have a group called Global Technical Readiness. These folks are really program project managers who will say, &quot;All right, we need Vista training for our support engineers.&quot; Therefore, they get their list of top issues. They get a list of new components, features, all of that. In addition, they start mining for data using these beta resources to come up with, &quot;Here&#8217;s what engineers need to know. Here are the troubleshooting pieces; here are the top issues we have seen with our beta customers. Make sure engineers know this and that.&quot;</p>
<p> </span>Therefore, over the course of this beta cycle, we are also in the background writing our own training. So these engineers write the training and as RTM approaches, depending on the training strategy, they might train all their engineers or a subset of the engineers. However, the knowledge is based off spec; it is based off beta engineer experiences, and beta engineer customer interaction.</p>
<p>  In addition, the product group, in recent years, has really stepped up to help with training. They will review our training. They will provide insights. They will attend beta deliveries of the training and help the trainer get comfortable with the material and the product.</p>
<p> </span>In some cases, the product group will also do a session of live meetings on, &quot;Hey, here&#8217;s how we intended you to support the product. Here are the supportability features that we thought would be helpful.&quot; Therefore, you get a lot of interaction with the product group as well. From the beginning of the product to the end, not only are we helping customers on the beta side, but also our selfish win is to get the training that we need.</p>
<p><b>Scott</b>: &nbsp;So, let me ask the flip side of that, right? So, you mentioned Configuration Manager. You&#8217;ve got System Center Configuration Manager 2007 coming out. Everybody wants to learn it&#8230;</p>
<p><b>Britten</b>: &nbsp;Sure.</p>
<p><b>Scott</b>: &nbsp;&#8230;because everybody is motivated. Have do you rather incent people to keep wanting to support the previous version when there is something new, shiny, and interesting.</p>
<p><b>Britten</b>: &nbsp;At least on the Commercial stage, I do not know that I have ever really run into that problem.</p>
<p><b>Scott</b>: &nbsp;OK.</p>
<p><b>Britten</b>: &nbsp;Just simply because, in the enterprise customer segment, what you generally see is not the consumer model where a product releases, and everybody goes and gets the new version. However, it is a gradual uptake, usually. So, say Configuration Manager. Right now, and I can give you the specifics on this one, it is 10% of our total SMS volume. Therefore, engineers get a couple of SCCM cases, but they get the majority of SMS 2003.</p>
<p> </span>In our minds, that is beautiful. Because what happens is, slowly over time they can build their SCCM knowledge while still providing that long held knowledge on SMS. They can help those customers resolve their issues. Therefore, it is a slow mix that generally happens. I do not know, it is &#8209;&#8209; they are tech junkies. They love the new stuff, but I guess maybe we all know that we have to pay our dues with the old stuff as well. [laughing] I do not know.</p>
<p><b>Scott</b>: &nbsp;OK. That makes sense.</p>
<p><b>Britten</b>: &nbsp;That&#8217;s a good question but it never really happens quite that way on the Enterprise side of support.</p>
<p><b>Sean</b>: &nbsp;What it sounds like for you folks, is that from an enterprise standpoint, you can point to pretty clear statistics on customers who are significant accounts. Alternatively, you could point to customers who, for lack of a better phrase, probably spend a fair amount of revenue, right. In addition, it is probably easy to also look at the segment of the market and say, &quot;We&#8217;re not going to give up 15% of SMS just because SMS, the latest version is out&quot; &#8209;&#8209;or in this case, obviously the rebranded version.</p>
<p><b>Britten</b>: &nbsp;Right.</p>
<p><b>Sean</b>: &nbsp;Because you folks can point to real metrics in terms of your percentage of the number of people who are putting in support requests and things like that.</p>
<p><b>Britten</b>: &nbsp;Right.</p>
<p><b>Sean:</b> Thanks for taking the time to talk with us Britten.</p>
<p><b>Britten:</b> No problem.</p>
<img src="http://howsoftwareisbuilt.com/?ak_action=api_record_view&id=122&type=feed" alt="" /><!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em>Bookmark this:</em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://howsoftwareisbuilt.com/2007/12/21/interview-with-britten-martin-group-manager-customer-service-and-support-microsoft/&amp;title=Interview+with+Britten+Martin+%26%238211%3B+Group+Manager+%26%238211%3B+Customer+Service+and+Support+%26%238211%3B+Microsoft" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://howsoftwareisbuilt.com/2007/12/21/interview-with-britten-martin-group-manager-customer-service-and-support-microsoft/&amp;title=Interview+with+Britten+Martin+%26%238211%3B+Group+Manager+%26%238211%3B+Customer+Service+and+Support+%26%238211%3B+Microsoft" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://howsoftwareisbuilt.com/2007/12/21/interview-with-britten-martin-group-manager-customer-service-and-support-microsoft/" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://howsoftwareisbuilt.com/2007/12/21/interview-with-britten-martin-group-manager-customer-service-and-support-microsoft/&amp;title=Interview+with+Britten+Martin+%26%238211%3B+Group+Manager+%26%238211%3B+Customer+Service+and+Support+%26%238211%3B+Microsoft" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://howsoftwareisbuilt.com/2007/12/21/interview-with-britten-martin-group-manager-customer-service-and-support-microsoft/&amp;title=Interview+with+Britten+Martin+%26%238211%3B+Group+Manager+%26%238211%3B+Customer+Service+and+Support+%26%238211%3B+Microsoft" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.sphere.com/sphereit/http://howsoftwareisbuilt.com/2007/12/21/interview-with-britten-martin-group-manager-customer-service-and-support-microsoft/" rel="nofollow" title="Add to&nbsp;SphereIt"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/sphereit.png" title="Add to&nbsp;SphereIt" alt="Add to&nbsp;SphereIt" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Interview+with+Britten+Martin+%26%238211%3B+Group+Manager+%26%238211%3B+Customer+Service+and+Support+%26%238211%3B+Microsoft+@+http://howsoftwareisbuilt.com/2007/12/21/interview-with-britten-martin-group-manager-customer-service-and-support-microsoft/" rel="nofollow" title="Add to&nbsp;Twitter"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&nbsp;Twitter" alt="Add to&nbsp;Twitter" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://howsoftwareisbuilt.com/2007/12/21/interview-with-britten-martin-group-manager-customer-service-and-support-microsoft/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Interview with Shawn Burke &#8211; Director &#8211; Microsoft &#8211; .NET Developer Platform Group</title>
		<link>http://howsoftwareisbuilt.com/2007/12/18/interview-with-shawn-burke-program-manager-microsoft/</link>
		<comments>http://howsoftwareisbuilt.com/2007/12/18/interview-with-shawn-burke-program-manager-microsoft/#comments</comments>
		<pubDate>Tue, 18 Dec 2007 04:08:14 +0000</pubDate>
		<dc:creator>campsean</dc:creator>
				<category><![CDATA[Sean Campbell]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[.net developer platform]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[licensing]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[shawn burke]]></category>
		<category><![CDATA[source code]]></category>
		<category><![CDATA[visual studio]]></category>

		<guid isPermaLink="false">http://howsoftwareisbuilt.com/2007/12/18/interview-with-shawn-burke-program-manager-microsoft/</guid>
		<description><![CDATA[Interviewers: Scott Swigart and Sean Campbell.
Interviewees:Shawn Burke.
 In this interview with Shawn Burke of Microsoft we asked him about:

]]></description>
			<content:encoded><![CDATA[<p><strong>Interviewers:</strong> <a href="http://howsoftwareisbuilt.com/about-scott-swigart/">Scott Swigart</a> and <a href="http://howsoftwareisbuilt.com/about-sean-campbell/">Sean Campbell</a>.</p>
<p><strong>Interviewees:</strong><a href="http://howsoftwareisbuilt.com/2007/06/12/shawn-burke-interview/">Shawn Burke</a>.</p>
<p> In this interview with Shawn Burke of Microsoft we asked him about:</p>
<ul>
<li><a href=http://howsoftwareisbuilt.com/2007/12/18/interview-with-shawn-burke-program-manager-microsoft/#personalmotivation">Shawn&#8217;s motivation for helping to make the framework source code available.</a></li>
<li><a href="http://howsoftwareisbuilt.com/2007/12/18/interview-with-shawn-burke-program-manager-microsoft/#available">Whether there are any limits on who gets access to the source code.</a></li>
<li><a href="http://howsoftwareisbuilt.com/2007/12/18/interview-with-shawn-burke-program-manager-microsoft/#internalresistance">Whether there was any internal resistance initially to providing the framework source.</a></li>
<li><a href="http://howsoftwareisbuilt.com/2007/12/18/interview-with-shawn-burke-program-manager-microsoft/#zip">Why Microsoft doesn&#8217;t just provide a zip for the source.</a></li>
<li><a href="http://howsoftwareisbuilt.com/2007/12/18/interview-with-shawn-burke-program-manager-microsoft/#writingcode">Whether Microsoft&#8217;s individual developers write code differently knowing that their actual source might be available for the world to see someday.</a></li>
<li><a href="http://howsoftwareisbuilt.com/2007/12/18/interview-with-shawn-burke-program-manager-microsoft/#other">Whether or not Microsoft is planning on making available other development artifacts such as test scripts, threat models, etc.</a></li>
<li><a href="http://howsoftwareisbuilt.com/2007/12/18/interview-with-shawn-burke-program-manager-microsoft/#positioned">Whether a closed source company or an open source company is better positioned to support external developers who need access to the source for a given project.</a>
</ul>
<p><span id="more-119"></span></p>
<p> <strong>Scott: </strong>All right. So if you take a second and just briefly introduce yourself, that is probably a good place to start. Then we can drill into questions specifically around the source for the.NET framework 3.5.</p>
<p> <strong>Shawn: </strong>OK. I am Shawn Burke; I am a director here at the.NET development platform at Microsoft. I run a group that we internally call the agility team. We run small high value projects to try to help deliver value to customers in agile ways. Not necessarily using agile technology, but just being agile about how we deliver.</p>
<p> <strong>Scott: </strong>:So in other words, it sounds like you are looking for sort of low hanging fruit where you can do things that are a little bit outside of the norm but would not necessarily be an enormous effort, but would deliver a lot of value to the customers quickly. Am I characterizing it correctly?</p>
<p> <strong>Shawn: </strong>That is right. Our team works a little bit outside the bounds of the typical projects and we are not  constrained by the same rules they are. We are able to do things that are more customer focused and a little less process focused way.</p>
<p> <strong>Scott: </strong>Just as a point of clarification, people have said Microsoft is &#8220;open sourcing the.NET framework.&#8221;That is not what your Microsofts intention is and not really what you are doing. You are making your source code available for reference. You are not really open sourcing it the way that, you know&#8230;</p>
<p> <strong>Shawn: </strong>Nope, some people in the community used characterization, that is definitely not what were doing.Were making the source available as a tool that helps people be more successful with the platform in its current state.</p>
<p> With this effort, my goal has been from day one, a simple scenario, which is you are debugging against an API, you are getting an exception from the API, and you cannot figure out why you are getting it. It is often very difficult to figure that out just from documentation. However, your ability to step into the API often makes it really clear what you are doing wrong.</p>
<p> <strong>Scott: </strong>Right. In the example that Scott Guthrie put up on his site, this is something I&#8217;ve run into,? At the point where you DataBind something, all kinds of stuff happens like down in the plumbing.</p>
<p> <strong>Shawn: </strong>Yes.</p>
<p> <strong>Scott: </strong>And the exception that you get, you know, you do not really have a lot of visibility and sort of what you did wrong in your code that caused the DataBinding exception. And so that&#8217;s like&#8230;</p>
<p> <strong>Shawn: </strong>Yes.</p>
<p> <strong>Scott: </strong>That&#8217;s like the key scenario that you went after. <a name="personalmotivation"></a></p>
<p> <strong>Shawn: </strong>Yes. That is like the thing that you are unableto do currently you know, because I work here I have the benefit of being able to do that a lot. Quite frequently, the amount of time it saved me , &#8220;Oh, Ill just grab the symbols&#8221; and you do and start to debug with them and immediately you&#8217;re like &#8220;Oh! Because I forgot to do this or that.&#8221; It becomes so clear that I really wanted to enable that sort of service for customers because its such a powerful thing</p>
<p> <strong>Scott: </strong>Yes. And just to back up another thing that you said, too. I never read it. I was not indicating that Microsoft was somehow trying to create the impression that they open sourcing this. I know when I looked at it, it was clear to me that Microsoft was releasing the source for reference purposes, you were not releasing it so that people could&#8230;</p>
<p> <strong>Shawn: </strong>Yes. I get it. I did not mean to sound defensive there!</p>
<p> <strong>Scott:</strong> [laughs]<br />
I&#8217;m sure it comes up a lot.</p>
<p> <strong>Shawn: </strong>Yes. That was the first thing we saw on a large website that is often not terribly pro Microsoft</p>
<p> <strong>Scott: </strong>[laughs]</p>
<p> <strong>Shawn: </strong>Fortunately many people came on there and said, &#8220;No, no, no.&#8221; They never said that, that is not what they are doing. I think most people get that now.</p>
<p> <strong>Scott: </strong>So what you are enabling is a sort of step into debugging experience where normally, as soon as you call into the API, you could not continue to drill down and step in. Now you can.</p>
<p> One of the things I was not clear on is who gets this? Is this available to all versions of Visual Studio and all customers or is there a sort a subset? Who is this available to I guess?</p>
<p> <a name="available"></a> <strong>Shawn: </strong>If you are running on Windows, it is available to anyone who can use it or to look at it.</p>
<p> As far as the Visual Studio integration, you need to have VS Standard or above. You cannot do it with Express versions. You know the express versions of Visual Studio?</p>
<p> <strong> Scott: </strong>Sure.</p>
<p> <strong>Shawn: </strong>Express does not get it for some kind of fundamental reasons.The main reason there is it just simply because Express does not expose the UI that you need to set this up or have some of the other facilities internally to take advantage of it</p>
<p> <strong>Scott: </strong>Sure. Sure.</p>
<p> <strong>Scott: </strong>Yes. The only reason I ask is that some of the people in the Microsoft ecosystem have made their source available kind of under premium plans with their customers. However, that is not the approach that Microsoft is taking with this. This is not sort of a premium thing, this is just generally available.</p>
<p> <strong>Shawn: </strong>Yes, that is Code Center Premium (CCP), this works similar to that CCP , but there you need to have an account and a Smart Card actually. And you have to go through much more security than in this system. This is a public reference release of the code, so there is really no credentials required. There is none of that.</p>
<p> <a name="internalresistance"></a> <strong>Scott: </strong>So when you sort of floated this idea internally, it sounds like it was generally well received. People kind of jumped on board and wanted to help make it happen. Just behind the scenes, what were some of the things that it took to enable this? It is more than just dropping a zip of the source out there to make this happen.</p>
<p> <strong>Shawn: </strong>Yeah. Well, yeah. It is good that you brought that up. This whole thing started quite a few years ago.  When I was on the Windows Forms team, which I was for seven years, I always felt like we should be releasing the source for many reasons. Others had done it. I felt like it was good for customers. When I was the Development Manager on Windows Forms in early 2005, I did a blog post about this, saying I wanted to make this happen and talking about some of the challenges to doing so. It was kind of justI was just kind of brainstorming aloud about different ways and what some of the challenges were. The response was enormous.Hundreds of comments.</p>
<p> A funny story, I did that blog post, and then I went down to Cabo San Lucas with my girlfriend a couple of days later. When I turned my phone on halfway through the trip, just to see if it would work in Cabo, I had a flood of text messages that said, &#8220;Please call work.&#8221;</p>
<p> <strong>Sean Campbell: </strong>[laughter] All right. So you learned a lesson of do not blog anything but &#8220;I&#8217;m going to Cabo&#8221; on the blog before you go to Cabo, basically.</p>
<p> <strong>Shawn: </strong>Yeah. I think if you would really pull it down to basics, that is it. Well, actually, I had always done tons of blog posts that no one&#8217;s&#8230;</p>
<p> <strong>Scott: </strong>Meanwhile, you created this firestorm of all these people running around going, &#8220;What have you done?&#8221;</p>
<p> <strong>Shawn: </strong>Yeah, exactly. I like to joke that it created, basically, an international incident because it got picked up by eWEEK, Mary Jo Foley, CNET, and all the rest. Quite a few people picked it up. It generated a lot of interest. That was a good impetus for me that there was a lot of excitement in the community about this.</p>
<p> If you fast forward a couple of years, I did some more ground work on this thing in 2005 and 2006, got busy with new role I&#8217;m in now, and dropped it for six or eight months, and then picked it back upI think it was late last year, late 2006and started looking at how we would get this done.And Ive been shepherding it along since then.Getting this out there really is the realization of a dream that I have been chipping away at for quite some time.I really hope Developers find it as useful as I think they will!</p>
<p> <a name="zip"></a> You guys mentioned pushing it out as a zip. One of the real problems was that I did not want to have a situation where every team that did this put a zip file or MSI out every four months, so the customer had to go download, install, and set up his little studio to use. What if you have a hotfix or different version? You know what I mean. I did not want to have a situation that was going to be cumbersome for us to ship and for customers to consume.That would kind of defeat the purpose.</p>
<p> What really got me rolling on this was I started talking with the guy who developed this technology we use internally. Internally, you can get the source and demos for almost every product we build here at Microsoft off this thing called &#8220;Source Server.&#8221; Source Server has versioning built in, making sure things do not collide so you can have side by side versioning, and it all works very smoothly. The server side piece for source server is just a web server. There is no magic there so its very simply to deploy. There really was not any barrier to making to using that technology externally.</p>
<p> So what we able to develop was a system where teams could publish source very, very efficiently. After a first source publish, they can continue to do source publishing at near zero cost to them, which is great. On the customer side, you have a scenario where a customer has a few simple set up steps. Then they kind of auto magically get source and symbols for what we have chosen to make available at that time for free. No searching around on MSDN or having to deal with where to put the stuff on the machine.</p>
<p> <strong>Scott:</strong> It sounds like, too, one of things that you are saying this accomplishes is it sort of knows exactly what the client is running and building against. If they have installed the service pack or have not installed the service pack, they get the right source. They get source that matches up with their environment.</p>
<p> <strong>Shawn: </strong>Yes, if it is on the servers they can get it. One of the decisions I made in getting this done was that, the cheater thing I did was I said, &#8220;You know what, I &#8216;m not going to define policy on this. I&#8217;m going to get a system developed where individual product groups and teams can make decisions about how often they push source.&#8221; Meaning, does it make sense to push source for every new release we do? Maybe, I dont know. Does it make sense to push it for every service pack? Maybe, I do not know. I think those might be different for different teams. I think we are going to do learning in working with the community about what really makes sense there. However, the system is set up to handle it, in any case.</p>
<p> <strong>Scott: </strong>Like you said, generally people were receptive to this. Were there internal objections that had to be overcome? Where there people who had concerns that, &#8220;Hey, this is crazy. Why would we do this?&#8221;</p>
<p> <strong>Shawn: </strong>Well, if you go back into 2005, I think I had many senior people that I knew, vice president level people that were generally supportive of this, but very cautiously supportive. For me a little bit, one of the reasons it&#8217;s been a multi year effort is I had to push carefully and let some perspective change as the industry has changed and the environment changed over the last couple of years.</p>
<p> It has gotten significantly easier. Something happened, I think, in the greater consciousness of the industry over the last 12 months or so. A lot ofI do not want to say a lotresistance is too strong of a word. A lot of the real cautiousness and kind of by-default-no talking-into-yes stuff dissipated and switched to actually a lot of enthusiasm. We need to be careful about protecting the IP that we spent billions of dollars developing. However, I think people really see the value of this now. It has been great for us and for our customers for a subset of products. Now I have seen teams are signing up to push their code out really quite enthusiastically.</p>
<p> <strong>Scott: </strong>With the.NET framework, it is in a little bit of a unique position because, on one hand, Microsoft has invested a lot in it, and generated a lot of IP. However, on the other hand, it was never really a secret what was in the framework anyways. You could use reflector and other tools to disassemble what was in the framework and sort of figure out how it was doing what it was doing. However, it did not enable this &#8220;step into it while you are debugging&#8221; experience. It did not make it super easy to learn from the framework. This might have been a little unique in that the IP was not all that protected to begin with.</p>
<p> <strong>Shawn: </strong>Well, yeah. Yeah, it is funny. The case that I built for this, with managed code in particular, definitely had that aspect to it, that our level of secrecy around how this stuff works, as well. One of the problems with reflector, using reflector, the EULA does not really allow for it.</p>
<p> <strong>Scott: </strong>Ah, interesting.</p>
<p> <strong>Shawn: </strong>The EULA does say that you are not supposed to reverse engineer. That said, I felt like it was a good idea to give customers a way to do this within the license, which this is.</p>
<p> <strong>Scott: </strong>Hah! Yes, I guess I never really realized that that might be in the EULA. I think, especially among the more advanced developers and in the blogs, and in all that kind of stuff, it is such a common practice.</p>
<p> So, now that you have done this, you have taken this first step and you&#8217;re going to make source code available for certain subsystems of the framework, and that&#8217;s on a feature by feature basis, right?</p>
<p> So, Windows Forms will decide when they push their source code in, ASP.NET will decide when they push theirs in, am I understanding that right?</p>
<p> <strong>Shawn: </strong>Well, we have pretty much what you would consider, if you go back to.NET 2.0 and think about what made up the Framework at that point. We&#8217;ve got pretty much all of the big pieces there. We&#8217;ve got BCL, Windows Forms, ASP.NET, Data and XML.</p>
<p> So those guys are already taken care of. Therefore, we&#8217;re going out with essentially what is the original.NET framework. The other stuff will fall in. It is really a matter of me getting with a given team and through the process. The code preparation process is actually fairly labor intensive. It takes time to schedule that and manage it.</p>
<p> I had teams that were able to do that. A lot of teams have been obviously really busy getting VS 2008 and.NET framework 3.5 finished up. We will continue to push out more code as time goes on. We wanted to get the big ones first.</p>
<p> We also managed to get WPF in there as well, so its not just the older stuff.Lots more is in the pipe to come online as time goes on.</p>
<p> The choice was either we wait a couple of months to do this, and make everybody wait, or we get the big ones out there fast and then we push in the other stuff as we have time, and as it comes online.</p>
<p> <a name="writingcode"></a> <strong>Scott: </strong>So one of the things that is kind of interesting is, you&#8217;ve got these individual developers in Microsoft and they&#8217;re writing code. They have worked in Microsoft for a long time and they have a feeling that, you know, what happens in Microsoft stays in Microsoft, I guess, for lack of a better term.</p>
<p> The whole world is not going to see the line of code that they are typing right now. Now, with the source being released, how do you think that is affecting, if at all, how individual developers are doing their job? How product teams are looking at how they build features going forward, knowing that the source for it is going to be out there.</p>
<p> <strong>Shawn: </strong>Even product teams that are not the framework team, they are thinking, that&#8217;s great, they did that over there, so does this mean that someday my source is actually going to be out there? Yes. Yes. They will be thinking that. And they should be thinking that.</p>
<p> In fact, one of my to do list items is to do some broader communications across our Division about that exact point Software developers are pretty much the same around the world. Software developers, in general, always try to do the right thing. They are also always, in general, under a certain amount of time pressure. Anything that is going to encourage them to take a little extra time to do something right, in the kind of capital &#8216;R&#8217; right, way, is a good thing.</p>
<p> Whether that&#8217;s testing, whether that&#8217;s static analysis like FxCop, or whether that&#8217;s security reviews or code reviews, or whether that&#8217;s the code is going to be visible to their peers or the public, I think those are all good incentives for software developers to think extra hard about how they do things.</p>
<p> So, you know, honestly, we went through the code, we&#8217;ve done these code reviews, and these code scrubs and we found a lot less stuff than we thought we would.Actually, we found almost nothing of any real concern, which was nice.</p>
<p> <a name="other"></a> <strong>Sean: </strong>Are there other things that Microsoft is thinking about exposing around the development process?</p>
<p> There are elements like threat modeling, specs, test scripts, all kinds of things that Microsoft might be thinking about exposing. Are there any thoughts or plans along those ways about how far this maybe goes, eventually?</p>
<p> <strong>Shawn: </strong>That is a really good question. No is the answer. [laughter]</p>
<p> <strong>Sean: </strong>You&#8217;ve accomplished enough by ruining one Cabo vacation. Right? You can put that post up later, you know, on your next vacation.</p>
<p> <strong>Shawn: </strong>I think that stuff&#8230;that is a good point. If you start doing, a curve on the cost for us to do that versus what percentage of customers that level of access is going to be valuable for. For the threat models, and even for the specs, I think that is a harder case to make. I think those things are also harder to vet, or release, than the source is. They are also less useful to a broad set of customers.</p>
<p> <strong>Sean: </strong>Well, one of the things that crossed my mind was test scripts, and test routines that Microsoft creates because that would be helpful to others just from an educational standpoint. That does not really expose Microsoft to too much more overhead. I am not trying to pitch the idea here, But go ahead, Scott, what were you going to ask?</p>
<p> <strong>Scott: </strong>No, same thing. Just, Microsoft has given an inch so watch us try to take a mile.</p>
<p> <strong>Shawn: </strong>Oh, yeah, we know it. Absolutely.</p>
<p> <strong>Scott: </strong>A lot of times that&#8217;s what people want. They say, OK, there is this API. I want an example for how would use it. I would go look in the help. Well, that example is not what I really want. Microsoft I would assume writes really comprehensive test suites.</p>
<p> <strong>Shawn: </strong>I do not know if the test code is what you want, either. We call it auto PMEs. The PME stands for Property Method and Event. It is super granular. A lot of that code does not relate to any real scenario. It is just wide unit testing code. There are other types of tests as well. A lot of the stuff is that. The challenge of the testing stuff.</p>
<p> I actually think that the testing stuff is a good point, and an interesting thing and I have been thinking about, not really in terms of us releasing test stuff for previous products. I will get into one in a second. The question is going forward, is there a way for customers to leverage the kind of stuff we do in tests more broadly?</p>
<p> However, the reason, going backward, most of our test stuff is written using internal test harnesses and internal tools. There is this huge slippery slope there. You need this and you need that, and it would be really a lot of work.</p>
<p> <strong>Scott: </strong>Right, right, so they would have this test but they would not be able to hit F5 on it and actually watch it run anyways.</p>
<p> <strong>Shawn: </strong>Yeah, and the tests probably call into a bunch of other libraries that are internal that we would not ship externally anyway. The tests themselves might not make any sense. Most of the tests are stored in this big system called Mad Dog, which is kind of a giant database of test cases and test code, and I do not even know how you go about extracting code from that thing.</p>
<p> [laughter]</p>
<p> <a name="positioned"></a> <strong>Sean: </strong>So Shawn, what do you think aboutthis is just something I was noodling on, trying to think of the right way to box it in given the time in terms of a questionso, Microsoft&#8217;s a closed source company, right. By definition if not necessarily for the sake of our interview. What do you think about closed source companies perhaps at times being better able to support the exposure of the source than maybe a company   or a project that simply says &#8216;Well, just go check it out from subversion, from xyz open source project?&#8217;</p>
<p> <strong>Shawn: </strong>Right.</p>
<p> <strong>Sean: </strong>Because I look at the Visual Studio integration, and I look at robably how this will eventually weave into PSS, interacting with customers, and saying well, here&#8217;s an odd dynamic: is a closed source company perhaps better able to actually make the exposure of the source code, when they do it, a more positive experience that actually lets people leverage it more easily? I mean, absent the ability to fork, and some of the more foundational principles of Open Source, how an outside developer would use it day to day development and how a closed source company in this case Microsoft could support that.</p>
<p> <strong>Shawn: </strong>That is a great question. I think that the answer isone of the things that I&#8217;ve been trying to do, and that we&#8217;ve been trying to do, is look at the changes in the industry that open source has driven and really think hard about what the real value adds are there. Is the value add really that you can recompile your kernel, or is the value add that you can debug it and understand why it&#8217;s doing something?</p>
<p> And there are obviously cases where the answer is &#8216;both&#8217; or &#8216;one or the other&#8217;. However, for I think the vast majority of folks, us being able to deliver the source in a way that&#8217;s easy for folks to consume and step through as a way to make them more successful on our platform is a really big win. I think that it fits well into our overall strategy of kind of keeping developers integrated in our overall processes, and it fits well into this another milestone of transparency.</p>
<p> We have kind of been trying to figure out ways to open up the envelope of transparency with Developer Division particularly and I think this fits into that portfolio really wellas well as the portfolio that the Shared Source Initiative folks are building. You have CodePlex on one end which is full open source, then you have kind of our proprietary source system on the other end, and there&#8217;s a nice continuum in between. I think that we do bring some assets to bear which are difficult for companies that are purely open source or service model driven.</p>
<p> <strong>Sean: </strong>OK, cool. Well, that is all I&#8217;ve got, and also to be sensitive to timeScott, do you have a closing question or two?</p>
<p> <strong>Scott: </strong>I think that&#8217;s a good note to leave it on. The thing that we always end with is: are there things that we didn&#8217;t cover that you think are really important for people to know? So, we&#8217;ll just kind of hand you the microphone at the end if there&#8217;s something you want to get out that we didn&#8217;t specifically ask about.</p>
<p> <strong>Shawn:</strong>Nope, I think we covered it all.Thanks guys! </p>
<img src="http://howsoftwareisbuilt.com/?ak_action=api_record_view&id=119&type=feed" alt="" /><!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em>Bookmark this:</em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://howsoftwareisbuilt.com/2007/12/18/interview-with-shawn-burke-program-manager-microsoft/&amp;title=Interview+with+Shawn+Burke+%26%238211%3B+Director+%26%238211%3B+Microsoft+%26%238211%3B+.NET+Developer+Platform+Group" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://howsoftwareisbuilt.com/2007/12/18/interview-with-shawn-burke-program-manager-microsoft/&amp;title=Interview+with+Shawn+Burke+%26%238211%3B+Director+%26%238211%3B+Microsoft+%26%238211%3B+.NET+Developer+Platform+Group" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://howsoftwareisbuilt.com/2007/12/18/interview-with-shawn-burke-program-manager-microsoft/" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://howsoftwareisbuilt.com/2007/12/18/interview-with-shawn-burke-program-manager-microsoft/&amp;title=Interview+with+Shawn+Burke+%26%238211%3B+Director+%26%238211%3B+Microsoft+%26%238211%3B+.NET+Developer+Platform+Group" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://howsoftwareisbuilt.com/2007/12/18/interview-with-shawn-burke-program-manager-microsoft/&amp;title=Interview+with+Shawn+Burke+%26%238211%3B+Director+%26%238211%3B+Microsoft+%26%238211%3B+.NET+Developer+Platform+Group" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.sphere.com/sphereit/http://howsoftwareisbuilt.com/2007/12/18/interview-with-shawn-burke-program-manager-microsoft/" rel="nofollow" title="Add to&nbsp;SphereIt"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/sphereit.png" title="Add to&nbsp;SphereIt" alt="Add to&nbsp;SphereIt" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Interview+with+Shawn+Burke+%26%238211%3B+Director+%26%238211%3B+Microsoft+%26%238211%3B+.NET+Developer+Platform+Group+@+http://howsoftwareisbuilt.com/2007/12/18/interview-with-shawn-burke-program-manager-microsoft/" rel="nofollow" title="Add to&nbsp;Twitter"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&nbsp;Twitter" alt="Add to&nbsp;Twitter" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://howsoftwareisbuilt.com/2007/12/18/interview-with-shawn-burke-program-manager-microsoft/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSI Approves Microsoft Licenses</title>
		<link>http://howsoftwareisbuilt.com/2007/10/17/osi-approves-microsoft-licenses/</link>
		<comments>http://howsoftwareisbuilt.com/2007/10/17/osi-approves-microsoft-licenses/#comments</comments>
		<pubDate>Wed, 17 Oct 2007 19:44:45 +0000</pubDate>
		<dc:creator>scottswigart</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[codeplex]]></category>
		<category><![CDATA[licensing]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[OSI]]></category>

		<guid isPermaLink="false">http://howsoftwareisbuilt.com/2007/10/17/osi-approves-microsoft-licenses/</guid>
		<description><![CDATA[The OSI has approved the two Microsoft software licenses, the Microsoft Reciprocal License, and the Microsoft Public License.&#160; This makes all the code on Microsoft&#8217;s CodePlex site (Microsoft&#8217;s equivalent of SourceForge) official open-source software, as much of it is licensed under the Microsoft Public License (formerly the Microsoft Permissive License).&#160; It also means that things [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://blog.russnelson.com/opensource/microsoft-licenses.html">OSI has approved</a> the two Microsoft software licenses, the <a href="http://opensource.org/licenses/ms-rl.html">Microsoft Reciprocal License</a>, and the <a href="http://opensource.org/licenses/ms-pl.html">Microsoft Public License</a>.&nbsp; This makes all the code on Microsoft&#8217;s CodePlex site (Microsoft&#8217;s equivalent of SourceForge) official open-source software, as much of it is licensed under the Microsoft Public License (formerly the Microsoft Permissive License).&nbsp; It also means that things like Microsoft&#8217;s Ajax Control Toolkit is open-source (with the inherent ability to fork, etc.)</p>
<img src="http://howsoftwareisbuilt.com/?ak_action=api_record_view&id=109&type=feed" alt="" /><!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em>Bookmark this:</em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://howsoftwareisbuilt.com/2007/10/17/osi-approves-microsoft-licenses/&amp;title=OSI+Approves+Microsoft+Licenses" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://howsoftwareisbuilt.com/2007/10/17/osi-approves-microsoft-licenses/&amp;title=OSI+Approves+Microsoft+Licenses" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://howsoftwareisbuilt.com/2007/10/17/osi-approves-microsoft-licenses/" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://howsoftwareisbuilt.com/2007/10/17/osi-approves-microsoft-licenses/&amp;title=OSI+Approves+Microsoft+Licenses" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://howsoftwareisbuilt.com/2007/10/17/osi-approves-microsoft-licenses/&amp;title=OSI+Approves+Microsoft+Licenses" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.sphere.com/sphereit/http://howsoftwareisbuilt.com/2007/10/17/osi-approves-microsoft-licenses/" rel="nofollow" title="Add to&nbsp;SphereIt"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/sphereit.png" title="Add to&nbsp;SphereIt" alt="Add to&nbsp;SphereIt" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+OSI+Approves+Microsoft+Licenses+@+http://howsoftwareisbuilt.com/2007/10/17/osi-approves-microsoft-licenses/" rel="nofollow" title="Add to&nbsp;Twitter"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&nbsp;Twitter" alt="Add to&nbsp;Twitter" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://howsoftwareisbuilt.com/2007/10/17/osi-approves-microsoft-licenses/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Is Security Really That Hard to Measure?</title>
		<link>http://howsoftwareisbuilt.com/2007/10/12/is-security-really-that-hard-to-measure/</link>
		<comments>http://howsoftwareisbuilt.com/2007/10/12/is-security-really-that-hard-to-measure/#comments</comments>
		<pubDate>Fri, 12 Oct 2007 00:00:58 +0000</pubDate>
		<dc:creator>scottswigart</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[security development lifecycle]]></category>

		<guid isPermaLink="false">http://howsoftwareisbuilt.com/2007/10/12/is-security-really-that-hard-to-measure/</guid>
		<description><![CDATA[There&#8217;s a good article on LinuxWorld about the security debate between open-source and Windows.  My first question is, does it need to be a debate?  In this day and age, isn&#8217;t it easy enough to quantify vulnerabilities?
If you are looking for subjective opinion, I recommend looking through the interviews we&#8217;ve done here.  [...]]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s a good article on LinuxWorld about the <a href="http://www.linuxworld.com.au/index.php/id;121116082;fp;4;fpid;3">security debate between open-source and Windows</a>.  My first question is, does it need to be a debate?  In this day and age, isn&#8217;t it easy enough to quantify vulnerabilities?</p>
<p>If you are looking for subjective opinion, I recommend looking through the interviews we&#8217;ve done here.  At the risk of sounding like a Microsoft fan-boy, the Microsoft interviews (in my opinion) demonstrate a company where secure coding is &#8220;in the water&#8221;.  Code goes through threat modeling, risky function calls have simply been banned, code goes through automated and human inspection, and vulnerabilities that do slip through feedback into the process to determine how to prevent them in the future.  </p>
<p>I simply don&#8217;t get the same feeling from the open-source people we&#8217;ve talked to.  When we&#8217;ve brought the subject up, the response is almost universally &#8220;many eyeballs,&#8221; and faith (without data) that &#8220;many eyeballs&#8221; is effective.</p>
<p>Am I completely off base?  Do things like the Linux kernel and Apache go through rigorous security reviews?  Is there proof that &#8220;many eyeballs&#8221; in open source is at least as good as something like the Security Development Lifecycle in Microsoft?  If you&#8217;re in a position to know, let&#8217;s chat!</p>
<img src="http://howsoftwareisbuilt.com/?ak_action=api_record_view&id=106&type=feed" alt="" /><!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em>Bookmark this:</em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://howsoftwareisbuilt.com/2007/10/12/is-security-really-that-hard-to-measure/&amp;title=Is+Security+Really+That+Hard+to+Measure%3F" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://howsoftwareisbuilt.com/2007/10/12/is-security-really-that-hard-to-measure/&amp;title=Is+Security+Really+That+Hard+to+Measure%3F" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://howsoftwareisbuilt.com/2007/10/12/is-security-really-that-hard-to-measure/" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://howsoftwareisbuilt.com/2007/10/12/is-security-really-that-hard-to-measure/&amp;title=Is+Security+Really+That+Hard+to+Measure%3F" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://howsoftwareisbuilt.com/2007/10/12/is-security-really-that-hard-to-measure/&amp;title=Is+Security+Really+That+Hard+to+Measure%3F" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.sphere.com/sphereit/http://howsoftwareisbuilt.com/2007/10/12/is-security-really-that-hard-to-measure/" rel="nofollow" title="Add to&nbsp;SphereIt"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/sphereit.png" title="Add to&nbsp;SphereIt" alt="Add to&nbsp;SphereIt" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Is+Security+Really+That+Hard+to+Measure%3F+@+http://howsoftwareisbuilt.com/2007/10/12/is-security-really-that-hard-to-measure/" rel="nofollow" title="Add to&nbsp;Twitter"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&nbsp;Twitter" alt="Add to&nbsp;Twitter" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://howsoftwareisbuilt.com/2007/10/12/is-security-really-that-hard-to-measure/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Microsoft to Reveal Source for .NET Framework 3.5</title>
		<link>http://howsoftwareisbuilt.com/2007/10/04/microsoft-to-reveal-source-for-net-framework-35/</link>
		<comments>http://howsoftwareisbuilt.com/2007/10/04/microsoft-to-reveal-source-for-net-framework-35/#comments</comments>
		<pubDate>Thu, 04 Oct 2007 19:47:35 +0000</pubDate>
		<dc:creator>scottswigart</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[licensing]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[source code]]></category>

		<guid isPermaLink="false">http://howsoftwareisbuilt.com/2007/10/04/microsoft-to-reveal-source-for-net-framework-35/</guid>
		<description><![CDATA[According to Scott Guthrie, Microsoft will make the source for the upcoming .NET Framework 3.5 available under the Microsoft Reference License.  This isn&#8217;t an open-source license (i.e. you couldn&#8217;t fork the code), but it is still a &#8220;good thing&#8221; in that developers can learn from the source and have an improved debugging experience with [...]]]></description>
			<content:encoded><![CDATA[<p>According to <a href="http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code-for-the-net-framework-libraries.aspx">Scott Guthrie</a>, Microsoft will make the source for the upcoming .NET Framework 3.5 available under the <a href="http://www.microsoft.com/resources/sharedsource/licensingbasics/referencelicense.mspx">Microsoft Reference License</a>.  This isn&#8217;t an open-source license (i.e. you couldn&#8217;t fork the code), but it is still a &#8220;good thing&#8221; in that developers can learn from the source and have an improved debugging experience with the ability to step-into the framework code.</p>
<p><strong>Update:</strong> It seems that this isn&#8217;t seen as happy news by all.  There&#8217;s an <a href="http://www.eweek.com/article2/0,1895,2191754,00.asp">article on eWeek</a> that&#8217;s just too irrational and frothing to pass up, claiming that this is all a ploy by Microsoft to kill Mono.  As Microsoft is officially supporting Novell&#8217;s efforts in porting Silverlight to Linux (on top of Mono), the <em>evidence</em> would indicate that Microsoft is doing this to support .NET developers, and not as some clever conspiracy to kill off Mono.</p>
<img src="http://howsoftwareisbuilt.com/?ak_action=api_record_view&id=103&type=feed" alt="" /><!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em>Bookmark this:</em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://howsoftwareisbuilt.com/2007/10/04/microsoft-to-reveal-source-for-net-framework-35/&amp;title=Microsoft+to+Reveal+Source+for+.NET+Framework+3.5" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://howsoftwareisbuilt.com/2007/10/04/microsoft-to-reveal-source-for-net-framework-35/&amp;title=Microsoft+to+Reveal+Source+for+.NET+Framework+3.5" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://howsoftwareisbuilt.com/2007/10/04/microsoft-to-reveal-source-for-net-framework-35/" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://howsoftwareisbuilt.com/2007/10/04/microsoft-to-reveal-source-for-net-framework-35/&amp;title=Microsoft+to+Reveal+Source+for+.NET+Framework+3.5" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://howsoftwareisbuilt.com/2007/10/04/microsoft-to-reveal-source-for-net-framework-35/&amp;title=Microsoft+to+Reveal+Source+for+.NET+Framework+3.5" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.sphere.com/sphereit/http://howsoftwareisbuilt.com/2007/10/04/microsoft-to-reveal-source-for-net-framework-35/" rel="nofollow" title="Add to&nbsp;SphereIt"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/sphereit.png" title="Add to&nbsp;SphereIt" alt="Add to&nbsp;SphereIt" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Microsoft+to+Reveal+Source+for+.NET+Framework+3.5+@+http://howsoftwareisbuilt.com/2007/10/04/microsoft-to-reveal-source-for-net-framework-35/" rel="nofollow" title="Add to&nbsp;Twitter"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&nbsp;Twitter" alt="Add to&nbsp;Twitter" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://howsoftwareisbuilt.com/2007/10/04/microsoft-to-reveal-source-for-net-framework-35/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Interview with Microsoft&#8217;s Scott Charney</title>
		<link>http://howsoftwareisbuilt.com/2007/10/04/interview-with-microsofts-scott-charney/</link>
		<comments>http://howsoftwareisbuilt.com/2007/10/04/interview-with-microsofts-scott-charney/#comments</comments>
		<pubDate>Thu, 04 Oct 2007 19:35:33 +0000</pubDate>
		<dc:creator>scottswigart</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[michael howard]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[security development lifecycle]]></category>

		<guid isPermaLink="false">http://howsoftwareisbuilt.com/2007/10/04/interview-with-microsofts-scott-charney/</guid>
		<description><![CDATA[A while back, we did an in-depth interview with Michael Howard about Microsoft&#8217;s Security Development Lifecycle, which has been one of our most popular interviews to date.&#160; It seems there&#8217;s a lot of interest in pulling back the covers and looking at how Microsoft is approaching building secure code.&#160; 
ComputerWorld just did an interview with [...]]]></description>
			<content:encoded><![CDATA[<p>A while back, we did an in-depth interview with <a href="http://howsoftwareisbuilt.com/2007/06/24/michael-howard-microsoft-interview/">Michael Howard</a> about Microsoft&#8217;s Security Development Lifecycle, which has been one of our most popular interviews to date.&nbsp; It seems there&#8217;s a lot of interest in pulling back the covers and looking at how Microsoft is approaching building secure code.&nbsp; </p>
<p>ComputerWorld just did an <a href="http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;articleId=9038059&amp;pageNumber=1">interview with Microsoft&#8217;s Scott Charney</a>, which provides more insight into their efforts to produce secure products.</p>
<img src="http://howsoftwareisbuilt.com/?ak_action=api_record_view&id=101&type=feed" alt="" /><!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em>Bookmark this:</em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://howsoftwareisbuilt.com/2007/10/04/interview-with-microsofts-scott-charney/&amp;title=Interview+with+Microsoft%26%238217%3Bs+Scott+Charney" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://howsoftwareisbuilt.com/2007/10/04/interview-with-microsofts-scott-charney/&amp;title=Interview+with+Microsoft%26%238217%3Bs+Scott+Charney" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://howsoftwareisbuilt.com/2007/10/04/interview-with-microsofts-scott-charney/" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://howsoftwareisbuilt.com/2007/10/04/interview-with-microsofts-scott-charney/&amp;title=Interview+with+Microsoft%26%238217%3Bs+Scott+Charney" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://howsoftwareisbuilt.com/2007/10/04/interview-with-microsofts-scott-charney/&amp;title=Interview+with+Microsoft%26%238217%3Bs+Scott+Charney" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.sphere.com/sphereit/http://howsoftwareisbuilt.com/2007/10/04/interview-with-microsofts-scott-charney/" rel="nofollow" title="Add to&nbsp;SphereIt"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/sphereit.png" title="Add to&nbsp;SphereIt" alt="Add to&nbsp;SphereIt" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Interview+with+Microsoft%26%238217%3Bs+Scott+Charney+@+http://howsoftwareisbuilt.com/2007/10/04/interview-with-microsofts-scott-charney/" rel="nofollow" title="Add to&nbsp;Twitter"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&nbsp;Twitter" alt="Add to&nbsp;Twitter" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://howsoftwareisbuilt.com/2007/10/04/interview-with-microsofts-scott-charney/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interview with Ryan Waite, Group Program Manager for High-Performance Computing at Microsoft.</title>
		<link>http://howsoftwareisbuilt.com/2007/07/22/interview-with-ryan-waite/</link>
		<comments>http://howsoftwareisbuilt.com/2007/07/22/interview-with-ryan-waite/#comments</comments>
		<pubDate>Sun, 22 Jul 2007 21:25:49 +0000</pubDate>
		<dc:creator>scottswigart</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Compute Cluster Server]]></category>
		<category><![CDATA[high performance computing]]></category>
		<category><![CDATA[message passing interface]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[parallel programming]]></category>
		<category><![CDATA[Ryan Waite]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[supercomputing]]></category>

		<guid isPermaLink="false">http://howsoftwareisbuilt.com/2007/07/22/interview-with-ryan-waite/</guid>
		<description><![CDATA[Interviewers: Scott Swigart, and Sean Campbell 
Interviewee: Ryan Waite 







Ryan Waite



In this interview, we talk with Ryan Waite, Group Program Manager for High-Performance Computing at Microsoft.&#160; We talk about: 

Microsoft&#8217;s entry into the High Performance Computing area.
Microsoft&#8217;s support of the open source Message Passing Interface (MPI).
MPI has become bloated, and there&#8217;s no usability data (like [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Interviewers:</strong> <a href="http://howsoftwareisbuilt.com/about-scott-swigart/">Scott Swigart</a>, and <a href="http://howsoftwareisbuilt.com/about-sean-campbell/">Sean Campbell</a> </p>
<p><strong>Interviewee:</strong> <a href="http://howsoftwareisbuilt.com/about-ryan-waite-microsoft-group-program-manager-for-high-performance-computing/">Ryan Waite</a> </p>
<table>
<tr>
<td><img src='http://howsoftwareisbuilt.com/wp-content/uploads/2007/07/ryanwaite.thumbnail.jpg' alt='ryanwaite.jpg' />
</td>
</tr>
<tr>
<td align=center>
Ryan Waite
</td>
</tr>
</table>
<p>In this interview, we talk with Ryan Waite, Group Program Manager for High-Performance Computing at Microsoft.&nbsp; We talk about: </p>
<ul>
<li><a href="http://howsoftwareisbuilt.com/2007/07/22/interview-with-ryan-waite/#entry">Microsoft&#8217;s entry into the High Performance Computing area</a>.
<li><a href="http://howsoftwareisbuilt.com/2007/07/22/interview-with-ryan-waite/#mpi">Microsoft&#8217;s support of the open source Message Passing Interface (MPI)</a>.
<li><a href="http://howsoftwareisbuilt.com/2007/07/22/interview-with-ryan-waite/#bloat">MPI has become bloated, and there&#8217;s no usability data (like there is with Microsoft Office) to indicate what should be deprecated</a>.
<li><a href="http://howsoftwareisbuilt.com/2007/07/22/interview-with-ryan-waite/#features">At Microsoft, select customers help shape the features for the next product release</a>.
<li><a href="http://howsoftwareisbuilt.com/2007/07/22/interview-with-ryan-waite/#ease">Microsoft has always focused on ease of use, simplified administration, and uncomplicated setup. HPC is no different.</a>
<li><a href="http://howsoftwareisbuilt.com/2007/07/22/interview-with-ryan-waite/#instrument">Instrumentation helps find reliability issues. If partners are affecting reliability (with unstable drivers, for example) certification helps raise the bar.</a>
<li><a href="http://howsoftwareisbuilt.com/2007/07/22/interview-with-ryan-waite/#parallel">Parallel programming is now the only way to do more computation in the same amount of time. Processors just are getting faster like they used to.</a>
<li><a href="http://howsoftwareisbuilt.com/2007/07/22/interview-with-ryan-waite/#radical">It&#8217;s easier for open source to be incremental. Proprietary software has to make radical changes.</a>
<li><a href="http://howsoftwareisbuilt.com/2007/07/22/interview-with-ryan-waite/#bandwidth">Hard drives + overnight shipping = really high bandwidth.</a>
</ul>
<p><span id="more-73"></span></p>
<p>&nbsp; </p>
<p><b>Scott Swigart:</b> We are conducting a series of interviews to explore the premise that open source software and closed source proprietary software are built differently &#8212; that the software development life-cycle is different, and that difference is likely to manifest itself in concrete ways in the final product. </p>
<p>That&#8217;s not to say that one&#8217;s better than the other, but simply that there are certain expectations you can have from either open source or closed source software because of the way it&#8217;s built, as well as certain inherent limitations. </p>
<p>In the past, ISVs pretty much just wrote closed source proprietary software, but today they have a little more of a choice in how they build a product, and we want to look at some of the decision points around that. And if you&#8217;re looking at bringing software into your organization, and you have a choice between something open source and something closed source proprietary, again, what are some of the common decision points or expectations around that? </p>
<p>To get us started, tell us a little about yourself and what you do, to give us a little bit of context. </p>
<p><b>Ryan Waite:</b> <a name="entry"></a>I&#8217;m the Group Program Manager for <a href="http://www.microsoft.com/windowsserver2003/ccs/default.aspx">High-Performance Computing</a> at Microsoft. What that means is that my team is responsible for writing the technical specifications for our products; we design which features are going to be necessary for the product, then we write up how those features should work. </p>
<p>We work in close partnership with the software development and software test teams. The development team, as you can imagine, writes the code itself, and the test team tests that code. I should also mention that my product actually combines both closed and open source software &#8212; both Microsoft-designed as well as open source software. </p>
<p>My staff is comprised mostly of computer scientists or computer engineers of one kind or another. I&#8217;ve been at Microsoft for over 15 years, and I&#8217;ve worked mostly on server products, including things like Exchange Server, BackOffice Server, Windows Server, and Small Business Server &#8212; all sorts of different pieces. </p>
<p>And the product I work on right now is called Compute Cluster Server. As an HPC product, Compute Cluster Server allows you to bind 50 or 100 or 1,000 machines together to work on a single computational problem or a single set of closely related computational problems. So it&#8217;s basically a category of supercomputing. </p>
<p>The idea is to take very large computational problems, like proteomics problems, genomic problems, problems in mechanical engineering, weather simulations, and computational finance; and you can then run these against this huge set of machines. And the great thing about these kinds of clusters is that they cost a fraction of the cost of traditional supercomputers. But clusters are very powerful, and they&#8217;re very well suited to certain types of programming problems. These kinds of clusters are based on the concept of what are called <a href="http://www.beowulf.org/">Beowulf</a> clusters, developed back in the early &#8217;90s at NASA. The idea is to bind together a bunch of commodity servers with a high-speed network, and you can run some very interesting computational problems on them. </p>
<p>Most problems can be designed to work on a cluster, although there is still a category of supercomputing problems that you really do need a traditional supercomputer for. </p>
<p><b>Scott:</b> Thanks. You mentioned that you have closed source and open source solutions; can you talk a little bit about what you do on each side? </p>
<p><b>Ryan:</b> Loosely speaking, you can think of our product as having three major components. One is what&#8217;s called a job scheduler, which schedules work across this big cluster of resources. If you have 1,000 machines, it&#8217;s not like every job takes 1,000 machines; some take 16 machines, some need 64 machines, some need 132 machines. And then they have time limits for how long they want the machines to go &#8212; for example, they might need eight hours of computational time. So we have a job scheduler. </p>
<p>One of the gentlemen on my team was an architect on the LSF job scheduler, at a company called Platform Computing &#8212; he&#8217;s a rocket scientist. The second thing we&#8217;ve built is systems management functionality, and this allows us to manage this big cluster of machines. There&#8217;s a woman named Cathy Palmer on my team who was at Cray and Terra Computing for 11 years and has a PhD in job scheduling; she&#8217;s a rocket scientist, too. These are some of the best people that ever I worked with, so I&#8217;m just going to glow a little bit about how great they are. </p>
<p>The third area is about high-speed networking, and the parallel programming model itself. That&#8217;s headed up by another gentleman on my team named Eric Lantz. Part of that is high-speed networking. On the high-speed networking end of things, you need to enable these machines to talk to each other very quickly, because sometimes the speed of your computation is dependent on how fast the nodes can communicate with each other as they&#8217;re running their computations. It&#8217;s not just about the CPU inside that machine, but sometimes the I/O, or the communication speed between those machines. </p>
<p><a name="mpi"></a>For high speed, tightly coupled communication there&#8217;s something called <a href="http://www-unix.mcs.anl.gov/mpi/">MPI</a>. MPI stands for the Message Passing Interface. This is basically the communication interface used for people to write these kinds of massively parallel applications that run on clusters. There are some standards for how MPI is implemented, but the reference design comes from <a href="http://www.anl.gov/">Argonne National Lab</a>s. And Argonne National Labs distributes that code under a BSD-style open source license. </p>
<p>So Microsoft is a licensee for that code. We&#8217;ve taken that open source code from Argonne, and we&#8217;ve made modifications to it and we ship it as part of our product. The folks at Argonne are genius UNIX and Linux developers &#8212; really great UNIX developers. They&#8217;ve been doing this kind of stuff for years and years. And message passing is a tremendously complicated area of computer science, and they&#8217;ve done a great job at building this code. They call it <a href="http://en.wikipedia.org/wiki/MPICH">MPICH</a> and <a href="http://www.hpclab.niu.edu/mpi/g2_body.html">MPICH2</a>. </p>
<p>The problem is that they&#8217;re not Windows developers. They don&#8217;t have a lot of experience with that. They have one person over there that is their Windows developer, but we have a lot of experience programming Windows and can certainly help. And Windows and Linux, are different operating systems, so you write programs for them in slightly different ways. Not radically different ways; in both cases you use C or Java or C# or whatever to write your applications. </p>
<p>But the thing to keep in mind with them is that you have different efficiencies in different kinds of ways. And so one of the things we&#8217;ve done is to implement those efficiencies in the Windows version of MPICH. All of this allows us to have a very high-performance solution. </p>
<p>We&#8217;re about to contribute those changes back. We&#8217;ve just been working through some of the final issues with how we transfer the code back. It&#8217;s just logistical stuff. In the next month or two, you&#8217;ll see a press announcement go out that talks about our contributions to this code, these modifications that we&#8217;ve made back to Argonne. As far as I can tell, this will be the largest contribution Microsoft has ever made to the open source community. </p>
<p>With this particular code, we want anybody running Windows to have access to a high-performance MPI library. If they buy it through my product, that&#8217;s great; if they are just running Windows and they want it, then they can get it from Argonne. </p>
<p><b>Scott:</b> You&#8217;re in kind of an interesting position, because you&#8217;re one of the few Microsoft people developing both closed source proprietary and open source projects. What are some of the things that stand out to you as key differences between how those two processes work? </p>
<p><b>Ryan:</b> What&#8217;s interesting about MPI is that there are a large number of features that have been driven because somebody in a standards body or open source group thought it was an interesting feature for what they were doing. They&#8217;ve implemented particular APIs. </p>
<p>Now, that API may never be used by anybody else except them. And yet it becomes part of this code base. The really great thing about that is that if you need to do a very specialized API for the application that you&#8217;re writing, you can go ahead and contribute it to Argonne &#8212; and if anybody else in the world has that same kind of problem, they might be able to use that same piece of code that you wrote. </p>
<p>The disadvantage of that is that this is now a very large code set with over 200 APIs. It&#8217;s a bit of a joke, and I don&#8217;t have any proof that this is true, but the joke is most developers use six or eight of the MPI commands out of that 200 for the bulk of their programming, so there&#8217;s a whole bunch of stuff that just isn&#8217;t used. And part of the problem is that you have to maintain all of that code as it marches forward, making sure all those APIs work. </p>
<p>They&#8217;re all documented, they&#8217;ve all been shipped, and ideally, they all continue to be well-supported. I think that&#8217;s the struggle with that kind of model &#8212; the code has exploded pretty quickly. It exploded because everybody gets to contribute the little things that they need into that code. </p>
<p><b>Scott:</b> That&#8217;s interesting, because in other open source projects, the maintainers tend to be pretty strict and conservative about what they&#8217;ll let in. </p>
<p><b>Ryan:</b> <a name="bloat"></a>There is no single person for MPI saying, &#8220;this is OK, this is not OK.&#8221; You don&#8217;t really have the same kind of maintainer making things cross a very high bar before they get included. And those bars can take many forms, other than just the quality of the code. </p>
<p>Sometimes people establish a quality bar for when code gets included and sometimes it&#8217;s a customer requirement bar &#8212; you might want to make sure that if people are going to use something, it works properly. We all have to have different reasons for what we decide to include in software and what we decide not to. </p>
<p>I think it&#8217;s just the nature of these projects and the way software projects mature. They get bigger. Take the Linux kernel &#8212; it&#8217;s huge compared to what it was five or ten years ago. </p>
<p>As these products become more and more general purpose, they have to be able to service the needs of a greater and greater community. And we have an enormous amount of experience with this at Microsoft with products like Office, for example. </p>
<p>We have more usability data about how people use Office than you can imagine. Because we shipped instrumented versions of Office during the beta period, we know exactly which features people use and we know exactly how they use them. </p>
<p>So, even thought there may be a thousand features inside of Office, we know that every one of them is used. Everybody may use a different 20 percent, but we know that all those features are well-used. And features that aren&#8217;t used, we deprecate or remove from the product. We have very concrete usability data to tell us that. </p>
<p><b>Scott:</b> Contrast that with the closed source work that you do. It seems like Microsoft goes through a process where there&#8217;s a big wish list of features, and people start coding on things as the project marches toward release. Things get cut, and developer resources get put on the more critical things. </p>
<p>How do you see the closed source work that you do comparing with the way you&#8217;ve seen the open source projects developed, in terms of how features are spec&#8217;d, how they&#8217;re built, how features are cut, and how things make it into the release product? </p>
<p><b>Ryan:</b> That&#8217;s a hard question to answer, because it&#8217;s so different depending on which open source group you&#8217;re working with. I&#8217;d say for us, the first step early on in a project is to figure out whether a product is going to be more driven by a release date, or more driven by a feature set. </p>
<p>We do both at Microsoft. If you&#8217;re more driven by a release date, you really make sure that you scope that product so you&#8217;re going to do well at hitting that release date. And Office is a good example of a product that really drives to release dates. </p>
<p>The video game industry is an even better example. If you look at Xbox or you look at any of the game title providers that are building stuff for Xbox, they have to hit Christmas. No ifs, ands or buts. Otherwise, they&#8217;re not going to recoup any of their development costs, and those companies could fail. It&#8217;s really important for those organizations to scope their features to a particular date. </p>
<p>For other projects, you might look at customer requirements and pick a date, but you&#8217;re really going to drive to implementing that set of features and making sure that they hit the appropriate level of quality. I think that as those projects move on, that&#8217;s where you may begin to see some features get cut in order to hit a release date, or just because the team realizes that they&#8217;re less important. </p>
<p><a name="features"></a>We spend a lot of time sitting with customers. We have a customer advisory board called the <a href="http://msdn2.microsoft.com/en-us/isv/bb190413.aspx">Technology Adoption Program</a>, and they come out here for a couple of days. These are big technology decision makers at government national labs, biotech companies, and financial institutions like banks and stock trading houses. We spend two days presenting to them on what we&#8217;re planning to build, and they give us feedback about what they&#8217;d like to see. </p>
<p>We release public betas. In the Technology Adoption Program, people actually deploy beta code and run it in production prior to the release of our software. That lets us know which features are being used and which ones aren&#8217;t. </p>
<p>I also spend a lot of time with people asking them which things they think are dumb or badly implemented, with an eye toward cutting those and focusing on other stuff instead. </p>
<p>The overall process takes the entire universe of things that you could possibly build, and you continually cut, as you move through the software development process, until you have what is really important at the end. </p>
<p><b>Scott:</b> Again, this varies from open source project to open source project, but a lot of them are built by developers for developers, so the way a feature gets into an open source product is that somebody just sits down and writes it. Their first interaction with the process is by submitting code for a feature. </p>
<p>If they can&#8217;t code it, then that feature isn&#8217;t going to get included, so the downside is that you only have coders to some degree, spec&#8217;ing features. The upside is that nobody writes something that they aren&#8217;t personally going to use. </p>
<p>At a company like Microsoft, when you&#8217;re building the next version of a product, you&#8217;re doing a certain amount of work that&#8217;s fairly speculative. You&#8217;re building what you think people are going to need &#8212; you&#8217;re really building what you think people are going to use, and sometimes that&#8217;s more successful than others. </p>
<p>I mean, sometimes Microsoft delivers stuff that&#8217;s wildly popular and everybody uses it, and some things are dead on arrival, even though there was a lot of effort put into building them. </p>
<p><b>Ryan:</b> Right &#8212; do you remember the &#8220;Bob&#8221; operating system? It&#8217;s not a successful product. </p>
<p>[laughter] </p>
<p>Commercial software companies have to determine what people want, and what will be successful. That&#8217;s why we spend a lot time doing things like customer research, usability research &#8212; really trying to figure out what we should build. I talk a lot about market opportunity documents, which is a fancy title for &#8220;what do people want?&#8221; </p>
<p>It tells us first of all, what set of users we are going to help. We segment the market, and we figure out where we&#8217;re going to prioritize. That&#8217;s the first round of cuts &#8212; we&#8217;re not building something for everybody; we&#8217;re building something for a particular group. </p>
<p>Then we ask, &#8220;What do those people really want?&#8221; and we visit customers to try to answer that. One of the first questions I asked is an open-ended one, which is, &#8220;What drives you most crazy about your HPC System?&#8221; Windows or Linux &#8212; it doesn&#8217;t matter &#8212; what&#8217;s the thing that drives you most nuts? </p>
<p>If you have some really open-ended questions, you hear some really interesting things come back from customers. Remember that HPC was entirely a UNIX market in the past. A lot has moved to Linux, but there&#8217;s still a fair amount of Unix out there, and some of them are beginning to adopt Windows. </p>
<p>And because so much of it is driven by the open source people, you have a whole set of computer scientists really driving at issues that they think are important in high performance computing. </p>
<p>But when you go talk to the system administrators, they tell you things like, &#8220;I&#8217;m struggling with power and cooling &#8212; the systems just run too hot.&#8221; The second problem that they talk about is, &#8220;It&#8217;s so hard to get the cluster up and running in the first place.&#8221; </p>
<p><b>Sean Campbell:</b> Do you think that either closed source or open source software reaches out a little more effectively to some of those audiences and meets their needs? </p>
<p><b>Ryan:</b><a name="ease"></a> Take systems administration software for example. How do I get servers up and running, and deployed, and get the whole system going? We do really well with that, and it’s a good thing to do well at since a lot of people complain about it. </p>
<p>This is where things get a little bit touchy, because there are a lot of UNIX administrators who are very passionate about UNIX or Linux. And Windows administrators like to talk about how great Windows is. People throw mud all the time about this. I&#8217;m on a bunch of user group mailing lists, and people there say, &#8220;Well, the problem with Windows administrators is that they&#8217;re inexpensive, and they&#8217;re all the same.&#8221; </p>
<p>On the other hand, I have heard people say, &#8220;Every time we get a call from a Unix customer, or a Linux customer, their whole network is set up in a unique way. Every time I get a call from one of our Windows customers they&#8217;re easier to support because all Windows networks are traditionally set up the same.&#8221; It&#8217;s true that there are better prescriptions of how to do things in Windows than there are in the Linux world, or the Unix world, and so that has some benefit. </p>
<p>I think we do a good job of servicing the needs of the system administrators. Certainly in the database space there are a lot of debates about it. I think MySQL has actually come a long way, and is doing pretty well. I&#8217;m not a big database expert, but SQL Server really changed the database market. </p>
<p>I don&#8217;t know if you guys have ever set up a Oracle Database before, but it&#8217;s hard [laughs]. The first one I set up was about 10 years ago on a Solaris box, and oh my God. I consider myself to be a pretty technically competent guy. I&#8217;m not a database expert, but I spent a weekend just trying to get through the ten volumes of manuals about how to get the thing up and running and performing correctly. </p>
<p>With SQL Server, you walk through a wizard for setup, and you&#8217;re pretty much up and running. So, I think we do really well at servicing particular user needs, and servicing a broad general market as well, even though it may not be as technically savvy as people that are making contributions into the open source community. </p>
<p><b>Scott:</b> Another area that I&#8217;d like to dig into involves some of the differences around identification of bugs, and support, and so forth. I&#8217;d guess that when you&#8217;re dealing with high performance computing and different architectures, you see all kinds of strange things that might be hard to reproduce. </p>
<p>On the closed source side, how do you handle that? What is the process for a customer to come to you with a problem and get a resolution, whether it&#8217;s just sending knowledge back to the customer, or whether it&#8217;s an actual change to the product to resolve it? </p>
<p><b>Ryan:</b> One of the things that&#8217;s important for my group to keep in mind is that we&#8217;re brand new in this space. Windows is eight to ten percent of the HPC market right now, which is really pretty good. But if somebody has an HPC cluster, it&#8217;s probably a Linux or Unix cluster, so what has been important for us is that we understand the way that people are using their existing clusters, and that we fit into the model. </p>
<p>We provide support through our traditional Microsoft product support services, and we also have newsgroups that we support. But we also behave a lot more like more open source organizations might behave. </p>
<p>We have a site called WindowsHPC.net, and there are a set of bulletin boards up there that people can search to look for problems that they run into. Our development team here in Redmond reads those groups all the time. </p>
<p>That helps us plug in to that type of traditional model for how people support these systems. And that&#8217;s how people can report bugs as well. We also get bug reports from a lot of our partners. In the HPC market, it&#8217;s not like building a packaged product like Office, where you kind of ship it out there and you&#8217;re done. </p>
<p>I have to get OEMs like Dell and HP and IBM and SGI all lined up to ship our software. We have network hardware vendors, software vendors, critical applications like Mathematica and MatLab, that are all integrated in with our products. We have to get all of that put together. </p>
<p>So, we get bugs from those customers or partners as well. And those come, usually, directly in to us. They talk to somebody that&#8217;s kind of an account representative for them at Microsoft, and we get bugs filed directly. We get on the phone with them, and partners get a really close level of support in that way. When end users run into problems, they post to the newsgroups, and we help them out there. </p>
<p>So, the interesting thing here is that we do both. We do stuff that&#8217;s a lot more like the open source community as far as finding out about bugs as well as stuff that is more traditional. </p>
<p><a name="instrument"></a>The bug reporting service built into Windows gives us really great, qualitative data about where things crash, like the fact that most crashes in Windows occurred because of video device drivers. I forget the exact numbers, but something like 50 percent of crashes in Windows used to be because of video device drivers. </p>
<p>And then we have something called WHQL, Windows Hardware Qualification Lab, and they run tests on drivers. In order for a driver to get WHQL certification, it has to pass a battery of tests. So, we would look at the ways these different video drivers were crashing, and create tests that we would then put into WHQL, and that would improve the quality of those drivers continuously. Because even if it&#8217;s a particular driver that crashes, you still blame Microsoft, because Windows crashed. And so, it behooves us to really go through making sure that all of that code is performing correctly. </p>
<p><b>Scott:</b> In other words, you&#8217;re able to regulate the ecosystem to some degree by saying, &#8220;If you want to be certified for Windows, submit your driver to our lab.&#8221; And then if your lab is running tests and they&#8217;re getting the driver to crash, you go back to the vendor and tell them to fix it? </p>
<p><b>Ryan:</b> Actually, the qualification labs are run by a separate agency. They can contact us to get a waiver for a particular company, and under some circumstances that&#8217;s worth doing, to grant a waiver if they&#8217;re not able to pass a particular test. </p>
<p>It could also be, as hardware continually evolves, that the tests may not always keep up. If a hardware vendor implements a totally new piece of hardware, the older tests may not work correctly, so you have to be flexible, of course. But everyone wants to go through that qualification process, because the OEMs &#8212; like Dell and HP and IBM, etcetera &#8212; all want WHQL-qualified drivers on their systems. Otherwise, they&#8217;re going to be getting support calls as well. </p>
<p><b>Scott:</b> One of the things that Microsoft&#8217;s been really focused on for about the last five years is security &#8212; just increasing the security of the stuff that you guys ship. Is any of that included in your certification process? </p>
<p><b>Ryan:</b> There are parts. We&#8217;ve been releasing a lot of our security tools to the community, for people to use the same security tools that we use in their own products as they build their own software. We have a lot of very sophisticated software analysis tools that help identify security bugs before they even pop up. We published a book called &#8220;Writing Secure Code.&#8221; </p>
<p><b>Scott:</b> We interviewed Michael Howard, so we&#8217;ve got a pretty good background on that. </p>
<p><b>Ryan:</b> Actually, Michael and I have worked really closely. As he was doing the first round of the security development life-cycle, I was responsible for security on mobile devices like Pocket PC and Smartphone. </p>
<p>I would say that we do really well on the security end of things. And if you talked to Michael, you know that the issue is that if you miss one thing, there&#8217;s some hacker out there that has years to try and find that one bug that somebody missed. </p>
<p><b>Scott:</b> He also pointed out that as Microsoft hardens their products, hackers are focusing more on the ecosystem because they&#8217;re softer targets. </p>
<p><b>Ryan:</b> I&#8217;ve read that same data and I think that&#8217;s fascinating, the way that these kinds of ecosystems change over time. </p>
<p><b>Scott:</b> So, the third party that does the certification runs tests, but I&#8217;m guessing it hasn&#8217;t evolved to the point where they say to a driver vendor, &#8220;Well, submit your threat models.&#8221; Do you see things evolving in that direction, or is that more intrusive into how an organization does what it does than Microsoft would want to get? </p>
<p><b>Ryan:</b> I would say it leans toward your second point, that when you hand over your threat models, you&#8217;re basically handing over the architecture of your product. And I&#8217;m not sure that a lot of people want to do that. </p>
<p><b>Scott:</b> One of the things that Michael also pointed out is that certain APIs have just been banned, things as simple as strcpy(), because they&#8217;re vulnerable to buffer overruns. </p>
<p>It seems like you guys would be in a difficult position because high-performance computing, on one hand, is all about speed, but I&#8217;m guessing that there&#8217;s a security aspect to it, too. So, how do you balance security and performance, or do you see that there&#8217;s any tension between those at all? </p>
<p><b>Ryan:</b> I don&#8217;t think it&#8217;s black and white. I think there&#8217;s a little bit of tension, but not a lot. Here&#8217;s what people traditionally do with HPC systems: you have a cluster &#8212; let&#8217;s say you have 500 machines &#8212; and you have what&#8217;s called a head node. And a head node is where you submit computational jobs. </p>
<p>That head node will be sitting on the public network, and when you submit your job and your job is ready to run against all the compute nodes in the cluster, those compute nodes are sitting behind a firewall on a private network. </p>
<p>In a sense, all of those compute nodes can have a very open relationship with each other. They may not be hardened in the same way that every other system on the network is. And that&#8217;s OK, because they&#8217;re all behind a firewall. And all the jobs, when they&#8217;re submitted, are validated. You know what user submitted them, and they have permission to submit jobs. And if they don&#8217;t have permission, the job is rejected, and so forth. Those jobs are submitted into that cluster and they run on the cluster at that point. </p>
<p>There&#8217;s a pretty well-established security model for how clusters run computational jobs already. In the military installations that we&#8217;ve talked to, they actually hook them up in separate rooms. They&#8217;re not plugged into any kind of public network at all. </p>
<p><b>Scott:</b> I would assume that just for performance reasons if nothing else, you don&#8217;t want your cluster sharing a network, and it&#8217;s also probably on a much higher speed network than the rest of your organization. I would assume that it&#8217;s pretty isolated. </p>
<p><b>Ryan:</b> Here&#8217;s where it gets really interesting. The thing that my group is really pushing for is moving high-performance computing into more mainstream areas. We don&#8217;t focus on share-shift of moving people from Linux to Windows in the existing market; our job is really to grow the HPC market. And we expect that there&#8217;s going to be a little bit of share-shift, and that&#8217;s great for us, but we&#8217;re really focused on growing that market in new spaces. </p>
<p>One of the areas that&#8217;s very interesting is departmental and workgroup clusters. Those people may set up the whole cluster on a public network. In those systems we need to make sure that that system is secure by default when it comes up. </p>
<p><b>Scott:</b> Do you ever see a day where every computer in the organization is potentially also part of a high performance cluster? Or do you think there will always be dedicated machines that are separate from machines running the user-workloads? </p>
<p><b>Ryan:</b> Are you talking about a situation where my computer in front of me would actually be plugged into a cluster on the back-end? </p>
<p><b>Scott:</b> Right. Kind of like the SETI@home thing, where my machine is idle, so it starts working on this job. </p>
<p><b>Ryan:</b> In some cases, I do see that happening. People call it &#8220;cycle stealing,&#8221; or &#8220;workstation clusters.&#8221; </p>
<p>Those systems only work well for a particular set of computing problems, though. For certain kinds of computational problems that have a high number of cycles that provide data, those kinds of clusters work great. So SETI@home is a great example; there&#8217;s also a protein folding project which works this way. When your screensaver kicks on, you start doing your computation as a part of the screensaver. There&#8217;s a whole set of other problems that don&#8217;t actually work that well. Seismic processing is a great example of a problem that doesn&#8217;t work very well, because they have very low number of cycles of computation per byte of data. I talked to one of the companies that does this kind of work on a 10,000 node cluster, and when they get customer data in from an oil company, it&#8217;s a whole pallet of tapes. </p>
<p>The whole thing gets loaded into a gigantic tape array, and then they farm it out across a 10,000-node cluster for computational analysis. They&#8217;re dealing with just ridiculous amounts of data, and that stuff wouldn&#8217;t work well with cycle stealing. When you really get these systems working in the enterprise phase, you&#8217;ve got to figure out how to make sure that data that&#8217;s residing in London doesn&#8217;t get shuffled off to China for computation, because it&#8217;s so inefficient to move it all the way around the world. You may actually spend more time moving data than you do computing it. </p>
<p><b>Scott:</b> So, in other words, &#8216;high volume of data, low computation per byte&#8217; is bad for that cycle stealing scenario. &#8216;Low volume of data, high computation per byte&#8217; is good for cycle stealing, because you ship a little bit of data out to a machine, and it just crunches on it for quite some time and submits, again, a fairly small result set back. </p>
<p><b>Ryan:</b> <a name="parallel"></a>Yes. Here&#8217;s what I think is a more interesting direction, in terms of your question about what&#8217;s happening with my PC and my cluster in the background. We&#8217;ve hit a point where CPUs aren&#8217;t going faster any longer. 4GHz is pretty fast, and the amount of heat generated by a processor running at 4GHz is enormous. The reason we can&#8217;t go faster is they just get too hot. </p>
<p>So the silicon vendors have started moving in a multi-core direction, and so we see four cores right now, we&#8217;re going to see eight cores, and pretty soon a bazillion cores are going to be on these machines. </p>
<p>And this is an issue for the software industry as well as for Microsoft. What&#8217;s been so great about the software industry is, as processors get faster, we can add more and more features, right? The Linux kernel gets bigger, the Windows operating system gets bigger, we have richer features, we can do more sophisticated stuff than ever before. But now that processors have hit kind of their Gigahertz speed limit, we can&#8217;t just willy-nilly add features into our products any longer. </p>
<p>The bad thing that could happen is that the software industry would become very similar to the white goods industry. You don&#8217;t buy a new washing machine because ooh wow, this one has this great new spin cycle! No, you wait until your washing machine breaks, and then you buy another one. </p>
<p>What has to happen in the software industry is that all software development needs to start moving in the direction of being aware of concurrency. </p>
<p>That concurrency could be across multiple cores on your local machine, or it could be across multiple machines running in a cluster. And so, the thing that I predict we&#8217;re going to see in the future, is that programming models and the kind of programs that are being written will not only be better at taking advantage of multiple cores, but those programs will be better able to run on a cluster as well. </p>
<p><b>Scott:</b> I&#8217;m sure that this is an area of just absolutely intense research, but right now, it&#8217;s just too hard for the average developer to write a good parallel program. </p>
<p>It&#8217;s too hard to write a multi-threaded program; it&#8217;s too hard to write a program that&#8217;s going to run on a cluster. Event driven programming became easy when it was just something the languages natively knew about. And right now, the languages don&#8217;t really natively know about threads, and concurrency, and all that stuff. It&#8217;s done through libraries; it&#8217;s not really done through core concepts in the language. You have to write the thread synchronization logic, and you can&#8217;t really just declare a synchronized integer, for example. </p>
<p>What do you see as the future of the tools, so that it&#8217;s not so insanely difficult to do it right? Do you see the way it&#8217;s done, with high performance computing, where you&#8217;re sending off batches of work and getting results back, do you see that as being a viable model for a multi-core system? Or do you think there&#8217;s some new paradigm on the horizon that might unify both? </p>
<p><b>Ryan:</b> For general purpose programming, it&#8217;s the latter. We start moving to new programming models &#8212; not radically new programming models, because we can&#8217;t retrain everybody in totally new programming constructs, but you&#8217;ll see subtle shifts. Languages like C# will continue to evolve and understand better concurrency, and it will become simple for developers. </p>
<p>I think we have to get there, because I agree with you, trying to teach average software developers about how to do concurrent programming just isn&#8217;t going to work, as it stands right now. And if you think that&#8217;s hard, you should look at the MPI programming that people write. This is akin to Assembly level programming &#8212; it&#8217;s just outrageously complicated. </p>
<p>You get this 500-node cluster, and the communications are not handled automatically. One node switches to receive mode, the other node switches to send mode, and then it sends data to the machine that&#8217;s in receive mode. If they both switch to send simultaneously, or they both switch to receive simultaneously, it deadlocks! And your whole 500-node job halts. </p>
<p><b>Scott:</b> Wow. Getting back on some of the differences between closed source and open source, to follow upon your statement that &#8220;you can&#8217;t just change everything because it&#8217;s hard to train everybody to do things differently,&#8221; open source seems to move very incrementally, because of the way it&#8217;s built, because things are submitted as 100 lines of code to a mailing list where they get scrutinized, and maybe it makes it in and maybe it doesn&#8217;t. And a lot of times, things are worked on in fairly small pieces. </p>
<p>It seems like it&#8217;s fairly impossible for an open source project to make a radical leap. There seem to only be two ways that happens: one is that somebody forks the source and does a fairly major change to it, or a whole new thing comes out of nowhere; you know, Ruby on Rails shows up out of nowhere, and it&#8217;s all the rage for building web stuff. People look at it, and they have to decide whether to stick with PHP or to learn a whole new thing. </p>
<p>In closed source, it seems to be a little different. It seems that there&#8217;s a lot higher barrier to just releasing something completely new that has no connection to an existing product. There&#8217;s a lower barrier to taking an existing product and maybe doing something a little bit more radical with it. Like in Office, they came out with the Ribbon, a whole new UI paradigm. I don&#8217;t know that something like OpenOffice would have ever evolved something like that. </p>
<p>Vista is obviously built on the same code base as previous operating systems, but there were some pretty radical departures there that had some impacts on application compatibility and issues like that. And again, it would be kind of a stretch for open source to do that. But on the other hand, you might come out with a whole new shell that competes with Gnome or KDE or their peers. </p>
<p>Talk about that a little bit. Do you think I&#8217;m onto something, or do you see things that run counter to my observation? </p>
<p><b>Ryan:</b> I think it&#8217;s a very good point, and it&#8217;s something that I&#8217;ve also thought about and wondered about. Part of what&#8217;s powerful about the open source community is that it is incremental. And as they make their incremental changes, if they&#8217;re good, people use them; if they don&#8217;t, nobody uses them, and they eventually are discarded. A good example is user interface models. We have one, Apple has one, and those are very popular user interface models. </p>
<p>The X-Windows model was never really that popular. It&#8217;s popular among a particular group of people, but not like the Macintosh and Windows paradigms were. And they&#8217;ve continually competed and evolved with each other. And I think you see Gnome and KDE coming in and filing the best of what they like out of those models and evolving that, and maybe keeping a little bit of some of the X-Windows stuff that they like as well. </p>
<p>Those are highly evolutionary systems. Things like OpenOffice can really pick at what has been successful&#8211;like Office, for example&#8211;and take that and put it into their products. At the same time &#8212; and I think this will be true for a lot of commercial software companies &#8212; because we spend so much time trying to figure out what people would pay for, if we think something is going to be paid for, we&#8217;ll invest the money there. </p>
<p><b>Scott:</b> It seems like there&#8217;s almost a pressure not to do things that are incremental, because unless it&#8217;s a big enough delta between this version and the previous version, people won&#8217;t pay for it. </p>
<p><b>Ryan:</b><a name="radical"></a> That&#8217;s right. We&#8217;re constantly in this business of having to generate value on a huge scale, because it&#8217;s not like we can build something that&#8217;s interesting for a hundred or a thousand people. It has to be interesting for millions of people. And so that&#8217;s why we can spend so much time figuring out the next big shift that&#8217;s going to come along. </p>
<p>Sometimes that means that we look at stuff that&#8217;s been popular in niche markets and figure out how to make that go really big. And sometimes it&#8217;s radical new things. In some ways, for example, you can say that the original Windows NT operating system was an evolution of traditional systems, based on work that was done at DEC, and work that was done at some other software companies, to create this new kind of kernel. </p>
<p>But NT was a fascinating concept. If we go back and think about it, the idea was that you could write a kernel that would span from the smallest laptop computer up to gigantic SMP systems. </p>
<p><b>Scott:</b> The whole Hardware Abstraction Layer was an unproven theory and a pretty radical idea. </p>
<p><b>Ryan:</b> Right, and it&#8217;s now the foundation for Vista. </p>
<p>You know, HPC is a really interesting market to study from an open source point of view, because it&#8217;s a full ecosystem, and it&#8217;s still pretty heavily driven by the academic community, which is, by nature, fairly open source-oriented. </p>
<p>We fund work at something like 10 universities and research labs around the world, like Jiaotong University in China, and Pacific Northwest National Labs, and the University of Tennessee where Jack Dongarra does all of his HPC research. And we do that because it&#8217;s still critical to really be working well with the academic community, in order to be successful in this market. </p>
<p><b>Scott:</b> They&#8217;re the ones running the climate simulations, things like that. They&#8217;re the ones who, largely, are running the kind of models that need high-performance computing. One of the things that&#8217;s kind of interesting &#8212; it&#8217;s not really high-performance computing &#8212; but Amazon has in beta what they call their Enterprise Compute Cluster. </p>
<p><b>Ryan:</b> Yeah. My friend Marvin Theimer is an architect at Amazon. </p>
<p><b>Scott:</b> Do you see a future for hosted high-performance computing? Do you see a future for maybe &#8216;high-performance computing lite,&#8217; where it is more tailored to the kind of jobs where you&#8217;re not moving enormous quantities of data, the computation per byte is higher, and you can have simplified communication between the nodes? </p>
<p>I wouldn&#8217;t have to have 500 nodes, but I could push a job up to some hosted environment that could put 10 nodes or 10,000 nodes on it. Does that kind of thing exist today? </p>
<p><b>Ryan:</b> It does exist today. Sun has been doing this for a few years now; it&#8217;s at least two years. They have this model where they charge on a CPU-hour basis. We talk to those guys, and they&#8217;re very open about what they&#8217;ve been up to, or at least they used to be. And the way that those jobs work is you actually ship all the disks over there. </p>
<p><a name="bandwidth"></a>Jim Gray did some really interesting research here at Microsoft. He computed how much it costs to move a certain amount of data and how long it would take to move that much data over a particular kind of pipe, because the question is: how long does it take you to get a terabyte of data from one site to another? </p>
<p><b>Scott:</b> DVDs and FedEx have an incredibly high bandwidth. </p>
<p><b>Ryan:</b> Yeah. That was the result of the research, years ago: &#8220;Just put it on DVDs and ship it that way.&#8221; And so what Sun does is that you actually ship them a cabinet of hard drives, and they plug that into the cluster and use it to compute. </p>
<p>Your point is very good though, that a lot of customers will typically do small computational jobs and occasionally they&#8217;ll need a really big cluster. I think that is true going forward, that we&#8217;ll see more and more of that, and people will occasionally need to run a big job. </p>
<p>If part of what we believe is true, that this revolution will happen in workgroup and departmental clusters, it&#8217;s because workgroups and departments will need those smaller clusters for some of their work, but every now and then they&#8217;re going to want to hand jobs to a huge cluster for computation. </p>
<p>And that may be handled using grid standards that are generated by the open grid forum. That may be handled by just handing off to a place like Amazon or Sun. </p>
<p>I also think that, in closing on the discussion of open source and the HPC market and the commercial software that we&#8217;re building for HPC, I&#8217;m really hoping that what&#8217;s going to happen is that our group at Microsoft will help pave the way for how commercial groups at Microsoft are better able to work with open source projects. </p>
<p><b>Scott:</b> Thanks, Ryan, for all your insight. This was a great conversation. </p>
<p><b>Ryan:</b> Thanks.</p>
<img src="http://howsoftwareisbuilt.com/?ak_action=api_record_view&id=73&type=feed" alt="" /><!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em>Bookmark this:</em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://howsoftwareisbuilt.com/2007/07/22/interview-with-ryan-waite/&amp;title=Interview+with+Ryan+Waite%2C+Group+Program+Manager+for+High-Performance+Computing+at+Microsoft." rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://howsoftwareisbuilt.com/2007/07/22/interview-with-ryan-waite/&amp;title=Interview+with+Ryan+Waite%2C+Group+Program+Manager+for+High-Performance+Computing+at+Microsoft." rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://howsoftwareisbuilt.com/2007/07/22/interview-with-ryan-waite/" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://howsoftwareisbuilt.com/2007/07/22/interview-with-ryan-waite/&amp;title=Interview+with+Ryan+Waite%2C+Group+Program+Manager+for+High-Performance+Computing+at+Microsoft." rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://howsoftwareisbuilt.com/2007/07/22/interview-with-ryan-waite/&amp;title=Interview+with+Ryan+Waite%2C+Group+Program+Manager+for+High-Performance+Computing+at+Microsoft." rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.sphere.com/sphereit/http://howsoftwareisbuilt.com/2007/07/22/interview-with-ryan-waite/" rel="nofollow" title="Add to&nbsp;SphereIt"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/sphereit.png" title="Add to&nbsp;SphereIt" alt="Add to&nbsp;SphereIt" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://twitter.com/home/?status=Check+out+Interview+with+Ryan+Waite%2C+Group+Program+Manager+for+High-Performance+Computing+at+Microsoft.+@+http://howsoftwareisbuilt.com/2007/07/22/interview-with-ryan-waite/" rel="nofollow" title="Add to&nbsp;Twitter"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/twitter.png" title="Add to&nbsp;Twitter" alt="Add to&nbsp;Twitter" /></a>
<br />
</div>
</div>
<!-- Social Bookmarks END -->
]]></content:encoded>
			<wfw:commentRss>http://howsoftwareisbuilt.com/2007/07/22/interview-with-ryan-waite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
