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.
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.
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.
Which is probably more important than anything else. The benefit of open sourcing .net core is that mono will get better. So if you have a lot of existing .net code and want to get away from ms licensing, at least ms will keep the dev tool revenue.
I've been a cross-platform coder for about a decade now. I liked the ideas of Java and .NET when they came out, but they were lacking in execution. If you look at everything powering technology today: Big Data, Node.js, Android/iOS, cloud remember (Hotmail was bought by MS, originally on BSD servers) Microsoft hasn't done squat. Meanwhile MS has delivered a lot of failed tech: WinForms, Zune, Windows Phone. (I've only ever seen two people with a Windows Phone) Only the Xbox and .NET have succeeded. I would be very concerned hitching my trailer to MS. They don't do innovation anymore, they don't even do copying (embrace and extend) well.
A big .NET friend of mine has recently taken to web development. He develops on OSX, deploys to Linux (AWS). He loves how he can take one thing and just run it on another. He doesn't have to worry about putting IIS on Linux, Node works everywhere. The code he develops isn't tied to any specific OS platform. Angular is node dependent, but Knockout isn't.
And there in I think the real danger is realized. If you use .NET you are locked into MS stagnant mono-culture, and their failing culture of innovation. If you want bleeding edge, OS agnosticism, MS isn't going to deliver it. Their goal will always be to lock you into their vertical to protect their verticals.
With the very good developments in Linux and the Apple premium is gone, only organizations with legacy applications need consider any Microsoft technology.
PS. I use Qt for everything on Mobile and desktop, Node for server and Knockout/Angular for web client. There is a slight possibility that Qt's QML will work on the web. Python for anything else. This is crossplatform, and not one drop of MS. It is my speculation that MS is a wounded animal, realizing they are like Cadillac. Cadillac realized the average age of their customers were getting older, and over 60 and that market would be no longer driving in a few years. There's an exodus from MS platforms. Their new focus aims to fix this. Buyer beware. Where is the money in it for them?
Slashdot's rate-of-post filter: Preventing you from posting too many great ideas at once.
.NET is a runtime environment, not a language. You won't get worthwhile answers because your questions are broken.
I work at a funded startup in the Seattle area and we've had several .NET (C#) developer positions open for several months now. We rarely even get applicants and the ones we get rarely pass a basic phone screen.
No way would we discriminate on age. The talent pool from what we've seen is crap.
i think you'll find you're wrong about the C standard library being "nothing compared to what's out there". If it seems that way, you probably haven't learned enough about the C standard library. The C standard library provides an API to all your system resources. You can take full control of the hardware with the library. Things you never thought to ask if you could do. Most programmers, in my experience, never get much past the system("rm ...") stage. I've been doing maintenance programming for 25 years now and every fucking C program I've ever had to maintain has had one of those somewhere in the code. It makes me wish I could reach back in time through my monitor to slap someone.
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
How come "Ask Slashdot" posts always boil down to "give me some ammunition for an argument with my boss" ?
Sheesh, evil *and* a jerk. -- Jade
I think Microsoft is adapting to being one of several vendors instead of being a dominant force. They have to play better with others because they don't have the market power they had 10 years ago.
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.
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.
We've given them hundreds of chances already, and they've abused us every single time, ...but this time will be different, I'm sure of it. Just look at those big sincere eyes. Let's give them one more chance.
Seriously, get up to speed with your vernacular first. .NET is a branded CLI runtime, not a language - and perhaps more importantly not all apps/libs built for the CLI are necessarily compatible (you can write some perfectly elegant F# libraries that are a pain to use in C#, Boo, or IronPython - or worse, semantically broken w.r.t. common paradigms used in those latter languages).
Secondly, and I should note, I'm actually a C/C++/assembly developer (embedded systems / machine learning / computer vision mostly - most of my job is hand optimizing code to the instruction, manually deforesting data structures and optimizing cache coherency and memory access patterns, etc) - so I'm not at all a .NET zealot.
But secondly, .NET has been plenty capable for quite some time - there's this operating system, with millions of developers primarily using .NET now days, that has market dominance - writing business applications, web services, and hell - entire IaaS platforms, using just .NET.
There's entire companies built around it, providing cross platform technology for games (Unity), mobile application development (Xamarin), IaaS (Microsoft's Azure), there's even entire games built in it (eg: The Sims 3, set genre world records in sales) - all of which are decent products (even if they don't appeal to you).
What kind of a fool are you to have dribbled this shit? Did you think at all about the current state of the development world before presenting this question, seriously? How hard is it to use Google and figure out current trends, weigh up the pros/cons, etc for yourself?
For someone who's been around 62 years, you don't seem to understand human behaviour nor development patterns and trends very well. People will use the best tool for the job, what constitutes as 'best tool' depends very much on individual needs - standardisation is one very small part for a lot of companies (especially larger ones w/ enough in house expertise to do whatever they need doing).
Ignoring all of that, your entire premise is a generalisation about employers - presumably biased on your own personal history.
Not all employers prefer standardization if it means making sacrifices, not all employers are naive enough to think following the crowd absolves them of making the wrong choice, and there's even employers who would never even consider outsourcing. Greedy employers or not, some employers are smart enough to make their own decisions based on their own requirements - not based purely on projected monetary balance sheets in 'perfect world' scenarios.
if open source makes em money, they will open source
if not, not
what is so hard about that
the idea that MS cares about anything else is so stupid, its like [insert julie brown song]
Embracing and Extending open source has already been done. Following this with a third step requires abandoning what you've already embraced and extended in favor of closed source software.
And with the past events (e.g. systemd, Firefox bloat, etc.) FOSS is more likely to self-destruct than be wiped out by a single company, and there will still be a person who's willing to archive the latest versions of the major packages in hopes that someone picks them up later to fix or update them. Either that or start from scratch and not make the same mistakes done in previous eras of software development.
Sounds great, especially if we can program .NET in the eclipse IDE and run on Linux.
I'd sooner trust Oracle with Java than Microsoft with .NET...
What's the *reason* to get tied to a framework anyways? Write RESTful (or QueryAPI?) stuffs, and just ignore the whole implementation issue... each component could be written in whatever is best for that component (e.g. do a quick prototype of everything in Perl, pieces that talk to the database in Java, etc.). No need to get tied to 'the hot new thing'.
(especially to .NET running on Linux, urgh. Unless Microsoft developers use Linux boxes as their "main" machines, I wouldn't really expect much out of them as far as non-Microsoft crap).
I don't see much advantage to switching languages if the existing one works. .NET is by far the easiest of those listed to be productive in, but it requires buying into the MS server platform: the cost of that is pretty much the only advantage the others all have, other than religious feelings about free software. There are enough web developers and Linux sysadmins available that there is no real reason to pay for Windows licenses except to develop a little faster, not the sort of thing the business types notice.
An open source .NET has obvious advantages for everyone, especially Mono, and I'm very happy about it. I don't see it changing anything quickly, but their market share will undoubtedly rise.
The old gray beards today might say the same with IBM or Digital but once market forces correct a monopoly the company either whithers or adapts.
Doesn't mean MS is no different than any other corporation even if that opinion is unpopular here on slashdot. Timewarner/AT&T/Comcast are far more evil and God forbid what Jobs would have in store if Apple won the Pc wars in the 1980s and achieved 90% marketshare! MS would be tame in comparison.
Under a free market people play nice or loose out.
Today I like Microsoft even though I hated them hence my name 13 years ago. Here are the facts in late 2014 .NET and lots of frameworks
1. IE is not a bad browser anymore. It used to be both feared and loathed in the old days as it was a threat to win32 applications. Today they no longer will ever have the control they did in 2004 when you needed to go to a library to use IE 6 if you used a mac or linux to fill out job apps. Yes I remember doing that. Monster.com was optimized for IE 6 quirks back then.IE 11 is modern and has great debugging tools and behaves like a real browser behaves and has the best security with sandboxing. IE 12 will even have an add-on framework ala Chrome/Firefox. I use adblock on IE today
2. Visual Studio 2015 supports Android and Linux Xiarmin development?? No I am lying. Go google it as emulators are included including CLANG support.
3. Office is available for Android and IOS. Full suite is coming soon
4. MS more liberal with pricing for non corporations. Google VS Community edition. It is pro and free!
5. MS is opening sourcing
6. Azure supports non win32 operating systems.
7. MS is putting more effort in security and stabilizing and fixing bugs now that competition exists.
Am I a fanboy? No. I am agnostic this day but I find MS getting much better and if it were not for Metro I would be a fan even of their desktop products. Windows 7 is a very stable desktop oriented OS. It is not and I repeat not the POS slashdotters who have not run Windows in 15 years remember.
MS woke up and realized oh shoot. IOS and Android are eating our lunch! Eclipse will eat our lunch! Amazon will eat our lunch! Firefox and now I should say Chrome has eating our lunch! Ms has so much competition today on so many fronts it can't go back and use leverage of a monopoly in one area for another. Blocking Android on Windows? Who cares about Windows blah. Block W3C standards iwth IE? Fine I will use another browser etc.
This was unthinkable in 1999. So Linux did not win the desktop wars like we hoped but open source software did win everything else. Browsers are competitive. Mobile operating systems competitive. Development environments are competitive. Clouds and virtual services for legacy win32 apps scare the crap out of them so soon if mega corps want to leave they can.
MS is done. I welcome the new MS. As some (I did not say all folks) products are fairly decent and play well with others.
http://saveie6.com/
Every person that has owned or owns a Zune loves it. They had pretty good reviews as well. Bleeding edge is not a good thing BTW.
Only the State obtains its revenue by coercion. - Murray Rothbard
So I like C# as a language, even though I continue to work in Java. It feels a little more modern than Java and offers some interesting features. Sometimes I read about something in C# and think 'that's a nice, elegant approach,' but the language isn't the only piece. In my case I use Spring quite a bit, and although there's a Spring for .NET, I haven't really dabbled with it but looking at it, it seems less developed than Spring for Java/Groovy. I could learn the .NET framework libraries, but not everything will truly be cross platform. I did some COM and C++ programming on Win 32, so I realize there are some APIs which Microsoft uses which may not have a portable equivalent, so I don't expect .NET to be 100% cross platform on all APIs.
I'm pretty handy with Java and Spring and I'm able to deliver with that stack. Having done some C#, I feel they are largely equivalent in terms of expressive power. It seems like some things (the workflow API for example) that are better integrated than equivalent Java solutions, but I feel like I'd be swapping one platform for a largely equivalent platform. It would take me a good deal of work and time to become as proficient in C# as I am in Java, but I don't think I'd necessarily be more effective as a developer. (Switching from a mid-sized Honda sedan to a mid-sized Toyota sedan probably won't get you anywhere faster).
I would say 80% of my clients have a Unix/Linux flavor to their infrastructure. While I can write Java apps and deploy them on Windows, the same isn't really true for .NET. In addition, even if .NET were 100% cross platform, most of the customers I work with want supported software. They often buy gold or platinum level support with their infrastructure products so any Linux .NET platform would have to either be covered by their existing OS support contracts or through a third party willing to sell support. Even they would probably insist that .NET apps are deployed on Windows because that's what they know and can support.
I think it's great that Microsoft is open-sourcing their .NET code and I hope it make life better/easier/more interesting for other devs out there, but from my stand point I don't see any great benefit in making the switch.
I don't think that the comments on this thread, or that of the original post take the whole picture into consideration. From my perspective, being working with .NET for 10 years; or since it came out I have several thoughts on this. .NET to me was a Java competitor, and thus I think they were pushing the idea that it would run on Linux in the future; and that was a big reason for me to start developing using it, as previous to .NET I had been doing much of my work on Linux with PHP etc. It has been sad to see that this promise was never met (until now). .NET and embrace the technology that is there. They have done an amazing job with Visual Studio as well as the runtime and language. .NET running on linux and having as much of the framework ported over as well. In order to do that they needed the source code for .NET so that they could just run their compilers on top of it. So that programmers could have insurances that code would run in the same manner on both platforms. This has been quite transparent; but there are other wings in Microsoft that have also been moving to open standards such as WebAPI, where they have taken away the need for IIS, and everything is handled via common interfaces; which shows foresight into all these decisions.
First, the idea of
Second, there is a reason why I continue to use
But to start talking about the why, you have to dig into what has been going on in our industry for the past couple years. First Amazon, and now Microsoft have cloud offerings. Microsoft is now running ~25% of the servers on Azure are Linux OS's; which is a huge change (publicly) for them. Their CEO knows that 'cloud' is how the company is going to operate going forward; every strategy they have has a piece of this underlying it.
So, to come back to why now... There has been mounting pressure from Mono (internal and external) to get
But, for me the real reason this is the time; and that Microsoft is not going to back down on it is the single most important truth about running data centers; Power Consumption. As Azure grows to the largest cloud offering on the planet, they need to ensure that they can run as many things as cheaply as possible; and at some level Windows is not going to cut it. It might get them really far in some areas, but in micro servers running virtualized operating systems with stripped down Linux kernels there is a huge amount of money. And even if this ends up being a fraction of the servers on Azure they will save millions in operational costs, and keep competitive with Amazon.
In the early 2000's I agonized about choosing Java or .NET to focus my career on. I ultimately chose Java because I'm an advocate of Free Software and open source software, I like using Linux and BSD, I own a Mac, etc. and Java seemed like the obvious choice. I do not regret that decision. There are many open source frameworks and libraries for anything you can think of in Java which is very helpful. The Oracle bought BEA Systems and Sun Microsystems and then merged the JVMs from the two companies into one GPL licensed JVM. The same JVM is used everywhere: Linux, BSD, Solaris, OSX, Windows, etc. The Java language and platform has progressed a lot in recent years, especially with Java 8, Java EE 7 and Java FX. Some Java people prefer working in other JVM languages such as Scala, JRuby, etc. but I really like Java. Features that are missing will eventually come to Java, like all the stuff that came in Java 8 (closures, streaming collections, new date & time API, etc.)
I don't know .NET or C#, just what I hear from those that love to bash Java. With the open sourcing of .NET, I wonder how far they've gone. Is it the exact same runtime used on Windows, now fully open sourced like the JVM? Was the entire .NET platform open sourced, or just a subset? Doesn't .NET require IIS to run web apps? How will you run a .NET web app on Linux? In the Java world, the entire platform and runtimes are open source. You can run the same Java SE, FX and EE apps and application servers on any operating system. If you're the type that hates open source then you can choose commercial versions too (IBM J9 JVM, WebSphere, etc.)
Embrace, Extend, Extinguish.
Sure considering a year ago, *cough cough* Xbox one *cough* was locked up and was pissing off all the consumers *cough* with their *cough* games. Oh and its not like Windows 8 is any better. Give me a break, Microsoft is going down hill if anything.
You're just making stuff up there aren't you?
> 2. Is there an open source choice today that's popular enough to be considered the standard that employers would like?
I think this poster is really asking the wrong questions. There are lots of different choices that are all popular, depending on what you want to do. Web development? Java, PHP, and Node are all fairly popular. Android development? That means Java. iOS? It's Objective C and/or Swift. Windows? It's C#. Cross platform game engines? C++. There are good reasons for those differences. You really don't want to try writing web applications in C++, or game engines in PHP. But in every case, there are existing options that are "up to the job" and, in most cases, open source.
Until now, C# and .NET were basically Windows-only technologies, and that held them back. (Yes there was Mono, but it was never more than the unloved step child.) With that changing, it now becomes plausible to use it for more things. Whether it's "up to the job" in those other fields has to be decided on technical grounds. Whether it will manage to take "market share" away from other technologies is partly a technical question, but more a political one.
> Choosing a standard means you can recruit young, cheap developers and actually get some output from them before they move on.
It also means you can recruit experienced developers who already know the technology. Standardization isn't just about being able to exploit people!
"I'm too busy to research this and form an educated opinion, but I do have time to tell everyone my uninformed opinion."
The open source parts are incomplete. Are there resources fixing bugs? Is there a DotNet roadmap? What's the plan?
Wine does great. Install the DotNet runtime and Bob's yer uncle.
Rob like someone mention earlier, C# along with the whole (or many of the) Microsoft products portfolio is heavily used on the Enterprise. There are a couple of exceptions like many ISP which use Open Source alternatives to reduce operational costs, like thousands of Outlook licenses for example.
And when a company operates on Microsoft systems, then is very common that they look to non Microsoft products with a little doubt. Because those smaller companies have sometimes gone bankrupt, or products get discontinued and unsupported. Also there is a more common belief that under Windows MS products will be more stable and will endure the test of time better than non MS software. And maybe is true, considering examples like Visual Basic 6 that still works these days. Outdated, but gets the job done.
Only companies that work with mixed environments will actually have a need to look for other multi platform solutions like PHP, Python, Lua, Ruby, etc.
Consumer products have moved to Android and for a couple of reasons. Beginning with the bad history of old Windows Phones crashing around, and the reject of the tile system. But that's on personal devices. Still companies use computers, and computers are either Windows (about just everyone), Macs (artists), and Linux (Developers, and IT). Since Android (1) is not self hosting, and (2) do not run efficiently and good enough on computers, there is nowhere there to be found. Like I said in another thread, while Android requires another OS to develop, those legacy OS are going nowhere. They will lose market in consumer products, yes, but became extinct no. If they do, then also the Android market will stale, because there will be nothing to develop Android OS or apps with. Also haven't seen any Android Server edition, so in the enterprise Android will have only 2 roles... a digital notepad & remote email.
For C# to be a serious multi platform alternative Microsoft needs to make serious changes like:
Doubt any of them will happen, and that's why C# along with .Net is destined to fail as a standard.
But standard or no standard, at the end it depends on what OS platform the company you get contracted uses. But there is a very big change that if they use Microsoft products, you will end using either Visual Basic, C#, or both (or even Windows shell or VB scripts) to develop.
I have been in the field for almost 4 decades and I can tell you that Cobol is still being used by fortune 100 corporations all around the world
Does that mean Cobol gonna make a come back?
From what I understand about .NET is they only open sourced the server side parts. Not the stuff desktop apps would use. Obviously this is because Microsoft is most challenged for market share on servers so has less to lose by doing this, it hopes to cut into the share of other platforms. Microsoft is not giving up much and doing little or nothing to advance cross platform application support on the desktop, mostly maintaining the Windows vendor lockin where it has its monopoly, on desktops.
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.
Such a minimal amount of research required that you couldn't even post a link to it?
Anyone who tries to argue that "X is easier than Y"....especially when "easier" isn't measurable...that's a bad thing.
Look, Java was going down the tubes 3 years ago. I had serious doubts about it and was looking closely as Scala and other. Oracle is finally turning the development cycle of Java around. (How long was 1.6 around? Yikes!)
Security. Rolling eyes. Yeah, Java security on the client sucks and everyone is turning it off. Security on the server...whole different story.
Now: that said, there are STILL reasons to avoid Java. If you're doing web development, there's no reason (imo) to use Java anymore. (And that's why you'd have Apache Tomcat, Jetty (you missed that one) JBoss, Websphere, Weblogic or Glassfish.) Java is heavier weight than a node / php / or even ruby server (imo). .NET is better than Java for web development...but not better than node/php/etc. (Check out angular and ember)
That leaves backend processing. Frankly javascript is getting better here as well...java is still solid here. How good is .NET with anything other than SQLServer? (No idea...but I wouldn't bet on it.) And that's before we start talking about Spring and other libraries.
And then there's the fact that .NET requires Windows architecture. Frankly I run Linux for enterprise servers....and Mono doesn't cut it. That leaves Java or node/php/ruby.
Such extraordinary claims require only a little ordinary proof.
What people don't get is this. Microsoft is totally being left out of the cloud.
.Net takes off we will see it begin to become another offering by cloud providers and as part of popular PaaS platforms.
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
-- Given enough time and money, Microsoft will eventualy invent UNIX.
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?
If you choose windows as your OS for anything more important than managing your sisters doll collection you require psychiatric help. .Net only make sense on Windows.
This makes it much easier for them to buy out the competition.
Simply put, .net is _far_ to complex for the job. The .net framework binary is already much bigger than a typical Windows 2000 installation. You users are expected to install and maintain a huge framework. On the other side you don't really have much benefits. You have a mostly single vendor solution. Your software won't run on even on all 32 bit Windows machines.
If you want to do client applications look around you, there's plenty of alternatives. One example is Lazarus/Freepascal which compiles you statically linked binaries for most common operating systems. I have been starting and maintaining a software project for Linux, Win32 and MacOSX, and the difference in code is just a few lines. It simply works and on all platforms you get a binary you can just drag and drop. No installation required. Should there be a bug in a new version, the user can simply switch back to the old one.
If .net was any good, why doesn't Microsoft, the company most interested in it, offer Office for .net? They already do have Office for MacOSX.
What I'd like to ask is whether anybody that's not currently a .NET fan actually wants to use it?
As long as the argument is sound, why does a personal position matter?
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.
Competition based on what? What are you trying to accomplish?
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.
Ah. Maybe this is your real question, and it's not even in the form of a question. Except...
I'm still coding in C, and at 62, will probably live out my working days doing that.
Hmm, ok. Maybe that wasn't your question? Do you plan on working well into your 70s and 80s? Or is this really about attracting younger talent?
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.
Yes. This is the scourge of the tech industry. I loathe it because learning the syntax for control structures, objects, string libraries, I/O streams, threading, etc. for the Nth time isn't fun anymore; most languages that are invented are saddled with more problems than they purport to solve--how widely its used has no bearing on its engineering quality--and new frameworks are created and abandoned.
Even Microsoft, which is serious about supporting legacy code and backwards compatibility has fallen victim to this mindset. To combat this the smart decision makers wait around about 5 years or so, to see what actually sticks; although even this is no guarantee: The death-knoll of WPF (undeserved) and the slow death-spiral of Perl (well deserved) took longer than five years.
Which leads to...
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.
You definitely can be blamed for choosing a standard, and you should be blamed if you made a blatantly poor decision based on available facts.
.NET has horrible third party open source libraries, which is a major reason for picking java if you are working with server side code.
I work in the game industry where MS is still dominant so I use both runtimes. .NET on the client and java on the server. The norm for server side libraries is that java has half a dozen for any particular task, while you are lucky to find one on the .NET side. Try to find a good REST client and server in .NET that's open source, or the equivalent to the Akka platform, or any number of tools where in java we have multiple choices and in .NET it's hard to find one that's really good. And many times when you do find something that works, it's still hosted on google code. And don't even get me started on Nuget, the package management system .NET developers think is so great but sucks and is not even cross platform.
I didn't really understand how big of a difference there was until I started working in the game industry after 10 years working in the web industry. The ecosystems are just completely different and anyone who thinks .NET is a better choice for server side code is just plain ignorant, or they have a very niche case such as wanting to run the same code on client and server (which is often not the big win a lot of developers think it is).
I'm not a MS or .NET hater. I just don't think .NET is even close to being competitive on the server. For windows client side stuff it's a whole other story.
1. Is .NET up to the job?
Which job? The question needs better defined. If it is replacing every single other programming technology then the answer is simply No.
2. Is there an open source choice today that's popular enough to be considered the standard that employers would like?
Java is almost a drop in replacement for .Net. and has better cross platform support. Depsite being very popular, it has never gained universal acceptance. Often (for example) something like python, or C is a better choice depending on what you want to do and where you want to do it. I don't see .Net being any different.
3. If the answer to 1 is yes and 2 is no, make the argument for avoiding .NET.
You say 'avoiding' as if .Net is somehow automatically going to get rolled out everywhere like a steamroller. This is nonsense. Change is expensive and problematic, if you want people to start using .Net in areas where it is not currently dominant, you need a very compelling reason. If there is no 'standout' reasons, people will just stay with the status quo.
.Net is one of the best things to come out of microsoft (along with Excel and games), But it is firmly positioned as a windows application development tool, often tightly integrating with other windows components (such as Visual Studio, IIS), which means it is far less paletable when targetting non windows environments (for development OR deployment), or if you have a pre-existing architecture it has to integrate with. Being 'open source' doesn't magically fix interoperability issues.
.Net development work is actually asp.net for be-spoke apps), the server application code technology is decreasing in importance. JQuery and other client side technology is where all the progress is being made, the server code is often just a glorified access layer to a database.
I should say the c# is an excellent language and
Also in terms of web applications (most business
There is doubt Java is nicer to work with than C# for just about everything. Look the the fact I'm arguing about it with you makes you a liar, you want to say you find C# is better that's ok.
I have to do C# and Java at work all the time and I know my preference so go back to your Troll cave.
For the record I'm not calling C# rubbish it has its place.
C# is old. Look at statically compiled Groovy or Swift. Microsoft has no answer to that.
If you offer enough even the most ardent C# opponent will apply. What is the price of a soul nowadays anyway?
Time is what keeps everything from happening all at once.
Every software development company/community has its own sort of institutional brain damage. Microsoft is a standout in this respect because they are extremely stubborn, their brain damage is profound, and the most affected areas are large scale applications. Just a few examples.
SSIS is a mature product to be used by shops that among other things count real money of the real people. And you still cannot do basic software maintenance operations: dump its setting as human readable file, read settings from human readable/editable flat file, store settings in source control, compare two settings in human readable form.
For many years (do not know how it is right now) SQL-Server would delete transaction log as a part of a full backup, so there was no way to recover transactions between last transaction log backup and full backup.Would any serious person use SQL-Server to count real people money?
The problem with public .net is that anyone can hit some incarnation of this problem in the most unexpected time and in the most unexpected corner and the only solution will be to drop .net and start again because Microsoft is absolutely unmovable.
To me, .NET === Resource-Hog
At my place of employment, we implemented a number of .NET apps that were mostly just a wrapper-frontend to our websocket based main app. We can pretty much do the same thing using Chrome, but it was thought this would be easier for our clients to use. Unfortunately, we also run a resource heavy data-generating simulator on the PC along with the app. So we couldn't help notice that when we used the .NET app, the simulator would get starved out. On the other hand, when using a browser, there was no such problem. (BTW: I find this a little ironic as browsers were the original 800lb gorrila.)
So this leads one to wonder if one goal of .NET for MS wasn't to nudge up the number of server licenses, along with licenses for other MS products (IIS,SQL Server, ...)
1) the JVM itself is extremely battle tested now. There are even viable alternative JVMs. In terms of troubleshooting, reliability and management, the JVM is a non-issue. It's like the sun rising in the morning. .NET. Further, it seems that with the exception of a few guys like Brian Beckman, the smartest people in the world have made their choice: they do their work on top of the JVM. If you want to do massive streaming and/or parallel computing, you're going to turn to one or more top level Apache projects running on the JVM. .NET runtime and C#). Same deal with Windows Phone (answer to iOS), Silverlight (answer to Flash), and on and on. Here's the kicker: Microsoft's track record in keeping their promises is not good. If you tied your fortunes to MS tech initiatives in the last 15 years, you've lost a lot of time invested. Whereas with the JVM ecosystem, similar to the *nix ecosystem, everything you learn retains value. And the JVM ecosystem just evolves around problems and grows even more--whole branches don't go extinct as with the Microsoft / .NET ecosystem.
2) The knowledge base of solved problems, libraries, projects and skills for the JVM world dwarfs
3) Interestingly, the world of Java.next languages such as Groovy, Scala, Clojure is really getting traction. This is closely tied to #2, the smartest people in the world work in the JVM space. Clojure in particular is very nice, and you can deploy Clojure apps as Java jars, so in a stodgy big company setting, you can actually deliver.
4) Finally, a problem I've seen since with Microsoft over the years (still a problem) is that MS solutions tend to address a problem facing *Microsoft the company* but do not address problems facing *developers and customers*. MS is reactive. When Java began to shake up the scene, MS rushed to market with a "me too" version (the
TL;DR: Development is moving client side. Java/.NET are primarily backend, or will be soon and as such won't be as relevant, that's why .NET has been on the decline not Java. Get friendly with Javascript and : AngularJS or Backbone or Knockout and HTML/CSS.
.NET apps, but have had to aid with the development of middleware in Java. I've also released an iOS/Android app or two. So I've been around the block and don't have a preference really. The geographical area that I'm in right now is in heavy demand for .NET... so that's what I do for the most part because I'm greedy and like money, if you pay me more to write Java ... then I'll be singing its praises.
.NET vs Java vs. all as pretty much pointless, both platforms will cost you just as much since your cost is development/maintenance, both have advantages and disadvantages. The fact is that most development is moving client side. This methodology has several advantages, the most notable in my opinion is the distribution of load. So... take something like ASP.NET MVC or RoR, if your app generates a giant HTML response server side and mails that back via XHR you have just crapped on yourself and your client. First, you had to pay the cost of generating said payload, and second, the client has to wait for that bastard to be downloaded/displayed. ( All of this does not matter if you can't write an efficient query to save your life or spend a ton of time waiting on disk I/O or some vendor service call ) <- This is where NodeJS really shines...
... I've written far more JS than C# ... which is weird... lol
.NET a "back-end" platform, and even those two giants can be replaced by PHP, Ruby, NodeJS, etc. I would argue that its Google handing Microsoft their ass on a platter and not Oracle.... I suggest you concentrate on front end stuffs like Javascript and whatever frameworks are out there for that. Sharpen your UX/UI and people skills so you communicate with designers and BAs. I could code back-end stuff blindfolded, there's only so many ways to architect middleware, but making something that is usable and user friendly is an effing challenge. I've grown to have more respect for UX/UI folks than most, because a good designer is worth her/his weight in gold.
Here's my thoughts... for what it's worth. I've written apps in pretty much everything. I created a fairly large site in PHP, have been writing primarily
I see these discussions of
Anyway, it would be much more ideal to just mail back a model and allow the client side to worry about binding/display, etc. This is why you're seeing frameworks like AngularJS, Knockout, Backbone, etc. take off. They provide a better experience for the user and they have the added benefit of relieving some of the processing that takes place server side. The downside being that not all JS engines are created equal Chrome V8 > whatever the hell IE has. ( yes I know you have to consider user device, etc. and not reveal business logic/secrets in the front end, validate server side, bla bla bla ) I don't think that there is much argument that most development is moving to mobile/web... there are still inhouse apps for giant corporations and you could make a living at that... but a majority of the industry is moving away from that model. Even the inhouse apps are starting to be primarily webby. The project I'm on currently
SO! That being said... You can safely consider Java or
VS only got the ability to edit code in the debugger in 64bit mode this year!
.NET is now preferable in many ways. Oracle's deranged copyright claims to java interfaces really put the frighteners into legal in my company. Now we are umping java, just as fast as we can.
Exception handling isn't that different.
Java unchecked exceptions operate basically the same was as C#/.Net extensions. You catch them where you want in the call stack or it bubbles all the top.
People don't like checked exceptions because your code is filled with documentation about the types of problems it can have. Of course the alternative is you end up with catch Exception(e) code at boundaries which has its own problems.
There are dozens of languages that compile to the .NET CLI, including BASIC, C++, Ruby, PHP, Java, JavaScript, Python, Lisp, Pascal, Perl, Scheme, etc. C# is the most popular language to compile to the CLI, yes, but almost any other common language out there can be used too.
C# is really the only popular .Net language. Microsoft .Net spent time on C# while the Java / JVM crowd spent time building new languages.
THAT's funny, calling the Zune bleeding edge, not leading edge but BLEEDING edge. The only bleeding which went on was the billions Micrsoft bled to try and stop the Apple iPod. Too funny.
10 years ago Java and .NET were welcome solutions to solve the "DLL Hell" issues using COM/COM+ objects.
.NET can shift to Ruby/Python/JavaScript
.NET since Classic ASP days, I am so happy to see a shift in programming culture away from these "head in the cloud" frameworks.
.NET and Java is a barrier to maintainability and velocity of updates. .NET devs use Entity Framework? Because ADO.NET was sooo hard? *eye rolls*
But, they have grown into 100 tentacled beasts.
Way too many cooks in the kitchen.
Today, the only reason you would architect a new solution with these behemoth frameworks is because you were given no better choice (ergo, your team is entirely leftovers at an Enterprise who no longer have the drive to update their skillset: ergo --> you're working at a crappy non-IT organization.
Java can shift to Scala.
Having worked in
*nix philosophy had it right: build things that do 1 thing really well. Node.js follows this model and has had a huge success because of it.
Beyond that, writing a compiler is not something we have to rely on MS/Oracle to give us. There's literally no magic behind these curtains.
Lastly, the LoC measure, simple code footprint of
Why do
Just another solution where there wasn't a real problem.
Standardized frameworks equate to "greedy employers"?
What a foolish, idiotic question and pointless debate. You're clearly wrong. You have NO valid points or rationale.
Well, there's this old news.
lmgtfy
Then there is the XAML used for development now. Along that vein there is WPF, which is released in tandem with .Net, but is not actually .Net.
It may be they are not planning some new Next Big Thing, that will launch a whole new series of catch-up games like when they came out with .Net. However, I've been writing Windows applications since before the Windows 3.1 days, and have done my own share of following along as my code becomes obsolete as MS comes out with new development tools, and portation tools that simply don't work, requiring massive rewrites or writing new tools to do rewrites. Either way is a costly process. So, yes, I'm skeptical when Microsoft comes bringing Trojan Horse gifts.
It still is somewhat amazing to me, that time after time after time people fall for Microsoft promises and deals, only to find out too late, it was yet another Sun-Tzu Art of War trick. /.ers used to be smarter than this.
So, assuming Microsoft is sincere
That's a pretty fuckin' big assumption there, guy.
>BMO goes back to read the Halloween documents
The Easter Bunny, Santa Claus, A Sincere Microsoft Board Member, and a Rabbi (a Rabbi is required in every joke) come to a 4-way stop/intersection at the same time.
Who goes first?
The Rabbi, because the others don't fuckin' exist.
--
BMO
That is the only reason you would adopt an "open source" .Net/Fuck ...but forgive me for the rude interruption ... look at IE, look at MS-js,(and in case u r a geek) look at the wchar_t implementation of MS= NOTHING to do with standards (standards is 2 byte, for some $U&KING reason MS decided: Nah...screw them, 4 is good), look at MSRPC (rip off from onc/sun rpc, but naahhhh, we dont want msrpc to talk to sun rpc)
Honestly, thats exactly where i stopped reading
Microsofy does NOT standardize
what fucking standardization are you talking about!
You would be an idiot to believe they want to "integrate" with other techs...
rant over and out!
P.S. I haven't commented in /. for years, but you just pissed me off!
The lunatic is in my head
This sounds so much to me like arguments between other languages/frameworks. The participants are all reasonably popular and an argument can always be ginned up between adherents on either side:
C/C++/C#/Objective-C
PHP/Python/Perl
Ruby (with or w/o Rails)/JavaScript
Scala/Erlang/Dart
Cobol/Fortran/Pascal/Assembler
And I haven't even listed a dozen or three more languages that, at one time or another, were quite popular. dBase/Clipper/FoxPro, SmallTalk, BASIC, ColdFusion, ...
That pretty much says it for me.
C# is a hack of Visual Basic features onto C instead of using C++ and was done to E/E/E non-MSFT development for enterprise systems. .NET is a large part of that and it is just as big a mess as anything else MSFT has done. It is poorly thought out and a kludge.
I worked as a developer for 15 years. Mostly MS stack. Some Oracle & experience outside work with Java, PCP, C++. These are my thoughts.
1) I don't believe the statement - ".NET usage has been falling for many years now" - is true. It definitely isn't in my area (Tampa). As others have said, maybe some markets favor .net or Java. I need to see some unbiased research rather than random comments from MS haters or fanboys. All the job posting stats in an earlier comment mean to me is that there are plenty of .net & Java jobs right now.
2) My personal opinion is that MS open-sourced .net core because they finally accepted that they can't rely on the Windows OS client any more. Making .net cross-platform will help Azure and IMHO Windows server. That is the main reason. The world moved on & they needed to adapt. Only time will tell if this helps or not.
3) I worked in a Fortune 500 company and we have a mix of .net & Java. I suspect most Fortune 500 companies are similar.
4) Java is definitely much, much stronger in Enterprise level distributed app's than .net. This is MS's fault. Large distributed app's are more likely to be run on Unix or at least support Unix so that meant that MS software was not considered by default. This is unlikely to change much any time soon. Though the new cross-platform support may at least put .net on the radar for new initiatives.
5) Don't judge .net on older technologies like Web Forms & Win Forms. They were reasonable ideas at the time, but that time is past. MS's current web & server stack of MVC, Owin/Katana, SingalR is pretty good. I did always question MS's judgement on Silverlight. Did the world really need a Flash competitor? And when they finally started to come up with a somewhat compelling RIA platform, they just dropped it. WTF? IMHO, open source Silverlight.
6) There are clearly a lot of MS haters in this comment section, but do your really trust Oracle's ability to steer Java? They may be better than Sun, but WTF are they thinking with the lawsuit against Android? They should be doing everything possible to support Java on Android. If Oracle wins at the Supreme Court level, the most likely result will be a future version of Android not written in Java.
I just want my cheapo shared hosting server to support a language with some amount of compile or load time type safety. If that means .Net, then so be it. C# itself is actually a pretty good language for many situations. I only use PHP because it's already there.
That's interesting information, and useful for anyone serving hundreds of thousands of requests per second.
For the 99.9% of sites that serve single to hundreds of requests per second, it might pay to keep in mind that your sedan is not designed to run on jet fuel. What someone going a thousand times as fast does isn't necessarily relevant.
"[MIcrosoft] 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?"
Microsoft's main product is evil. Microsoft is excellent at delivering evil.
My opinion, shared by many.
You didn't mention many, many other issues, such as Internet Explorer version 6.
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.
Nonaggression works!
Here's the thing. I work in a Microsoft based shop. I've had businesses in the past that we predominantly used open source tools such as the LAMP model. But, through my 17+ years of working in the IT industry, both as a developer and as an admin, I would say that the predominance depends on application. If you're doing web-related development, then you're probably using PHP/Java type stuff. If you're writing desktop applications (as we do here, although I'm not currently a developer...I'm an admin) then you're probably using C#/VB.NET. If you're writing core-systems or interfaces for physical tools, you're probably using C/C++. Hell, you might even be working on legacy systems and using RPG/COBOL. It all depends on your application...I don't think we will ever get to a point where there is just one programming language that is ideal for everything. That said, in my experience, businesses tend to go with major company's products...aka, MS/IBM/Oracle. My impression is that executives, who are typically not very computer savvy, tend to want the security blanket of thinking the have support from those vendors. I personally feel that I get better support from the open-source community and it is usually free. I think MS support sucks (as demonstrated during my 9 hour $500 call to them a couple weeks ago.) If I could transition my company to more of a LAMP type infrastructure I definitely would, but I will never be allowed to do that. Why? Well, mostly because the software used by my highly specialiized manufacturing company, much of which is extremely expensive, is Windows based. The transition would be enormously costly, if possible at all. I think a lot of companies face this problem, and therefore .NET will live on. Is it the only solution? No. But at least in our case, we're married to it, and the divorce would cost us a lot of money.
The correct answer is 42.
At the company i work we use it to run our stack and we have been doing for 3 years. The hardest thing was getting continous builds completely running which required a few hacks but with each version of xbuild it supports more normal operations. In terms of speed we have been able to go around anything that is slower than normal .net and found some components to be faster. For us the open source news is great since it will provide us with a larger platform.
Microsoft sacked hundreds of employees working on Mono (Open .Net implementation for non-Microsoft platforms, notably Linux).
It is Microsoft who is desperate to undo it's own wrongdoing with .NET keeping it tied up with Windows-only ecosystem that seems to be dieing on both server, desktop and mobile. .Net itself it all *patented* by Microsoft and they can alway pull the plug not only to their own proprietary implementation (and also your apps) so it is *VERY risky* business to use .Net for anything important and to even *believe* Microsoft is a good guy - no it is not - it is singe strongest source of vendor-lock-in and whole Software industry halter.
So it is unfortunately number 3) Embrace, extend, extinguish - but it would happen to Microsoft this time.
Nothing that Microsoft releases will not be for the good of anyone but Microsoft, to lure people of developing and using their proprietary technologies.
One thing that is obvious from this actually is that not One company can compete with 50 or 100 companies making products as a collective.
Proprietary software development model with "license" sales is dead and burred. Even Microsoft tries to sale "services" instead.
And "Macs" became PC hardware as well as Game consoles (PS4, Xbox One) and rely on FreeBSD to run, like Internet rely on Linux and not Windows (Google).
For real? Come on codeplex. Heard of it? Microsoft doesn't cares about open source or not, they just care about success of their software so if opensource can power windows or whatever software they roll out for them is like very welcome. Come on grow up and get into this world. I can't believe so much people is still with the head in 1995.
Yes. Yes, it is. Thanks for asking.
...No.