Leaving .Net
whatupdave.com
whatupdave.com
Yes, the viewstate / gridview bs is annoying and should not be used. The problem is primarily that corporate dev departments want interchangeable parts. They want to be able to hire a developer and him to know the API that everyone is using. They don't want magic. They want everything spelled out so that the code looks identical to the UML and identical to the Use case document as signed off in triplicate by a committee of managers. In corporate dev you get promoted for doing everything to the letter not something new and exciting. I've seen pages with more than 100 checkboxes on them and arranged in a grid, it was like someone when mental with excel putting a checkbox in every cell.
To be honest, if rails were adopted by corporate dev you'd see things like not being allowed to use haml / sass, etc. You'd have a corporate list of approved gems in specific versions that were 3 years old (probably whatever comes with a default install of RedHat)
I'd bet if you look at what Atwood and Spolsky are doing over at StackOverflow on ASP.NET it's probably a reasonable choice of defaults and open source. There are a lot of stupid decisions you can make with .NET and I agree that the community is definitely lacking, but largely it's a mindset issue that stems from the socio-political environment they program in.
At my last job you should have seen the shit show that ensued when someone in management found out the DLLs I was handing off to other teams were written in F#, even though it was the .NET team and not the C# team. Apparently, unbeknownst to me, the largest cause of developers leaving a company is due to being hit by buses, and a dependency on FSharp.Core.dll is just unacceptable and could never be part of the automated build process.
It's depressing, the framework is great but it's like there are external forces that cause the framework to be used poorly.
I feel like .NET is solid for smaller shops, but once you get bigger those shops seem to want to fold weaker devs in and that tends to put up a lot of barriers/management.
You made me choke on my cola. SO TRUE! I'm laughing out of sadness.
That is because organizations have their own set of company rules/policies that you have to follow to the letter. Mess one up and you end up being scolded or worst, fired. People that don't have enterprise experience often say things like development should be "fun" and "exciting" without considering that working in an enterprise means that you have to develop "Business Applications" not web 2.0 stuff. This means less graphics, more business rules to follow and tons of reports to generate. At the end of the day what matters is that the accounting department or HR people used the system correctly based on standard policies of the company.
But he does miss the boat on a few things.
One thing that I do think he discounts too much is the surprising effectiveness of small focused teams. In the same way a small startup is more effective than a lumbering machine, a small team of devs is often more effective than 1000 loosely organized volunteers. The classic example is GCC which has probably 10x more people working on it than any commercial compiler, yet the Intel and MS C/C++ compilers generally kill it. Not to mention other less popular compilers like IBM xlc and DEC's Alpha compiler.
The contribution list to RoR is impressive, but the quality of the product doesn't scale with the number of contributors.
I think the question MS has to ask is "do we forego control to possibly get an incremental increase in product quality?" What I've found interesting is the speed at which Silverlight and ASP.NET MVC have improved over the past few years. With relatively small developer teams, they've increased in quality as fast as any open source projects I know of.
The other thing he gets wrong is he conflates framework developers with application developers. And I think this causes him to see a skewed world-view that developers are "waiting" for Microsoft. In general, app developers, are not waiting for MS to do anything. You have tight deadlines and are trying to find the best solution today. You take a snapshot of the world right now and pick the best solution (or starting point). You don't have the time to ponder what might be available in eight months.
Most ppl on the MS stack are app developers. Always has been the case.
So it's not about incremental increases in product quality, it's about responding to problems quickly and promoting new core developers from the community, rather than through Microsoft's opaque hiring processes.
I'm relatively new to web development, and I've never worked in an enterprise environment using enterprise software/frameworks, but I honestly cannot understand why anyone given the choice and assuming the cash is the same would choose to go the MS route. I admit naïveté.
A lot of reasons. The big reason is that for a LOT of people, open source isn't all that compelling as a feature on its own. For certain classes of people its the most important thing in the world, for other people it doesn't add much value. And for maybe an equally large subset, it's actually a negative.
At the end of the day each person/org has to decide what is important to them and optimize accordingly. For you open source may be the most important thing in the world, in which case, the choice is obvious. But there are millions of people who have made a different decision.
If a lot of people don't go with that route is mostly because of inertia or just bad uninformed choices, the idiotic kind of stuff that can drag your company into the ground.
It's not the license, it's the side effects: the ability to fix it yourself, community, popularity, documentation available (thanks O'Reilly) and support (the real deal).
I'm trying to picture what would happen if a customer calls in the middle of the night because the shit hit the fan and I blame it on Microsoft. As it is right now, the small company I work for has hired a kernel hacker and a contributer to Mysql that used to work for Sun, while also maintaining a healthy relationship with some of the core devs of the tools we rely upon ... we can fix and extend anything in our stack.
Can Microsoft provided support top that? I don't think so.
Is it? First, you have to define "similar".
Would you rather have Quake (open source) or Black Ops? Both shooters with zombie like monsters.
Is MySQL the same as the SQL Server? Sure, to the uninitiated they look the same, but there are lots of little differences that, depending on your goals, can make one vastly more valuable than the other.
Would you prefer Mono or the CLR? While Mono has an enthusiastic and strong dev community, I bet dollars to donuts that even among informed devs, most would chose the CLR for the job at hand. And I bet even among informed CIOs they'd prefer the CLR for their shops.
OpenOffice Calc or Excel? Again, depending on your usage scenario, there are things you can do in Excel that simply aren't there in a reasonable way in Calc, although again, to the unitiated they're both spreadsheets.
My point? You rarely have the option of choosing between a closed source version and open source version of identical products. What you do tend to do is to look at two (or more products) and figure out what addresses your need the most, with open source being one of many metrics. When I decide which spreadsheet for my org to use, of course we consider OpenOffice, but the fact that it is open source has very little impact on our decision. The probability of us fixing a bug in OpenOffice is about equal to the chance that the bug fixes it self through the right sequence of bits being affected by cosmic ray. But maybe for you the fact that you can go and implement missing features in OpenOffice is important.
"Is it supported? Who supports it? Is the support 24x7?"
$10,000 a month, depending on the applicatin, is chump change.
Although, some people do appreciate the value of open-source when a vendor takes two months to solve a problem in their proprietary mess of 'software solutions'.
In any case, fair enough. I tried to detangle the contributors, and while its easy to do for language, it's harder to for target. I suspect 90% of the commits are ARM or x86/AMD64, but w/o spending more time than I care to, it's hard to know.
With that said, you'd still expect, with GCC long history of being open source and open source being such a clearly superior dev model to have surpassed most commercial compilers, but that hasn't been the case in perf. Now maybe one might make the argument that perf has never been the metric for gcc, but it has always been portability. But that would also lend credence to why open source is not an ideal model for many companies -- your (the open source project's) metric of success is not the metric that we care about.
> The classic example is GCC which has probably 10x
> more people working on it than any commercial
> compiler, yet the Intel and MS C/C++ compilers
> generally kill it.
Oh? Interesting; I thought that gcc was one of the better ones. Could you elaborate?But with that said, I'm sure you know, that's not really relevant to the discussion at hand :-)
If we narrow the target enough, all comparisons become interesting. I am quite sure GCC will blow both Intel's and Microsoft's compilers out of the water when it comes to compile code for IBM mainframes. I am sure it's much better than Intel's when it comes to target my phone's ARM processor.
For me the Intel compiler makes sense in certain specific applications (many of my servers are not even x86), but the Microsoft compiler is absolutely worthless.
For example, code size, throughput, debugging, and optimization are all places that the Visual C++ compiler is superior than GCC. How many Windows games are written with GCC? How many top-tier Windows apps are written with GCC? If I'm writing a Windows C/C++ application, I'm going to either use Visual C++ or icc. I'll choose icc for code with lots of compute intensive loops or vectorization opportunity. VC is better when icache is an overriding concern.
Now that may not be what you do, but to say, "Who in their right mind writes programs for Windows?", I think says more about you than it does about the respective compilers.
Still, there is a lot more to programming than desktop applications that run on x86 processors under Windows. And embedded ARM processors outnumber desktop x86s by a large margin. I carry at least three of them with me at all times.
And Visual C++ targets ARM also, and has for years. One of the reasons I've heard bandied about as to why WP7 first party apps are so fast and responsive is because of the quality of the Visual C++ compiler. :-)
But you surprised me now: wasn't WP7 managed code-only? Has MS decided to allow native app code?
Regarding WP7, 3rd party apps are managed. But the core OS is native and 1st party apps can be native. For example, IE and the mail app are both native C++ apps.
Honestly, I think allowing 3rd party native apps would be a mistake in general. Although I'd create a partners program where you require devs to pay $10k and then go through a certification process, which allows them to ship native apps. Basically its the XBox model. Indie devs use managed code. Apps that are willing to go through the more expensive process get native access.
Why? Native apps introduce a bunch of problems that are a pain to deal with. For example, there a bunch of security issues and stability issues that native apps introduce. Additionally you have to target native apps to an architecture. It may lock WP7 into ARM, due to the ecosystem, and block it from moving, for example, to a new Intel architecture.
I think your skewed world view is apparent here. MS and Intel certainly didn't come and say, "One of our top priorities is portability. How can we target our compilers to platforms that we have nothing to do with? Oh wait, GCC already does that!"
Of course not. Honestly, GCC has been an afterthought for most of the history of C/C++. It's only now that it is effectively dead that GCC has started to become competitive. MS was focused on Borland for years (and it actually didn't generally revolve around perf, but generally build throughput). Likewise, Intel was focused on SPEC against xlc and other architecture specific compilers.
And as I said in another post, they (GCC, Intel, MS) have different priorities. If your goal is to have a somewhat portable C/C++ compiler then GCC is the way to go. If you want the best perf/throughput on a specific target then MS and Intel are your best choice.
GCC which has probably 10x more people working on it than
any commercial compiler
Citation?Personally I think you pulled that figure out of your ass; especially since the GCC codebase is a mess (on purpose), it's been stable and good enough (and arguably stagnant) for quite a while and all attention shifts lately to LLVM.
With relatively small developer teams, they've increased in
quality as fast as any open source projects I know of
When speaking of both Silverlight / ASP.NET MVC ... they are copying other projects. And we aren't talking only about high-level ideas here, but actual implementation details.They are great followers, yes, but what did you expect from a company with virtually unlimited cash?
This is like complaining someone's market share is stagnated around 99%...
As for "working on", it has two interpretations. While I certainly thing GCC has less patches per month accepted into its codebase than clang, there are a whole lot more people compiling C code with it. I would not be surprised if we discovered more code is compiled with GCC than with all other C compilers combined.
And we aren't talking only about high-level ideas here, but actual implementation details.
Huh? What implementation details? Citation? Silverlight looks fundamentally different than any other product, except WPF. I'd love to see who their copying implementation details from.
Back when my company started using Silverlight, I was surprised to learn that none of my coworkers knew it was almost the same as Adobe Flex. I think this sort of ignorance about the greater world of programming is exactly what the original post is talking about.
I think you underestimate the amount of people who have used Flex at some point in time.
The internal frameworks developed in .NET shops are inefficient and mediocre not because the Ruby or Python communities are full of pure genius, but because they have more than a single person continuously working on improving them. Pythonists and Rubyists have a culture of sharing and coding in a constant loop of feedback. They talk to and work with each other. People in .NET culture do not. As a .NET developer I have rewritten code that has been created several times before, and it will die in obscurity behind the closed doors of the companies I've worked for.
This is something I only begun to realize by talking to JS, Ruby, and Python developers. I've been teaching myself Ruby since September and hope to leave .NET as soon as I can.
Another data point: My posts on using jQuery to replace the client-side ASP.NET AJAX stuff got hundreds of thousands of views before Microsoft officially endorsed jQuery and began supporting it. There are tons of .NET developers out there using the best tool for the job.
I think your criteria has to be who and what you're working on, not the platform. There are absolutely shops out there using Rails and Django with the same mentality that makes some Java/.NET shops miserable.
This is an over the top and even somewhat offending generalization. I don't know if all companies in Scottsdale are like this, but I can promise you that it's most definitely not the prevalent mentality in the .NET community nor in most .NET shops I know of.
"We were told we could not use 3rd party components, which sums up the prevalent mentality in the .NET community. So we did not use the popular 3rd party component CSLA, written Rocky Lhotka, a well respected member of the .NET community."
To make it clear... how can that mentality be THE prevalent mentality when there are these extremely popular third party components such as CSLA and Log4Net. They're popular because a LOT of .NET shops use them. They're extremely popular, because that mentality is not as common as you might think it is.
It seems self-evident that the farther off the beaten path you go with languages and tools the higher the concentration you'll find of people who care and think deeply about the tools they use.
There are some good points here, but who cares? The real issue is that Microsoft treats developers as if they were a separate marketing channel -- with promotions, partnerships, walled gardens and the like.
So don't play that game. I'm working in F# on mono, on my own stack. Do I care about branch commits, bad abstractions, onerous licenses or such? Nope, not in the least.
Look, there was a day where you had to take the entire MS stack or leave it. But that day is past. Now you can pick and choose a bit. Sure, not as much as we'd like, but it's still open enough for developers to control their environment.
If you don't like the game Microsoft plays with the development community? Then don't play it. But that doesn't necessarily mean you have to walk away from the entire thing.
Reinventing everything yourself on F# is scarcely an option, especially if you're seeking a valuable community to collaborate with.
You might as well tell everyone who doesn't like the government to go buy a farm and live off the land.
When I am in the mood for being adventurous, I go with something that makes me feel truly transcendent in productivity, like Clojure. Plus, I still get an awesome community.
Hell, I've had Rich Hickey answer my questions before. Where else could I possibly have such a grin-inducing experience?
There's plenty of help available on F#. Mono was painful, at least for me, but nothing like C++ or .NET internals.
When I'm coding I look for community support and ease of solutions. I have that. So why again would I switch?
I guess what I'm saying is that I don't understand your criteria. Who cares if famous person X answers your question? I just want to get my work done, not become a celebrity or hang out with the cool kids.
Once I decided to move to linux I thought about moving to OCaml, Java, or Haskell. It's really not that big of a leap, and I've done some Java and OCaml in the past.
But in the end I liked having other .NET folks making assemblies that I could pull into .NET and use. A zillion guys out there coding for the CLR, and I can leverage that.
All that other stuff -- TDD, CI, good abstractions, dependency management, etc -- that's just good coding practices. Has nothing at all to do with .NET, does it?
In you have a hammer and it's not working, stop hammering. But you don't have to throw out your entire toolbox. Just pick up the screwdriver. In fact, that's the difference between the tool -- VB, C#, MVC, whatever -- and the toolbox. Seems like you just jumped from one example to a broad generalization.
Whatever works for you, though. That's my whole point: instead of making big generalizations about the state of microsoft, .net, and the community, just mind your knitting. You'll kill more time thrashing around reacting to perceived problems than you'll save from a new platform. Don't do that.
This isn't really an argument for or against .NET. Perhaps Java rocks for you. Just don't waste time trying to find the perfect language. Instead go make things that people want. Even if you do that at 50% efficiency, you're still better off than using the perfect tool making a bunch of stuff that has no value. There is a cost to switching.
I'm interested to hear more about mono, what was painful exactly? How is the performance compared to the MS implementation?
It will probably go something like this: the linux environment is like running an operating system at the same time while you're coding it -- little pieces of code and scripts here and there. That makes linking, compiling, and installing the primary chores. Although there is an awesome package manager, it doesn't have the coverage you'll probably need. So lots of different pieces to plug in, lots of advice on the net, some of it bad or incomplete, and instead of just googling you end up doing quite a bit of thinking as you assemble your development environment and OS. Nothing at all like the VS2010 pnp stuff.
But I'm specifically referring to F#, which is a PITA on mono right now. I understand it's going to become part of the standard distro. Can't wait for that to happen. The default Monodevelop c# environment looks easier, but even then I'm having to do things like figure out where the gac is, find sql drivers and install them, bludgeon my way through mono dll linkage problems (Hey mono -- it's in the gac, it's in the directory, and you can compile it. Why the frack can't you find it when you run the program? I have to statically link my mysql driver, making my 2K executable into 1.5MB. That's hosed.)
Example #2: I have some generic type magic that works fine in Windows. Basically I throw an object at a function and it generates an SQL INSERT for me. Works and tested and being used in Win. Over in mono, however, for the type name all I'm getting is "System.Object" which, of course, is the correct base type, but not the real type name the caller is using. Can Mono handle this type-fu? Or am I stepping into some area the Mono guys just haven't developed yet? Don't know. Could be a while trying to track that down. Just like all these other snags.
It just seems like every little thing is more painful than it should be. Like debugging. Still haven't figured out how to get the interactive debugger to work on F#. I'm sure after an hour or two I'll figure it out -- or not. And there's 20 things like that. Because I'm new to the entire thing, each little step hurts.
I think it's doable, I think it's worthwhile, but if I were taking a team through this I would definitely want somebody onboard who has already been there, done that (and could mentor). Quite frankly doing it on my own gets a bit discouraging at times.
I've been looking at languages and VMs for doing GUI desktop app work. Specifically, cross-platform apps using native GUIs on each platform. Java (I normally use Clojure where I can) has decent cross-platform toolkits, but not so great native bindings. .NET obviously has good Windows GUI stuff, Mono's GTK# and Qyoto seem to work well for Gnome and KDE, and MonoMac seems to be going places. The main alternative seems to be to drop to low-level languages. (C, C++, Obj-C). Do you think it's worth it for me to go ahead with .NET and Mono considering the difficulties you've had with Mono?
I'm doing very simple web stuff (fcgi-type, if I can get the fcgi bindings to work) Also a bit of command-line/batch work.
As far as I can tell, .NET is the best match for what you want. If i were you, I might want to do a bit of poking around to see how the low-level stuff is configured first.
First plan of action is to build a small, (more or less) throwaway app that uses all the major bits we're interested in to get a feel for the platform before betting the farm on it.
I don't want ASP.NET. All I want is a resident .NET program that gets called when an URL is visited, getting all the parms passed like CGI. I can handle the rest.
I really don't want or need the ASP.NET stack.
Is there some way to do this? So far all I have is a stand-alone program that gets loaded each time using Apache and CGI. Can't seem to figure out how to make it resident and re-entryable without using the HttpHandler objects off the ASP.NET stack, which I don't want to do. Lord knows it was tough enough getting an environment working. Going through the motions of overriding a part of the ASP.NET pipeline in a foreign environment is probably just a bridge too far for me for this project.
Any help would be very much appreciated.
After that happened I saw a blog post by someone at microsoft about their testing. They have 1.6 testers for each dev working on asp.net and they've got a warehouse of servers running millions of different tests for months before shipping.
Then I read about who was working on mono's asp.net implementation. Just two guys in a basement. No testers of course.
Because I can deviate from the defaults so much if I wish, I was able to switch the Mono Garbage Collector from Bohem to sgen (mono --gc=sgen) and get roughly a 30% increase in reqs/sec.
There is a team dedicated to ASP.NET on Mono and I've really found them great to deal with. When I was seeing perf and memory usage issues, over a period of a couple of weeks they helped narrow it down and made some very major gains there. Those are in git master right now and will be shipping with the next mono release.
Devs often migrate from one project to another and it really is not two guys in a basement. They do call on resources from right across the project. I saw firsthand when talking to them about an issue, they discussed it with their asp.net guys, guys working on the VM, a guy working on the GC and a guy working on the new profiler and made adjustments to it to help track down the issue.
It was all done in the open, they committed their patches, it fixed my issue, and this is why I love open source.
If something is broken in Clojure, I can either fix it myself or notify Hickey about it personally on IRC.
> instead of making big generalizations about the state of microsoft, .net, and the community
You just got done accusing me of caring about celebrity and hanging out with the cool kids.
The shift in quality of people I worked with when I switched from .NET to Python was stark. It's a fact that several of my friends who still work in .NET moan about.
I'm not "wasting time trying to find the perfect language".
Oh I see what you're doing here.
http://en.wikipedia.org/wiki/Straw_man
Nice try. I'm out of this conversation.
Parting example of what I'm talking about:
Finding contributors to projects is really, really difficult because of this, and the main OSS site (CodePlex) until recently had a lot of friction in doing so until they implemented the Mercurial integration.
It also seems like the existence and success of sites like codeplex and stackoverflow negates his thesis.
Was glad to read that he was leaving for purely non-technical reasons. I bet he'll be back someday.
I guess it's like a mid life crisis, you just have to flip side.
I'm a strong believer in Open source, I used open-bsd for years and I really enjoy Mono and Monotouch.
However the state of 95% of open source project is rather dirty and messy, scruffy development.
Even if I grant you that arbitrary statistic, it says nothing about the state of the selection developers have for open source projects. If 5% of all open source projects are good, that leaves an enormous quantity of good open source projects. What languages do you code in?
I write in C#, AS3, php, js, etc.
I'm very curious what your opinion (as a C# dev) is on these. My dad loves .NET (and I think rightly so), but often has (what I think to be) a bit of an outdated stance on open source that is mostly borne of a lack of knowledge of the extant options.
Most of them, incl. me, are too busy working as contractors and raking per-hour rates. We're not going home coding until the sun rise.
I did find .NET contractors to have normal social lives, that might have something to do with the lacking community?
Can you give an example of something that is cool? Everytime I think of something cool, I can think of something done on the MS stack, but maybe our definitions are different.
I'm trying to see why the things coming out of the Clojure and F# community are cool, but they aren't coming out of the C#/Visual C++ community. For example, ScottGu showed off a C#/Silverlight app built by a 3rd party that was a 3D model of the human body, where you coudl strip layers and interact in real time... all rendering pushed to the GPUs. That seemed cool to me. And they did it in a week.
I'm trying to understand why we have this disconnect.
But take a look at a place like CodeProject. People post their projects and write up an article describing the technical aspects of that project. It's actually a surprisingly strong community. In the past month ~500 written or updated. I actually tend to find this place more interesting than GitHub or CodePlex, due to the exposition.
What's your beef with jQuery? What better closed-source JavaScript libraries are there?
How is JSON even relevant to this discussion?
Why use the disaster that is Joomla as an example of open source when you could have picked any number of other good CMSs? Besides, Joomla uses MooTools, not jQuery.
Maybe you need to reevaluate the landscape.
I might be getting a chance to work with Dot Net Nuke soon. We'll see if a more commercially motivated CMS is any better.
Prepare to be disappointed.
I used DNN back in '08, and there were plenty of vulnerabilities if you peeked around in the code a bit.. The up side I guess was that they're rarely actually discovered, since there's not much of anyone paying attention.
Actually working with it was slow and tedious as well, really not an experience I'd like to relive (though for all I know it could have improved a lot in the past years.) When forced into using a .Net CMS I find that Umbraco can do the trick and be.. comparatively painless.
I'm not saying he shouldn't be excited for a change, but in a couple of years, who knows? Maybe he'll be checking out Haskell, and we'll hear about how great that is.
I've been a .net developer, mostly web - some desktop, since the first release. I am currently going through the interview process with a company that focuses on rails.
Part of me is excited, I've been wanting to get away from MS technologies for a couple of years now. Part of me wonders if I am going to miss the safety net of the compiler and IDE, and if the grass truely is greener. I started out doing perl/cgi and the asp/vbscript, so it almost seems like a step backwards tool wise, but with much better languages and libraries than I had the first time around.
If anyone has any insight, it would be much apprecaited.
I also dig how the local Rails environment shows you every call that's being made, plenty of solid logging integration, etc. Also the gems and other libraries being open source and freely available is great, and Ruby crushes C# with regards to Metaprogramming if you're going to go deep (which you probably will).
The debugging style is different but it's definitely several thousand leaps above ASP/VBScript. You'll be more than fine.
Are you referring to classic ASP? VS (for .NET) has great debugging features.
definitely several thousand leaps above ASP/VBScript
But still, I disagree with the choice of words in your comment. I used VS Interdev for classic ASP debugging in the past, and I find it sufficient enough. Yes, I'm sure there are other IDE/tools which can do more than Interdev, but I don't think it will be several thousand leaps.
You can say that again. It's also way behind Eclipse. It's amazing how good an IDE can be when you have a large corporation behind it (I.e. MS or IBM).
Once I started relying on my tests/specs to ensure my code was working properly I started to appreciate the beauty of the code I was able to write. I also started noticing the volume of code I _didn't_ have to write.
I think you'll find it a great step forward, good luck with the job hunt!
.net is a good platform, but the real problem is you have to wait for MS to develop something. For example before "asp.net mvc" there is no option to use mvc in MS world.
For me learning python/django was not a big pain; but running them on ubuntu is a real pain; and i think this is true for every ms developer who want to change his platform.
On linux platform options are great and there are lots self motivated developers and fun projects which is not true in the case of MS.
One more thing - lots of start-ups work on the non ms platform. Once people talk about asp.net mvc they only talk about http://stackoverflow.com/, but we can find more successful example in rails, or django or php; which makes every ms developer on back-foot.
PS: I love c#, asp.net mvc and VS as a developer tools.
Were you active there? Did you contribute something? Did you commit fixes/features. No, you did not. But of course you do contribute to the complaining.
(to be fair, I'd probably do the same thing, and I bet most of us would too)
Having said that, I couldn't agree more regarding the community. When MVC came out my only excitement about it -- given that I had been doing something better with .NET for closing on a decade -- was that the default baseline would hopefully be better than the terrible abomination that is WebForms (a construct either made to cripple web development, or to hold the hands of Visual Basic developers with a big viewstate diaper). But otherwise the excitement was hard to accept because it wasn't like it was actually something new, or something that you couldn't already do yourself with minimal effort. I'm seeing the same thing with some of the concurrency additions in .NET 4, where some trivial constructs are blessed with some syntactical sugar and it's treated like it's a new revolution in development.
Which brings up another oddity of the .NET community in general: There is a tendency to embrace and vigorously adopt whatever abstraction Microsoft grunts out, regardless of merit or actual value that it adds. The simplest need becomes layers of poorly contrived, poor fitting abstractions, where developers instead of asking "why should I use this?" instead are too busy worrying about "why didn't you use that?" The former question is much more valuable, but the latter is the defensive reaction of too many. LINQ is such a tool that is, in my mind, used for evil far more than good, but because it's a part of the gamut you have to mash it in wherever possible.
On the other hand try getting a job in a decent company based on tech that is also a Microsoft partner and you'll be torn into pieces with the questions about deep platform understanding.
I'm not talking about outliers. I am talking about the majority of the user base, with few exceptions. To put a bit of a bigoted statement into this, let me say that traditionally Microsoft had several development streams, with the least talented, least motivated career developers finding the Visual Basic stream. The streams converged and it is all the worse for it.
To use the search engine "index", it's a quick way to gauge how frequently a user base dares to go outside of the trivial. With .NET I am frequently amazed when I'm trying to do something remotely complex and in looking for people discussing the topic, find nothing but a few unanswered questions via search engines. It has always disturbed me, and it in essence speaks to the linked article's point.
I think the word we are looking for is "fan club". A community participates, a fan adopts and loves. A community is bidirectional. Whatever interaction happens around Microsoft's products is not. It's interaction between fans, not between the fan and the object or the creator of its devotion.
All of this is accurate, and he's wise for leaving .NET
It's just not the environment or kind of people you'd prefer to work with, given better communities and concentrations of driven programmers you could be working with.
ASP.NET MVC is probably in the top 3 web frameworks created, and WebForms is not that bad either. ViewState/Page-Lifecycle - you can use this or not - it is up to you. You can always do the HTML5 stuff in ASP.NET too, and most of the code is jQuery now anyway, so why the big fuss?
And what do you mean there is no community around ASP.NET? Have you heard about StackOverflow? The majority of the devs are ASP.NET developers there, with ASP.NET and C#/Javascript being the most tagged posts - literally every single question gets answered asap.
And what's wrong with the 3rd party vendors? They exist, support and enhance the eco-system producing some great tools along the way. Like Rasharper. Like UI widgets. Like database tools. How many times have you seen an open source project with great potential just die because there was nobody to take over and maintain it? Understand - some companies have REAL business out there - not the next social this, web that average crap startups have on $0 revenue. They want REAL partners that they can rely on and WILL pay for that. Heck, you are paying $100K to your developers, why not pay $5K for a proven software and win some time/use the resources of the partner? What is the friggin' deal with that?
Grow up. Is it like mid-age crisis? You just need switching things now and then and trying to figure out the reasons? One of the top reasons I've seen companies fail is to switch technologies just for the sake of switching and "keeping it fun" - from a business point of view it is ridiculous to invest 8 years in a framework and then just switch, like that.
There is an HN Two Minutes Hate aspect to the steady march of "MS platforms stagnant / not supercool like the flavour of the week we're putting into production" posts getting voted into the front page. News about actual open source projects and cool stuff on C#/F#/.NET/Mono tends to languish / fail to hit front page, consistently. It's fair to call this out.
I'm not saying that open source is staggeringly vibrant and healthy on .NET, though it is making steady progress. I simply try to keep in mind that there is a whole wide world of workaday devs who punch a clock out there, and .NET has big reach into that world.
As for my comment being pointless, I agree. Shame on me. Won't happen again.
EDIT: Upvoting you for busting me on my hypocrisy.