<?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; frameworks</title>
	<atom:link href="http://howsoftwareisbuilt.com/tag/frameworks/feed/" rel="self" type="application/rss+xml" />
	<link>http://howsoftwareisbuilt.com</link>
	<description></description>
	<lastBuildDate>Fri, 25 Jun 2010 19:53:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<copyright>2006-2007 </copyright>
	<managingEditor>scottswigart@technologyevangelism.com (How Software is Built)</managingEditor>
	<webMaster>scottswigart@technologyevangelism.com (How Software is Built)</webMaster>
	<ttl>1440</ttl>
	<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>
	<itunes:subtitle></itunes:subtitle>
	<itunes:summary></itunes:summary>
	<itunes:keywords></itunes:keywords>
	<itunes:category text="Society &#38; Culture" />
	<itunes:author>How Software is Built</itunes:author>
	<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" />
		<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%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F12%2F18%2Finterview-with-shawn-burke-program-manager-microsoft%2F&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%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F12%2F18%2Finterview-with-shawn-burke-program-manager-microsoft%2F&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%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F12%2F18%2Finterview-with-shawn-burke-program-manager-microsoft%2F" 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%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F12%2F18%2Finterview-with-shawn-burke-program-manager-microsoft%2F&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?url=http%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F12%2F18%2Finterview-with-shawn-burke-program-manager-microsoft%2F&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%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F12%2F18%2Finterview-with-shawn-burke-program-manager-microsoft%2F" 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%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F12%2F18%2Finterview-with-shawn-burke-program-manager-microsoft%2F" 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>Interview with Blaine Wastell and Glenn Block &#8211; Patterns and Practices &#8211; Microsoft</title>
		<link>http://howsoftwareisbuilt.com/2007/12/05/interview-with-blaine-wastell-and-glen-block-patterns-and-practices-microsoft/</link>
		<comments>http://howsoftwareisbuilt.com/2007/12/05/interview-with-blaine-wastell-and-glen-block-patterns-and-practices-microsoft/#comments</comments>
		<pubDate>Wed, 05 Dec 2007 05:25:17 +0000</pubDate>
		<dc:creator>campsean</dc:creator>
				<category><![CDATA[Sean Campbell]]></category>
		<category><![CDATA[blaine wastell]]></category>
		<category><![CDATA[codeplex]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[glenn block]]></category>
		<category><![CDATA[licensing]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[patterns and practices]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://howsoftwareisbuilt.com/2007/12/05/interview-with-blaine-wastell-and-glen-block-patterns-and-practices-microsoft/</guid>
		<description><![CDATA[Interviewers: Scott Swigart and Sean Campbell. Interviewees:Blaine Wastell and Glenn Block. In this interview with Blaine Wastell and Glenn Block of the Patterns and Practices Group at Microsoft we asked them 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/about-blaine-wastell-program-manager-client-ux-patterns-and-practices-microsoft/">Blaine Wastell</a> and  <a href="http://howsoftwareisbuilt.com/about-glenn-block-technical-product-planner-client-ux-patterns-and-practices/">Glenn Block</a>.</p>
<p>
In this interview with Blaine Wastell and Glenn Block of the Patterns and Practices Group at Microsoft we asked them about:</p>
<ul>
<li><a href=http://howsoftwareisbuilt.com/2007/12/05/interview-with-blaine-wastell-and-glen-block-patterns-and-practices-microsoft/#pandp">About the Patterns and Practices Group</a></li>
<li><a href="http://howsoftwareisbuilt.com/2007/12/05/interview-with-blaine-wastell-and-glen-block-patterns-and-practices-microsoft/#diffproductteam">What makes them different from a typical product development group</a></li>
<li><a href="http://howsoftwareisbuilt.com/2007/12/05/interview-with-blaine-wastell-and-glen-block-patterns-and-practices-microsoft/#softwaredevmethod">The software development methodology they use</a></li>
<li><a href="http://howsoftwareisbuilt.com/2007/12/05/interview-with-blaine-wastell-and-glen-block-patterns-and-practices-microsoft/#produced">Some of the things that Patterns and Practices group has produced for developers.</a></li>
<li><a href="http://howsoftwareisbuilt.com/2007/12/05/interview-with-blaine-wastell-and-glen-block-patterns-and-practices-microsoft/#codeplex">The role of CodePlex for their group.</a></li>
</ul>
<p><span id="more-114"></span></p>
<p><b>Blaine</b>: &nbsp; I&#8217;m Blaine Wastell. I&#8217;m a program manager in patterns &amp; practices, and I&#8217;ve been in this role for a little over four years now. Most recently my focus has been in what we call the &quot;client UX program&quot;. It&#8217;s about providing guidance to customers on developing both smart client and web client applications.</p>
<p>For 12 years before Microsoft I was out in the consulting world helping business customers develop enterprise line of business applications, mainly Web applications.</p>
<p><b>Glenn Block</b>: &nbsp;I&#8217;m Glenn Block. I&#8217;m a technical product planner in patterns &amp; practices. I am a newcomer to the client team.  I&#8217;ve been in p &amp; p for about 6 months, and with Microsoft for about 2 years.  Prior to p &amp; p, I worked in Microsoft Learning and was responsible for building online developer training.</p>
<p>For the 10 years prior to Microsoft I was a software engineer and architect. I worked in various startups as well as a few enterprises. I&#8217;ve had a touch of consulting, but it&#8217;s mostly been really about building both packaged apps and internal apps &#8209;&#8209; both on Web and on Windows.  A significant part of my background has been in developing software frameworks for those kinds of applications.</p>
<p>And as the technical product planner on the client team, I&#8217;m responsible for the overall strategy,  understanding what customers want, and setting expectations on what kind of guidance we&#8217;re going to deliver.</p>
<p><a name="pandp"></a>
<p><b>Scott</b>: &nbsp;Talk a little about patterns &amp; practices.</p>
<p><b>Blaine</b>: &nbsp;We provide &quot;building blocks&quot; that customers use for line of business application. Microsoft has a number of development tools and technologies which include the .NET framework, Visual Studio, SQL Server, the core operating system, etc. We help customers by providing guidance, in multiple forms, on using those technologies to build line of business applications.</p>
<p><b>Glenn</b>: &nbsp;The practices part of our name is focused on the latter, where we give guidance, best practices, and design patterns, to educate developers on known solutions so they&#8217;re not reinventing the wheel.</p>
<p><b>Scott</b>: &nbsp; I&#8217;ve used like the Enterprise Library that patterns &amp; practices produced, and it&#8217;s really more of a framework than building blocks.  Are things like the Enterprise Library are designed to be best&#8209;practice reference architectures, or are they drop-in frameworks designed to give a productivity boost?</p>
<p><b>Blaine</b>: &nbsp;Enterprise Library, and the application blocks, are part of what we deliver. We also have written guidance for areas like security and performance.</p>
<p>We also have another type of deliverable called &quot;software factories&quot; that tie all the pieces together. They have the framework, but they also include the common patterns for a specific area. They include automation; they include what we call a &quot;reference implementation&quot; &#8209;&#8209; essentially a sample of how to implement proven practices using the frameworks.</p>
<p><b>Glenn</b>: &nbsp;When you talk about frameworks, at the end of the day, to us it&#8217;s all guidance. In the case of these frameworks, they are incarnations of the patterns we recommed. We think of them as an 80% solution meaning they may not provide all the answers. We write the code with the intention that people who are consuming these deliverable will rip that code up, and will look at how we&#8217;re doing stuff. It&#8217;s not simply about giving people a reusable toolkit, although there is an aspect of that.</p>
<p>The idea is, &quot;Hey, look at what we&#8217;ve done. Rip out the pieces that you think are applicable for your scenario. If you&#8217;re writing something new, you can use this as a reference point and know that it  incorporates well&#8209;known patterns.&quot;</p>
<p><a name="diffproductteam"></a>
<p><b>Scott</b>: &nbsp;What makes your team different from a Microsoft product team.  How are you different from the teams building the .NET Framework, or SQL Server, for example.</p>
<p><b>Blaine</b>: &nbsp;We focus on what we call &#8216;customer connected engineering&#8217;. We start with an area that we see is challenging for customers, and then we will put together an advisory board that includes customers.  As we design a solution, they&#8217;ll validate that our scope and approach is really hitting the top set of challenges that they have.</p>
<p><b>Glenn</b>: &nbsp;The big differentiator is that product groups<i> build </i>the platform, while the guidance we create <i>uses</i> the platform.</p>
<p>Product teams focus on taking the platform to the next level. We do guidance, as Blaine described, guidance on using the platform. We show you how to put the legos together in meaningful ways to solve particular problems that you&#8217;re facing.</p>
<p>In some cases, through the act of putting those things together, we may pull out some new reusable guidance that we call &#8216;application blocks&#8217;. But the block is not the end goal. The block is just one incarnation of the guidance. When I say &#8216;block&#8217; , I&#8217;m really referring to a reusable library.</p>
<p><a name="produced"></a>
<p><b>Scott</b>: &nbsp;Could you list some of the things that you&#8217;ve produced?</p>
<p><b>Blaine</b>: &nbsp;You mentioned the Enterprise Library, which has a number of blocks within it. There&#8217;s also the composite UI application block, which is a library that helps you create smart clients. There is also a set of libraries to help you create web clients. One is called the composite web application block. And we also have another one called the pageflow application block which addresses challenges around Page navigation. <b>Blaine</b>: &nbsp;We&#8217;ve done a number of things in the web services area.</p>
<p><b>Glenn</b>: &nbsp;We have a Web service software factory; which is guidance on building web services. And we also have new guidance that we&#8217;re developing called ESB guidance which addresses utilizing BizTalk as an Enterprise Service Bus.</p>
<p><a name="softwaredevmethod"></a>
<p><b>Scott</b>: &nbsp;Talk a little bit about the software development methodologies that you use.</p>
<p><b>Blaine</b>: &nbsp;Sure. We are an agile organization. We&#8217;re probably closer to XP. We start with the backlog that we prioritize. Glenn is essentially the proxy for the customer; the one that will prioritize the backlog for us. From that we do the standard iteration planning, and meetings. We do it once a week, and we have stand ups daily where we go through the status of the standard set of questions: What did we do yesterday, what do I plan on doing today, what blocking issues do I have.</p>
<p>At the end of an iteration, which is every week, we publish our results out on our CodePlex community site. Then customers can look at the CodePlex site and get an understanding of where we&#8217;re going. A lot of times they&#8217;ll say, &quot;Hey, why are you doing this, because I have these other two sets of challenges you&#8217;re not covering,&quot; which is good. We&#8217;ll also have people say, &quot;Hmmm. There&#8217;s a bug in line 35.&quot; It&#8217;s pretty amazing how closely customers sometimes watch us.</p>
<p><b>Glenn</b>: &nbsp;And in some cases even supply fixes.</p>
<p><b>Blaine</b>: &nbsp;Right. We&#8217;ll also do testing, development, and continuous integration. We use in test driven development, so we write the unit tests first, and then the code.</p>
<p>We&#8217;ll generally do pair programming. We&#8217;re also distributed team with team members located in Redmond, Buenos Aires and India. This sometimes makes it hard to always do pair programming. If we can&#8217;t do pair programming we will have somebody else do a code review before checking the code in. We do automated exception tests where they make sense. We do quite a bit of static analysis on the code that gets checked in.</p>
<p><b>Glenn</b>: &nbsp;How about code coverage?</p>
<p><b>Blaine</b>: &nbsp;We do code coverage. I have a blog entry that I just put out recently that talk about  the quality checkpoints that we go through. On the quality assurance side, we&#8217;ll do things like proof and security testing, and globalization testing.</p>
<p><b>Scott</b>: &nbsp;You mentioned there&#8217;s also a community side of what you do.  Talk a little about that.</p>
<p><a name="codeplex"></a>
<p><b>Glenn</b>: &nbsp;There&#8217;s several different ways that we actually interact with the community and our customers. The simplest way is our blogs. A good portion of the team is heavily into blogging, and we try to give as much visibility as possible into what we&#8217;re up to.</p>
<p>Blaine mentioned that all of our stuff is on CodePlex. A big differentiator between the work that we do, and the product groups at Microsoft, is that you can get all the source code.</p>
<p>Also on CodePlex we have work item voting. When people come to us with feedback we say, &quot;Great idea. Throw that on as a work item so the rest of the community can vote.&quot; And I can tell those work items absolutely determine what we do.</p>
<p>For example, AJAX support in the Web Client was one of the highest voted work items.  As a result we&#8217;ve done about four months of work on the UI responsiveness and we have a few more to go.  That&#8217;s a large investment and it&#8217;s based off the community feedback.</p>
<p>In some cases, there&#8217;s a work item that&#8217;s very broad, and we&#8217;ll dig in.  For AJAX there&#8217;s a server side and client side aspect.  When we asked which people were more interested in us investing in, people said, &quot;Hey, we&#8217;re more interested in the server than in the client.&quot;</p>
<p>Another source is our direct interaction with customers. One of the things we do in p &amp; p is bring a lot of customers in to spend time with the team. That gives us an amazing opportunity to directly interact with them, find out what they&#8217;re building, find out how our guidance in mapping against their needs, and find out what the gaps are.</p>
<p>We just had a customer that was here for an entire week. We do that with a number of clients and aggregate the information and learning which we inject back into our efforts.</p>
<p>We also do some on&#8209;site, where we go and visit customers. Since I&#8217;ve joined, I&#8217;ve visited two customers &#8209;&#8209; one in the U.S. and one in the U.K. &#8209;&#8209; spending a week with their teams.</p>
<p>Further, we have general blog that generates feedback that we get. We have email feedback that we get. That covers the external customers. But  p &#038;amp p also has internal customers. Who are those? These are the product groups.</p>
<p>Lately we&#8217;ve been we&#8217;ve been working very heavily with Scott Guthrie&#8217;s org. We&#8217;re doing this is because we want to understand what kinds of challenges the platform is going to be addressing and how it will be addressing itWe want sure that whatever guidance we&#8217;re giving is in line  with this direction and not opposed to it.</p>
<p>And we also key in to their demand for deep content.  They say, &quot;Hey, there&#8217;s nobody who&#8217;s really telling people how to put these pieces together.&quot; We&#8217;re also getting very involved with OBA [Office Business Applications]. We&#8217;ve had the OBA team coming to us saying, &quot;Look, we need some solid guidance that will give customers architectural guidance on how to  develop an OBA application.&quot;</p>
<p>Sometimes all these inputs are in conflict with each other and we have to look at the external feedback, the internal feedback, the industry trends, open source, and even our competitors, and decide what we&#8217;re going to deliver.</p>
<p>Finally we have our Customer Advisory Boards. This is a key aspect of our customer&#8209;connected engineering strategy. For every one of our deliverables, we have an advisory board of individuals that are in the industry, that are or will be using this guidance.  For the Web Client Software Factory, every two weeks for about the past four months, we have an hour meeting where we present to the advisory board what we&#8217;re doing, and we get their feedback.</p>
<p>The advisory board is a group that&#8217;s able to look at what we&#8217;re doing and raise flags and tell us, &quot;Hey, you&#8217;re going in the wrong way.&quot; Or they may be saying, &quot;You guys are missing this big opportunity over here that really affects all of us.&quot; And when we build this advisory board, we select a group of experts across the industry in both small and large companies, some located in the U.S., some located in Europe, some located in Australia. We try to get a really good mix.</p>
<p>They have different needs. They give us a proper perspective on the overall landscape so that we can make those intelligent decisions. I think that covers it. As you can imagine, it&#8217;s not an easy task to drill through all of that input and decide which way to go.</p>
<p><b>Scott</b>: &nbsp;Right now, the patterns &amp; practices code is released under a custom license. It&#8217;s not under the Microsoft Reference license or the Microsoft Public License &#8212; which used to be the Microsoft Permissive License.</p>
<p><b>Blaine</b>: &nbsp;Everything is migrating to the MSPL.</p>
<p><b>Glenn</b>: &nbsp;Yeah. It&#8217;s essentially been MSPL without the name. It is going to be MSPL.</p>
<p><b>Scott</b>: &nbsp;OK, so the MS Public License.</p>
<p><b>Scott</b>: &nbsp;The thing that&#8217;s really interesting that now that&#8217;s an OSI&#8209;approved license. In the past, Microsoft would say, &quot;We put the source out there. It&#8217;s open source,&quot; but to a lot of people in the industry&#8230;</p>
<p><b>Blaine</b>: &nbsp;It wasn&#8217;t really.</p>
<p><b>Scott</b>: &nbsp;Yeah. To them, unless it&#8217;s an OSI license, they don&#8217;t know if it&#8217;s really open source the way the OSI defines it. So now it is. That leads to the question of, are you now starting to do some of the things that a traditional open source project would do? You&#8217;ve got builds. You&#8217;ve got bug tracking and issue tracking that people can participate in.</p>
<p>Do you ever envision a day where you&#8217;d be taking community code submissions?</p>
<p><b>Glenn</b>: &nbsp;We&#8217;ve taken steps in that direction with what we call our Contrib community.</p>
<p>Before I worked at Microsoft, I used to work with a bunch of different open source products. I worked with NAnt and NUnit. NAnt has what&#8217;s called a NAnt Contrib Project. The NAnt Contrib project is  where developers who  have the source, are extending NAnt.  They&#8217;re building plug&#8209;ins, etc., because a lot of these products have a plug&#8209;in model. They want to have a way of driving that back in so that the community can benefit from those enhancements or extensions.</p>
<p>We decided about six months ago to follow the same model and we created a set of Contrib communities. Actually, we didn&#8217;t create them, and I think it&#8217;s important that we didn&#8217;t create them. We worked with the community. For example, with Smart Client we engaged with people like Kent Boogaart, who created WPF CAB, which was his own extension to CAB that would allow you to build WPF applications with CAB.</p>
<p>We also worked with people like Bil Simser, who&#8217;s a known MVP who developed Smart Client apps. We worked with a whole group of people, Chris Holmes is another. We brought them together and said, &quot;Hey, we want to make you guys as successful as possible and enable you to take our deliverables, extend them how you want, without us telling you which way to go, similar to the way you can with other open-source projects. We&#8217;ll provide a place for you to do that, and we will also work with you going forward. We’ll also hear your concerns and consider how we can fold that into the product.&quot;</p>
<p>We do also work with external resources as part of our core guidance deliverables. We have our advisory boards which I mentioned which participate in the design and give us feedback. We have our CodePlex Workitems where the community submits ideas that influence the design.  And we even have members of the community (partners, SMEs, etc) that write the codebase itself.</p>
<p><b>Scott</b>: &nbsp;Aren&#8217;t there models where other people have dealt with this? You take a look at something like the Linux kernel, right? Nobody really owns it. It&#8217;s an open source project, it&#8217;s covered under an open source license. IBM is a contributor to it. And if stuff gets found in there that infringes on somebody else&#8217;s intellectual property, a lot of times the community, or IBM, replaces that with code that doesn&#8217;t.</p>
<p>I realize it&#8217;s a gradual process, and Microsoft is moving towards more community involvement, but it seems like down the road there may be ways to structure this to where Microsoft is a chief contributor to these projects, but every committer may not necessarily be a Microsoft employee.</p>
<p><b>Glenn</b> : &nbsp;In the Linux kernel, yes you do have community participants, but it is not a free-for-all where anyone just comes along and checks in code. It’s a regulated process with a core set of contributors. We operate in a similar fashion. We do have externals that contribute, but there is a process around those contributions.</p>
<p><b>Scott</b>: &nbsp;Another thing that&#8217;s interesting, when you&#8217;re under an OSI license somebody could fork your code.</p>
<p><b>Glenn</b>: &nbsp;Yep. And I just want to make clear that we don&#8217;t own the Contrib project. We&#8217;re not claiming any responsibility for the kind of code that goes into that. We might suggest stuff, like, &quot;What do you guys think about doing this or doing that,&quot; but it&#8217;s completely up to the contributors what they want to do.</p>
<p>It is the model that you described. We may pour some stuff into Contrib, and we&#8217;ve talked about doing that, but essentially the people that own it is the community.</p>
<p><b>Scott</b>: &nbsp;Right, right. And those different Contrib projects are essentially forks of your code, and because&#8230;</p>
<p><b>Glenn</b>: &nbsp;That&#8217;s exactly what they are. In some cases, complete rewrites. For example, if you look at the EntLib Contrib, there&#8217;s actually an EntLib refactored project where somebody who works at Microsoft &#8209;&#8209; Scott Densmore, who helped write a lot of our deliverables &#8209;&#8209; is actually ripping apart EntLib and providing a new version.</p>
<p>Similar kind of things are happening in the CAB space. We just recently shipped another version of Smart Client Contrib that actually contains updates to our Updater Block, to get it to work on Vista. This is completely being driven by the community and it&#8217;s taking things to places where we don&#8217;t have the resources to take them.</p>
<p><b>Scott</b>: &nbsp;That&#8217;s what I was wondering. Maybe down the road, the only thing that exists is the Contrib space, and people in Microsoft are contributors just like anybody else.</p>
<p> <b>Glenn</b>: &nbsp;That’s certainly a possibility that we would be open to, but it’s not really about us and what we want, it’s about the customers. Many customers that have serious concerns about using   community contributions that might contain code that violate IP. In the case of patterns &amp; practices deliverables because it’s from Microsoft, they have less concern.  Other customers however are willing to take that to take that leap of faith.  These are the same customers that also use open-source deliverables like NHibernate, Log4Net, Castle Windsor etc.</p>
<p><b>Scott</b>: &nbsp;To me it&#8217;s really fascinating how the different models are shaking out. We also interview CIOs for things outside of &quot;How Software is Built&quot; and they&#8217;re very fond of saying, &quot; I want one throat to choke. I want to know that I&#8217;ve got support. I want to know that I&#8217;ve got a company that&#8217;s standing behind it. That&#8217;s really important to me. It&#8217;s not about the cost of the software, it&#8217;s not even about free as in freedom. I just need stuff that works, and I need someone to hold accountable.&quot;</p>
<p>And then on the other hand, on the other side of it, you&#8217;ve got open source, right? Where you don&#8217;t seem to have those same assurances, but on the other hand the software really does hit the mark. There are people who are experts in their domain. There are people who build really interesting things that a &quot;big company&quot; wouldn&#8217;t necessarily think of. There are people who do some innovative things, or start with someone else&#8217;s idea and take it in a very different direction.</p>
<p>There&#8217;s benefits in all of that. So it&#8217;s curious to me what the landscape is going to look like. You take a look at a company like RedHat. They&#8217;ve got this open source product, but they don&#8217;t really have control over the Linux kernel, or Apache, or the things their customer absolutely depend on. Still, they guarantee that they&#8217;ll provide support on top of it, enterprise&#8209;level support.</p>
<p>You&#8217;re saying that if p &amp; p&#8217;s work was full open source, and the only out that existed was Contrib, some of your customers would have trepidation because they would feel like there was nobody they could really point to who would guarantee the quality of the code, who could guarantee fixes, and those sorts of things.</p>
<p>I guess what I&#8217;m saying is it&#8217;s a very interesting spot that you sit in.</p>
<p><b>Glenn</b>: &nbsp;In a way, it can be the best of both worlds, with some caveats of course. What it means is there may be significant functionality that will exist because of the energy of the folks in the open source community, and that functionality will show up in Contrib but not in our core deliverables. There are other things that the Contrib community might do, that we might decide to incorporate into the core in the future.</p>
<p><b>Scott</b>: &nbsp;There&#8217;s another thing that makes your position interesting.  On one hand you might get feedback from the product team saying, &quot;Hey, we&#8217;re not going to have this in the next version. It&#8217;s going to be a pain point. It&#8217;s something that you guys could take a look at.&quot;</p>
<p>On the other hand, you might have a lot of people in the community asking for a feature, but because you&#8217;re part of Microsoft, you know that the product team is already building that into the next version of the product.  You don&#8217;t want to invest in what the community is asking for, because it&#8217;s already being built, but you can&#8217;t tell anyone it&#8217;s being built.  The product team still has their plans under NDA.</p>
<p><b>Glenn</b>: &nbsp;That certainly happens all the time. That&#8217;s certainly a challenge. But what I&#8217;m happy to say is that more and more we&#8217;ve been able to drive back the experiences customers have had with our guidance to the product teams, which has resulted in many cases in product offerings that come out based on that.</p>
<p><b>Scott</b>: &nbsp;When I looked at stuff you produced a long time ago, for example, the Data Access Application Block, it seems like it was almost destined to be obsolete.  Eventually Table Adapters got built into the .NET Framework, and that provided the same functionality. </p>
<p><b>Blaine</b>: &nbsp;Our goal is to actually help migrate customers from what we produce, to the core product. That&#8217;s really our ultimate goal. If the core product addresses scenarios we&#8217;ve heard from customers, that&#8217;s a good thing.</p>
<p><b>Scott</b>: &nbsp;Yeah. Like I said, you guys are in a fascinating spot in terms of being an open source project, or open source projects, you&#8217;re really pretty unique it terms of where you sit. Can you share anything about the directions in which you&#8217;re going? You&#8217;re obviously moving towards more open. There&#8217;s certain constraints on that. Anything that people should look for over the next few months?</p>
<p><b>Glenn</b>: &nbsp;One of the things I think we&#8217;re moving on, and Blaine can touch on this, is bringing more of what we&#8217;re seeing to product groups. As an example &#8209;&#8209; and we&#8217;ve been trying to collaborate much more tightly internally &#8209;&#8209; one example is this new MVC framework. Want to talk a little bit about some of the work?</p>
<p><b>Blaine</b>: &nbsp;At patterns &amp; practices we&#8217;ve been supporting, as Glenn talked about, many of the common patterns in the UI space. MVC [Model View Controller] is a common one. MVP [Model View Presenter] is another one. And since we&#8217;ve been in the space, we&#8217;ve been working with the ASP.NET team to help define the MVC work that&#8217;s coming out of there.</p>
<p>A big part of this is really Scott Guthrie and his team&#8217;s vision. We are bringing some of the feedback that we&#8217;ve heard from customers to the ASP team.</p>
<p><b>Glenn</b>: &nbsp;We&#8217;ve actually been working on the design with them. It&#8217;s really been a partnership. I think those kinds of things are efforts that you&#8217;re going to continue to see.</p>
<p> The other big thing that I think you&#8217;re going to see, is the fruits of a transition we’ve been going through internally within patterns &amp; practices. We&#8217;re re-evaluating carefully at how we deliver guidance and what is the best method. , and we&#8217;re also looking at taking the principles of SCRUM that we apply within our teams and bringing it up to a higher management level with p &amp; p. This includes having  having a cross p &amp; p product backlog that we can be very visible with  customers about. We want to show, &quot;These are the things we&#8217;re looking at. This is what&#8217;s a high priority. This is what&#8217;s not.&quot;</p>
<p>On the subject of how we deliver guidance, although many customers have nothing but good to say about our factories, there are other customers, that say they are too complex. They also tend to not be as applicable in in what we call &quot;Brownfield scenarios&quot; which are  existing applications. Instead, they tend to be most useful when you are starting from scratch. Another thing we’ve seen is that industry-wide there has been a shift away away from comprehensive “do-it-all” type frameworks to a more pluggable services approach. Finally we’ve had a set of customers who tell us that the biggest value we can provide is to focus more on patterns themselves and how to use them (including samples and reference implementations) rather than framework type libraries that implement those patterns. We’ve heard thse customer concerns and are taking them seriously. We&#8217;re looking at how we can break things into smaller blocks.  We don&#8217;t mean exactly like the earlier application  blocks, but instead  how to ship our deliverables in an incremental fashion that offers customers more options as to what they use.. For example if I want to use some aspect of the factory without having to take everything, then I can. And, we are also looking at patterns and how we can make them more a first class citizen in our guidance.</p>
<p>Around this, we&#8217;ve put a stake in the ground with the current release of the Web Client Software Factory and with our newly announced WPF Composite Client.</p>
<p>By getting these things to be smaller, we can ship more of them more frequently, we can make more intelligent decisions about what we ship and what we don&#8217;t ship. We can build guidance that has more applicability in both the brownfield scenarios and well as greenfield &#8212; which is new development. We also give customers more choices as to how they incorporate our guidance within their environments.</p>
<p>Ultimately, we can reduce the complexity in evaluating and using these deliverables to make them approachable to a wider audience.</p>
<p>As you can tell, we’ve certainly got a lot of work ahead of us.</p>
<p><b>Scott: </b>Thanks for talking.  You opened up an interesting subject at the end, and maybe we could talk again in the future about it.</p>
<p><b>Blaine</b>: &nbsp;You bet.</p>
<img src="http://howsoftwareisbuilt.com/?ak_action=api_record_view&id=114&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%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F12%2F05%2Finterview-with-blaine-wastell-and-glen-block-patterns-and-practices-microsoft%2F&amp;title=Interview+with+Blaine+Wastell+and+Glenn+Block+%26%238211%3B+Patterns+and+Practices+%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%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F12%2F05%2Finterview-with-blaine-wastell-and-glen-block-patterns-and-practices-microsoft%2F&amp;title=Interview+with+Blaine+Wastell+and+Glenn+Block+%26%238211%3B+Patterns+and+Practices+%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%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F12%2F05%2Finterview-with-blaine-wastell-and-glen-block-patterns-and-practices-microsoft%2F" 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%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F12%2F05%2Finterview-with-blaine-wastell-and-glen-block-patterns-and-practices-microsoft%2F&amp;title=Interview+with+Blaine+Wastell+and+Glenn+Block+%26%238211%3B+Patterns+and+Practices+%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?url=http%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F12%2F05%2Finterview-with-blaine-wastell-and-glen-block-patterns-and-practices-microsoft%2F&amp;title=Interview+with+Blaine+Wastell+and+Glenn+Block+%26%238211%3B+Patterns+and+Practices+%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%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F12%2F05%2Finterview-with-blaine-wastell-and-glen-block-patterns-and-practices-microsoft%2F" 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+Blaine+Wastell+and+Glenn+Block+%26%238211%3B+Patterns+and+Practices+%26%238211%3B+Microsoft+@+http%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F12%2F05%2Finterview-with-blaine-wastell-and-glen-block-patterns-and-practices-microsoft%2F" 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/05/interview-with-blaine-wastell-and-glen-block-patterns-and-practices-microsoft/feed/</wfw:commentRss>
		<slash:comments>8</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 the [...]]]></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%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F10%2F04%2Fmicrosoft-to-reveal-source-for-net-framework-35%2F&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%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F10%2F04%2Fmicrosoft-to-reveal-source-for-net-framework-35%2F&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%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F10%2F04%2Fmicrosoft-to-reveal-source-for-net-framework-35%2F" 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%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F10%2F04%2Fmicrosoft-to-reveal-source-for-net-framework-35%2F&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?url=http%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F10%2F04%2Fmicrosoft-to-reveal-source-for-net-framework-35%2F&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%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F10%2F04%2Fmicrosoft-to-reveal-source-for-net-framework-35%2F" 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%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F10%2F04%2Fmicrosoft-to-reveal-source-for-net-framework-35%2F" 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 Matt Gibbs &#8211; Development Manager &#8211; UI Framework and Services &#8211; Microsoft</title>
		<link>http://howsoftwareisbuilt.com/2007/09/11/interview-with-matt-gibbs-development-manager-ui-framework-and-services-microsoft/</link>
		<comments>http://howsoftwareisbuilt.com/2007/09/11/interview-with-matt-gibbs-development-manager-ui-framework-and-services-microsoft/#comments</comments>
		<pubDate>Tue, 11 Sep 2007 21:40:20 +0000</pubDate>
		<dc:creator>campsean</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[matt gibbs]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[triage]]></category>

		<guid isPermaLink="false">http://howsoftwareisbuilt.com/2007/09/11/interview-with-matt-gibbs-development-manager-ui-framework-and-services-microsoft/</guid>
		<description><![CDATA[Interviewers: Scott Swigart , Richard Bowler Interviewee: Matt Gibbs In this interview with Matt, we asked him about: Approaching open and closed source SDL Development challenges for UI Framework and Services team Handling security within feature development Incorporating SDL into ASP.NET Launching multiple distributions with open source Testing against multiple operating systems Testing cycle for [...]]]></description>
			<content:encoded><![CDATA[<p>
<p><strong>Interviewers:</strong> <a href="http://howsoftwareisbuilt.com/about-scott-swigart/">Scott Swigart</a> , <a href="http://howsoftwareisbuilt.com/about-richard-bowler/">Richard Bowler</a></p>
<p>
<p><strong>Interviewee:</strong><a href="http://howsoftwareisbuilt.com/about-matt-gibbs/"> Matt Gibbs<br />
</a> </p>
<p>In this interview with Matt, we asked him about:</p>
<ul>
<li><a href="http://howsoftwareisbuilt.com/2007/09/11/interview-with-matt-gibbs-development-manager-ui-framework-and-services-microsoft/#intro">Approaching open and closed source SDL</a></li>
<li><a href="http://howsoftwareisbuilt.com/2007/09/11/interview-with-matt-gibbs-development-manager-ui-framework-and-services-microsoft/#challenges">Development challenges for UI Framework and Services team</a></li>
<li><a href="http://howsoftwareisbuilt.com/2007/09/11/interview-with-matt-gibbs-development-manager-ui-framework-and-services-microsoft/#security">Handling security within feature development</a></li>
<li><a href="http://howsoftwareisbuilt.com/2007/09/11/interview-with-matt-gibbs-development-manager-ui-framework-and-services-microsoft/#sdl">Incorporating SDL into ASP.NET</a></li>
<li><a href="http://howsoftwareisbuilt.com/2007/09/11/interview-with-matt-gibbs-development-manager-ui-framework-and-services-microsoft/#distros">Launching multiple distributions with open source</a>
<li><a href="http://howsoftwareisbuilt.com/2007/09/11/interview-with-matt-gibbs-development-manager-ui-framework-and-services-microsoft/#testing">Testing against multiple operating systems</a></li>
<li><a href="http://howsoftwareisbuilt.com/2007/09/11/interview-with-matt-gibbs-development-manager-ui-framework-and-services-microsoft/#feat_testing">Testing cycle for features</a></li>
<li><a href="http://howsoftwareisbuilt.com/2007/09/11/interview-with-matt-gibbs-development-manager-ui-framework-and-services-microsoft/#bugfixing">Managing bug fixes and feature stability</a></li>
<li><a href="http://howsoftwareisbuilt.com/2007/09/11/interview-with-matt-gibbs-development-manager-ui-framework-and-services-microsoft/#dev_cycle">Following a development cycle</a></li>
<li><a href="http://howsoftwareisbuilt.com/2007/09/11/interview-with-matt-gibbs-development-manager-ui-framework-and-services-microsoft/#microsoft">Microsoft philosophy on product development</a></li>
</ul>
<p><span id="more-95"></span></p>
<p><strong>Scott Swigart:</a></strong> Hi, Matt. Before we start, go ahead and introduce yourself.</p>
<p><strong>Matt:</strong>I&#8217;m Matt Gibbs, and I&#8217;m the Development Manager in the UI Framework and Services at Microsoft. My team is responsible for ASP.NET and AJAX as well as parts of Silverlight. </p>
<p><strong><a name="intro">Scott Swigart:</a></strong> Thanks! We’ve been commissioned to look into the premise that open source and closed source SDLs [Software Development Lifecycles] are fundamentally different, and that the differences manifest themselves in the final products in tangible ways.</p>
<p>That&#8217;s not to say that one is better than the other &#8211; certainly both models have their strengths and weaknesses &#8211; but it&#8217;s really designed to get information out there for two audiences: one is software vendors who are looking at building products. One of their first choices is whether they are going to go with an open source or a closed source model, and we want to look at some of the ramifications of that choice.</p>
<p>The second audience is people bringing products into their organizations, and we want to uncover some of the basic expectations that they could have around open and closed source, or some of the characteristics of each model that might impact their choices.</p>
<p><strong><a name="challenges">Richard Bowler:</a></strong> You&#8217;ve been the Development Manager for ASP.NET for about a year, right? </p>
<p><strong>
<p><strong>Matt:</strong> </strong> Yes, about a year. </p>
<p><strong>Richard:</strong>  What would you say are the major development challenges with that product? </p>
<p><strong>Matt:</strong> I think for us, the biggest challenge is that we have a large customer base, so as we innovate, we have to be very sensitive to backwards compatibility. We have a fairly complex platform, so innovation is challenging when you&#8217;re trying to make sure that existing applications people have built with it continue working. </p>
<p><strong>Richard:</strong>  It&#8217;s a pretty complex project, and it&#8217;s built on another complex project, which is the CLR; to co-develop with the CLR team, do you just take what they give you and work from there, or how does that work? </p>
<p><strong>Matt:</strong>  We work really closely with them. In fact, we meet regularly to go through code changes we&#8217;re making with members of the CLR team, so that we&#8217;re all in sync. </p>
<p><strong>Richard:</strong>  It sounds like you&#8217;ve been able to direct feedback to them, saying, &#8220;We really need this kind of capability, let&#8217;s fold it into the next release,&#8221; or something like that. </p>
<p><strong>Matt:</strong>  Yes. And they&#8217;re pretty sensitive to how their changes impact us. They run compatibility tests and stress tests against our scenarios, as well. </p>
<p><strong>Richard:</strong>  It seems like a huge challenge, when you consider the number of software products that Microsoft has on the market that interoperate. It seems like a huge challenge to keep them all working together. </p>
<p><strong>Matt:</strong>  For the framework we&#8217;ve actually held a pretty strict line. I am part of a committee where we review things that were classified as &#8220;potentially breaking a developer’s code,&#8221; and the default was that those weren&#8217;t allowed &#8211; that was kind of the highest priority. Things like &#8220;security fixes&#8221; would be allowed. Then there always needs to be a way to get back to an earlier version’s behavior, through a configuration parameter, for example. </p>
<p><strong><a name="security">Richard:</a></strong>  Speaking about security, we talked with Michael Howard, and also with James Whittaker about the SDL. It looks like it&#8217;s really paying off for you guys. Were you involved in the development internally when the SDL was being instituted at Microsoft? </p>
<p><strong>Matt:</strong>  Yes, actually I worked with Michael Howard on IIS where we ran into a few security issues that helped highlight the need for a more structured approach. </p>
<p><strong>Richard:</strong>  I know what the benefits are, because we discussed it with Michael and James. But what were the main difficulties in shoehorning those new processes over the top of existing SDL processes? </p>
<p><strong>Matt:</strong>  I don&#8217;t think it really came down to process difficulties, as much as it came down to just helping developers recognize that the mindset they had been using needed to be front-loaded with security all along.<br />
In our first round, everybody recognized that we needed to pay even more attention to security, and make it a higher priority. But then the realization was that it can&#8217;t be one phase in the development process. It really needs to be something that we pay attention to all along.</p>
<p><strong>Richard:</strong>  To put it another way, then, you had to get a wrench on the culture. You had to make security important in everyone&#8217;s mind. </p>
<p><strong>Matt:</strong>  Right, and it really had to be the case that everybody came to the same conclusion. You couldn&#8217;t just tell people it was important &#8211; they had to see what kind of impact it had to customers, and recognize it themselves. </p>
<p><strong>Richard:</strong>  Did you get much internal resistance from individual developers, or was there pretty much across-the-board buy-in? </p>
<p><strong>Matt:</strong>  It was pretty wholesale &#8211; everyone recognized it. I think particularly since I&#8217;ve been involved in web platforms, and we saw a couple of places where we&#8217;ve made mistakes, everybody recognized, &#8220;OK, we have to do something different, and be more practiced in this,&#8221; because otherwise we’re not going to get the right outcome. </p>
<p><strong><a name="sdl">Richard:</a></strong>  Where was ASP.NET in the process of instituting the SDL? Was Version 1 out before the SDL really came to the fore? </p>
<p><strong>Matt:</strong>  No, when the process was launched we were already in development. It was during that cycle where we decided to take a break, and we went back and said, &#8220;We need to invest time in this process.&#8221; Everybody did some extra security training, and then we essentially stopped development, and did a pass for just security. We looked at every feature, all the code, looking for specific issues, just to make sure we had done all the right things. </p>
<p><strong><a name="distros">Scott:</a></strong>  One of the things that I found looking at the open source side of things, is just the sheer number of distributions that they have to ship for a product. MySQL for example, I think has 16 distributions, because it has to run on all of these different flavors of Linux, none of which the people working on MySQL really have a lot of control over. Those versions of Linux are all rev’ing independently of each other, so the underlying operating system that it&#8217;s dependent on is changing all the time. You&#8217;ve got a whole ton of applications that are built on top of MySQL, and are therefore dependent on it.</p>
<p>I can&#8217;t even really imagine exactly how to test that, and I know that in the open source world there are issues about, &#8220;This version of MySQL isn&#8217;t compatible with this version of WordPress, which isn&#8217;t compatible with this version of Linux.&#8221; So, they are always fighting these compatibility issues as things just rev independently of each other all the time.<br />
Microsoft has some rather similar challenges, in the sense that IIS revs with the server. ASP.NET revs on its own timeline, which isn&#8217;t tied to the base operating system, and Atlas is also on its own timeline to some degree.</p>
<p>Talk a little bit about the kind of test matrices that Microsoft builds, and the amount of resources in terms of hardware and testers that come to bear when you guys are getting ready to release something, or while you&#8217;re developing something to ensure compatibility with all the versions of all the things you ship. </p>
<p><strong><a name="testing">Matt:</a></strong>  It&#8217;s probably more expensive than you might initially think, because in the same way that there are a bunch of different Linux distributions, we also still test against a lot of different supported versions of the operating system.</p>
<p>We&#8217;ll test against XP and Windows 2000 and Win2k3, with different levels of the service packs and with components installed; with Visual Studio installed, without Visual Studio installed, and then different flavors of IIS. We&#8217;re already testing with IIS 7 on Vista where we&#8217;ve got a lot of integration work going on. When we go to do compatibility checking and functional testing, we have a fairly large lab. And the run time, unfortunately, is on the order of weeks to really ensure compatibility. </p>
<p><strong><a name="feat_testing">Scott:</a></strong>  What I&#8217;m envisioning is that somebody pushes a big button, and a hundred machines get configured with tests. It all comes up and runs, and results get cranked out &#8212; test, pass, or fail. Is it something kind of like that? </p>
<p><strong>Matt:</strong>  Yes, and they categorize tests into different levels of priorities so they can say, &#8220;We&#8217;re going to do a quick sanity check on something,&#8221; and that can take a couple of days. Or, they can say, &#8220;We want to run the gauntlet, and run everything we&#8217;ve got,&#8221; like before a service pack or something, and that will take much longer.<br />
It covers everything from different language packs, to different service packs installed. One time-consuming thing is that errors that are false positives come up, and they need to be investigated. These might be just test issues, and that takes time as well, because you don&#8217;t want to ship with something that might be a problem, so everything has to be investigated. </p>
<p><strong>Scott:</strong>  I know that Microsoft&#8217;s got certain terminology around this. I&#8217;ve heard of something called the BVT, which I think stands for Build Verification Test. There are things that have to happen before something gets released as a CTP, Community Tech Preview. Can you talk a little bit about that, in terms of what the different levels of testing are, and what kind of things have to get verified on those different levels?</p>
<p><strong>Matt:</strong>  There&#8217;s a scaled approach. On a developer&#8217;s machine, we&#8217;ll have what we typically call Developer Tests.<br />
The developer cranks out a lot of small standalone tests against the feature he&#8217;s building, against his APIs. He&#8217;ll run those every time he goes to check in code. We&#8217;ll aggregate those for our dev team, so that you&#8217;re running a fairly lengthy set of them. But, they still run within just a few minutes, so that you can continue making fast development progress. Then we&#8217;ll run a superset of those before we check in. </p>
<p><strong>Scott:</strong>  So, that&#8217;s to make sure that one developer&#8217;s change didn&#8217;t break some other developer&#8217;s code. </p>
<p><strong>Matt:</strong>  Yeah, that the basic functionality is intact. Then, the test team runs what they call a set of nightlies. They&#8217;ll run those on every daily build that comes out, they&#8217;ll kick off an automated set of nigthlies. They’re small enough in scope that they can run overnight, and any failures can be investigated fairly quickly. They are what they call “Pri0” test cases; and that would be mainstream use-cases.<br />
Then, the superset of that is something that’s maybe ten times the number of test cases, and that&#8217;ll run for days to verify the full functionality. That&#8217;s literally thousands upon thousands of test cases. </p>
<p><strong>Richard:</strong>  So, your nightlies maintain a level of sanity about the ongoing nature of the code base &#8211; yesterday it was still good, today it&#8217;s still good, tomorrow somebody&#8217;s checking in something bad. Let&#8217;s back up and fix this so you never get too far out of whack. </p>
<p><strong>Matt:</strong>  Then, you may find something when you go through a full test pass. When the tester originally made the test plan, they may have said it&#8217;s a fringe scenario, so it was classified as a priority two test case. You might only run it before a release, and then something breaks. </p>
<p><strong><a name="bugfixing">Scott:</a></strong>  Microsoft has a lot of people who blog, so there are obviously a lot of people on the product teams who are fairly transparent about where they are and what they&#8217;re doing. I think Scott Guthrie put up a big blog post where he said, &#8220;You know, there&#8217;s a point in time where we don&#8217;t necessarily fix every bug because we have to weigh the risk of impacting the stability of the product.&#8221;</p>
<p> Every time we touch a line of code, there&#8217;s a risk that we&#8217;re going to hurt the stability of the product, so there&#8217;s a point where we switch from telling a certain team what we&#8217;re fixing to actually having to get permission to fix certain things because of where we are at in the stabilization process. Am I characterizing that right? </p>
<p><strong>Matt:</strong>  Yeah, we’ve spent a lot of time mining our bug tracking database, and you look at data points like, &#8220;For X number of bugs, how many fixes actually cause some other problem?&#8221; The closer you get to shipping, the more likely you are to look at something and say, &#8220;This is really not a very important bug, and people are just not really going to see this. It&#8217;s good that we did the due diligence and found it, but this late in the game, you run the risk of breaking something more important.&#8221; You might just leave a bug in there and fix it when you have more time to shake out the problems. </p>
<p><strong>Richard:</strong>  I guess if you didn&#8217;t do that, you&#8217;d never ship. </p>
<p><strong>Matt:</strong>  Exactly. With new engineers, you&#8217;ll regularly see them hit this kind of frustrating point when they have a bug, they want to fix it, but it&#8217;s time to ship and they get told no. Their point of view is that it&#8217;s a problem that should be fixed, and they have to be told that they can fix it, but not until the next version </p>
<p><strong>Scott:</strong>  I have to admit that it’s odd to think that leaving bugs alone raises quality.</p>
<p><strong>Richard:</strong>  In my own process over time it seems like when we get down to the mode when we&#8217;re primarily testing an implemented product and engineers are working on bug fixes and not new features and behaviors. It seems like as you get closer and closer to when you need to ship it gets harder and harder to jump through the hoop of where a bug ought to be fixed. At some point it&#8217;s got to be an absolute showstopper to stop the shipment; it&#8217;s got to be a crash or something like that, otherwise you&#8217;re just not going to fix it until the next release. </p>
<p><strong>Matt:</strong>  Yeah, we get to the very end where we call it recall mode, where the question is whether you would actually take the product off the shelf in order to fix this issue. At this final point in the process, unless we’d recall the product, we don’t fix it.</p>
<p><strong>Scott:</strong>  Another thing that&#8217;s pretty interesting to me is the whole way that Microsoft does milestones. Again, my impression of it from the outside is that somebody will say, &#8220;OK, these are the features that we&#8217;re targeting for milestone one, for M1,&#8221; and so developers will go off and they&#8217;ll be working on those features. There will be a graph of the bug count that&#8217;s just climbing, climbing, climbing; the number of test cases written are just climbing, climbing, climbing.</p>
<p>At some point, it seems to switch over to where new features aren&#8217;t being written, it&#8217;s focusing on stabilization for the M1 milestone. So, there&#8217;s a trend down in the bug count. It seems like there are a lot of different variables that are being looked at in those stages; what&#8217;s happening to the bug count, what&#8217;s happening to the perf numbers&#8230;<br />
Can you talk about how all that stuff comes together? Am I characterizing these milestones correctly? Is that sort of how it works? </p>
<p><strong><a name="dev_cycle">Matt:</a></strong>  In the past, that is how I would have characterized it &#8211; a sort of waterfall approach where we crank out a bunch of features and accumulate bugs, and the test team cranks out test cases, and then we play catch-up and try to satisfy all those test cases and bring the bug count down isn’t the most efficient. But we&#8217;ve actually shifted in our group to a little different approach that we think is working better.  </p>
<p>Instead, we&#8217;ve gone to what we&#8217;re calling a feature crew model where the dev, test, and PM work together from the start on defining the design, the set of test cases, and the unit tests, and they drive for more quality up front before the feature even gets checked into the product. So, they&#8217;ll work in an isolated source code branch getting a feature to a higher level of quality and then get it into the product. </p>
<p><strong>Richard:</strong>  It sounds like you&#8217;re moving, at least to some extent, toward a more Agile model. </p>
<p><strong>Matt:</strong>  Yeah, it&#8217;s ended up being a hybrid of Agile development with features of SCRUM, but you couldn&#8217;t really call it one or the other. It still falls into a sort of waterfall effect where we have a milestone of a bunch of features we&#8217;re going to try to get done by a certain time. There is still this mentality of feature crews driving for a deadline, so we picked the pieces of a bunch of different methodologies that seem to work well for us in delivering commercial software, and we are trying to make them work together. </p>
<p><strong>Scott:</strong>  Now, I&#8217;ve heard a little bit about these feature crews. Correct me if I&#8217;m wrong, but that seems to have been developed after the ship of Visual Studio 2005. It came out of … I think they called it like, MQ or Milestone Quality, or something like that? </p>
<p><strong>Matt:</strong>  Yeah, it was kind of built around the milestone for quality. </p>
<p><strong>Scott:</strong>  So, some of the ramifications of that are that if there&#8217;s a feature you&#8217;re dependent on to build your feature, it might take you longer to get that. But, when Microsoft releases things like Community Tech Previews, they&#8217;re going to be more stable by default, because things were only checked into the source base that passed a higher quality bar. Is that right? </p>
<p><strong>Matt:</strong>  That&#8217;s the goal, and we were able to benefit from the approach with the ASP.NET AJAX release. We embraced the feature crew model when it was still ramping up for the rest of the division, and it worked out pretty well for us. We learned a few things we could do better.<br />
We also learned that some of the dependencies became a little bit difficult to manage. If you truly had a feature that needed something else to be completed, then you ended up with a staggered set of feature work waiting for future builds. You needed an equal set of things that could be done early, in order for everybody to keep being productive. </p>
<p><strong>Richard:</strong>  It sounds like what you&#8217;re doing is trying to make sure that your interim quality is higher by testing feature-by-feature, and by enforcing a quality standard on individual pieces instead of waiting for the entire conglomeration. Is that a correct characterization? </p>
<p><strong>Matt:</strong>  Yes, hold the line on quality all along. Don&#8217;t accumulate debt in order to get more features done earlier. </p>
<p><strong>Richard:</strong>  That seems really smart to me. There&#8217;s an old saying you can&#8217;t test quality into a product, and that&#8217;s really true. It seems really smart to me. Was that inspired by the SDL&#8217;s focus on early process involvement of quality assurance? </p>
<p><strong>Matt:</strong>  Yes. Before, we almost had two instances of lifecycles. You had development working on one lifecycle model, and you had the quality assurance teams running along six to eight weeks behind the dev team.<br />
But, that wasn&#8217;t really working efficiently because all we were doing was having one team try to play catch-up with the other team. The dev team was cranking out features, and the test team was finding problems with it. Then, the dev team was trying to catch-up on the problems that the test team found. </p>
<p><strong>Scott:</strong>  With Visual Studio 2005 when it came out, there were a lot of issues around stability and quality, and things like that.<br />
It was easily the most complicated development environment that Microsoft had ever built, maybe that anybody had ever built. It had amazing levels of cross-product dependencies; there were big products of their own that were put in there, like Team System.</p>
<p>Some of the impression, at least from the outside, was that it didn&#8217;t all come together and stabilize at the end the way that everybody had hoped. So, is that correct? Do you feel like maybe the initial version wasn&#8217;t as stable as everybody hoped, and so some of these things have been done as a response? </p>
<p><strong>Matt:</strong>  That may be the conclusion from my team&#8217;s perspective, focusing on the platform. I think we probably feel like we&#8217;re in pretty good shape because we have criteria and goals that were met.<br />
But, I know in the MQ timeframes a lot of people focused on a lot of little things that weren&#8217;t quite right that they wanted to fix up for the next release. That was primarily targeted at the development tools environment, not the platform. </p>
<p><strong>Scott:</strong>  You work in the open source world in a sense with Atlas, right? Because there are a set of controls for Atlas that are effectively open source in that Microsoft puts the source out there. They&#8217;re maybe not open source in the sense that anybody in the world can just modify the source and submit changes to it, but please talk a little bit about this foray into open source with some of the Atlas controls. </p>
<p><strong>Matt:</strong>  The AJAX Toolkit Project is a separate team around the corner from us, and it is shared source. They take code submissions from the public. They have released the really snappy UI controls that everybody uses on top of the Atlas part of the platform.<br />
It&#8217;s been well received, and people are able to grab the source, and build it, and contribute. It&#8217;s a little different for us in comparison to what we&#8217;ve done before. We’ll see how much the community itself drives lots of new controls, or if it&#8217;s something where they like the fact that the controls are out there, but they don&#8217;t really actively contribute a lot. </p>
<p><strong>Scott:</strong>  Certainly a key benefit of open source is that the source is out there for you to learn from. I think that even taking the Windows Forms controls and the ASP.NET controls, certainly a lot of best practices might have been gleaned from being able to look at how Microsoft did what it did. </p>
<p><strong>Matt:</strong>  Well, we&#8217;ve done that with the Atlas release now, too. That&#8217;s a first for us, and I&#8217;m really proud of it. When we released ASP.NET AJAX, we released the source symbols for it so you can attach a debugger, and step right through our source code.<br />
It&#8217;s not the same as taking source code in from the community, but we look at it as being very open and transparent. It&#8217;s one of those things where in the open source community, everybody says, &#8220;I have the source, so I can do what I want with it.&#8221; From my perspective, though, people tend to say that but not do it. </p>
<p><strong>Scott:</strong>  I think they call it the Berkeley Conundrum. It&#8217;s a variant on &#8220;if a tree falls in the woods, but nobody hears it, it doesn&#8217;t really make a sound.&#8221; If there&#8217;s so much open source code out there, and not really enough eyeballs to actually look at it, does it really matter that it&#8217;s open source? </p>
<p>One of the things that seems to me like a huge challenge is that inside of Microsoft you can control exactly what people get to do to. You can control the training that they have to have around security, and performance, and best practices. You can control the unit tests they write, and you can control the process that the code goes through.<br />
When you take a look at open source, you just get code delivered to you and you don&#8217;t have any control, or any view into the process that was used to create that code. </p>
<p>From Microsoft&#8217;s perspective, you’re taking submissions from the community; how do you ensure things like security, performance, and reliability, when anybody could be submitting the code, and you don&#8217;t have control over how they got there? </p>
<p><strong>Matt:</strong>  I&#8217;m not intimately familiar with it, but my understanding is that the team has essentially taken on the burden, so far, of ensuring some of the security themselves by essentially laying our security process on top of the code before it goes out to the public. I also think there&#8217;s an element of caveat emptor.</p>
<p>But, because it&#8217;s coming from Microsoft, there has been a certain expectation of quality.  At this point, because we have a dedicated team working on it, they&#8217;re in the code and it&#8217;s still going through quite a bit of the Microsoft process.<br />
Also, at this point, you can&#8217;t just submit and have it go right out to CodePlex. You submit as a team, and your submission is then under review for inclusion on CodePlex. </p>
<p><strong>Richard:</strong>  What do you think are the advantages of closed source over open source? </p>
<p><strong>Matt:</strong>  In my mind, it comes down to probably two things. One, the customer knows they have somebody to go back to, that there is a company that they&#8217;re buying software from that is backing it up. Two, there is a full-time developer that is working on advancing the software.<br />
Open source has done fantastic things with having a community effort drive things to do good software. But, the fundamental difference is that with proprietary software you have an entity that&#8217;s responsible and people employed to push things forward. </p>
<p><strong>Richard:</strong>  What about the development of that process itself &#8212; the mechanics of designing, implementing, and shipping a piece of software. Do you see advantages to the closed source model, and if so, what are they? </p>
<p><strong>Matt:</strong>  I think you may have a little bit more of a culture of discipline but I&#8217;m not sure that it&#8217;s really that much different. I think there&#8217;s so much passion from people in the open source community in what they&#8217;re building that it may be the same kind of thing. The same kind of respect somebody has for their full-time job. </p>
<p><strong>Scott:</strong>  There are two myths that I frequently encounter, one related to open source, and one related to proprietary software.  The open source myth that I hear again and again is that many eyeballs looking at the code ensures security.</p>
<p>Michael Howard really threw down the gauntlet on that and said, &#8220;Show me the data, because there&#8217;s just no data to support the idea that you can make sure code is secure just by open sourcing it and letting people look at it.&#8221;<br />
On the closed source side, one of the things that I often hear as being an advantage is this notion that there&#8217;s a company to go back to, there&#8217;s a company that stands behind it. My impression is, I don&#8217;t have any guarantee that a bug that I find will get fixed in the product. I don&#8217;t have any guarantee that a problem that I&#8217;m running into will get solved by the company that produced it. I can file a bug, I can call product support; maybe I&#8217;ll get a resolution, maybe I won&#8217;t.<br />
Do you think that Microsoft or any other company really offers that level of guarantee? </p>
<p><strong>Matt:</strong>  In my experience having worked as a quick-fix engineer where we investigated customer reported problems from PSS, it was very serious. If you couldn&#8217;t find some way to workaround it, it needed to be a product fix. Now with that being said, if there was a reasonable workaround, then you&#8217;re back to the issue of whether it&#8217;s worth the risk to go patch product code.</p>
<p>There&#8217;s not a case I can think of where a customer had a serious problem and we didn&#8217;t either find them a workaround or patch the product in order to get them back on track.  The open source community can’t guarantee every requested change will be made either.</p>
<p><strong>Scott:</strong>  I guess the only caveat to that might be that obviously, it&#8217;s not going to be instantaneous, in either the closed source or the open source world. I remember a problem I found, and the answer was it&#8217;ll be fixed in Service Pack 2, but Service Pack 2 didn&#8217;t come out for another six months. </p>
<p><strong>Matt:</strong>  Very few fixes in proprietary or open source development are instantaneous.  More complex issues may take longer, and again there is the concern about compatibility.  When something like Service Pack 2 ships, it’s had many hours of testing devoted to it to ensure that even small fixes are getting good coverage.</p>
<p><strong>Scott:</strong>  Clearly, from your perspective, that guarantee of supportability is real, but there are just certain kinds of physical constraints on how fast the resolution might be available. But in your experience if there is a critical problem, either the customer gets a workaround for it or Microsoft starts working on a fix?</p>
<p><strong>Matt:</strong>  That&#8217;s been my experience in ten years here. </p>
<p><strong>Richard:</strong>  We talked to one of the guys that works on the Linux kernel. He basically said what happens is that people turn code in to the mailing list, and then everybody takes a look at it. If they&#8217;re interested and they snipe at it, then the developer makes some changes. Then, ultimately it either gets adopted by the maintainer &#8211; the person who owns that section of the kernel &#8211; or it doesn&#8217;t.</p>
<p>So, at least in some sense there&#8217;s no process to enforce quality during implementation beyond peer review. It seems to me intuitively that that&#8217;s a disadvantage. But, I just wanted to get your take on it. </p>
<p><strong>Matt:</strong>  Of course we&#8217;re not working on the kernel, but I know that before a piece of code I write is going to get anywhere that it&#8217;s going to get exercised quite a bit. It seems like inherently that&#8217;s an advantage.</p>
<p><strong><a name="microsoft">Scott:</a> </strong> Matt, talk a little bit about motivation inside of Microsoft. How much is it sort of computer-generated, and how much is it, &#8220;Developer Number 13 had this much code checked in, this few defects, found this many bugs…?&#8221; How does it work in the “big house?” </p>
<p><strong>Matt:</strong>  For us it&#8217;s all about our developer customers. It’s about the level of enthusiasm and people&#8217;s feedback, and it all feeds off of that. We get our customer’s excitement, what they want to see, what they&#8217;re going to be able to build.  They say to us, &#8220;If only you added this feature you could save me time, and here&#8217;s what I want to see next.&#8221;<br />
The people here in Microsoft are completely driven by what our customers want to see next. We may be in a bit of a unique position because our customer is a developer, and developers get really excited about the platform. </p>
<p><strong>Scott:</strong>  I’ve heard from people who’ve interviewed at Microsoft come back and say, “There really is a sense that by working at Microsoft you have an opportunity to change the world.”  I would guess that many of Microsoft&#8217;s products … if you take a look at Office, Visual Studio, Silverlight, and how you hope those products progress over time, most of these are big bets. In most of these cases, you are part of something that you hope is going to be really big and industry-changing. </p>
<p><strong>Matt:</strong>  Yes, it&#8217;s the kind of thing where I&#8217;ve had people come up to me at ASP.NET conferences and say, &#8220;You changed how I do my work. It&#8217;s been an incredible experience and I can&#8217;t wait to see what you guys do next.&#8221; It makes an impact on their life. It makes it fun. </p>
<p>It’s different than what Scott was driving at; the “how many defects” and “how many lines of code” kind of thing. We really run off of developer-driven enthusiasm. There&#8217;s an enthusiastic, sharp, hardworking group of people that are really focused on the customer and how to make better developer experiences. </p>
<p><strong>Richard:</strong>  Well, thanks very much for talking with us. I appreciate it. </p>
<p><strong>Matt:</strong>  Sure.</p>
<img src="http://howsoftwareisbuilt.com/?ak_action=api_record_view&id=95&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%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F09%2F11%2Finterview-with-matt-gibbs-development-manager-ui-framework-and-services-microsoft%2F&amp;title=Interview+with+Matt+Gibbs+%26%238211%3B+Development+Manager+%26%238211%3B+UI+Framework+and+Services+%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%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F09%2F11%2Finterview-with-matt-gibbs-development-manager-ui-framework-and-services-microsoft%2F&amp;title=Interview+with+Matt+Gibbs+%26%238211%3B+Development+Manager+%26%238211%3B+UI+Framework+and+Services+%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%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F09%2F11%2Finterview-with-matt-gibbs-development-manager-ui-framework-and-services-microsoft%2F" 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%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F09%2F11%2Finterview-with-matt-gibbs-development-manager-ui-framework-and-services-microsoft%2F&amp;title=Interview+with+Matt+Gibbs+%26%238211%3B+Development+Manager+%26%238211%3B+UI+Framework+and+Services+%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?url=http%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F09%2F11%2Finterview-with-matt-gibbs-development-manager-ui-framework-and-services-microsoft%2F&amp;title=Interview+with+Matt+Gibbs+%26%238211%3B+Development+Manager+%26%238211%3B+UI+Framework+and+Services+%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%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F09%2F11%2Finterview-with-matt-gibbs-development-manager-ui-framework-and-services-microsoft%2F" 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+Matt+Gibbs+%26%238211%3B+Development+Manager+%26%238211%3B+UI+Framework+and+Services+%26%238211%3B+Microsoft+@+http%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F09%2F11%2Finterview-with-matt-gibbs-development-manager-ui-framework-and-services-microsoft%2F" 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/09/11/interview-with-matt-gibbs-development-manager-ui-framework-and-services-microsoft/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Interview with Rod Johnson &#8211; CEO &#8211; Interface21</title>
		<link>http://howsoftwareisbuilt.com/2007/09/10/interview-with-rod-johnson-ceo-interface21/</link>
		<comments>http://howsoftwareisbuilt.com/2007/09/10/interview-with-rod-johnson-ceo-interface21/#comments</comments>
		<pubDate>Mon, 10 Sep 2007 21:41:40 +0000</pubDate>
		<dc:creator>campsean</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[J2EE]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[meritocracy]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[support]]></category>

		<guid isPermaLink="false">http://howsoftwareisbuilt.com/2007/09/10/interview-with-rod-johnson-ceo-interface21/</guid>
		<description><![CDATA[Interviewers: Scott Swigart Interviewee: Rod Johnson In this interview with Rod, CEO of Interface 21 and founder of the Spring framework, we asked him about: Development methodology of Spring framework Contributors to Spring Selection of code and features for the Spring framework Ways in which developers support open source Open source development cycle Importance of [...]]]></description>
			<content:encoded><![CDATA[<p>
<p><strong>Interviewers:</strong> <a href="http://howsoftwareisbuilt.com/about-scott-swigart/">Scott Swigart</a> </p>
<p>
<p><strong>Interviewee:</strong><a href="http://howsoftwareisbuilt.com/about-rod-johnson-ceo-interface21/"> Rod Johnson<br />
</a> </p>
<p>In this interview with Rod, CEO of Interface 21 and founder of the Spring framework, we asked him about:</p>
<ul>
<li><a href="http://howsoftwareisbuilt.com/2007/09/10/interview-with-rod-johnson-ceo-interface21/#springframework">Development methodology of Spring framework</a></li>
<li><a href="http://howsoftwareisbuilt.com/2007/09/10/interview-with-rod-johnson-ceo-interface21/#springdevs">Contributors to Spring</a></li>
<li><a href="http://howsoftwareisbuilt.com/2007/09/10/interview-with-rod-johnson-ceo-interface21/#includedfeatures">Selection of code and features for the Spring framework</a></li>
<li><a href="http://howsoftwareisbuilt.com/2007/09/10/interview-with-rod-johnson-ceo-interface21/#supportingopensource">Ways in which developers support open source</a></li>
<li><a href="http://howsoftwareisbuilt.com/2007/09/10/interview-with-rod-johnson-ceo-interface21/#cycle">Open source development cycle </a>
<li><a href="http://howsoftwareisbuilt.com/2007/09/10/interview-with-rod-johnson-ceo-interface21/#support">Importance of technical support</a></li>
<li><a href="http://howsoftwareisbuilt.com/2007/09/10/interview-with-rod-johnson-ceo-interface21/#aggregation">Code aggregation in open source development</a></li>
<li><a href="http://howsoftwareisbuilt.com/2007/09/10/interview-with-rod-johnson-ceo-interface21/#startup">Choosing open or closed source within small businesses</a></li>
</ul>
<p><span id="more-93"></span></p>
<p><strong>Scott Swigart:</strong> Rod, thanks for taking the time to chat.  If you don&#8217;t mind, please take a moment to introduce yourself.</p>
<p><strong>Rod Johnson:</strong> I am the founder of the Spring Framework, which has become the effective standard for enterprise Java development. We also have a spring.net edition. I am CEO of Interface 21, which is the company behind Spring. I&#8217;m also the author of several books on J2EE development. </p>
<p><a name="springframework">
<p><strong>Scott:</strong></a> Great! Talk to me a little bit about the development methodology of the Spring framework. How does that work? Every open-source project seems to have its flavor. Tell me how Spring is built. How do ideas go from conception to features to in production or in development to release?</p>
<p><strong>Rod:</strong> OK. I think when people try to understand what open source is, they instantly think about code and that the software is created by a disparate, far-flung group of people who work in their spare time. In fact, to understand the open-source model you need to step back from code and look at the totality of things, which includes documentation, includes support for users, and includes the discussion of ideas. </p>
<p>What we see in the core of our software is that the vast majority of the code is written by a small group of exceptionally good people. I don&#8217;t believe there is any other way to produce exceptionally good software. We have known for many years about what Fred Brooks calls the The Mythical Man-Month.</p>
<p><strong>Scott:</strong> Right.</p>
<p><strong>Rod:</strong> Open source doesn&#8217;t change that. We know that if you throw more people at a problem you don&#8217;t get a better solution. And it doesn&#8217;t matter what approach to distributing the source of the software you use. You&#8217;re not going to change that fundamental fact. If you want exceptionally good software, you want a cohesive team of exceptionally good people and you really want that team to be as small as possible. </p>
<p><strong>Scott:</strong> How is that team motivated to work on the project?</p>
<p><a name="springdevs">
<p><strong>Rod:</strong></a> The core people who connect to Spring daily are employees. They are being paid to do this. That model works very, very well if you look at open source in terms of the enterprise Java space and also obviously of the Linux space. You see that the model is evolving towards paying the contributors who write the code. For example, I think 21 out of the top 25 committers on Linux are employees of large corporations. The majority of the committers on Spring are Interface 21 employees. Another good example of this is JBoss, the Java application server. The majority of the code there comes from employees of JBoss, who are now employees of Red Hat. </p>
<p><strong>Scott:</strong> I want to get your insight on the Linux kernel. My understanding of the Linux kernel is that unless Linus likes a certain patch, it&#8217;s not going to make it into the kernel. And yet, the bulk of the development is done by people who work for IBM, people who work for Red Hat, Intel, AMD, whoever. Right? Corporations are doing the bulk of the work. And yet what makes it in or out of the kernel isn&#8217;t really under the control of a company. Do you have any insight into how that works?</p>
<p><strong>Rod:</strong> I am not an expert on Linux kernel governance. From what I see, one thing that is very, very important to developing high quality software and maintaining that software in high quality for the long-term is consequences: consequences of success, consequences of screwing up.</p>
<p>In the case of Linux, what we have is not a single entity, but we have a number of companies (and in Linus&#8217; case partly also an individual, obviously) and a number of parties that are really baked into the system because there are large consequences if they screw up.</p>
<p>I don&#8217;t think one entity needs to be responsible for a piece of software. I think you can end up with a kind of partnership, but there have to be consequences if something is screwed up. That is one thing that scares me about the rather naive volunteerism view of open source because what are the consequences to a volunteer? Sure, in many cases they may be professionals. They may feel as a sense of personal ownership that they cannot be satisfied unless something is as good as it possibly can be. But there ultimately are problems because they don&#8217;t necessarily suffer the same kind of consequences if something isn&#8217;t taken forward. </p>
<p><a name="includedfeatures">
<p><strong>Scott:</strong></a> What people have told me is that there is sort of a developer Darwinism that happens. In other words, to get your code in you have to submit it to a mailing list. You have to submit it to what one person described as a &#8220;full contact code review” and in some mailing lists you&#8217;ll just simply flat out get ridiculed and won&#8217;t be taken seriously if your code isn&#8217;t to a certain level. So, it seems reputation based, I guess. You can&#8217;t really get code in until it&#8217;s passed code review and up the chain of maintainers. So, on one hand there isn&#8217;t a lot of consequence to writing bad code, except maybe it was a complete waste of time. Your inability to do it well was pointed out for the whole world to see. So, it seems there is a certain amount of pressure to sit up straight and code well, especially if you&#8217;re going to try to get stuff into very high profile, very core open-source products like the Apache, or Linux, or some things like that.</p>
<p><strong>Rod:</strong> Yeah.</p>
<p><strong>Scott:</strong> One of the things that you pointed out is that people who are going to use open source shouldn&#8217;t consider it a free ride. It isn&#8217;t just something that you should just leech off if you want the stuff that you&#8217;re dependent on to continue to thrive, grow, and be there for you, and continue to be enhanced down the road.</p>
<p>But, at the same time, most of the core contributors to open-source products are highly skilled people who are employed by a company, and this is what they do all day long. So, if I&#8217;m going to be a user of open source, how could I best contribute?</p>
<p><strong>Rod:</strong> The first thing is that I would hate to give the impression that openness means nothing. There is one interesting characteristic, for example, about a piece of software like Spring, which is overwhelmingly written by one company, compared to closed source. </p>
<p>You have the ability to work up to being a committer of the software. Not many people will take that up. And we may choose to approach you to see if we can hire you if you do it. And that is a way of expanding and renewing the developer base. </p>
<p>So, it is open in the sense that there is opportunity for people to come to be committers on the software through the community based on merit. That is interesting because if I want to be a contributor on the Java-based IBM&#8217;s WebSphere, I&#8217;m sure I could add some value based on my background to WebSphere, but I can&#8217;t put my code in there. There is no way I can do it without becoming an IBM employee.</p>
<p><strong>Scott:</strong> Right.</p>
<p><a name="supportingopensource">
<p><strong>Rod:</strong></a> So that is a genuine difference. There is a true meritocracy. So, coming back to your question, which was “How do you pay? How do you contribute back?”</p>
<p><strong>Scott:</strong> Yeah, how do you contribute?</p>
<p><strong>Rod:</strong> Well, I think the first thing is to remember that although it&#8217;s very important that there is that meritocracy based on code there are several reasons that the majority of users are never going to contribute to that code. The majority of users are not going to modify and compile it. The majority of users are going to use it essentially as if it&#8217;s a shrink-wrap product.</p>
<p>I make all of our consultants just use the binaries. If they&#8217;re working with our product with customers, we don&#8217;t like them to be working with the source code and making changes to the source code of our product.</p>
<p>The interesting thing is that it simulates more accurately how end users use it. So, often we&#8217;ll go into customers where we&#8217;ll see that they just realized that you can mount the source code and if you want to step through the same work source code…</p>
<p><strong>Scott:</strong> Right.</p>
<p><strong>Rod:</strong> …so, it just doesn&#8217;t make sense for most end users to even consider modifying the software. Consider that Spring is 1.2 million lines of code. Some of that code does things like transaction management, the fundamental configuration of your application.  Some of it executes in virtually every runtime call set. It doesn&#8217;t matter whether its open source or closed source, you really don&#8217;t mess with code that does that kind of thing unless you know what you&#8217;re doing.</p>
<p><strong>Scott:</strong> Right.</p>
<p><strong>Rod:</strong> The process of knowing what you&#8217;re doing…For example, in our transaction infrastructure I, myself, as the original co-designer, made a change about a year ago. I spent almost a day conceptualizing the current state of the code (which one of our other guys had modified) and figuring out exactly how I could do these [changes] in a safe way.</p>
<p>I am a strong enterprise Java developer with 10 years experience. I originally co-designed this module so I know how it is meant to work, yet it still took me almost a day to feel that I can safely make a change without risking breakage of a core part of the software. </p>
<p>Imagine if I were someone coming from outside who didn&#8217;t have 10 years of experience, hadn&#8217;t co-designed the module. What is the probability that I&#8217;m going to make that change in a robust way unless I spend maybe five days fully getting inside it? </p>
<p>Now, if I am an end user and I am writing software, for example for a bank, like many of our users, they don&#8217;t want to pay me for five days to figure out how the Spring framework works internally. That is irrational. There is little economic benefit for end users. There is a high probability of being economically irrational in modifying the open source software. </p>
<p>Another good example is Linux. I did a lot of C-programming early in my career. I can code in C. Am I ever going to look inside the kernel and change any of the kernel? This makes no sense, whatsoever. So, code contributions and changes are not likely. However, there are many other things I can do if I wish to give something back. </p>
<p>One thing I can do is to help other users of the software. Most open source projects have forums and mailing lists. Every time a developer answers a question for a user that developer is distracted and can&#8217;t write code to improve the product. Both things are important but no one can do both simultaneously. </p>
<p>One thing that has worked brilliantly with Spring is, especially early on, we made a big effort in the core development team to answer users’ questions and be really, really helpful. That set up a virtual circle, where users saw the Spring development team was really helpful when they were first starting up. Gradually they used the software more and became experienced. Then, they see other people asking questions and they think, &#8220;Hey I know the answer to that question. Maybe Ron doesn&#8217;t have to spend time answering that question. I&#8217;ll get in there and I’ll help the other user.&#8221; That&#8217;s a valuable way of giving back.</p>
<p>Another thing is promoting the software because open source software, like any other form of software, can only be successful if it is popular. For example, you like a particular piece of software. You wonder whether there is a user group for that software in your city. Maybe you have time to organize the user group. Maybe you can persuade your manager to provide coffee and a room if someone else is willing to organize it. </p>
<p>Another way that you can contribute is through issue tracking. If you see something that you think can be better, go and report it. An issue tracker is the enhancement request. That works very, very well with open source because that is one area where access to the code really matters. We see people who make enhancement suggestions with pretty deep knowledge of the code. We might get an enhancement suggestion saying, &#8220;By the way, if this class extended some other class it would allow the possibility to do X, Y and Z. Have you considered that?&#8221;</p>
<p>What happens is that one of our developers looks at it and says, &#8220;Oh God, I would never extend that class. Oh, but I see what he&#8217;s getting at. Oh, yeah! He&#8217;s right. It would allow X Y and Z. So, I wouldn&#8217;t do it that way but I can see that there is a lot of value in what he suggested.&#8221; The ability to look at the software is quite interesting from that point of view. It&#8217;s not necessarily so interesting in terms of modifying the software but it&#8217;s quite interesting in terms of the ability to provide suggestions with as little or as much context as you want. </p>
<p>Finally, and this is the way in which I think most financial organizations will end up giving back, go find someone who is contributing to or sustaining that software and buy a support contract. Not only is that going to sustain the software very effectively but also open source software needs the ability to have maintenance, especially as open source moves into the enterprise. What happens if a system that does trading goes down at 2 AM?</p>
<p>There&#8217;s not much point if one of your guys gets paged. He didn&#8217;t ultimately write the software that is involved in it and the fact that it is open source doesn&#8217;t really make any difference. The need for a similar level of SLA and mission-critical support is exactly the same.</p>
<p><a name="cycle">
<p><strong>Scott:</strong></a> So, that’s one of the things that I want to drill into a little—two things actually. One is support and the other is the software development lifecycle.</p>
<p>It looks like if you take a look at something like Spring, there is nothing magic about the way it is built perhaps. You probably have internal meetings. You come up with plans. You come up with specs. Engineers are assigned. Software is written. It goes to quality assurance. </p>
<p>Open source gives you much tighter coupling to the user base and the community at large. They provide better issues because they look at the source code and even recommend a certain implementation and talk about the merits of a particular implementation. They file bugs directly into the same bug database that your internal people use. So, open source gives you that tighter coupling with your users. But—and I don&#8217;t think this is unique to Spring—I am finding this a lot; it is still built the way software has always been built.</p>
<p>Good people. Good process. Good QA. You have people assigned to do documentation. You have people assigned to do QA. Even though those are not the things that people would volunteer for, you&#8217;re not dealing with a bunch of volunteers. You&#8217;re dealing with paid employees.</p>
<p>Am I accurately summing it up?</p>
<p><strong>Rod:</strong> I think you&#8217;ve got it. You raised one really interesting question there. You said that the community uses the same issue-tracker as we use. That is obviously true. We don&#8217;t have anything around the software in terms of management of bugs that isn&#8217;t publicly visible.</p>
<p>A big part of open source, to me, is free use of information. I know who wrote a piece of code, I know when it was last changed; I know what issue that person was trying to fix when they wrote that code. I can see all that information.<br />
It also means that there is a great deal of security in adopting software that was produced by small companies. For example, at Interface 21, there are slightly under 50 people. We&#8217;re growing pretty rapidly, but that&#8217;s still a pretty small software company.</p>
<p>So, let&#8217;s suppose that our product was closed sourced. We would, in each deal, be dealing with escrow agreements, that kind of thing. Frankly, other people would not think of using our software. They wouldn&#8217;t necessarily know whether the internals of our software were any good. They could see it from the outside, but they wouldn&#8217;t know, for example, what&#8217;s our philosophy of bug fixes, what is the quality of the documentation internal to the code, or what is the quality of design.</p>
<p>I do believe that there is a very strong benefit in open source. I believe that all that information is freely available. You could look at the software, and I would strongly encourage [that for] customers making significant adoption decisions.<br />
They&#8217;re probably never going to modify the code, but they should send some of their best guys to spend a day looking at the code. See what they think of it. See whether or not you think this code is maintainable, whether or not the language idioms reflect best practice. That&#8217;s a very interesting benefit. </p>
<p><strong>Scott:</strong> One of the other things you talked about was support. That comes up a lot with open source, because the way to get support isn&#8217;t always as obvious as with closed source. If you buy something from Adobe or you buy from Microsoft or you buy from Symantec, it&#8217;s obvious where you go to get support.</p>
<p>In the open source world, it seems there are two models. One is, &#8220;OK, you pay MySQL, you buy their enterprise software and you get support.&#8221; It’s the same thing with RedHat and the same thing with Spring, I&#8217;m guessing &#8211; can you purchase a support agreement from Interface21?</p>
<p>The other option seems to be that you go to someone like Open Logic, who supports everything, and you just pay them for support across a lot of products. Now, you&#8217;re probably a little biased in your answer, but what do you think about the two different ways of getting support on a product? </p>
<p><a name="aggregation">
<p><strong>Rod:</strong></a> There is nothing wrong with an aggregation model if you&#8217;re looking at, effectively, as a broker who is providing the ability to reach the bloke who wrote the software.</p>
<p>Where the aggregation model, I believe, is flawed, is in cases where essentially it&#8217;s not providing the ability to reach the people who wrote the software, and also where it is not providing the ability to pay for improvements to the software. So, what am I buying? So, let&#8217;s suppose we&#8217;ve agreed that we need to give something back. If we&#8217;re adopting free software for potentially the next 10 or 15 years, we need to give something back.</p>
<p>We care not only about how we get bugs fixed or how we get our production systems working, we also care that this software is still going to be mainstream in five or ten years or at least hasance of being mainstream because if it isn&#8217;t, we&#8217;re saddled with an expensive legacy. We also care, clearly, about the software evolving to accommodate new features that are coming forward in the industry over time. So that means: First, we need the ability to make critical fixes if necessary, to ensure that there&#8217;s no risk that our production systems are affected. </p>
<p>Second, we need to be concerned about where that investment is going to come from in terms of sustaining the product and moving it forward. So, we&#8217;re not just paying for an insurance policy today, we&#8217;re paying for the insurance company to be there tomorrow, and for the premium we&#8217;re paying to the insurance company tomorrow to be meaningful.</p>
<p>This is where some of the aggregation models, particularly what Open Logic calls it&#8217;s &#8220;Expert Community,&#8221; totally fall down. Because with the Open Logic model, not a cent of what you&#8217;re paying is going into writing software. You are not paying a cent towards writing software. That can never work in the long term. What you&#8217;re doing is paying, presumably- I haven&#8217;t looked at their price point, but I&#8217;m assuming their price point must be pretty low &#8211; a low price point for something that is not comparable with true enterprise support.</p>
<p>There are two problems with the model. One problem with the model is that it does not do anything for the health of the goose that lays the golden eggs. It says, &#8220;Well, I&#8217;m not going to feed the goose. I don&#8217;t care about feeding the goose; I&#8217;m just going to scrape up the golden eggs.&#8221; Obviously, the goose isn&#8217;t going to be there tomorrow, if that becomes the dominant approach.</p>
<p><a name="support">The second problem is you just cannot get good quality support out there.</a> Let&#8217;s suppose that I&#8217;ve got a piece of software that may have a lethal, critical problem in production. Now even though I think, for example, that the Spring Framework is a fantastic piece of software, the best pieces of software in the world have bugs in them. It&#8217;s impossible to write perfect software. It doesn&#8217;t matter whether it&#8217;s open source or closed source.</p>
<p>So, you&#8217;ve got a critical problem in production, and it&#8217;s really hard to resolve. You will see this happening with both commercial companies and closed source companies and open source companies. They all need to assign resources to work on a resolution of that problem until it&#8217;s fixed. When the developer in San Francisco clocks off work, he hands it over to the guy in Australia, who continues working on it until, probably, the guy in Romania starts work at the end of his day. And you need to be able to pay for that, and you cannot support that quality of support with essentially paying pocket money to volunteers.</p>
<p>Obviously, I have a vested interest. My company represents a different model. I hate it when people sell open source short. I hate the view that, &#8220;I only use this open source thing because it is going to be cheaper&#8221;. I feel so strongly about that because I used to be on the other side. I used to be the person making purchasing recommendations. In the financial industry companies where I worked, I would look at TCO. It made no sense to me to say, &#8220;Hey, I can save $100,000 here on a support contract.&#8221; </p>
<p>What I needed to look at was where, for example, one of the systems that I was involved in designing handles $5 trillion annually. If anything goes wrong with that system and we can&#8217;t fix it for a day, the cost to that company could be in the tens of millions of dollars. In fact, if it was down for two days in that example, the consequences to the UK economy could be quite catastrophic. So, I&#8217;m not going to be making the decision on, &#8220;Well, you know we can choose open source here and we can save $100,000 on a support contract.&#8221; I am more likely to be thinking, &#8220;OK, well if open source software seems to fit our requirements really, really well, what do I do if I have a mission critical outage? Who do I pick up the phone to call? Who can organize a team to work on this until it&#8217;s fixed?&#8221;</p>
<p><strong>Scott:</strong> One follow-up: It seems that we are talking about the extremely large enterprise accounts that are handling enormous amounts of financial transactions or things like that. They have enormous vested interest in the quality and the future of the software that they are running. It seems like smaller organizations, whether they are choosing closed source or open source, kind of get to draft off of that. </p>
<p><a name="startup"></a>
<p>Talk about the decision for the smaller organizations. For a 50-person company, how is the decision different than it is for an enormous financial exchange?</p>
<p><strong>Rod:</strong> That&#8217;s an interesting point. For the smaller companies it depends on what you&#8217;re doing. For smaller companies who are not doing something that is as mission critical, it may be that the software effectively is free to them, and they don&#8217;t have the same requirements around mission-critical support.</p>
<p>Yet frankly, from my point of view as a chief executive of an open source company, if people who don&#8217;t need that kind of mission critical support don&#8217;t buy it because, for example, their company simply can&#8217;t afford it, good luck to them. I would love to see the 50-person company grow into a 500-person company with a website that has a huge amount of traffic for which they need to buy a support contract.</p>
<p>So, I think that open source expands the market and it brings the software to a new audience of people who don&#8217;t necessarily have the need or capacity to pay. Essentially, good luck to them! No one should give open source money out of the goodness of their hearts. They need to look at what they need as an organization and who can satisfy that.<br />
So, for example, for every job where I have personally been involved, I would have been getting support contracts for the open source I was using because of the nature of those businesses. </p>
<p>However, let&#8217;s suppose I was working for a start-up, a dotcom that is trying to build up some kind of community site and is trying to get traffic. It doesn&#8217;t really matter if it goes down some of the time. The software that my company is developing is rapidly evolving. At that point I wouldn&#8217;t have a support contract. Let&#8217;s think about Twitter. Twitter is a great example here. Twitter clearly went through that. Then it became successful. Now they are encountering technology limitations, which are causing frustrating outage. Now you are getting into a different set of business needs. Now they are reaching the point where it is going to harm the growth of their business unless they improve the uptime of their infrastructure.</p>
<p><strong>Scott:</strong> So, in other words, your goal as a start-up is to grow to the point where you need a support contract. </p>
<p><strong>Rod:</strong> I have never put it in those words before but I think it&#8217;s an interesting way of thinking about it. In a way, you have a greater ability to pay the price that is appropriate to your business needs.</p>
<p><strong>Scott:</strong> Right. At some point if you are a start-up and you&#8217;re not successful, then the open source that you are using is probably not as valuable to your business as if you are a start-up and you become very successful and you grow. You become an ongoing concern. Well, now your infrastructure has value because your business has value and you need to treat it as such.</p>
<p><strong>Rod:</strong> Yeah. I mean what I would suggest is that in the early days people should look at purchasing things like consulting and training around open source.</p>
<p><strong>Scott:</strong> Right.</p>
<p><strong>Rod:</strong> I think that makes a whole lot of sense because it is simply going to reduce their total costs by making their developers more efficient.</p>
<p><strong>Scott:</strong> Right.</p>
<p><strong>Rod:</strong> So, the needs profile of the end-user is significantly different.</p>
<p><strong>Scott:</strong> Well, I really appreciate you taking the time to chat. </p>
<p><strong>Rod:</strong> No, I think that was an interesting discussion. Thank you for following up. </p>
<p><strong>Scott:</strong> Thanks very much.</p>
<p><strong>Rod:</strong> Thank you, Scott.</p>
<img src="http://howsoftwareisbuilt.com/?ak_action=api_record_view&id=93&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%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F09%2F10%2Finterview-with-rod-johnson-ceo-interface21%2F&amp;title=Interview+with+Rod+Johnson+%26%238211%3B+CEO+%26%238211%3B+Interface21" 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%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F09%2F10%2Finterview-with-rod-johnson-ceo-interface21%2F&amp;title=Interview+with+Rod+Johnson+%26%238211%3B+CEO+%26%238211%3B+Interface21" 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%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F09%2F10%2Finterview-with-rod-johnson-ceo-interface21%2F" 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%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F09%2F10%2Finterview-with-rod-johnson-ceo-interface21%2F&amp;title=Interview+with+Rod+Johnson+%26%238211%3B+CEO+%26%238211%3B+Interface21" 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?url=http%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F09%2F10%2Finterview-with-rod-johnson-ceo-interface21%2F&amp;title=Interview+with+Rod+Johnson+%26%238211%3B+CEO+%26%238211%3B+Interface21" 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%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F09%2F10%2Finterview-with-rod-johnson-ceo-interface21%2F" 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+Rod+Johnson+%26%238211%3B+CEO+%26%238211%3B+Interface21+@+http%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F09%2F10%2Finterview-with-rod-johnson-ceo-interface21%2F" 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/09/10/interview-with-rod-johnson-ceo-interface21/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
	</channel>
</rss>

