March 24, 2008

What is wrong with the ASP.NET Community?

Since Good Friday was a Telligent holiday Leon (Fallen Rogue) and I decided to meet for breakfast and some stimulating conversation. Well, stimulating for me at least; I'm not sure how much stimulation Leon got from my never-ending statements like "Huh?", "uh-huh" and "okay, I get it". For those keeping score, Frisch's Breakfast Bar FTW!

Leon started off the conversation by stating that he had been really active in the Ruby community and had not actively participated in the ASP.NET community until about a year ago. At that point he realized that the Ruby community had some strong thought leaders and everything seemed to be on the right path so he decided to put more effort into the ASP.NET community, which he thought needed some help - some organization, some direction.  This led us to discuss the things we like, the things we dislike, and things that are broken and why. Over the next two hours we discussed various topics, but the majority of our conversation was dominated by our thoughts about the current state of the ASP.NET community that we both proudly consider ourselves members of.

[Leon, feel free to chime in if any of my recollections are wrong.]

I believe that Leon has a follow-up post to this where he will relay more of his thoughts and evangelize a bit, but I'll start off by presenting a couple of observations and theories that we, a couple of guys in the trenches, raised:

  1. The ASP.NET platform / community is immature for its age
  2. Thought Leaders are chasing dragons
  3. Microsoft needs to let go

The ASP.NET Community


The above image represents my view of the ASP.NET community. At the top of the pyramid you have the leaders who steer the community. At the ultimate tip is Scott Guthrie. While this may or may not be true it is perceived to be true so that makes it real. When Scott writes something in his blog or gives a code example then that example becomes the gospel - it becomes the way it should be done. It is copied over and over and over. And why not, nobody seems to know the platform better than he.

The second group, the Practical Experts, are those of us who are perceived as having varying level of expertise, speak at Launch events, run User groups, write books, blog, etc. While there are a large portion of "loyalists" in this group, there are also a lot of ALT.NET people and others looking for the best way to do things. Some of these people profess TDD, BDD, design patterns and other "best practices" and some of them just do things the "Microsoft way".

The bottom portion of the pyramid, which would be much larger if drawn to scale, consists of the rest of the ASP.NET developers that build or maintain web apps daily and are just looking to get the job done. This large group follows the platform/community rather than study it. They don't actively seek out better ways to do things. Instead they just do what the two groups ahead of them tell them to do.

The ASP.NET platform / community is immature for its age

I have to admit that I know little about the Java world so take my perception with a grain of salt. When I think of Java the first things that pop into my mind are the myriad of frameworks available. Thinks like Spring and ActiveRecord come to mind. While those things are available in the ASP.NET world, you have to look to find them - projects that fall under the Castle project for instance. They are not part of the "standard" toolkit of day-to-day ASP.NET developers. If you ask a 9-to-5 ASP.NET developer about ActiveRecord or Dependency Injection he or she will have no idea what you are talking about. She may know something about MVC if she's been following the recent headlines, but the majority of her time will be spent working with Web Forms. Don't get me wrong, I don't hate web forms, but I know there is a better way and I'm searching for it. But it's hard to sift through all the noise to find it. I really have to look to find the answers. It's difficult for me and I am not a 9-to-5 ASP.NET developer. Imagine how hard it is for someone who spends most of their time "following" the platform/community rather than studying it.

Thought Leaders are chasing dragons

Take a look at the image above. Notice the small groups that have branched off from the Practical Experts group. These are individuals or groups who have become disenfranchised with current state of our platform. They have become thought leaders and are doing something different from the mainstream. They've created their own frameworks - many of them adopted from Java and prepended with "N". Some of them have been adopted by the mainstream (this point can be argued), like NUnit, while most of them are still on the fringes. In most cases small groups of developers have followed these thought leaders creating splinter groups who are doing some amazing things.

What is missing? Each of the arrows in that picture are one way. They go from the mainstream to the splinter groups. Nothing is flowing the other way. Realistically there is a small flow from the splinter groups back to the mainstream, but it is so small that it cannot be seen. We are missing some sort of encapsulation of those frameworks into the platform. Why? Why have they not been better accepted and more widely adopted? Because we, the community, are not steering the direction of the platform.

Microsoft needs to let go

Hooray: Microsoft adopted testing in Visual Studio
Hiss: Microsoft created MSTest
Would have been better if the framework allowed you to plug in whichever testing framework the developer wished. Why make a copy of NUnit? Rather than adopt some of the best practices being developed in the community, something similar (but not as good?) is baked into the product. As soon as MS makes something the out of the box default then that thing becomes "the way" to do things.

Hooray: Microsoft hired Rob Conery to work on SubSonic full time
Hooray: Microsoft hired Phil Haack to help work on the ASP.NET MVC framework
Hiss: See both of the hoorays above.
Microsoft hears our shouting for an alternative to web forms. They are actively seeking to offer one. In my opinion it would be better if Microsoft setup a grant to fund those projects rather than do them in-house. Why? At points during development concessions have to be made. If those projects are independent then those concessions can be made in the best interest of the product. As a Microsoft product those concessions might be made in the best interest of Microsoft or the .NET framework in general. I'm not questioning the honor nor commitment of either Rob or Phil. I know neither personally, but they are both friends of friends, I read their blogs and they both seem to be honorable and stand-up guys. Same goes for everyone else on the ASP.NET team that I have worked with and had conversations with - I know they have the best intentions. At risk of being a hypocrite I admit that if I were offered a job at Microsoft to work on one of my pet projects I would jump all over it.

