The dying platform: .Net

15May13

For the last few years I have been writing code in C#. I think C# and .net are great tools to write software. I find that C# is exactly where I need it to be, I can do low level when I need to work with pretty high level abstraction (ish). However the world (unfortunately) doesn’t do what I want and it feels like the momentum .net had is certainty fading.

These are some reasons why I think this is happening (not all related directly to programing)

  1. Inherent hatred for Microsoft and anything it does, even if it is good. I think is pretty sad since I see this attitude from people that should be objective from a technical standpoint, licensing can’t always be an issue.
  2. Windows 8 and WinRT with it’s confusing .net support. It doesn’t help when it comes to .net developers either. It seems like their intention was to bring in the “cool kids(?)” but with that they alienated the people that supported them.
  3. All the windows phones, and particularly the WP7 fail (no update path for win 8). It is fail from a commercial standpoint and from developer support, how can you spend any significant amount of time with a platform that you don’t know is going to be there in a year or if there is any support for it.
  4. Half arsed open sourcing, by this I mean, you can read the code but no thanks, we don’t take pull requests Sad smile.Also, the very common not invented here that MS keeps doing (Monorail vs MVC, Nunit vs MStest, NHibernate vs EF, and many others ).
  5. Tablets and the fact that MS doesn’t have a significant share on any of this, so for many the digital experience is via apple or android.
  6. For me, killing XNA. A great SDK, suddenly abandoned. Why? no one ever gave a reason I can remember (can you?) 
  7. XBOX vnext rumoured online only putting a nail on the XBOX coffin.

What could save it  (maybe)

  1. Strangely, Xamarin because of their amazing mobile tools based on mono . Unity helps too, but I do wonder about what they have in mind for the future
  2. Aliens?
Advertisements


