An Open Letter to Scott Guthrie
Mr. Guthrie and Whom It May Concern,
Thank you for your team’s contributions to the software development industry. ASP.Net, the CLR, and your other significant additions to the .Net platform have genuinely advanced the state of software development. Although it may seem that you are damned if you do and damned if you don’t, most of us developers out here do appreciate your work. 
Speaking and working with developers who live daily with your tools, I find confusion and concern over your relationship to the open source community that has grown up around the .Net platform. While Sun, IBM, other platform providers, and ISVs clearly see the open source community as a complimentary codebase to their products, Microsoft tends to use the best and brightest work from the community space as a feature map for .Net.
This is perfectly reasonable considering the your challenge to create the ubiquitous development platform for Windows based application development. It seems that the .Net open source community is a metering rod of what we (in the trenches developers) care about and also serves as a free R&D lab for Microsoft. This is a nice, symbiotic relationship resulting in fewer necessary acquisitions for Microsoft and more heterogeneous tools baked in to .Net.
We can all live happily with that. On one condition.
When rolling something from the community into the .Net platform or tools, please add value above that of the original community solution. It is not enough to simply bake it in and consider that the value proposition. We all know how to include assemblies in our projects, thank you very much. Merely including something in the CLR so that we don’t have to link in an outside assembly is a poor excuse for success. You owe something more to the people who built the original solution. Make it better. Make it rock.
Take, for example, MSUnit. Boo. Hiss. That was a big miss. Can’t they be easier to run in the UI? Where are all of the baked in Asserts from NUnit?
Or take MSBuild. No please, take it. No out of the box task to Zip files? C’mon.
And SandCastle? We’ll just leave that alone for now.
So you can understand our concern when we hear rumor of your new toy, a MVC model for ASP.Net that uses an HttpHandler to invoke controllers. Awesome. Perfect! Yes! About time! Bring it! AND… Please do Monorail justice and don’t kill it without doing something as good or better.
If you cant improve upon the functionality of MonoRail, just point to it as a good practice until you can. This one is far too important for anything less than a home run.
Waiting with trepidation and wide-eyed optimism,
.Net Developers of the World
Uncategorized