Microsoft has made steps toward opening up the .NET framework. Recent releases of much of the base class library source as well as Silverlight tooling and ASP.NET MVC source are examples of that.

However, I don't think that the ASP.NET platform and .NET in general will reach their potential until Microsoft stops steering it and relinquishes the reigns to the community, just as SUN did with Java. They should of course continue to focus on the tooling and contribute to the framework, but they should stop controlling it. Doing so would offer the potential for true innovation and would allow the community to guide the platform to make it what we need it to be. Until then it will remain the platform for the community rather than the platform of the community.


  • Trackbacks,
  • and Pingbacks
  1.  avatar Keith Elder says:


    I think what you are asking for is for the top part of the triangle to turn things over to the next part of the triangle (practical experts).  

    The problem is the bottom part of the triangle doesn't really care nor would probably want that.  A perfect example is MSTest vs NUnit you brought up.  Before MSTest was released all of us (practical experts) used NUnit.  The problem was only the developers in the top portion of your triangle were using it. The bottom half didn't.  Why?  Because they had to download something else, learn a new tool, read a bunch of scattered documentation.

    Although MSTest is a lacking a few features (at least for now) the bottom half of the triangle doesn't care because the barrier to entry with MSTest is a lot less painful since it is integrated into Visual Studio.  And, I dare say that because of MSTest the bottom part of the triangle is now testing MORE code now than before.  There is now guidance on how to test directly from  Microsoft, the testing tool integrates with Visual Studio (they like that), there is documentation on MSDN, virtual labs, books, sessions at conferences, etc.  

    So while a top triangle developer like yourself thinks MSTest is completely useless, bad and should have never been done by Microsoft I 100% fully disagree.  They aren't solving Dan's or other peoples problems that are in the practical experts part of the triangle.  They are solving for the majority.  

    I think the community forgets that more times than not.

    Turn this around Dan and think about what the community does a lot.  And when I say community, I mean developers that aren't in the 9-5 crowd, the ones that climb to the top and trees and shout throughout the Internet (you know, most of the people we hang out with :) ).   Here's how it comes across more times than not.  Let's use cars for example.

    COMMUNITY:  Everyone should drive a a Ferrari or Porche.  They are WAY better cars than what Toyota is producing.  What are people thinking buying such low level cars and not using what I *think* they should use.  

    BOTTOM TRIANGLE DEVELOPER:  I need to go back and forth to work and get good gas mileage.  I think I'll buy a Toyota Prius.  

    COMMUNITY:  Did you hear that BTD over at company X just bought a Prius, what an idiot.  He just doesn't get it does he.  I think we should control what cars people drive that way they'll drive the best cards out there.  Toyota should turn things over to us so we can help them out.

    BTD:  Why are you trying to tell me what to do?  I hate you go away.

    COMMUNITY:  Wait! I'm community, you have to do what I say because I'm the expert.

    BTD:  Screw you, you don't understand me or my real needs, you live in a bubble where you think things are perfect and keep trying to solve things for me that I don't think are broken.  I'm outta here.

    The point is Dan, that while the upper part of the triangle may think things are broken and there are better things out there, not everyone feels that way.  And you know what, that is OK!

  2.  avatar says:

    Thanks for the eloquent and well thought out comment, Keith. I see your points and I agree. To the 9-to-5 developer, it doesn't matter - all that matters is at the end of the day they can get the job done. And MS has done a good job of that. The production line "it comes in any color you want as long as you want black" Model-T works for the majority of our community.

    I believe that it is more difficult for them to discover that there are alternatives than it should be. It's not like the Castle project guys are spending Porshe marketing money to woo them.

    They'll continue to keep doing what they're told is the "right way", blind to possibly "better" alternatives. Maybe there is a better Model-T. They will never know.

  3. @Keith - so do you think the community and experts should stop trying to change the BTD and just let them live in their world thinking things aren't broken?

  4.  avatar Keith Elder says:


    I first wrote down absolutely not.  Then I re-read your statement and it was the word "change" that forced me to rethink my response.

    It isn't about the community trying to "change" the BTD, the community should try to "educate" the BTD.  The BTD ultimately has to decide which car to drive based on their needs.  A lot of the BTD's work in the Enterprise.  We'll call that the WIFE.  Most guys would love to buy a Porche or a sports car.  Yet we can't because the WIFE said they couldn't.  Or maybe as a family one has 4 kids and they won't fit in sports car.  It just isn't practical.  Some of us have boats to haul, trailers to drag around, our needs are all different.

    The community has to focus on education education education.  And stop the whining and complaining about Toyota cars and simply go to Toyota and say, "Hey, we'd like your Toyotas to be able to go 0-60 in 4.2 seconds.  If you can make them do that, that would be awesome and have the benefit of __________."  

    The community is the bridge.  The bridge between Toyota and the BTD.  Now replace Toyota with Microsoft.

    The community is the bridge between the BTD and Microsoft.  The community should approach it as this and say, hey, add this, do this, etc.  Ultimately Microsoft has to weigh all of their options from all angles and see if making cars go from 0-60 is viable or not (drives insurance cost up, more money to build the engines, drives cost of brakes up, fule economy, etc).

    The point is that those of us in the community have to have some self actulization and realize that not everyone codes the way we do, nor do they (BTD) need to do things the way we do and a lot of them even if they wanted to, just can't (WIFE factor).  

    Your community voice of reason,

    Elder, The

  5.  avatar Leon says:

    @Keith I can't help but feel like your analogy is, frankly, part of the problem. I keep hearing a similar cop-out response from the top 2 developer triangles (hereafter: tiers): that "the bottom tier just doesn't care". While I'm sure there is a contingency of day-coders who don't give a damn, there are a series of consultants, managers, architects and so on who do. As well as a series of packed user groups and MSDN events that beg to differ. Our culture (the .NET culture) simply ignores this fact and panders to the lowest possible common denominator. Your analogy uses cars in the high to low end example but I can't help but feel that it's the other way around. What we've got in this community is a series of people driving big yellow school buses because they were cheap and available all the while, by looking around town they could have had a snappy Toyota Carolla for a fraction of the cost and hassle.

    MSTest is a pain because it's focus is not on tooling alone but on the practice of testing. It, through tooling, makes assumptions to the lowest common denominator at the expense of the discussion. Private member testing, for instance, is a first class citizen. The bottom tier believe that this is important because MS, the current thought leader in the .net space, obviously believes that it is. If that's not an example of the complete opposite of your argument, I don't know what is.

    I'd rewrite your analogy (developer-piece theater?) like this:

    COMMUNITY: Hey everybody, Look! This bicycle will take you the 2 miles to work in a fraction of the time. Sure you've got to pedal it yourself but it's cheap, cost effective and good for the environment.

    Bottom Tier Dev: Well, my boss gave me this H1 Hummer. It is a smooth ride and with the AC cranked I can get 1/mpg!

    COMMUNITY: guys, did you hear that folks are diving giant hummers on a flat surface to go 2 miles and gassing up weekly at a cost of 4.5 dollars a gallon? Don't they know they could just ride this sweet bike?

    BTD: But my boss gave me this car... and I can expense the gas so I'm not really paying for it, right? It runs really well.

    C: No. It runs. It doesn't run well. I can help you!

    BTD: <Developer action="drives_off" />

    C: oh well. Granola anyone?

    If the perception out there that the first and second tiers are "elitist know-it-alls" that don't actually want to foster a good dialogue and promote good practice, standards and habits then that's where the change needs to take place. If the BTD doesn't care then how did CSS and HTML standards become a defacto movement? The demand from the community drove the change in the VS toolset and not the other way around. People care, it's in their nature.

    Sometimes, change in a culture or in a community, must start from within. Not by placing blame on those who simply don't know any better.

  6. @Keith - I'm putting on my Forrest Gump hat: So how do we educate, educate, educate?

  7.  avatar James Avery says:


      I don't buy your analogy at all. I don't think we are trying to preach porsches over station wagons... we are trying to preach seat belts and airbags over steel frames. :)

    Now I agree that people have a choice, and they should have a choice. I hate seatbelt laws personally, you want to risk your life go for it. I just disagree with Microsoft making inferior air bags and trying to push them to their clients.


  8.  avatar Keith Elder says:


    Very good points.  FYI, I didn't use the car analogy to talk about price comparisons I was merely talking about feature sets.  I don't think anyone would argue that a Ferrari has less features and is slower than a Prius :)

    I don't know factually what the perception is out there about the second tier.  The first tier isn't viewed at as elitist at all I would say.  Some of the second tier can be viewed as elitist and come off in this manner but for the most part as you pointed out when the 2nd tier is at MSDN user groups, conferences, etc, we are listened to and people *want* to get better and practive what we preach.  

    My point is, once again, that not everyone owns a bycycle, nor a Hummer, nor anything else and we have to understand that even though what we may be preaching as "a better way" doesn't fit everyone's needs.  

    In your developer theatre, there is one thing I want to point out to everyone about how to reach the bottom tier.

    "C: No. It runs. It doesn't run well. I can help you!"

    this should be....

    C: Did you know there are some other cool cars out there that drive like a Porche yet are very affordable?  Have you got a second? I'd be happy to show you, you may find it useful in certain scenarios.

    BTD:  Really?  That sounds interesting, sure.  

    Do you see the difference?  The difference is:

    Told vs Shown

    This is key to reaching that bottom tier.  It is just our human nature for whatever reason no matter how desperate we are we dismiss things when we are told what to do.  


    This is your Forrest answer as well.  Just simply show them, don't just tell them.  This is the difference in educating someone vs trying to get someone to do what you want them to do.

    For those of you that are parents, are you going to tell your children to not do drugs and that is it, or are you going to "show them" and "education them" on why not to do drugs?

    One way works, the other doesn't.

    How do you show them?  Easy.  Tell it like Forrest Gump.  And this is one of the reasons I wrote this article yesterday.

  9. I think James makes a point where the analogy gets in the way.  In Keith's analogy, he is using products, but the community doesn't push products (ie "Use ReSharper over CodeRush!"), the community is pushing process (ie, "Use TDD over nothing" or "explore frameworks other than MSTest").  In terms of TDD/BDD, it isn't nUnit vs MSTest, it is anything else vs MSTest.  There are several frameworks out there, each with their owns benefits, so the community is simply trying to get the 9-5er to consider something other than the MS de facto.

  10.  avatar Keith Elder says:


    Choice is good you bet.  But let's not assume Microsoft made something like MSTest on a whim and then started pushing it down their clients throat.  That is very far from the truth.   I have been told on more than one occassion: "We made it because people wanted a Microsoft built-in supported version."  Again, we can argue that to death as to what companies should or shouldn't want, but that's not the point.

    What Microsoft did is respond to their client wants and needs and in this case and came up with something.  They just don't go around making things for no reason, that's not how things work.

  11. Great comment Ken.

    While some in the community are trying to come down with an iron fist and say "this is THE way", many of us are simply asking the BTD to explore and consider.

  12. @Keith - Ok, I should have been more clear about my education question.  I understand about showing them instead of telling them, BUT, I think the root of my question is this: how do we educate those that don't think there is a problem to begin with? :-)

  13.  avatar James Avery says:


      I think you are giving them too much credit. Are you just assuming that customers asked for MSTest? Where did that come from? I assumed that Microsoft wrote Team System to compete with other life cycle products like  Rational, I never heard of their customers clamoring for it or asking for it.

    VSTS is actually built right here in Raleigh, when I moved down here I expected to see some of their people involved in the community, at the user group. Guess what, they aren't. I even asked one of the leaders of the UG and he said they never see em. I went to a Code Camp, nowhere to be found.

    Thats depressing.


  14.  avatar says:

    Gents, I think you guys are validating my point. I agree that education is the way to go, but it is only buying us so much. The rest of the community is building things the way they are instructed OOB (out of the box), they are using the tools they are given OOB. They don't know there are alternatives.

    I know people who buy a specific brand of media card in their cameras because that is what came with it out of the box. I was guilty of replacing a set of tires on my first new car with the exact brand and type that came on it even though there were probably cheaper and better alternatives. This same story can be told time and time again.

    The only way a consumer knows there are alternatives is if he actively searches for it, stumbles upon it, or if the product demonstrates and provides those alternatives.

    We need to change what is provided out of the box. For example, we need to provide a plug-in system so that one of the best of breed testing systems can be selected (NUnit, MBUnit, xUnit, whatever) rather than creating a new volkswagon we think should fit everyone. The only way to open the eyes of the masses is to control what is given to them out of the box. Right now we do not control the box, Microsoft does, it is a closed system. And they are putting things in it that cater to the least common denominator.

  15.  avatar Keith Elder says:


    I guess it boils down to marketing.  

    "He that yells from the tallest tree will be heard the loudest."

    If I had all the answers I'd start a company, make loads of phatty cash, hire someone else to run it and move to a remote island with OC48 connections and eat crab, shrimp and oysters all day long.

    But, I don't :)

  16.  avatar Keith Elder says:


    Reading between the lines here, are you saying you want Visual Studio to be more like Eclipse where you can choose to install what ever plugin or tool or thing you want when you want?

    Or, are you saying Visual Studio should just bake in support out of the box for X, Y, Z and eat the cost of that baking in as well as supporting it, both bug / new version wise and take on the legal risk of getting sued?

  17.  avatar Rob Conery says:

    All in all a very good post - well thought out and expertly written.

    My view "from the inside" leads me to see your diagram differently in that I'd take the top of the pyramid off and make it a hot-dog stand to the left, supplying the buns, dogs, relish and ketchup to the rest of the pyramid.

    What I've learned massively (which is something you've pointed out) is that the day-to-day developer is every shade and shape that you can possibly draw. Many are very much smarter than me, but they just want to do their job.

    Other's just /faceroll code.

    Point is, MS, as the "sausage makers", have to service the entire pyramid and in mind it's a tad difficult because people have come to expect the toolset to do a certain thing. MVC (this is my opinion) is a direct response from ScottGu to service the top of your pyramid (which I think is groovy).

    All in all I think our community is quite alive and vibrant. With the good comes the bad and while your friend may indeed enjoy the Ruby community, I tend to stay away from it as I bruise easily :). Not saying they're bad - they're just intense :).

    Anyway - good write up and I agree with many of your thoughts here...

  18.  avatar says:


    My comments are more about the framework. i.e. let the community develop MVC, testing platforms, etc.

    I can't deny that .NET has come a long way, is reliable and stable and 99% of that can be attributed to what Microsoft has built and because they have been the only one controlling and guiding. Much of the same can be said about Sun and Java in the beginning. They were able to come a long way fast because Sun was the sole guiding force. Same for .NET and Microsoft.

    I think the time has come for MS to relinquish the stranglehold. Of course they should continue contributing to it and they should fund some of the projects, the same as Sun has with Java.

    I know there is a strong tie between the platform and the IDE. It my "perfect view" Visual Studio would be more like Eclipse in those areas. Don't ship with anything plugged in by default and let developers choose what pieces to use (whether they be a 3rd party product or an open source project).

  19.  avatar says:

    Well said, Rob. I can't argue with your points - I agree with most of them. Nice twist on the analogy.

    We all have different perspectives depending on our place in the ladder, our size, our shade and our shape.

    My current position is that Mustard Brand Z looks a little more enticing with its spicier flavor and darker color. Microsoft is serving up Mustard Brand M. A lot of my cohorts like Brand Z and would like everyone to give it a try. It's hard to break into the community though when Brand M packets are free, easy to use, and available everywhere you look. :)

  20.  avatar Tom Clarkson says:

    The reason Java has so many third party frameworks is that it's next to impossible to do anything useful in Java without them. .NET doesn't have that problem, which is a good thing.

    For most projects, dealing with multiple frameworks is a significant additional cost with little benefit, because somebody has to really understand the differences between frameworks. If there is a single widely used default framework it's probably good enough, so you can skip that decision and get straight into doing useful work with it. And it's a lot easier to find developers who have worked with a particular framework if everyone uses the same one.

    There may be alternative ways of doing things that will make coding easier, but the improvement has to be pretty big to justify the investment in learning a new framework.

  21.  avatar says:

    Tom, thanks for the input.

    "The reason Java has so many third party frameworks is that it's next to impossible to do anything useful in Java without them." - that's priceless :)

  22.  avatar says:

    Scott C Reynolds added a great blog post that serves as a corollary to this topic:

    I like his statement (my paraphrase) that we should be teaching developers to fish rather than letting them blindly choose the "Microsoft Way". His example was using Enterprise Library.

  23.  avatar Scott says:

    all: I think that some people in the .NET community have a rosy view of the Java "community". Look up the history of JBoss, Tomcat and others to see what the community is really like. Not to mention that some of the hard line Java coders make the most fervent , use EntLib and LOVE it, get MSDN articles beamed directly Microsoft Enterprise developers into their brain look liberal and Agile.

    But I agree that the way to educate isn't to tell someone they are stupid sheep for listening to MSDN for so long. It's to SHOW them how DI makes it easier to make changes down the road. Show them how unit testing means they don't have to be scared to commit their changes into production. Show them how they can write MVC views that aren't the spaghetti code of old ASP apps.

    Dan: Sun didn't OS Java because they are nice guys who believe in community. The OS'd it out of desperation because their stock price S U C K S!.

  24.  avatar says:

    Scott (LazyCoder), ha ha ha on the Sun OS'ing Java because their stock price sucked. I figured they didn't do it because they were nice guys :). And again, I am nowhere near informed about anything in the Java world. I am completely ignorant.

  25. As a bottom tier developer I must confess that I don't care about any of your "innovations" except for SubSonic which is genuinely useful. The practical experts are hopelessly lost in computer science and have nothing to offer the business centric web developer. I notice that the community leaders fail to address the most serious problems with the .NET Framework like its lousy security. I have considerable trouble securing a web service and ASP.NET lacks the PHP functions for using MySQL securely.

  26.  avatar says:

    Robert, I'll take the same tack as those before me: the fact that you've even read this post, not to mention taken the time to reply, means that you are not a bottom tier developer.

    But I understand where you are coming from. In fact a few of us sat down yesterday afternoon to discuss this topic and created a podcast. I think that you'd like to hear what Keith Elder said about those in the trenches fighting the good fight.

  27.  avatar BJ says:

    +1 for Robert, and I'm a BTD.  I'd also like to add, I think "education" of the Bosses is the real key in the Enterprise, and *I'm* not going to do it.  Forget "grass roots".  I already have a tough enough job, I don't want the added hassle of "educating" or "debating" my bosses' bosses' boss on the merits of {insert buzzwords here} and why every developer (hundreds?) in our 40000+ employee company should be using them.  And no, I won't eventually become that boss that could propagate the changes down the ladder, because I'm too damn good at what I already do to be promoted up there.

  28.  avatar Al Pascual says:

    Spot on. The piramid is much bigger in the buttom than your picture. Too many people learn ASP.NET for only creating a hack solution.

  29.  avatar Andy Miller says:

    My pet peaves about the current conversations (last few months):

    1. Name calling...particularly referring to the majority of developers with disparaging terms like "Mort", or assuming a lack of interest.

    2. Indirect name some (I certainly do not follow all) of the places alternatives are discussed, curious onlookers are often treated as idiots:

    Onlooker: I'm evaluating NHibernate for a new project. I can't find any examples that are like my projects, so I tried xxx, but I can't seem to make it work.

    "Expert": Bizz the fizzbot. [Stage direction: use elitist acronyms and write with disdain at what a $&%*%ing idiot the onlooker if you do not have time to explain why he/she needs to bizz the fizzbot and the $&%*%ing idiot wouldn't understand anyway.]

    2. The constant assumption that if MS does anything outside of the framework, then it must be worse than the alternative. MSTest must be worse than NUnit, Unity must worse than Castle Windsor, Enterprise Library is worse than doing nothing.... Worse how? For who?

    3. Lack of open source documentation.

    4. Lack of open source examples.

    5. Lack of open source education.

    What I like about the conversations:

    1. That Microsoft is trying to fill in the conversation with documented alternatives, examples, road shows, education.

    2. That David Hayden is talking about how we can use tools to work better, without preconceptions based on where the tools came from.

    3. That vendors such as Developer Express are responding with documented alternatives, examples, education.

  30.  avatar Catto says:

    Hey Now Dan,

    Great Post.

    Thx 4 the info,


  31.  avatar Tim B says:

    The discussion so far has been limited to the perspective of professionals.  

    I've learned to code as a hobby over the past 4 or 5 months. Before that time, I had never written nor read a single line of code.

    I would like to share my perspective, as a casual ASP.Net user.

    I spent a month deciding which of the many web frameworks to use--Asp.Net, Ruby, PHP, etc.  I eventually went with Asp.Net because it was so self contained.  I tried   Django, for instance, but it was too complicated to set up.  Setting up and using PHP was very disorganized and the skills I learned wouldn't transfer over to  console programming.  

    From the perspective of a beginner, Asp.Net's current configuration makes it the best choice. Everything a beginner needs is available on the ASP.Net website.  Download VWD, watch the videos, read a book or two, and you're up and running.  By comparison, other networks require the beginner to study a bunch of different, bewildering add-ons and supplementary software.

    Asp.Net is somehow much more coherent, organized, and well though out. This makes it very appealing to the hobbiest beginner.



  32.  avatar says:

    Al, Andy, and Catto - thanks for your feedback.

    Tim B - thanks for the perspective from an angle that I had never considered.

  33. I am having a hard time reading this in firefox.  I think your CSS is messed up.

  34.  avatar pbz says:

    Great post! I don't know the answer, but my impression is that for the longest time there was very little communication -- I mean more than just blogs -- from the direction of Microsoft to the community. By this I mean that a lot of people are not happy with this or that feature/tool. They would love to have it fix, or for it to work better. The next thought would be, ok... who do I complain to and would my grievances be heard?

    Yes, MS says that they listening, but there's always this perception that you're the voice out of a million, that yes, we've heard you, but not a lot of other people complained so we're not gonna do anything about it. My reaction is always: so what if I'm one of the very few who complained, are my complaints valid or not? You do this a few times and after a while you tend to not bother anymore.

    In this respect I think the post is on to something. One of the strengths of open source is that you have far smaller pools of people, the community is smaller, and your voice is heard. And this is where I come and say that blogs are good and bad.

    They are good because each has a smaller audience and your voice is more likely to be heard. And they're bad because most of them, this post is clearly an exception, don't encourage communication. Most of them are sort of a press release, where one side talks and the others have to listen. Yes, you have the comment field, but that's rarely a solution as usually the author doesn't bother to reply.

    Which brings me to culture; for the longest time, in my opinion, the community has been fed by a single hot dog vendor, it was a "take it or leave it." This molded the community into a community of followers. Now we're talking about changing that. My feeling is that MS will have to help out here. It will have to tell the mob "look, you have the option of X and Y" And I feel, it has done that lately -- especially Mr. Guthrie. It will take time...

  35.  avatar says:


    I see we're sharing the same thoughts, especially about MS tooling and adding libraries/products into framework/VS.

    I don't think the current state of control from MS is good for .NET platform, take for example

    NUnit vs MSTest as mentioned - MS is reinventing the wheel again. I don't say that doing the same product is bad, but in this case it's just showing some kind of ignorance from MS ("we do not support this as it's not ours..").

    That's not just about MSTest - take ORM for example (I think NHibernate for example _is_ far away from linq2entities, ajax framework (jquery/prototype etc exists, MS invent own, source control, castle vs unity etc etc)...

    Same with MVC framework, log4net vs enterprise-something and so on.

    Take an IDE as example, in Java world I get NetBeans/IntelliJ/Eclipse and I can immediately use source control, have bunch of plugins for all kind of development etc. I click on button here and say 'I want third party libs like spring, spring MVC, Hibernate here'. It just download it and include in my project.

    Microsoft ? Gives you and Express edition for free (add-ins disabled) and you have _nothing_ just an IDE, with no support of third-party libraries or tools. Yes, and you need two express editions - one for web, one for winforms...

    Don't take it wrong, I think .NET is great platform (I'm happy .NET developer) but these kind of things and politics (one company controls almost everything) irritates me

    as I'm trying to care how to do things better.

    I'm not that kind of developer that will wait for 'what MS will put on my table'. I take

    SVN,NHibernate and log4net right now and use them,

    I will not wait when MS will come with their implementation of same thing which is already here and mature.

    Frustrating, isn't it ?

  36.  avatar says:

    Brandon, I know - this theme sucks in Firefox. But it only seems to do so at certain widths. At 1024 wide it looks fine to me in FF2. I think at smaller res than that it begins to suck.

    PBZ and, thanks for the input.

    I'm really proud of the conversation this post started.

    It's really interesting and easy to see that we currently have several clearly defined groups of .NET developers. Those that are happy with what Microsoft is providing, those who are a bit frustrated and are looking for something better, and those who would like to have input into what that something better is (maybe because they've found it already).

    As you can imagine, I've been involved in several conversations over the last couple of days with others trying to make sense of the feedback you have given. Some have become even more frustrated, some see hope from Microsoft, some see hope from the community, and some see hope in Ruby :)  

  37.  avatar steve says:

    Its very hard for the guys at the bottom of the triangle to comprehend what is going on at the top.

    When they stick their heads above water from their day job they are bombarded with blog posts and previews of the latest tools and nothing that is relevent to them. All the examples are wishy washy and miles away from real world problems.

    I am left asking myself what does silverlight solve for your average shop floor web developer? I would rather more time and effort went into fixing the huge amount of bugs with ms ajax and actually supporting the ajax control toolkit instead. No sooner do we (the mainstreamers) read about, learn and then implement these 'new' tools they then too quickly become legacy and are suddenly off the agenda.

    All the bloggers have moved on to 3.5, MVC, VSTS. These technologies are light years away from your average mainstream web dev. Do any of the thought leaders actually write systems with the technology they build? I doubt it because they quickly move on to invent the next tool to fix the issues they have just caused, leaving the rest of us to dangle.

    I personally feel overwhelmed with how much stuff is going on in the .net world at the moment(wcf, wpf, silverlight, blend, lambda, IIS7 etc etc).

  38.  avatar Joe Brinkman says:

    @Dan - I feel like you are holding the elephant's tail and telling us it is a snake.  As someone who was part of the Java community for my day job for many years I can tell you that framework's were adopted out of necessity because there wasn't any alternative.  If you look at AWT and Swing they were absolutely pathetic. All of the Java IDEs were ugly and slow and didn't have the features needed for modern software development.  It took a behemoth like IBM to go head to head against SUN with Eclipse to show that by optimizing the rendering engine for the OS you could create highly performant UIs.  All of the other IDEs built on SUN's UI framework quickly died since they could not compete.  The other Java frameworks were created because SUN seemed completely incapable of producing anything that was actually useful.  Enterprise Java Beans were a complete pile of #$^!!, hence the need for a lightweight solution like Hibernate.  JSP was a cheap clone of ASP with all of the attendant problems.  The bottom line is that SUN was the problem in the Java community and was not doing any innovation.  

    The same is not true in .Net.  Microsoft has created a great IDE (not necessarily the best, but pretty darn good) that meets the needs of most developers.  Where it falls short Microsoft has tried to create hooks to allow developers to extend the IDE.

    I feel like the DotNetNuke platform is a perfect counterpoint to your argument.  We have had many features that predated Asp.Net 2.0 and chose to stick with our approach rather than change to support the standard .Net feature.  Many people thought features like Master Pages, WebParts, Membership etc. would kill off the DNN community.  Just the opposite has happened our growth has accelerated.  Some people will not see the value of our platform, but that doesn't really matter since many other people seem to think that we are headed in the right direction regardless of what Microsoft is doing.

    Clearly, the same is true of NUnit, mbUnit, NAnt and other.  They actually flourished after the release of VS2005 rather than being squashed.  I suspect the same will be true of Castle once the MVC framework is released.

    I believe that by creating solutions to these common problems, Microsoft actually validates the need for a solution which causes large portions of the community to seek out alternatives to those offered by Microsoft.

    @James Avery - I think many people would really enjoy being educated about alternative development processes and tools. Unfortunately, there are many in the Alt.Net community who don't quite get the distinction between educating and lecturing.  In the end there are many who are turned off by what is happening in the "Practical Expert" portion of the pyramid.

  39.  avatar says:

    Steve, thanks for your comments. I know what you mean. I usually end up just browsing through MSDN articles because they have nothing relevent to me right now. MSDN has been covering WPF and WCF for years and I have yet to touch the stuff in real life. I usually just file the magazines away and pull them out a year later to see if I've caught up.

    Thanks for your contribution to the discussion, Joe. And thanks for the for sharing your Java experience. And you do have a point about NUnit, mbUnit, NAnt, etc actually proliferating even after the release of MSTest and MSBuild. Hopefully the same can be said for the Castle project after ASP.NET MVC.

  40.  avatar Rob says:

    I started to write a rant..thank god for the delete key! 8-)  Hopefully this will only amount to a ramble.

    First let me say that I am not a PUBLIC (which I think is the group in your triangle that you are referring to) 'practical expert'...I don't have a .NET blog, I don't write .NET article's for Code Project, I don't particpate in .NET OSS projects, I don't write .NET books, I don't speak at .NET conferences, I am not a .NET consultant.  In essence you don't know that I exist and you cannot recognize me in the wild.

    I think by all accounts you would label me a BTD...except...

    I read EVERY good .NET blog there is, everyday.  I read ALL the good Code Project articles, I use alot of .NET OSS projects (and read code for 10x as many to seek insight), I have literally 100's of development books on my bookshelf, I go to conferences (many times covering the nut myself) and I rarely post a comment to a blog.

    Now the cynical would call me a lurker, selfish and I just don't get what community is all about.

    Am I part of the community?  Damn straight!  How?  We are the critical mass majority of readers that make blogs and community work, we are the people that implement WebForms apps, MVC apps, IoC/DI apps, Castle apps, grok LINQ, grok Entity spaces, use TDD from Microsoft or OSS.  We just don't scream it from the mountain tops...or even tell anyone...while we are doing it.

    Why don't we 'give back'?  Well the reason I and a VAST majority of the community that are invisible to you (I would estimate that the number of PRIVATE 'practical experts' is at least 500x the size of the public group) is, well, because:

    a. we would rather write code than blog, write, speak or consult etc.

    b. we are too busy shipping code!  We read the blogs, books, attended the talks, camps and confernces (thanks BTW) and then go about our business implementing it when the need matches the technology).

    Whenever I see one of these discussions I always laugh whenever I see posters or commenters suggest/lament that the BTD group ONLY consists of non-experts or 9 to 5'ers (and god-love'm, some of most hard-working people I know fall into that group and often are the basis of success for any moderately sized project) and we NEED to reach them!

    If you want to make the community better stop assuming that what you refer to as the BTD don't get this stuff.  Some don't AND that's OK.  But alot do...alot more than you think do and have just quietly moved into implementation full-bore.

    Stop worrying that we don't exist...we out number YOU already!...and that's OK too.

    Nuff said...back to work.


  41.  avatar Remy says:

    I'm coming from the Java side like some others here and have been doing fulltime .Net for about 2 years now. Initially it was a bit difficult, because there really was a much smaller amount of OS projects, frameworks, etc. out there than for Java. But it also made is so much easier. Install VS, create a project, start being productive. Everybody is using the same tool and the same framework, so the support is here and there is no danger of using the "wrong" framework. Choice not always helps.

    Now I'm surrounded by PHP developers with cool projects like Wordpress, etc. and there really wasn't much in the .Net world until recently (or maybe I just discovered it). But now I would have to say we have great OS projects in almost every area (Blog, CMS, Forums, Portal, etc.). One unfortunte thing is that most of them only work with SQL server and that can get a little pricy soon. I would love too see more MySQL support.

    My 5 cents.

  42.  avatar Joe Brinkman says:

    @Dan - My comment about NUnit, MbUnit and others specifically addresses the statement "As soon as MS makes something the out of the box default then that thing becomes "the way" to do things."  If that were true, I would expect alternative solutions go down in popularity rather than increase.  My comments are meant to show that by Microsoft exerting a little leadership and building solutions that they believe serve their customers, they also have a positive effect on the very OS products that everyone wanted them to use in the first place.  By not picking sides in the OS community as to which is the best MVC/Test/Web framework and rolling their own, Microsoft actually educates the community about the need for these frameworks which then spurs individuals to go out and seek out the best solution for them, which in many cases turns out not to be a Microsoft solution.

  43.  avatar says:

    Rob and Remy, thanks for the great input.

    Joe, that is a valid point and something that I had not realy considered. There are a lot of things that I had not considered before that have been presented here.

    My observations are the foundation of my opinion. Of course I have no view from the enterprise developer perspective (which Keith Elder and others have championed), or the hobbyist perspective, or the ex-Java developer perspective. Some of the things you and others have raised defies some of my previous assumptions.

    It's obvious that the tooling that Microsoft is putting together is pleasing a large portion of its developer community. I can't even begin to understand the challenge of trying to support such a large and diverse customer base. I said before that I think they've really done a great job in many respects up to this point. The ASP.NET team, Scott Guthrie included, are my HEROES.

    Based on the feedback to this post it's not too difficult to see that there is still some part of the community that is a bit disappointed with what they are being given. Maybe that will always be the case no matter what you're distributing.

    Again, I'd like to thank everyone who contributed to this conversation. Awesome stuff.

  44.  avatar pbz says:


    Yes, that's a big chunk of the problem that, in my opinion, is not often enough mentioned. I feel the same way many times, when I hear about new tools / technologies while I have to put up with a several years old bugs in the framework (thankfully there aren't that many) or with the even-slowing and buggy VS 2008. The foundation has to be solid, and we need not forget this. I do question myself at times if these people are actually using the same tools and how can they ignore the flaws.

    As far Microsoft's influence: Sometimes I feel like Microsoft is aware of their clout and realize that by only officially supporting a technology they can push it down to the masses. And by officially supporting something it's usually understood that they have to recreate it. So they spread themselves ever so thinner and end up not implementing it as they should or would have liked.

    One of the greatest communities I've been part of is the Delphi community. I'm not going to pretend I know what made it tick, but it sure did function. One great example was when a few smart guys actually rewrote the memory manager each application used. Borland acknowledged that this manager was better than theirs and in the next release of Delphi not only did they include it but they also used in their tools (the Delphi IDE).

    OK, back to work :)

  45.  avatar Jim Geurts says:

    Hooray: You wrote this

    Hiss: I had to view it in IE because it wouldn't render in Firefox...

  46. A little late to add to the conversation (seeing as I read the post a while back only to come back later to read through the comments), nevertheless.

    I think we are seeing a lot changes happening in our community. I also think that people who are passionate about the industry, software and the technologies will write about it, talk about it, teach and build upon it. I've been experiencing some of this within the Silverlight community. There seems to be a lot more opportunities to "show off" expertise and teach others.

    Perhaps the organization within Asp.NET and the various frameworks (attributing to the well put documentation, videos and tutorials) has really influenced people to show and do more for the community in that regard.

    On that note, blogging has had an incredibly powerful influence on accessing "better" solutions or to say the least any viable solution. Do a quick search for "xyz with ukd technology" and you're more than likely to find someone blogging about it. If not, then take the initiative to solve it, create something reusable, and blog about it (or showcase it online at least).

    With that, I think Asp.NET and the .NET probably has one of the best communities around.

