An Open Letter to Scott Guthrie

March 22nd, 2007

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

David Starr Uncategorized ,

  1. March 22nd, 2007 at 21:37 | #1

    Sweet article! And just for the record, I don’t want your old job.

  2. March 22nd, 2007 at 22:49 | #2

    [beautifully put! Don't everyone hold their breaths waiting for the response, if any. I seriously doubt there will be any form of an acknowledgment.]

  3. March 23rd, 2007 at 01:02 | #3

    I am signing the letter here :)

  4. March 23rd, 2007 at 03:29 | #4

    Nice Letter, now is time to kick it, digg it, etc =)

    Thanks for writting it, we are fighting for a lot of time against this idiot practices from M$, the last big battle was the Ribbon Licensing, the .NET 3.0 name and so other ones,

    In the .NET Open Source World, everybody say that in Java there is an ecosystem, every tool and library (commercial or not) is proud to use open source libraries or code, but M$ dont said anything about NDoc, NUnit, NAnt, only old articles of the MSDN Magazine (I remember an excellent article of Ayende about this)

    Anyway we need to keep fighting

    Cheers
    Marcos
    Open Source Developer

  5. Kirill
    March 23rd, 2007 at 06:53 | #5

    Well, looks like it always was a “Microsoft Way”: just wait for a good idea and (re)implement it, and make it a standard. So I don’t think that a letter from an open-source community will change anything. Btw, nice try :)

  6. March 23rd, 2007 at 12:30 | #6

    @ Kirill

    I disagree with you regarding Microsoft way of reimplementing good ideas and even if you right don’t you think that continue to succsess in harder than succsess.. so MS doing the hard part..

    making an idea continue to succssed.

  7. March 23rd, 2007 at 22:09 | #7

    I agree with your high-level principal – which is if a framework or tool already exists today, you shouldn’t build something new that provides no additional value (or worse something less). I think this is true for OSS projects, commercial projects, as well as things already within the .NET Framework.

    I don’t think it is fair to say that Microsoft does not encourage OSS projects on .NET, although I agree that we need to do more from an evangelism support perspective (we have actually been working with a few .NET OSS leaders over the last few months on ways to improve this). In the web space, we do promote many OSS projects on the http://www.asp.net site today. A few examples: the main download page hosts the DotNetNuke and the Commerce Starter Kit OSS projects, the site hosts podcasts about SubSonic, hosts the forums for Rainbow, etc. As people who attend my talks know, I also frequently point people at various projects – in particular NUnit/MBUnit, DNN, SubSonic, NHibernate and MonoRail. I think these projects offer a tremendous amount of value, and are frameworks .NET developers should seriously look at when writing applications.

    Enabling developers to have options and flexibility is always goodness, and the design of .NET is focused on delivering the extensibility to enable this customization – and *not* box you into an “all or nothing” approach. I actually think we do a very good technical job with this today.

    A few examples: If you don’t like LINQ to SQL/Entities, you can build LINQ to NHibernate extensions and get all the goodness of the LINQ language/compiler/intellisense work using NHibernate (note: Ayende published an early version of this already on his blog). If you don’t like the WebForms postback model, you can write your own ASP.NET IHttpHandler and re-use all of the non-UI ASP.NET features and plug in your own controller/templating system (like what MonoRail has done). If you don’t like the default ASP.NET Membership/Role management providers in the box you can easily plug in your own; if you want to bypass the Membership/Role API you can skip them entirely, while still taking advantage of the ASP.NET FormsAuthentication and IPrincipal security context features.

    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 (both OSS and Commercial ones).

    When it comes to adding new functionality into the .NET framework, we usually try to be deliberate about why we are adding it, and look at a couple of different aspects:

    1) Is it a feature that only we can enable (meaning it can’t be easily built outside of the core .NET Framework library)? Some examples: Generics, modifying HttpContext to be easily mockable, adding page compiler parser support for a specific feature (master pages, localization, etc), integrating encryption into the configuration system, etc.

    2) Is it a fundamental feature that – when implemented in an extensible way – helps integrate a wide range of scenarios, and/or enables a broad ecosystem of partner opportunities? Some common examples: Control/component frameworks that enable reusable libraries to be built; provider models for authentication/authorization/state management; LINQ query extensibility support that can be used to integrate data providers; etc.

    3) Is it a feature that a lot of .NET customers are asking for, and/or is it something that we think a broad range of developers will want to use? 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.)

    With regard to adding MVC support directly into the framework – that is something that we are investigating. A lot of people have asked to have a MVC model directly supported by the framework and tools, and there are some rich extensibility/ecosystem opportunities that could be enabled by having it supported directly in the framework.

    We haven’t talked publically about any plans we have for a MVC model yet because we are still investigating it, and we are still looking for feedback that: a) we are heading in the right direction with any approach we take, and that b) we would be providing unique value.

    We showed one prototype to a handful of MVPs at the MVP summit last week who all had a deep patterns and TDD background, and the feedback was very supportive of the direction we were going with it. We won’t be talking about it publically, though, until we are further along and confident that it adds a lot of additional value that people want.

    Hope this helps,

    Scott

    P.S. Just to clarify the original post above – neither MSUnit nor Sandcastle are part of the .NET Framework. They are built by Microsoft, but are not part of the .NET Framework.

  8. March 23rd, 2007 at 22:46 | #8

    If you said that Microsoft if glad with open source (and you must be because the port of NUnit, NAnt, NHibernate, help a lot to incentivate Java developers to give .NET a real try at first) maybe you can answer some of this questions:

    1) Why MS dont said nothing about Mono (not in the MSDN Magazine, not in news, NOTHING!! ) you were to first to talk about PORTABILITY !! ??

    2) Why you dont let Mono to be part of the Mix or some of these events 1 or 2 years ago ???

    3) I read on the Ayende blog that the MS sopport dont give answer if the client use things that dont are in the MS Stack ?? like with NHibernate ??

    4) Why the MSDN magazine and other news resources dont talk about NUnit or NDoc for 3 years now ???

    5) Why you dont give financial support to the NDoc developer knowing that that tool IS INVALUABLE for all in the .NET WORLD !! ??

    6) Why you dont give the NDoc developer a license to use Visual Studio for free and some MVP need to give it a MVP invitation ???

    y have so so many others question, let me know if you want to hear more =) I feel day by day how the community dont have new OSS projects, the grat old ones (Log4Net, NAnt, etc) are a bit dismotivated or without time, so dont tell us that M$ is taking the OSS seriusly, or is doing it bad…

    Just my 2 cents to the discussion

    I love .NET, I was a Microsoft FAN, but from 1.5 years to now, I lose a lot of my love for it =(

    Marcos Meli
    Open Source Developer
    http://www.filehelpers.com

  9. March 23rd, 2007 at 23:16 | #9

    Hi Marcos,

    To answer a few of your questions:

    1&2) Mono actually had a booth/precense (I think even BOF talk) at the last two TechEd’s I believe. Miguel sent me email asking for help with it, and I worked to make that happen. I haven’t heard about their plans for MIX this year (but they are ceretainly welcome).

    Note that people who want to give talks at conferences like TechEd and MIX should make sure to send us mail. Rob Conery (who runs the OSS SubSonic project) sent me mail asking to be on a panel at MIX, and we were able to help get him on it pretty easily.

    3) Microsoft product support will absolutely provide technical support for a .NET application that is built using an OSS library. What they can’t provide direct support for are questions related to how to use a particular library (for example: what is the best way to run a query xyz using NHibernate).

    This isn’t an OSS vs. Commercial point – but rather that it would be hard/impossible to train all product support engineers to understand how to use all popular projects/products.

    If a customer application has a bug within the source code of a OSS or commercial library, and the customer has the source code to that library with symbols available, the product support engineer can also help debug and find the error (specifically: they can find the error flashpoint – not necessarily the root error if it is a logic issue with code they don’t know). If an error is caused within a .NET framework library then Microsoft can and will provide patches to fix it.

    Microsoft Consulting Services (MCS) also support projects that use NHibernate, NUnit/MBUnit, and other OSS .NET projects.

    4) I don’t read the MSDN Magazine too closely, but did a quick search online and found references and samples to NUnit in the 2006 articles within MSDN Magazine – so I think they are there.

    Note that projects like the Microsoft Web Client Factory also ship unit testing samples in both NUnit and MSUnit format.

    5&6) Providing finnancial support to .NET OSS projects is something we have looked at doing. As I mentioned in my first reply above, we have been brainstorming on ways to better support OSS incubations and projects – and that is one approach we have talked about.

    The challange with direct money support is that it can open a lot of sticky questions (is the project then independent or not?, who gets to decide how much people get?, is there a review process each year for whose grants get renewed?, and how would the decision process work and who makes the call whether a project is supported?).

    We are investigating a way to help formalize a process where OSS projects can get free software and hosting services (and get a continuous integration build server). The proposal is that we’d then have an independent board of OSS project leads who would work to nominate and decide who would be eligible. Someone on my team is coordinating this proposal, and my hope is that we can role something out later this year.

    Hope this helps,

    Scott

  10. March 24th, 2007 at 02:35 | #10

    These are really good news so =)

    Thanks a lot for explain me about all these topics.

    I´m from Argentina so I dont know too much and I´m glad that Mono now become part of your conferences.

    I hope that all your efforts about make the OSS comunity to be and Ecosystem go for the right path.

    We really love this kind of contact in what you can explain easily each point, some times the image is MS make a lot of people like me, to hate a lot of things, you must know that a lot of people dont like the .NET 2.0 name (and the problems are begin to arise with hard confusions with C# 3 and .NET 3.0) and a lot of others.

    So the comunity feels that MS simply dont care about us, and so we begin to feel that Microsoft win a big battle in the .NET vs Java battle and not thanks to the marketing team that propose idiot names for the framework (or the framework addons like WinFX) either thanks to all the developers that port open source libraries and tools to .NET and dont get an official recognition.

    Just me view.
    Thanks again to take time to talk with us, is relly Apreciate
    (Sorry for my bad english)

    Marcos

Comment pages
1 2 3 4
Comments are closed.