I cannot thank the people on this thread enough. The passionate debate is always healthy as long as we maintain positive mutual regard. For Mr. Guthrie to respond as thoughtfully and sincerely as he has is certainly a credit to him.
To be clear, the intent of my original post was:
1. Promote the idea that a baked in MVC model for ASP.Net is a very important feature that will be undoubtedly have a major impact on the way most .Net web applications will be built in the future. Let’s all pay close attention and ensure that the MVC framework 90% of enterprise developers in the world will end up using will be worthy of the task.
2. Ask that the development team working on this issue be sensitive to the passionate views held on this particular feature. Because of the wide range of competing solutions, this particular implementation will be easy to take pot shots at. Don’t just give away the ammunition.
Mr. Guthrie,
I appreciate your answers and would like to point out the most salient point of your reply:
“Is it something where we can add unique value to the scenario above and beyond what has been done before (for example: can we enable end to end framework/tools integration? Can we integrate it into the rest of the framework to make it easier and more broadly approachable, etc.)”
This is exactly what I was asking for, so… asked and answered
. I can’t wait to see the tool deliver on exactly this. One particular request: let’s have views that are TRULY workable by non-programmer User Experience type people without Visual Studio. How about view definitions that can be created in (dare I say it) Front Page or something similar?
And by the way, the C# syntactic sugar and Extension Methods? Pure sweetness.
hi,
interesting discussion.
Btw, what really did happen to NDoc? I read somewhere (might have been on the owners blog/site) that he (the owner) got fed up of a lack of support from the community (not MS) and that he was recieving unpleasant emails from someone and so he finally got disillusioned and gave up. If thats so, then we cant fault MS for bringing out Sandcastle can we?
Im still largely stuck in the .net 1.1 world for various reasons, so i use NDoc all the time and i think its a pity no one participated to make it usable for .net 2.0 (wish i was a coding guru, then i could have joined the project) . I havent used Sandcastle, so im not sure why D.Starr made that particular comment here (is it a bad tool?)
I’ve also just started playing around with MSBuild and w.r to the comment on zipping not being available out of the box, may i just ask, “so what?” . Theres a big MSBuild community (with tasks on Tigris and on GDN) and we can always get stuff from there. Just because MSBuild doesnt include it doesnt mean it aint a good tool (or does it?)
cheers
benjy
I have worked both J2EE and Microsoft products for years. I feel that the original authors letter to Microsoft is a little unfair. To me, it seems that the members of the .NET development teams are focused on doing the right things for developers. I think Microsoft is giving a lot more back to the community now than they ever have. ASP.NET AJAX, Enterprise Library, and the Web Client Software Factory are all open projects by Microsoft that I have taken advantage of in the past few projects I have done.
Does Microsoft open up all their software to open source? No. Would IBM do so if the owned Java? I doubt it. Does Microsoft take good ideas from the community and incorporate them into commercial software? Yes.
To be fair, I think the author should recognize some of the positive contributions Microsoft has made. I don’t think there is as great of an open source community around .NET, but I am not sure that it is entirely Microsoft fault. As a developer who benefits from these contributions every day, I would think my points out a little more before writing such a critical letter. Just my two cents.
Eric
As an avid user of a good number of the tools listed here (NUnit, NDoc, NHibernate, etc.) I have to say two things:
1) I am sympathetic to the concern that MS has a history of using the OSS .NET community as a ‘free’ R+D department and then pilfering ideas from this community to ‘add value’ to the next VS or Fx release
2) I also have to acknowledge that there are plenty of MS clients (usually the really big ones that MS likes to cater to directly) for whom OSS is just simply not an option. Its sad that these people have policies that prevent them from leveraging quite good work by the OSS community, but corporate policies dictate no OSS in the solution stack. For MS to meet the needs of these significant paying customers that have committed to MS-technology at every level of the application development stack, MS has no choice but to add these kinds of things into their commercial offerings.
I’m every bit as afraid as others that LINQ to SQL will start to suck the lifeblood out of NHibernate, that SandCastle helped kill NDoc (tho as the earlier poster points out, that was kind of killed by unprofessional harrassment of the primary developer by unkind comments from the the community itself unsatisifed with the pace of the releases), and that TeamFoundationServer will eventually stagnate NUnit developement.
These are all tools that I use regularly and will miss them if they go to be replaced by MS-integrated technologies that are (typically) pale imitators of the already-well-established and robust-featured OSS equivalents. But let’s not forget that MS needs to have an MS-based answer to those customers who have committed to everything-Microsoft-only style applications and I really start to think that this is what is driving a lot of what we are seeing in re: MS relation to the .NET OSS community’s efforts.
Just my $0.02
-Steve B.
http://unhandledexceptions.spaces.live.com
It’s a fair try, but I feel you (means we) are getting burn playing with matches. Net is a wonderful platform, but it lacks a trustworthy sponsor.
Could we obtain reliable alternatives to this “single source” problem ?. I hope so …
I totally support Daddy Starr. Also I see this is a sign that we ms developers need to speak up more to tell ms what we cared for the .net/c# world, rather than tired keep up with what ms feeding to us.
MS sucks. It forces you to use bad products, disregards developers http://developers.slashdot.org/article.pl?sid=07/01/09/0216251), fails to give proper credit to anyone, pissess off its partners (consider recent symantec), rarely comes with new concepts (basically it is a leech that feeds on others ideas – very very bad – and in fact it spins rivalry [http://www.gnu.org/press/2002-04-11-ms-patent.html] with those who brought the idea in the first place)
THere are some good things to tell, but the bad things outweigh them all (by huge numbers)
First I think I should give some +ve credit to Scott’s reply.
But, I have to say, as an independent developer, I have seen too often MS crushed OSS stuff by their hands. And MS is not unified on the direction on this one, I am dare enough to say there are people in MS who always wants to go back to the time where MS is the sole solution provider (and thus, crush every OSS). And I would not agree anyone saying its independent incident. Perhaps Scott should talk a lot more with legal, business development and marketing to get what those non-tech people thinking in MS, its afterall not a developer-only business.
Talk about support model- if, say, MonoRail is in ASL, why not get stuff from MonoRail, enhance and incorporate it into Visual Studio, provide the fancy support which MS does very well, and give commercial support for them? I am sure even if you picked MbUnit for such purpose NUnit people would not be too upset about it- so as a lot of developers. Of coz if by evaluation it is meaningful to support both, maybe it make sense. The TeamFoundationServer moves are just not deniable an infringement to NUnit’s wisdom- the move is too obvious and I don’t see valid excuse on creating something directly from NUnit (the API is at least 90% same except the namespace) and mark it as a product. How can you persuade us you are embracing such development when you actually DID that business move? Talk about it in MSDN or not is not a point at all comparing to this important business decision. If MS could spend their effort on incorporating a smooth integration of OSS product to Visual Studio, I think thats when we will feel the warmth in MS for OSS.
And there is no point to develop an MS-only solution too- coz if MS say: From now on I will distribute MonoRail with Visual Studio with all IDE support- that already makes MonoRail = an MS way, no more argue from your customers. Thats called support. Not to give a booth for Mono or to write a short article on port25, it justs sound too meaningless when we continue to see the elephant steps on other small creatures in the forest.
This is quite possibly one of most interesting conversations I’ve seen regarding .net and oss – and the fact that Scott has posted a reasonable reply makes it outstanding.
As a developer who has worked both the complete ‘Microsoft’ way and also has done work with OSS: The most difficult part is explaining to a customer or a boss the rationale of not using a ‘Microsoft’ approach.
ie. I’ve decided to use NHibernate with NUnit tests. I would want to show a concerned customer that ‘this is good technology’., etc…
I do think that NHibernate, NUnit etc… are fantastic tools that if Microsoft would support rather and attempt to ‘outdo’ – ie. if we can have NHibernate with LINQ as Ayende has showed, why the effort of the LINQ over SQL? Is Microsoft not allowed to create a GUI generator that uses NHibernate? And if they do, where does put other ORM projects? ie. NPersist, Codus, WilsonOR, etc…ances is great, but I don’t understand the MSUnit or the LINQ over SQL ‘ORM’ that is being created. Why go into that space?
so, when this is said:
“These layered extensibility points within .NET didn’t occur by accident – but were rather conscious technical decisions made by us to enable rich flexibility and customization by frameworks, products, and projects created outside of Microsoft ”
I say, sure – for LINQ, WCF, WWF – ok, that is good, agreed. But MSUnit and Linq over SQL don’t seem to fit that same mold. There are created that match almost exactly what NUnit has, sold in a new package, etc… The entire Team System setup seems filled with these products. ie. why not subversion? CruiseControl.NET ?
So, if extending .NET for better ability to test it is a goal, that is good goal. To come out with a product that directly competes with OSS is an entirely different issue.
I’ve seen MS do some good things like making Atlas open, etc… and I’ve seen some negative things – like MSUnit. I’m concerned as well about EDM and the Linq over SQL. Making language enhances such as LINQ is good stuff, extending it over into their own ORM seems off.
Goodwill, I’m not sure I agree with your idea though, if I understand it right. Is the goal of Monorail to be ‘incorporated’ into VS. And if so, what is saying to other open source MVP projects? Is that excluding them? If it’s open source, isn’t that saying it doesn’t want to be ’sold’ into VS? It’s no longer OSS right?
I’m opposite: I don’t want MS to incorporate OSS into their products!!!! I just think they should be mindful of what areas they start moving their commercial products into. ie. if they release EDM – are they competing with all the commercial .NET ORM tools? Additionally, as long as they make their changes like LINQ where it can be extended, then to me, that is being mindful.
“The TeamFoundationServer moves are just not deniable an infringement to NUnit’s wisdom- the move is too obvious and I don’t see valid excuse on creating something directly from NUnit (the API is at least 90% same except the namespace) ”
This is where I do totally agree upon.
“From now on I will distribute MonoRail with Visual Studio with all IDE support- that already makes MonoRail = an MS way, no more argue from your customers. ”
Again, not sure if I like that approach. Now, if the developers of Monorail say ‘hey Microsoft, we’d like to build a business relationship and no longer make Monorail OSS because we want to integrate with your product line”, then sure, that ’s up to them.
Sorry for the long reply – there is so much that can be said on this
Steve,
I think I understand your concerns. What I am saying is that is one of the possibility. Another possibility is to make VS more like Eclipse- to make a free version of product allow extensibility from 3rd party, while MS keep their customized version. Currently Express line of product are close to non-expendable- that makes Eclipse a much better IDE for OSS comparing to VS.
However, I think we still could discuss the feasibility to have MS gives out of box support to a few defacto OSS stuff. Think of MS as an ISV now, if I am selling an IDE, then maybe today one of the most important feature is TDD. MS decided to develop TFS (and infringe what others did), but we can’t disallow MS to provide a better solution as a commercial product. So, maybe the better approach for MS is to incorporate the APIs into their product instead of stealing them. I wonder if in Java have more than one testing framework (like .net have NUnit and MbUnit), but still you have to make a choice in some case when you are releasing a product. And picking ANY OSS product is way much better than stealing them.
Or, maybe MS should offers more open documentations and make VS more customizable for various framework incorporation. Thats what I would think.