Slashdot Mirror


Ask Slashdot: Is an Open Source .NET Up To the Job?

Rob Y. writes: The discussion on Slashdot about Microsoft's move to open source .NET core has centered on:

1. whether this means Microsoft is no longer the enemy of the open source movement
2. if not, then does it mean Microsoft has so lost in the web server arena that it's resorting to desperate moves.
3. or nah — it's standard Microsoft operating procedure. Embrace, extend, extinguish.

What I'd like to ask is whether anybody that's not currently a .NET fan actually wants to use it? Open source or not. What is the competition? Java? PHP? Ruby? Node.js? All of the above? Anything but Microsoft? Because as an OSS advocate, I see only one serious reason to even consider using it — standardization. Any of those competing platforms could be as good or better, but the problem is: how to get a job in this industry when there are so many massively complex platforms out there. I'm still coding in C, and at 62, will probably live out my working days doing that. But I can still remember when learning a new programming language was no big deal. Even C required learning a fairly large library to make it useful, but it's nothing compared to what's out there today. And worse, jobs (and technologies) don't last like they used to. Odds are, in a few years, you'll be starting over in yet another job where they use something else.

Employers love standardization. Choosing a standard means you can't be blamed for your choice. Choosing a standard means you can recruit young, cheap developers and actually get some output from them before they move on. Or you can outsource with some hope of success (because that's what outsourcing firms do — recruit young, cheap devs and rotate them around). To me, those are red flags — not pluses at all. But they're undeniable pluses to greedy employers. Of course, there's much more to being an effective developer than knowing the platform so you can be easily slotted in to a project. But try telling that to the private equity guys running too much of the show these days.

So, assuming Microsoft is sincere about this open source move,
1. Is .NET up to the job?
2. Is there an open source choice today that's popular enough to be considered the standard that employers would like?
3. If the answer to 1 is yes and 2 is no, make the argument for avoiding .NET.

