<?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; patterns and practices</title>
	<atom:link href="http://howsoftwareisbuilt.com/tag/patterns-and-practices/feed/" rel="self" type="application/rss+xml" />
	<link>http://howsoftwareisbuilt.com</link>
	<description></description>
	<lastBuildDate>Fri, 25 Jun 2010 19:53:36 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<!-- podcast_generator="podPress/8.8" - maintenance_release="8.8.4" -->
		<copyright>2006-2007 </copyright>
		<managingEditor>scottswigart@technologyevangelism.com (How Software is Built)</managingEditor>
		<webMaster>scottswigart@technologyevangelism.com (How Software is Built)</webMaster>
		<category>posts</category>
		<ttl>1440</ttl>
		<itunes:keywords></itunes:keywords>
		<itunes:subtitle></itunes:subtitle>
		<itunes:summary></itunes:summary>
		<itunes:author>How Software is Built</itunes:author>
		<itunes:category text="Society &amp; Culture"/>
		<itunes:owner>
			<itunes:name>How Software is Built</itunes:name>
			<itunes:email>scottswigart@technologyevangelism.com</itunes:email>
		</itunes:owner>
		<itunes:block>No</itunes:block>
		<itunes:explicit>no</itunes:explicit>
		<itunes:image href="http://howsoftwareisbuilt.com/wp-content/plugins/podpress/images/powered_by_podpress_large.jpg" />
		<image>
			<url>http://howsoftwareisbuilt.com/wp-content/plugins/podpress/images/powered_by_podpress.jpg</url>
			<title>How Software is Built</title>
			<link>http://howsoftwareisbuilt.com</link>
			<width>144</width>
			<height>144</height>
		</image>
		<item>
		<title>Interview with Scott Densmore &#8211; Microsoft&#8217;s CodePlex and Patterns &amp; Practices</title>
		<link>http://howsoftwareisbuilt.com/2008/02/20/interview-with-scott-densmore-microsofts-codeplex-and-patterns-practices/</link>
		<comments>http://howsoftwareisbuilt.com/2008/02/20/interview-with-scott-densmore-microsofts-codeplex-and-patterns-practices/#comments</comments>
		<pubDate>Wed, 20 Feb 2008 22:56:33 +0000</pubDate>
		<dc:creator>scottswigart</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[codeplex]]></category>
		<category><![CDATA[enterprise library]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[patterns and practices]]></category>
		<category><![CDATA[scott densmore]]></category>

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

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


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