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.

12 of 421 comments (clear)

  1. Re:Why bother? by Kagetsuki · · Score: 3, Insightful

    .NET is slowly beeing weeded out of the enterprise though and that's a trend I don't want to see diminished by devs picking up .NET because it's now "open source". It's OK to hate .NET, open source or not.

  2. Re:Why bother? by BarbaraHudson · · Score: 5, Insightful

    I think you missed my point, so please allow me to elaborate. For someone who wants to go from Windows to other platforms, an open-source .NET makes sense, but only if their code is already in .NET.

    For people who are already using toolchains other than .NET that support their products on multiple platforms, there's no reason to switch. It's just "re-implementing the wheel" with another language.

    And since the official Java implementation is open source (OpenJDK) and has been for years, why not just stick with it if you're already using it? So really, the majority of people who aren't already using .NET have no real reason to switch.

    --
    "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
  3. Re:Why bother? by jd2112 · · Score: 5, Insightful

    .NET is slowly beeing weeded out of the enterprise though and that's a trend I don't want to see diminished by devs picking up .NET because it's now "open source". It's OK to hate .NET, open source or not.

    Citation please? I've been seeing a gradual increase in .NET development, And I get called frequently by headhunters looking for .NET developers despite that software development is not my primary job function.

    --
    Any insufficiently advanced magic is indistinguishable from technology.
  4. Re:MS has been late to every recent tech movement by steelfood · · Score: 4, Insightful

    This is a result of their past transgressions coming back to haunt them. Over the past 15 years, they've managed to alienate practically everybody. They've burned everyone who's worked with them, including vendors, partners, and now with Windows 8, application developers, server administrators, and general users.

    Their reputation precedes them. Nobody trusts them. People are avoiding anything by Microsoft. If it wasn't for Windows Server and Active Directory, Office, and to a lesser extent, SQL Server, and Visual Studio, everyone would have long switched away from Microsoft products.

    Their tactics worked in the 90's because there were so many small players that they could take advantage of, and people were largely ignorant of Microsoft's dirty actions. Today, there are a few major players, all of whom are well-known and liked by their users and partners. They're not just competing with Microsoft on technology, but also on reputation as well. People are showing their willingness to deal with a bit of inconvenience in using (arguably) slightly inferior enterprise solutions over the potential risks of being locked in and screwed over by a company with a history of doing so.

    Oracle is starting to feel this too. Anti-competitive behavior is being punished. Oracle still has a stranglehold on enterprise databases, but that's eroding very quickly. Look what's happening to Java and even more so, OpenOffice and MySQL.

    --
    "If a nation expects to be ignorant and free in a state of civilization, it expects what never was and never will be."
  5. Re:Microsoft is adapting to a new role by Anonymous Coward · · Score: 0, Insightful

    As for .Net, I used it briefly some years ago and wasn't impressed. Compared to Java, they decided that exceptions don't need to be declared, so you have to look up in the documentation which exceptions you have to handle. However, the documentation doesn't list all exceptions that can be thrown. So I have no idea how one would do proper error handling in .Net.

    I get the feeling that you don't know how to do proper error handling in any language if you can't do it in C#. Anders Hjelsberg has explained, in detail, why C# does not contain checked exceptions and the explanation is eminently practical. How often, when "handling" an exception, do you actually do anything? What happens when a library adds a new type of exception to a method (hint: this is like a broken interface)? How do checked exceptions scale in large systems?

    Another thing that bothered me is that the documentation consists mostly of examples. However, if I read documentation I don't want a code fragment to copy-paste, I want to read the specification for a particular method. In particular, how it handles edge cases. That information was usually missing. Of course you can test the behavior, but there is no guarantee the next release will have the same behavior if the behavior was never documented. All in all, it didn't feel like a good platform for writing reliable applications.

    I encourage you to check out MSDN, because this is simply untrue. The documentation of common classes and methods often includes a small code sample, but that's hardly the focus.

  6. Re:Why bother? by Anonymous Coward · · Score: 1, Insightful

    And the primary argument against .NET is that it is a Microsoft product

    Which is a stupid argument. Judge the product by the product, not its maker.

  7. Re:Why bother? by DuckDodgers · · Score: 5, Insightful

    .NET performance isn't better, I don't know where you got that from. .NET startup is better - non-Micro-Edition versions of the Java Virtual Machine load the whole Java language standard library at startup, and it's a pretty big standard library, so it is slower and uses more memory than a .NET application at startup. But the Java Virtual Machine has the HotSpot ( https://en.wikipedia.org/wiki/... ) which does runtime alteration and optimization of code. What that means is that for long-running code - which is of course the common case for web servers - the Java Virtual Machine monitors the execution profile of methods and once a method is executed around 10,000 times it will examine it and if it can find common cases or frequently used code paths it will dynamically rewrite the method or inline it to make it faster. As far as I know, .NET has nothing similar - performance never changes.

    The Java Virtual Machine is also a runtime. .NET supports C#, VB.net, F#, Nemerle, and a number of other languages. The Java Virtual Machine supports Java, Ruby, Python, Groovy, Scala, Clojure, Scheme (Kawa), Lisp (ABCL), Javascript, and a number of other languages.

    And last but most importantly, it's been more than five years since I rejected Microsoft options out of hand for technical reasons. But I still reject them for ethical ones. This is a company that intentionally modified APIs to break third party applications, lied about software releases and features to hurt competitors, made business deals that are illegal under US anti-trust law with OEMs to block competition, waged countless FUD campaigns throughout its life, and wields its intellectual property resources like a weapon of mass economic destruction to squash innovative competitors. Where would the world technology industry be today if we didn't have this trillion dollar parasite doing more work than any other factor to stifle competition?

  8. your information is 20 years out of date by raymorris · · Score: 5, Insightful

    You're comparing 1990s Apache to 2013 IIS. If you care to know what your talking about, you may wish to have another look to too what has changed in the last 10-20 years. Here's one example that's not only way out of date, but also wrong even for that time period :

    > why is Apache still spawning processes for every request that comes in... don't they realize the overhead of that??).

    Prior to the release'of Apache 2.0 in 2000 (fourteen years ago), Apache pre-spawned a group of processes and each process would handle one request AT A TIME. It never spawned a process for each request, it had a pool of processes that were reused. Pretty much just like how modern browsers now run separate tabs in separate processes. The #1 reason for that was to allow Apache to use libraries (like GD) that weren't thread safe. If Apache were multi-thread rather than multi-process, you couldn't use those libraries.

    Note also that Apache was designed for SERVER operating systems like Unix, Linux, and BSD, not for a desktop OS. On a server OS, forking a few processes at startup isn't that resource intensive- far less intensive that preloading IE and Office at startup.

    Of course like everything in Apache, the multiprocessing is done by a module, so you can still use processes rather than threads if you want to. You can do that and by choosing sane settings for the number of spare processes you won't fork new ones more than a few per hour.

    > A lot of the performance reasons that are behind people switching from Apache to Nginx

    I tested this very thoroughly. 90% of the performance difference of Nginx, which only occurs on some systems, is that it essentially forced noatime, regardless of the administrator's selection of mount options. Back when noatime wasn't the default, less-knowledgeable admins who didn't know to use noatime would see a significant performance benefit from Nginx vs Apache. Knowledgeable admins would mount with noatime, and find that Apache and Nginx performance was almost identical. Knowledgeable admins would also comment out the 90% of available modules they don't use, like mod_speling, and set MaxClients etc appropriately. With a reasonable configuration, Apache can give better performance than Nginx, depending on which benchmark you choose. In all cases, Apache provides more PREDICTABLE performance because it actually works as documented, while Nginx has documentation copy-pasted from elsewhere, but their code isn't actually the same as server they copy-pasted documentation from.

  9. Re:Why bother? by LostMyBeaver · · Score: 2, Insightful

    In my city, PHP completely dominates... that is of course unless I look at things asking for skills other than PHP.

    I did a few searches on Monster.com and found that Java and .NET are about the same. There is however a single employer posting way more java jobs in Minneapolis.

    This is actually not meant to be a troll or rude, but having traveled 42 states and 60+ countries, Minneapolis, while being an amazing place and a diamond in the rough was strangely, from an employment perspective, one of the most unusual places I encountered in my travels. I've been an instructor (ever since I found out that it pays much more to talk about working than actually working) and have met people everywhere. I felt like engineers in Minneapolis were much more likely to be happy with less overall ambition. It's an odd generalization, possibly more poorly researched than your own, but it struck me as if engineers were just another cog in the machine and many of the engineers I encountered adopted an almost Scandinavian lifestyle of working to live instead of living to work.

    While here in Oslo, Noway I consider that the norm or the average, in the U.S., I consider it highly unusual and somehow a little scary.

    My point is, that I feel that Minneapolis from my perspective probably should never be used as an example of "normal". There are some special things which make Minneapolis a wonderful place to live. In fact, if it weren't for the impressively awful weather (which makes Norway look warm), I would love to live there... as long as I didn't need to work there.

  10. Re:Why bother? by ToasterMonkey · · Score: 2, Insightful

    but if the Apple model had prevailed, I think technology would not be as far along. But it's impossible to say what if.

    That's a silly thing to say. If Apple wasn't around, what would desktop PC makers have looked up to the past fifteen years?

    We'd have had PS2 connectors, floppy drives, beige boxes, flaky suspend/resume, x86 BIOS, 32-bit processors, no built-in 3D acceleration, no built-in WiFi, 100mb ethernet, etc. for even LONGER than we did. Do you remember having to buy PCI-USB cards, PCI WiFi adaptors, unaccelerated desktop interfaces, rolling the dice on resume from sleep, PS2/USB converters?? I do.

    What exactly is this technology-retarding "Apple model" in your mind? Sorry man, it's just silly to hear something along the lines of "if Apple prevailed, we wouldn't have nice things" when they have been the lead in most of the nice things PCs have. If Apple prevailed... IDK, MAYBE Dell would have made nice computers sooner and we'd still be where we are at today?

  11. Re:Why bother? by Jeeeb · · Score: 5, Insightful

    Your reply is also somewhat confusing to me. I don't think you've actually looked into the issue. .NET popularity has gone downhill as more developers want to use more dynamic and developer-oriented solutions which are almost invariably open source. This is an actual trend; a real statistic, and essentially the reason why MS went ahead and open sourced .NET.

    If it is a real trend and a real statistic then please link to some reference for this. I'm interested to see. Maybe I'm not very good at Google searches but I cannot find any reliable statistics to support this.

    As for C and .NET you can use .NET quite easily with C. Even if your project is strictly in C#, if you know C I doubt you'd have much trouble with C# (other than maybe getting the hang of good-practices?).

    I code mostly in C++ and C# and have no trouble at all with C#. It's one of my favourite languages. My post however was not about myself, I was paraphrasing the original question, as perhaps I've missed something but the statement "why you are asking for citation when the whole discussion is sort of based on this issue" is completely at odds with how I read the original question - i.e. (very much paraphrasing here) 'Should I learn C# it seems to be the way forward'

    Though even if your interpretation of the original question is correct, it would still not seem unreasonable to ask for a reference to support the statement that .NET is losing popularity. The only evidence of this "fact" I can see on this thread is mis-matched anecdotes, hence my reply to your post.

  12. WPF by Joey+Vegetables · · Score: 4, Insightful

    I was surprised that the WPF issue has not been discussed more. Aside from C#, which is a sweet little language in most respects, and still ahead of Java IMO, WPF is the other fairly unique thing that .NET Microsoft brings to the table. It has no real parallel for the rich- or smart-client use case. (Mozilla's XUL is perhaps the most directly comparable FOSS technology.) And it is NOT being open-sourced. In fact, instead of throwing its weight behind a single WPF / XAML implementation, Microsoft allowed it to fragment between Silverlight (deprecated), WPF (supported only in the most lackluster fashion), and the client component of WinRT (Windows 8 only). This may in fact prove to be the opening needed for the modern HTML5 stack to become the preferred rich- and smart-client deployment technology even for desktop and laptop form factors. In that case it would also rapidly eat away at the very last piece of the technology business that Microsoft dominates.