11 of 421 comments (clear)

  1. Why bother? by BarbaraHudson · · Score: 3, Informative

    If you're already using something that works (and who isn't), what's the motivation to change?

    --
    "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
    1. Re:Why bother? by Frosty+Piss · · Score: 3, Informative

      If you're already using something that works (and who isn't), what's the motivation to change?

      As much as the Slashdot Hardcore might hate it, .NET has a huge presence in "enterprise" software and IT. It behooves one to know something about it, it's a popular too that might get you a job... On the other hand, there are many still on the Java boat.

      --
      If you want news from today, you have to come back tomorrow.
    2. Re:Why bother? by Anonymous Coward · · Score: 4, Informative

      Two words: Visual Studio. As a tool for productivity, Visual Studio is the best debugger out there and has been for 25 years. And it runs on Windows, which is the desktop OS of choice as far as corporate America is concerned. Particularly for IT managers at businesses outside the software industry, that looks mighty attractive when they're deciding on a platform for their inhouse apps. .NET is as good or better than Java for most purposes and the managers don't care about the FOSS ideology and Microsoft's past antitrust abuses, at least not when they're wearing their company hats.

    3. Re:Why bother? by curmudgeon99 · · Score: 4, Informative

      Java is killing it all around the United States. My company just had me rewrite a series of apps to remove the entire MS stack from .NET to SQLServer.

    4. Re:Why bother? by rjstanford · · Score: 4, Informative

      Its not the language, its the libraries, the conventions, the external resources. I picked up Ruby and Python, Node and even dusted off my PHP chops to write some modules for a client a few months ago. It wasn't hard, but I spent 20% of my time on the language, 50% figuring out what libraries to use, and another 30% making damn sure that my novice attempts were at least idiomatic and didn't come across as novice (including having them vetted by more seasoned users).

      Anyone can write a for() loop in anything. Knowing the massive standard libraries for a language well enough to leverage them (for example, in Java I still see people dragging in external Base64 implementations that haven't been needed in a decade but once were) takes far, far longer.

      I want people to write clean code that will be well understood and maintainable by others 5 years from now, not someone who just figures out how to get code to compile.

      --
      You're special forces then? That's great! I just love your olympics!
    5. Re:Why bother? by ahabswhale · · Score: 4, Informative

      In my city (Minneapolis) Java (and other JVM languages) completely dominates. I would guess most cities end up leaning one way or the other.

      --
      Are agnostics skeptical of unicorns too?
    6. Re: Why bother? by ljw1004 · · Score: 4, Informative

      Ok. Does that mean the full Visual Studio is free as well? Cost is the main hindrance for adoption of it anyway.

      Yes it is free. "Visual Studio Community Edition" it's called.

  2. Re:MS has been late to every recent tech movement by Anonymous Coward · · Score: 5, Informative

    So much misinformation.

    1) Angular is NOT node dependent, at all. We use it with our own custom .NET web server (libuv + libcurl + our own HTTP stack), with no special support for angular at all (which is a purely client side DSL for web applications built on top of ECMA262, DOM Level 3/4, and a few HTML5 WG specs like a modern Selectors & History API).

    2) You can deploy traditional .NET (ASP.NET / MVC) servers any which way you want too, you can develop on OSX, deploy to Mono on Linux in an EC2 instance, or you can deploy to an IIS instance anywhere you want as well.

    3) You're mixing up technologies, .NET is an brand for the implementation of the CLI & BCL (ECMA specifications (just like JavaScript) that form the framework that is the basis of most MSIL VMs, eg: Mono and .NET's various VMs on windows).

    4) You're tying in ASP.NET / MVC in with .NET in general, however with the exception of M$ shops - anyone writing large scale web servers in .NET is certainly NOT using ASP.NET (horribly stateful, not amazingly efficient), and certainly not plain ASP.NET (they're augmenting it w/ Kestrel or whatever) - they're using an owin compatible server like Katana, Nowin, etc - and using frameworks like Nancy or SimpleWeb, which are the .NET equivilents of Node.js w/ koa or express.

    P.S. I run a .net web service running on FreeBSD on AWS (using Mono) that servers ~300,000 concurrent users at any point in time, not quite 1 million requests/minute on average 24/7 (a barely successful iOS app, enough to sustain a small software company).

  3. Its all about THE CLOUD by furry_wookie · · Score: 1, Informative

    What people don't get is this. Microsoft is totally being left out of the cloud.

    The fact is that no cloud provider wants to keep track of licenses, so all cloud platforms, all the new and exciting PaaS platforms etc. are based on ALL OPEN SOURCE. And there is a reason for this.

    When you are offering a system that can fire up nodes and destroy them dynamically and on-demand, its just not worth it to have to keep track of some piece of that being commercially licensed and all the restrictions you end up with on your freedom to fire up new nodes on demand etc..

    Microsoft has been totally shut out of the cloud offerings and PaaS developments out there because licensed software slows you down and restricts all the freedoms to be dynamic in a cloud world that makes it attractive in the first place.

    Maybe if open source .Net takes off we will see it begin to become another offering by cloud providers and as part of popular PaaS platforms.

    --
    -- Given enough time and money, Microsoft will eventualy invent UNIX.
  4. Re:Sort of, I don't know, I don't see the advantag by ahabswhale · · Score: 3, Informative

    There's no doubt C# is a nicer language to work in that Java but so is just about everything. Java is simply dated. However, there's nothing stopping you from using other JVM languages (like Groovy which is extremely easy to learn for a Java dev).

    --
    Are agnostics skeptical of unicorns too?
  5. Re:I'm Using C++ by toejam13 · · Score: 4, Informative

    The C standard library provides an API to all your system resources.

    The C standard library (libC) provides a very basic API to some of your system resources. You have to include a large number of other libraries in order to obtain a feature set similar to the Java and .NET frameworks.

    And in addition to the IO, thread and math limitations that the AC above touches on, there are several other major problems facing the core C libraries: wchar support, qword support, socket support and overflow safe functions. There has been significant balkanization between the BSD, GNU and Microsoft camps on these topics, making cross platform development difficult. I've written a lot of wrapper code over the years dealing with the issue.

    The nice part about the Java and .NET frameworks is that they eliminate most of the problems I mentioned and several of the issues the AC brought up.

    But I do still find the C libraries, Java framework and .NET framework all lacking. They're good for about 80% of all cases, but I seem to find myself thumping on the native APIs far more than I thought I should. I'm really annoyed at how often I find myself using PInovoke under C#.

    My hope is that with the Core .NET moving off to the open source camp, maybe Microsoft can start focusing on adding C# bindings for the rest of WinAPI. The day I can write code without having to use a PInvoke is the day I'll stop writing C/C++ code.