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

  • Pingback: Jon Galloway

  • http://www.gigfodder.com Billie

    Excellent letter! Having used monorail I must say it is a great clean elegant design. If microsoft does it right it would truly rock.

  • Pingback: Microsoft and Open Source » public MattBerther : ISerializable » Blog Archive

  • pete

    The current situation is really depressing. Webforms, whilst not as evil as some suggest, make my job as a web developer more difficult. Don’t get me wrong, i’m not a bad developer, I understand viewstate and the page lifecycle etc but anything beyond a simple CRUD page is more difficult than it should be. Throw in standards compliance / accessibility / dynamic control generation into the mix and you have all the ingrediants for a slow / miserable afternoon. The current WebControls approach (which is the mother of all leaky abstractions) isn’t working but rather than accept this, the Asp.Net team continues to provide fixes that just confuse the matter further i.e Themes. Microsoft should be focusing on sorting this mess out and giving us back simple access to the technologies we’ve spent years learning (css, javscript etc) but instead they allocate developer to projects like IronPython, IronRuby etc which do little to alleviate the current situation.

    But what I find really annoying – in fact I’m quite angry about it – is the way when Scott Guthrie comes along and says, “by the way, we will be introducing this new technology in the future (but we won’t say when), it will work differently (but we won’t say how) and it will address the short comings of asp.net development (but we won’t say which ones”. And the reason it makes me angry, is because you suddenly worry that project your relying on (In this case monorail) which you started to use because MS has done such a depressingly bad job, will become abandoned.

    So here is my Open Letter to Scott Guthrie.

    “Please accept that web-standards exist. That we like them, and like using them. And fit Asp.Net around the way we work and not the way you want us to. Web controls are great but I’m not willing to sacrifice or compromise my html / javascript / css in order to have them. Adobe have just released Coldfusion 8 and its good. Really good. You have been warned”.

    Pete

  • Pingback: MSBuild vs. NAnt » public MattBerther : ISerializable » Blog Archive

  • Pingback: Cialis best price buy online.

  • Pingback: Elegant Code » System.Web.MVC

  • Van

    I think microsoft has its own way to go about things that help them grow, they will always take good things from other OSS software., but then thats life…….

    everybody trie to learn good things and make them their own…

  • http://ajaxwidgets.com Thomas Hansen

    The only way to ensure MSFT won’t steal your baby is to make sure you’re going down a path they cannot possible follow you. Like for instance have 100% Mono support, branches to make it run through GrassHopper or create some piece of SW library that if successful would kill large parts of their revenue…
    (Like we’ve done ;)
    Let’s take an example:
    I know Charlie Poole and I have encouraged him to get nUnit ported 100% to Mono simply because MSFT would never be able to “outperform” that feature. Another great feature for nUnit would be to integrate even better than what it does today with other tools like for instance Boo, nAnt etc…
    A tool is never better than the sum of tools it is compatible with…
    If for instance Cruise Control, nAnt, nUnit and nCover would be 100% compatible with Mono with a common IDE which could be installed from the same exe file on both Linux (through Mono) and Windows MSFT would never be preferred and they would not be able to follow…
    Another point to outperform MSFT so that they’ll never follow you is to focus on standards. An example would be if all the ORM library vendors for .Net would agree on a common standard for marking classes as serializable so that users could easily change between one ORM library vendor to another which effectively would foster competition and make MSFT stand alone in their proprietary version of serializable support etc. Imagine a common standardized version of HQL or .hbm format files, THAT would be awesome ;)
    Look at their Ajax library for instance, MSFT have never been able to compete in an open and standardized world. Even Michael Schwarz and Jason Diamond being *ALONE* outperformed those guys by a gazillion. Why; because MSFT don’t know how to compete when something is open and standardized. Not to mention if Ajax prevails they loose about 66% of their revenue. If MonoRails would standardize and maybe collaborate with other SW library vendors to create something 100% compatible with Mono and with a common interoperability way to describe stuff they would prevail. Period. Imagine how super cool it would be to have MonoRail run on J2EE through GrassHopper! Or maybe their Java counterpart having the exact same class hierarchy and API! Or simply creating an MVC implementation that would be compatible with *WebControls*…?
    (And thereby having a “gazillion” WebControl vendors building value on top of their own product)
    Until they *do* they don’t really stand a chance of becoming something better then MSFT’s “research department”…
    (And I am not really sure if they deserve it either)
    Now returning to implement my GrassHopper and IKVN port of Gaia ;)
    (We’ve got Mono already :D

  • http://ajaxwidgets.com Thomas Hansen

    Oh yeah, I almost forgot…
    “And our HTML5 video tag wrapper Ajax Widget and our HTML5 canvas tag wrapper Ajax Widget”…
    Good luck MSFT, you’ll need it! :D