<story><title>Why I Left the .NET Framework</title><url>http://blog.jonathanoliver.com/why-i-left-dot-net</url></story><parent_chain></parent_chain><comment><author>scottc</author><text>It needs to be mentioned, if not for comments here then at least the comments on his own blog, that the author was not someone who simply dabbled in .NET and is trying to bash it for the sake of bashing something. The author, Johnathan Oliver (no, not that one), is an absolute authority on distributed architecture and created what became one of the biggest open-source projects in .NET (&lt;a href=&quot;https://github.com/NEventStore/NEventStore&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;NEventStore&amp;#x2F;NEventStore&lt;/a&gt; - originally joliver&amp;#x2F;eventstore).&lt;p&gt;His work had a significant impact on my adoption of CQRS and Event Sourcing, patterns that are becoming very popular in Java, Scala, .NET, and to my surprise, Node. I&amp;#x27;ve been happily programming in python for the last year and happy to see CQRS is starting to get more recognition in the community. I&amp;#x27;m going to do what I can to help build its momentum, but it certainly doesn&amp;#x27;t have the same adoption compared to the .NET community.&lt;p&gt;So, when someone who has done so much work in the framework starts to question it, I will certainly give their opinion some thought instead of firing a retort:&lt;p&gt;&amp;gt; &lt;i&gt;It&amp;#x27;s OK to rant but at least get your facts straight. The rest of your rant looks quite foolish as well. For example, firing up a Windows VM is rather fast if you try it in Azure.&lt;/i&gt;</text></comment>
<story><title>Why I Left the .NET Framework</title><url>http://blog.jonathanoliver.com/why-i-left-dot-net</url></story><parent_chain></parent_chain><comment><author>com2kid</author><text>Some really good criticisms, but I do wonder how long ago this developer left .NET.&lt;p&gt;.NET is now heavily async based. WPF may have started it years ago, but async has been a keyword in the language for quite awhile! (I haven&amp;#x27;t used a proper lock in ages. Event queues are where it is at! Or pick your favorite paradigm, heck the framework comes with thread pools built in that it&amp;#x27;ll juggle for you!)&lt;p&gt;In regards to .csproj and .sln files, they serve the same purpose as make files. .csproj files (and .*proj files in general) are incredibly powerful, you do not even need to use Visual Studio with them. They interact with MSBuild to do some insanely extensible things.&lt;p&gt;That said, merging .sln files is horrible, the bloody file format has an element that is a count of project element nodes in that same solution file, if two people try to check in a new project to a solution at the same time, the project count field gets corrupted and life gets seriously un-fun. :( The SLN file has a number of other issues as well, ugh! But .csproj files are pretty nifty, no worse than any other makefile replacement.&lt;p&gt;As for Visual Studio, I run it just fine on my Ultrabook! Huge project, it works well. Not perfect, but good enough. VS2013 fixed some very blatent threading bugs that VS2012 had in its UI (oops!) and things are generally snappier now.&lt;p&gt;Oh and VS support for git has been around for awhile. :) TFS also has really good git support, it has been improving with every version and it is now at a really good place.&lt;p&gt;All in all though, some very good points of criticism! No programming language ecosystem is perfect! (Disclaimer: I m mostly use .NET for client apps, I haven&amp;#x27;t done server .NET stuff since 2.0!)</text></comment>