<?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; codeplex</title>
	<atom:link href="http://howsoftwareisbuilt.com/tag/codeplex/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.1</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 Brad Wilson &#8211; Software Developer &#8211; OfficeLabs &#8211; Microsoft</title>
		<link>http://howsoftwareisbuilt.com/2008/04/08/interview-with-brad-wilson-software-developer-officelabs-microsoft/</link>
		<comments>http://howsoftwareisbuilt.com/2008/04/08/interview-with-brad-wilson-software-developer-officelabs-microsoft/#comments</comments>
		<pubDate>Tue, 08 Apr 2008 20:04:22 +0000</pubDate>
		<dc:creator>campsean</dc:creator>
				<category><![CDATA[Sean Campbell]]></category>
		<category><![CDATA[codeplex]]></category>
		<category><![CDATA[governance]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[OfficeLabs]]></category>

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

		<guid isPermaLink="false">http://howsoftwareisbuilt.com/2008/02/20/interview-with-scott-densmore-microsofts-codeplex-and-patterns-practices/</guid>
		<description><![CDATA[In this interview, we talk to Scott Densmore about Microsoft&#8217;s CodePlex and the Patterns &#038; Practice&#8217;s work on the Enterprise Library Version 4: Forking the Enterprise Library How Microsoft product teams are using the CodePlex repository for open-source code. How CodePlex is different from SourceForge Favorite CodePlex projects How CodePlex itself is community driven Scott [...]]]></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%3A%2F%2Fhowsoftwareisbuilt.com%2F2008%2F02%2F20%2Finterview-with-scott-densmore-microsofts-codeplex-and-patterns-practices%2F&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%3A%2F%2Fhowsoftwareisbuilt.com%2F2008%2F02%2F20%2Finterview-with-scott-densmore-microsofts-codeplex-and-patterns-practices%2F&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%3A%2F%2Fhowsoftwareisbuilt.com%2F2008%2F02%2F20%2Finterview-with-scott-densmore-microsofts-codeplex-and-patterns-practices%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%2F2008%2F02%2F20%2Finterview-with-scott-densmore-microsofts-codeplex-and-patterns-practices%2F&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?url=http%3A%2F%2Fhowsoftwareisbuilt.com%2F2008%2F02%2F20%2Finterview-with-scott-densmore-microsofts-codeplex-and-patterns-practices%2F&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%3A%2F%2Fhowsoftwareisbuilt.com%2F2008%2F02%2F20%2Finterview-with-scott-densmore-microsofts-codeplex-and-patterns-practices%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+Scott+Densmore+%26%238211%3B+Microsoft%26%238217%3Bs+CodePlex+and+Patterns+%26%23038%3B+Practices+@+http%3A%2F%2Fhowsoftwareisbuilt.com%2F2008%2F02%2F20%2Finterview-with-scott-densmore-microsofts-codeplex-and-patterns-practices%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/2008/02/20/interview-with-scott-densmore-microsofts-codeplex-and-patterns-practices/feed/</wfw:commentRss>
		<slash:comments>1</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>OSI Approves Microsoft Licenses</title>
		<link>http://howsoftwareisbuilt.com/2007/10/17/osi-approves-microsoft-licenses/</link>
		<comments>http://howsoftwareisbuilt.com/2007/10/17/osi-approves-microsoft-licenses/#comments</comments>
		<pubDate>Wed, 17 Oct 2007 19:44:45 +0000</pubDate>
		<dc:creator>scottswigart</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[codeplex]]></category>
		<category><![CDATA[licensing]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[OSI]]></category>

		<guid isPermaLink="false">http://howsoftwareisbuilt.com/2007/10/17/osi-approves-microsoft-licenses/</guid>
		<description><![CDATA[The OSI has approved the two Microsoft software licenses, the Microsoft Reciprocal License, and the Microsoft Public License.&#160; This makes all the code on Microsoft&#8217;s CodePlex site (Microsoft&#8217;s equivalent of SourceForge) official open-source software, as much of it is licensed under the Microsoft Public License (formerly the Microsoft Permissive License).&#160; It also means that things [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://blog.russnelson.com/opensource/microsoft-licenses.html">OSI has approved</a> the two Microsoft software licenses, the <a href="http://opensource.org/licenses/ms-rl.html">Microsoft Reciprocal License</a>, and the <a href="http://opensource.org/licenses/ms-pl.html">Microsoft Public License</a>.&nbsp; This makes all the code on Microsoft&#8217;s CodePlex site (Microsoft&#8217;s equivalent of SourceForge) official open-source software, as much of it is licensed under the Microsoft Public License (formerly the Microsoft Permissive License).&nbsp; It also means that things like Microsoft&#8217;s Ajax Control Toolkit is open-source (with the inherent ability to fork, etc.)</p>
<img src="http://howsoftwareisbuilt.com/?ak_action=api_record_view&id=109&type=feed" alt="" /><!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a><strong><em>Bookmark this:</em></strong></a>
<br />
<div class="d">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F10%2F17%2Fosi-approves-microsoft-licenses%2F&amp;title=OSI+Approves+Microsoft+Licenses" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F10%2F17%2Fosi-approves-microsoft-licenses%2F&amp;title=OSI+Approves+Microsoft+Licenses" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F10%2F17%2Fosi-approves-microsoft-licenses%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%2F17%2Fosi-approves-microsoft-licenses%2F&amp;title=OSI+Approves+Microsoft+Licenses" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F10%2F17%2Fosi-approves-microsoft-licenses%2F&amp;title=OSI+Approves+Microsoft+Licenses" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://howsoftwareisbuilt.com/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.sphere.com/sphereit/http%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F10%2F17%2Fosi-approves-microsoft-licenses%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+OSI+Approves+Microsoft+Licenses+@+http%3A%2F%2Fhowsoftwareisbuilt.com%2F2007%2F10%2F17%2Fosi-approves-microsoft-licenses%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/17/osi-approves-microsoft-licenses/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