Comments are closed.


Trackbacks and Pingbacks

  1. TrackBack says:
  2. Dan wrote a great piece on the state of the ASP.NET community and there is quite an interesting discussion

  3. You've been kicked (a good thing) - Trackback from

  4. CKCMoss says:

    My thoughts on .Net these days

  5. TrackBack says:
  6. Yuanjian says:

    .NET: How to Build a REST app in .NET (with WCF) IIS7 - Mobile Admin What is wrong with the ASP.NET Community

  7. gOODiDEA says:


  8. I'm Changing My Mind, I The Word is

  9. .NET Community: Learn The Current State Of The Platform Before Deciding On Its Future

  10. TrackBack says:
  11. Kevn Roberts says:

    Dan Hounshell suggested that in the ASP.NET community, there are three types of people: Community Leaders

  12. .Net World says:

    Dan wrote a great piece on the state of the ASP.NET community and there is quite an interesting discussion

  13. Dan wrote a great piece on the state of the ASP.NET community and there is quite an interesting discussion

  14. A plethora of news this week...enjoy! General Wrapping up NHibernate : I've been playing with NHibernate for a few projects, and am really liking what I'm seeing. This post provides an elegant pattern for wrapping and consuming NHibernate. Why do we need

  15. Pingback from / &raquo; The ASP.NET AJAX Framework is for Dummies


Where is Dan?

My Blog
My Blog
Windows Live
Windows Live
Graffiti CMS on CodePlex
Graffiti CMS

Recent Posts