41 Responses to “The dying platform: .Net”

  1. 1 Dom

    I am not sure this is the case except in niche areas and in the minds of loud tweeters and bloggers.

    A massive proportion of the silent majority are quite happily using .NET and have no plans to change. I think the majority of .NET development happens nowhere near Windows 8 / Phone 7 apps, nor do the average .NET software house or large company develop for the Xbox (which I must say, losing XNA is a massive mistake still).

    I’d guess this is why the jobs market is packed full of adverts for .NET devs and there aren’t quite so many node, ruby and python adverts (not that I don’t love those languages!!).

  2. *smiles* All is not lost! Recently, The ASP.NET team (re-)announced their commitment to open source (http://www.asp.net/open-source), including accepting pull requests. Xamarin is going strong with its commitment to .NET as a platform for iOS, Android and Mac. And the community that is Mono is continually broadening the .NET platform, making it available to everything from Raspberry PIs to PlayStations.

    .NET is not dying. It’s reinventing itself.

  3. I used to be a .NET dev, but I came to the realization that it sucks to write software that can only be run on a small subset of the world’s machines. Sure, mono exists, but it’s just not that performant.

    C# is a great language — I hope it survives. Visual Studio is the best IDE I’ve ever used. But the limitations and licensing costs of running on a windows platform are just too much.

  4. On Error Continue Next

    So often we are blind, perhaps willingly, to the technologies being used behind the enterprise curtain. .Net is a big part of larger company’s ad-hoc needs, especially where it fits in with the nearly, and sadly, ubiquitous world of Sharepoint. Saying .net is dying is like saying that no one uses VBA anymore. For better or worse, these technologies will be around for as long as large corporation remain Microsoft shops.

  5. Nonsense – .NET is still massive in the enterprise market. It’s very unusual (at least in the UK) for corporate development to be done with anything else

  6. 6 Siphr

    As far as I am concerned this was a dead platform to begin with. c# was amusing though. Not trolling its just an opinion.

  7. I went to a Windows 8 app meetup yesterday and I think they’re doing everything they can to catch up in the mobile development space (connecting with developer community, office hours at their Cambridge office, sponsoring groups, $100 for each app a developer publishes, etc…).

    I think since they were making so much money with licensing Windows, they never realized the potential for mobile or someone at Microsoft must have said that they would not be able to make money licensing operating systems for mobile. Look at Apple and Android, you never have to pay for a new license to upgrade your os.

    I’m interested in doing something with the Windows Phone, but I’m not sure where they’re headed. For example, it’s required to have Windows 8 to develop apps for the Windows 8 phone. The same way, are you going to need Windows 9 for Windows 9 phones, etc…? So again, they want to make profits licensing their os.

  8. 8 Abe

    My personal hesitancy to use Microsoft software development products is due to the reasons you mention, especially my dislike of investing time in learning a closed, single-OS (yes, I know it *can* be run on other OSes, but it’s really only a “first class citizen” on Windows) development stack.

    As other commenters have mentioned there are currently lots of jobs for .Net developers, but I think you’re right: .Net is fading. You’re not the only one who feels this way. It might take 10-20 years, but open-source is the future. Developers want to invest their time in mastering tools that aren’t controlled by one almighty entity. At least that’s how I feel.

    I recognize that C#, F#, the .Net libraries, ASP.Net, etc. are excellent technology but until Microsoft moves .NET in its entirety to opensource, I’m not interested. Until then I’ll learn Ruby, Python, Clojure, Go, Java, Scala, etc… not because they’re better than Microsoft products, but because the ecosystem built up around them is much richer and more diverse because of the openness of the languages themselves.

    Plus I’ll admit that it chafes to think how much Microsoft charges for the tools to effectively use .NET. Not that the tools aren’t excellent, but come on, you a *required* to buy MSDN subscriptions (worthless to me and my employer) AND there’s no way to justify a $13,000 startup cost + $4250/year cost. This means that small startups (22 people) like I work for simply can’t afford to use anything more than Visual Studio Express.

    Bottom-line: I’m focusing on investing in opensource and I see many others doing the same thing.

  9. 9 Abe

    I agree with the author and Kenny Katzgrau. Mono really isn’t much of an option: buggy, and not nearly as user friendly as Visual Studio or many other IDEs which exist for other opensource languages. In essence, even though if you’re really determined you *can* use .NET on Mac and Linux, it’s still really only a “first class citizen” on Windows. Until this changes, and Microsoft gets real about pricing for Visual Studio, I have no interest in investing my time in learning any of their tech even though I acknowledge it as robust and generally excellent. There are other equally excellent languages and IDEs to learn which aren’t constrained to Windows and which don’t cost an arm and a leg.

    As Kenny says, the limitations and licensing costs of running on the Windows platform are way too high for many startups and small businesses. When I launch my products, they’ll be built on robust opensource technology that is affordable. Nothing Microsoft does is “affordable” these days.

    If Microsoft were to take everything opensource (like, for reals), invest in making their platform truly ubiquitious, and get more reasonable about their pricing, I’d enthusiastically jump onto the .NET bandwagon.

  10. 10 Sameer

    In the corporate world ,where XBOX and XNA don’t matter as much, we are doing very well. I don’t see it going anywhere, anytime soon.

  11. There are 2 languages we don’t really need: Java and C#(.NET) !!!
    there are the two common denominators as long coding goes. and that’s exactly what you get. it is the one wheel fit all model, which never worked and never will!

    Why?
    To start with the “prototyping”. Java+.NET are both fail compared to dynamic languages, IMO the true prototyping languages! no compile, no hussle edit-continue works by default , by design, where edit-continue has a list of restrictions larger in volume than the bible. there is more…

    How about production?
    about Java: the infamous write once debug everywhere 😦
    about .Net: the truth is, all ‘innovation’ is also applicable to other lang/framework, without the hassle of proprietary software and in case of MS-tech without the convolution…

    the thing is. any solution in C++ (not optimized) is better perf wise. the reason XNA didn’t cut it is because DirectX-manged is SLOW! compared to optimized(c++) it is crazy slow. C# does give you much space to breath and optimize it is what it is….

    “I’d guess this is why the jobs market is packed full of adverts for .NET devs”
    come on now. we all know why that is and it is not due to merits but $ alone!

    I’m using C# since 2001, beta!
    it was a good alt to Java at the time, but now if I hear TFS I will be running faster than any HR can 😀

  12. I work in extremely high transaction volume systems in the financial industry. .NET is a joke here. Nobody uses Windows servers for anything but Sharepoint and Exchange. SQL server is deprecated. Red Hat Linux is the standard server OS. Mono does not cut it.

  13. As I know you know as I know you => .net is a nice mature high performance platform… It’s got this far and robust that I don’t see it going away anytime soon.

    C# is a very solid and powerful language, and will live on targeting many frameworks and platforms. E.g. I don’t see trading platforms being written in JavaScript targeting WinRT somehow.

    Haters gonna hate.. I come across pro and anti MS Zealots everyday, each of their opinions as naive as the other. I’ve never cared much for those who are religious about any given technology as it blinds people to the truth.. ya know.. there is no spoon.

    .NET is just as present in businesses as ever, it’s just not the hot shit anymore with those who give a shit beyond their 9-5… I think many of the once very passionate developers in the .net space have got bored or have become boring and irrelevant… The fire in the belly that I saw online, at many events and conferences over the past 6 years has definitely started to dwindle out and people are looking elsewhere to their code junky fixes.. just the nature of the game. This as well as the plethora of mediocre content diluting the really cool stuff that .net has to offer is why I think people are getting this idea that .net is on the way out or nothing special to start with.

    In many use cases .net is really not the ‘right’ tool for the job. Most of the tools you are presented with out of the box just over complicate things + it is not the cost effective choice, for many reasons beyond licensing costs. It has to be said it does have its place and probably will for years to come.

    How awesome is the TPL, LINQ (:expressions) and RX? These are the things that make me smile when I’m in c# land. ASP.NET, WCF, WF not so much.

  14. 14 john

    open source is a good platform indeed, .net is losing the chance to be strong

  15. 15 roundcrisis

    Thanks so much for all the comments. I am truly amazed at the response this post got
    For the record, yes I am still using C# and .Net and will be for a long long time.

  16. 16 zbrook

    Why we need .NET?It means work.It means someone’s life.

  17. 17 ___

    Microsoft’s .net platform is dead. Mono, on the other hand, is thriving and growing. Microsoft technology aside, c# is a good, mature language with tons of expressive features. The library ecosystem it can tap into is vast.

    It’s surprising how effective the anti-microsoft camp is in shouting down a good language. I started using Unity3D 2 years ago, which has extensive support for c# and uses mono and mono mobile for cross-platform development. Originally, I thought it was going to suck because it’s microsoft. Slowly, I came to realize just how powerful the language and libraries are. And the best part is, you don’t need a licence to use any of it, thanks to Mono.

    @Kenny – “mono exists, but it’s just not that performant.”
    Tell that to Unity 3d.

    @Abe there’s a difference between mono and MonoDevelop. MonoDevelop is a piece of shit IDE. It’s why it’s no longer being supported. Xamarin, it’s non-free successor, is considerably faster and less buggy. If it’s too expensive for you, use vim (I do). Mono, the compiler and runtime, is plenty performant and solidly developed.

    @snookasnoo You’re right, .net isn’t good for high volume transaction systems. Neither is Java, which is the go to backend language for a shit ton of the web. What’s your point?

  18. The technology plays an important part with regards to web-based applications..Net development and the platform have presented me with several opportunities to create efficient software solutions.

  19. 19 realist

    Simple, Microsoft’s horrid anti-consumer business tactics have caused people to make them irrelevant and they are desperately trying to bail the water out of their sinking ship. I am not a fan of duplication of efforts for the sake of diversity either. True there is a tool for every job but that doesn’t mean you need 100,000 tools. I don’t think any one language fits all applications but there are plenty of languages out there that aren’t attached at the hip to a monopolistic corporation. Also Microsoft’s closed ecosystem approach has inherently made them slow and less innovative. Microsoft is hanging on to a dying business model just like the MPAA/RIAA. In the end, the market will force them to adapt or die. Unfortunately for all of you .net developers it looks like they are choosing to die a slow painful public death. You better start adapting now or you may end up bleeding out with them…

  20. As soon as Microsoft forced their clunky virtual machine between the developer and the processor, they sealed their own fate. All .NET was ever intended to do was gradually limit what future generations of developers would have the power to do.

  21. 21 Andy C

    Switched from .NET to opensource 2 years ago and haven’t looked back… javascript, coffeescript, livescript, jade, stylus, backbone, mongodb, mongoose, nodejs, express, nib, casperjs, phantomjs, underscore, browserify, git, etc, etc…

  22. 22 Daniel B

    Wow! Lots of opinions. It won’t die unless Microsoft abandons it. I just hope they don’t, I really like C# and the .NET framework. I wrote a C parser in C# and was amazed at how fast it was in spite of running on a virtual machine.
    — my 2 cents

  23. 23 James Sheedy

    C# is a great language, VB not so much. .NET has and always will play a losing battle to Java in the enterprise space. From my many years of experience in government and corporate this sway to the J side usually comes down to the ability to have legitimate choice between application servers, operating systems, datastores, IDEs, Middleware etc. Microsoft have unfortunately made it hard for CTOs and Architects to make decisions in their favor by generally forcing you down an all or none path, it seems more and more the market is choosing the none. I re-iterate C# is a great language, so thanks Anders 🙂

  24. 24 rubi

    Or maybe c#,java,… and their keens arent really languages, but scripts. Really, with the world trying to go greener, and with less powered devices (phones tablets) sing an interpreted language, which spares the cpu like it was growing on a fuckin tree. You c sharp guys just dont know c++ which frightens you so much. but in the end c++ is the only place where high level, low level, diverse language tools, 100% utilization of cpu and less platform dependecies meet.

    c++ rules! and yes im a belliever 😉

  25. 25 Nik Pfirsig

    I stumbled onto this site when I googled C# sucks out of frustration. with a bit of C# idiocy. Since the pointy head bosses at corporate have decreed .NET as the company standard, Old perl hackers like me are in the position of self training in C#, ASP.Net and SQLServer or facing a new job hunt in an incredibly down economy.
    Anywho, after an update to VS2012 software, something broke. and a ridiculously simple bit of C# code that simply recasts text from ASP controls to custom class properties bombs in runtime.

    After reading through the responses I thought I would add some observations and opinions:

    Way back around 1990, Sun Microsystems developed what would become Java. My understanding is that the design goals were many. Object oriented, capable of targeting a variety of hardware platforms, network centric optimizations. The main idea was the creation of a network aware distributed runtime environment that was platform agnostic.
    When Sun managed this, it was a threat to Microsoft business model as at that time MS was just recognizing that the web could adversely threaten their near monopoly.
    Ms first attempted their “Embrace, Extend and De-commoditize” approach to counter the Java threat. This involved contracting for the rights to develop a windows version of the JVM, then adding in MS copyrighted functions that were incompatible with the JVM as a means of leveraging their vast customer base against the java platform.

    Sun recognized MS ‘s strategy, sued Microsoft and won. Microsoft had to drop their Windows centric Java clone (J++) So Microsoft declared war on Sun and the . NET initiative was born.
    MS started to rewrite J++ with the advice of their legal and marketing departments. MS spun the virtual machine concept as the innovation calling it the Common Language Runtime (though it was functionally similar to the Java Virtual Machine, with some tweaks to avoid patent restrictions. )

    Like the CLR, the JVM can be targeted by many languages, In fact, a cursory search indicates there are more programming languages available for the JVM than for the CLR. This is spin on the order of “I kept punching him in the fist with my face, but it didn’t phase him!”

    VB.NET is very much unlike tradition Visual Basic. Thanks to the common language specification, most .NET languages are very similar to C# in syntax, while recognizing keywords from non dot net implementations. These other language implementations lack the full functionality of C#, largely due the the close co-development of C# and dot net.

    I suspect that, if MS sees the internet as less of a threat to their profits, they may lose interest in supporting .NET. That may be starting to happen.

    On a side note: Whenever I read or hear statements like “(***) is not an object oriented language like C#, I immediately know that person is unfamiliar with language (***). The only requirement for for a language to support object oriented programming is a compiler that can produce re-entrant, relocatable code, which is one of many reason Java uses a virtual machine. Not all common embedded processors directly support re entrant code

  26. 26 Bill

    Use Delphi. .Net is a dumb platform.

  27. 27 zz portugal

    Wow how ms fucks time and up again… w did u learn ms specific language in the first place? Stick to cross platform and you would never fall again. Whether qt or marmalade and never those crappy objc c# java etc…

    C++ rules 🙂 And always will be !

    C# java objc & v8 all drag along useless language featurs like: rtti interpreters slowtohell garbage collection… and with all that dont have 1/3 of the language features in c++. For example preprocessing and true templates.

    All in all just stick with c++ and you will nevr find urself in a mess ur in now…

    BTW I for instance never wasted my time on .net in the first place.. because it was clear to me that this is just another job security for ms devs.. lets make another language this year…

    Last: VM/intrpreters like c#/vb# are not green. Why waste the power of the cpu on a stupid interpreyer that is useless??

  28. 28 Daniel B

    @Bill

    Have you tried .NET? I tried Delphi (and C++ Builder) when it first came out and liked it, but then Borland failed to follow up on its own success. If you think .NET is dying, how much chance does Embarcadero have for its products?

    Anders Heylsberg was chief architect of Delphi and then left Borland and developed .NET and C# for Microsoft. Same architect, similar architecture. Building a .NET program is very similar to building a Delphi program.

  29. 29 Bill

    Hi Daniel, good to see someone educated on .net and delphi. I have in fact tried .Net, it is a morph of Delphi and Java. It is not native windows and requires a .Net installation in the client of a specific version. I do not have anything against the language, but I do with its platform. I am not comfortable with requiring a properly configured .Net framework installed in the client. It presents a massive point of failure. We have had a server unrepairable, or at least too much work to repair, because of incompatibilities of .net applications with the installed / configured version of .net. I am also not comfortable with the lifespan of .Net – it will eventually be not supported. I have apps that have been running for 10+ years on each new version of windows. Win32 is an enduring and stable platform. The final issue is that it is not native, if you want to create an isapi DLL it is not practical to try it, instead you need to write a plugin for ASP. In Delphi I can create an ISAPI that has no dependencies on the Server or its versions so long as it supports standard ISAPI. With that I am able to do tricky things such as my ISAPI Loader and ISAPI Host tool (http://www.eggcentric.com). I feel like I have a straight jacket on with .Net. The whole contraption is unnecessary overhead.

  30. 30 Daniel B

    Thanks for the reply Bill. I agree there are shortcomings with .NET and Microsoft hasn’t done a good job with capitalizing on the advantages of a VM (cross platform capability, CPU independence, etc.). Mixed mode (part native, part .NET) programs are another area of weakness for .NET. This can be seen when porting to 64 bit. A mixed mode library creates a difficulty because Microsoft hasn’t written a 64 bit form designer. When the library is moved to 64 bit, no visual design can be done because of this problem. It can be worked around, but the solution is kind of a kludgy.

    I think this sort of thing is Microsoft’s current weakness. They’ve gone in so many directions that they haven’t perfected anything. They need to refocus.

    I know Microsoft has been abandoning a number of their products, I just hope they don’t abandon .NET. I also hope that Delphi and C++ Builder don’t disappear. Competition helps keep things healthy.

  31. 31 Bill

    Delphi is, in system terms, a reinforced feedback loop causing it to lose market. Employers do not want to use Delphi because there are too few Delphi programmers and there are less new Delphi programmers because there are fewer jobs.

    I think to turn this around, we need more Delphi programmers – they may come from School or hobbyist, and in the case of a hobbyist it needs to be financially accessible.

    An idea is to give away Delphi for some sufficient time period to create a huge user base, then that creates a potential base for employers.

    .Net is also in a loop, programmers wanting a job choose .Net and since there are enough .Net programmers then employers are more likely to choose .Net.

    It just bugs me, why did .Net take a lead to begin with? Many people do not know about Delphi.

  32. 32 Daniel B

    I think C++ Builder has a better chance of survival than Delphi because Pascal is Delphi’s heritage. I don’t know many programmers that use or have used Pascal. I do know a lot of programmers that use C++.

    I think Borland may have had one chance at getting VCL/Delphi/C++ Builder to be the popular development IDE. Maybe they lost their chance when Anders left – I don’t know.

    One group of our products is developed in the Microsoft IDE because it is aimed at developer’s. We want to make sure we are compatible with the biggest market (we have both a C/C++ and .NET product). Symantec’s and Borland’s C++ compilers had already lost to Microsoft when I started there in 1996. We’ve had a few requests (less than 5 that I know of) for compatibility with other compilers over the years, but that is it.

  33. I dont see any advantages to C# over Java. It has many of the same limitations, but it isn’t Portable (not really anyway). Why would anybody ever use C# over Java, all things being equal? I think that is the big reason it is dying.

  34. 34 roundcrisis

    Hi, thanks for the comment. I can’t say I agree with you, I find java extremely verbose, it’s only saving grace it’s all the languages that run on top of the JVM.

    Not portable? How do you mean? It is possible to run c# in pretty much any device at least I use (via Xamarin for iOs and Android)
    Cheers

  35. 35 rubi

    Both Java and C# have the following drawbacks, not found in C++:
    1. SLOW as HELL.. Did you see how long does it take for visual studio to load these days? even on a super computer.. same goes to eclipse. To compare with ol’ VS6 that would start up in a snap even on a very slow machine. Now I guess you would say that it’s a bad comparison, but I have been there back at the days VS 2003 came out (and the ugly .net has started it’s way) and it was a shocking difference. Modern C# is just a little less horrible. And, as we all know same goes to almost any C#/Java desktop application out there.. Slow, irresponsive… not green – Let’s overkill the CPU with useless ops just because we need a language that even less then mediocre people could use (ahhh pointers !! oh no!!).
    2. Both lack 2 most important features: Macro’s and templates. So, you don’t have macros which means you cant have short easy to use log macro’s which encapsulate allot of information, you can support multiplatform code, you cannot turn off features at compile time (most problematic with security issues, as you cannot simply cancel portions of the code that expose confidential details) … Templates simply make your code works faster, and provide cool work reduction capabilities. Again, from management point of view this is a drawback, because templates are so complicated, we could never ask our engineers to use (?!)
    3. C++ is everywhere, low level -> high level, GUI (responsive, versatile), it’s shared among __ALL__ operating systems, simply because you can’t do anything clever without it. So we got large database of open source code, java/c# devs can only dream about.
    4. You don’t need to provide low level stuff in a different DLL, or JNI, or “unmanaged code” which is not even supported on some MS os’s like windows phone 7.x .. This gives freedom to the developer to delve into lower realtime/system programming (like Sound/RTP in VoIP…) without the need to do all kinds of manipulations, and get messed up marshaling parameters to someone else’s code (written in C++ .. )
    5. Garbage collection is not as helpful as thought by Java/.Net users. Not at all, and has far too many drawbacks, to name a few: a. it’s slowish, consuming far more memory than “unmanaged code” would. b. It’s prone to memory leaks when projects become more complex than a simple utility. c. A newbie in Java for instance would find it very hard to understand where all these reference go to? Soft reference? Hard reference? OMG?! I would stick with plain old pointers, one would say..
    6. Not cross platform compatible. iOS do not support java (and there’s were most of the code goes these days..) C# supported via all kinds of unofficial open source project (xamarin – mono).

    A real platform? Qt: C++ with UI rendered with OpenGL. Available on ALL operating systems. One code!

  36. I was on .NET for years… have since switched to iOS/Android. I’ve pretty much done it all in .NET – WPF, WinForms, ASP.NET, ASP.NET MVC, WCF.

    I have to tell you after working with other platforms and languages, WPF/WinRT/Surface/Silverlight is for the birds. WCF is still fairly robust, but it lacks some fundamental features that are inherent to web services (yes I get that it caters to different types of services). ASP.NET, well I cannot comment on that since I haven’t programmed in it for many years.

    Microsoft is in serious trouble in the developer community, and I for one will never look back (at least not for awhile). MVVM? Really? Serialization is an absolute nightmare… but I get it… legacy support, no control over hardware support, etc.

    IMO the only positive development platform coming out of MS is Azure (which is really nice btw).

  37. 37 Marco

    I think the future of web is HTML5, JavaScript frameworks, Java.

  38. 38 Bill

    Thats the present, not necessarily the future. The future is increasing levels of abstraction, doing more with less. If you can predict the future technology, then it should be the present technology.


  1. 1 将死的平台:.Net | 小胤's Blog
  2. 2 将死的平台:.Net | ChinaCPU 资讯网
  3. 3 将死的平台:.Net | 天天三国杀

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: