
Open Source .NET three years later - matthewwarren
http://www.mattwarren.org/2017/12/19/Open-Source-.Net-3-years-later
======
jeswin
What's holding .Net back is a lack of the vision thing. That's a shame, since
in many ways it is a better designed framework, with a superior flagship
language (C#) compared to the Java platform. Their framework and language
designers are truly world-class, probably the best in the world.

The problem with .Net's vision has been painfully obvious to anyone following
.Net over the years - it is still Windows First. While in Enterprises and
Startups [1], Linux is what matters on the Server.

As an example, just last week I was looking for some http2 libraries in C#. Go
and Java have mature libraries already in production, while .Net only supports
http2 services on Windows. That in turn affects other ecosystems as well, such
as gRPC Services. This to me is a red flag. Given how important something like
http2 was going to be, how come Microsoft is so late to the party? What
exactly is .Net's niche, given front-end wars are over?

Another example, the very promising CoreRT project
([https://github.com/dotnet/corert](https://github.com/dotnet/corert)) page
says this about Linux: "Same as Windows, the libraries are less complete."

As a late comer, .Net faced an uphill climb. High-end web tooling is almost
exclusively JVM based (Kafka, Cassandra, Elastic Search, Kibana etc). The
upcoming competitor is Go, not .Net. If Microsoft doesn't pour a billion
dollars into getting .Net ready for Linux in 2018, .Net is over.

[1] I've been a consultant to several Small and Medium sized businesses
(especially in Medical) which predominantly use Windows and .Net, and that's
still a huge market. But even they are looking to move off Windows.

~~~
Meai
The only thing that is holding .NET back is the significantly slower
compilation speed when compared to Eclipse's incremental java compiler.

~~~
haxton
the resharper plugin to visual Studio or the rider ide will both do this. Only
builds the projects required and doesn’t need to build dependent projects
unless a signature changed.

~~~
Meai
It's not comparable whatsoever to how much faster Java is. In Eclipse it
basically compiles in the background right after saving a file so you never
feel the impact of compilation.

~~~
simplyinfinity
you can do that in .net with the watch command [https://docs.microsoft.com/en-
us/aspnet/core/tutorials/dotne...](https://docs.microsoft.com/en-
us/aspnet/core/tutorials/dotnet-watch)

------
hacker_9
Always confused that people talk about .Net as if it's failed on here, any
time I look for employment in the UK there is a seemingly unlimited amount of
high paying C# jobs available and it doesn't take long to get hired. Even my
university taught in C# for the first year.

Net core is a slow moving project for sure, and it's not at a stage to use in
production yet, but it'll get there and I look forward to further improvements
made in 2018.

~~~
mattmanser
In the UK C# occupies the main enterprise language slot that Java does in
America, that's why. Java just didn't get as far here. I remember in mid-2000s
not being sure whether to learn Java or VB6/.Net, but a few years later I
rarely saw Java jobs.

At least that's my impression from being on HN for the last decade, and
working mainly in MS back-end languages in the UK.

The other one I never see mentioned in the UK is Oracle, I've only had Oracle
mentioned to me IRL once, and that's because the local council is inexplicably
moving from MS SQL to Oracle for reporting, but they're super incompetent.

~~~
JeanMarcS
Aahhh, thank you for stating this. I’m reading HN for only 1 year and half and
couldn’t figure out why Java seemed so present in conversation as I thought it
was not spread that much.

I’m french and I only know one person who’ve been on the Java path, and he’s
not even working in France. I of course know companies working on Java, but
not that much (not at all, if you except those working for Android) and
suddenly it becomes crystal clear.

Thanks again.

------
librexpr
I'd like to switch away from Java in future applications, and C# seems like
the top contender, but there are questions I'd really like answered before I
make the switch.

I see a lot of people talking about Microsoft open-sourcing .NET Core. But as
someone who's never used it, what _is_ .NET Core? And if .NET Core was open-
sourced, what about the rest of it? Am I likely to run into major parts of the
ecosystem that are still proprietary?

Also, can I develop and use C# applications on Linux without feeling like a
second-class citizen? The ability to easily develop on Linux using free
software and then run on my clients' Windows computers is one major reason I
use Java at all, and I definitely won't switch to a language that doesn't
support Linux properly.

And finally, how likely is Microsoft to fuck free software developers over
with proprietary extensions in the future? This _is_ Microsoft we're talking
about, after all.

~~~
blunte
> And finally, how likely is Microsoft to fuck free software developers over
> with proprietary extensions in the future? This is Microsoft we're talking
> about, after all.

There's a radical change in public behavior of Microsoft since Satya Nadella
became CEO. While at first I was skeptical, it's now been three years we have
had to observe whether Microsoft's actions match their promises.

So far, I'm impressed. I think their new vision and approach to doing business
is much improved from that of their previous two CEOs - it's better for
consumers and developers, and frankly it was necessary for the long term
survival of MS.

I don't expect to see nasty behavior from them like we have seen in the past.

~~~
jupiter90000
What about when the CEO changes?

~~~
oblio
Well, they could commit suicide and get a Ballmer clone.

They lost control of the client (it's web + Android/iOS now), steering away
from the current course and back to the old one is a sure way to irrelevance.

------
pugz
My 2c: I never had any interest in writing C# on the .NET platform until it
was open-sourced and added first party-supported cross-platform support with
the introduction of .NET Core.

Nowadays it's my favourite language I write in - it has _excellent_ tooling,
especially JetBrains Rider IDE. The open-source library ecosystem might not be
as broad as NodeJS or Ruby, but it's high quality and growing all the time.

~~~
wenc
Let me say something about the prejudice (mostly my own).

For most the late 80s-early 2000s, I was not a huge fan of Microsoft mostly
because of their predatory practices and the shoddy quality of their software.
But they had a few products that I thought were legitimately good, and Visual
Studio (and the C# language) was one of them. Part of my admiration of it was
partly because of Anders Heijlsberg, its architect.

I started my programming life with Borland tools (Turbo Pascal), and then
later Delphi. Anders architected all of these tools. They are long in the
tooth now but at the time, these tools were fairly well regarded because they
reflected flair and good taste. When Anders created C#, I managed to look at
it without being clouded by my Microsoft prejudice, because I knew who was
behind it.

I started writing C# code a couple of years ago when I started working for a
large enterprise. Even as a Linux/UNIX guy, I am able to say that C# is a
truly elegant language that is fun to work with, and I would pick it over Java
or Scala any day. I don't like its Windows centricity (Windows is still not my
favorite platform), but outside of that, it is truly a well-architected
language.

Silicon Valley types would do well to put aside their prejudices of the C#
language and evaluate it based on its own merits.

~~~
Xeronate
C# is a great language and I love using it (especially compared to Java), but
right now the Microsoft stack is prohibitively expensive compared to the
common stacks for java, ruby, and python. .NET Core is a great step in the
right direction, but it is going to be a long time before parity with other
ecosystems is reached and unfortunately enjoying writing the code is way less
important than having the libraries I need to interact with modern web
technology.

~~~
alkonaut
What are you paying for with C#? Tooling including IDE is free, servers are
typically free (unless you run IIS on windows) and databases are obviously the
same as in any other stack. In an apples to apples comparison I can’t see .NET
coming in more expensive than java. The only thing that might be more
expensive on Linux is if you need a better IDE than vs code - you’ll have to
pay for JetBrains Rider.

But good java IDEs aren’t free either.

~~~
jayd16
I'm pretty sure he meant windows, IIS and possibly the upgrade from headless
to something with a gpu for windows ops.

------
mcny
I have given up on .NET for the most part. Wake me up when we are in Fedora's
repos because until then, there are pieces that Microsoft hasn't (won't?)
release that we need to get out of COPR.

The people of Dot Net Special Interest Group at Fedora are too nice to say
this but I am not. Microsoft is dragging its feet and it is ridiculous.

~~~
teh_klev
.NET core seems to install and work fine on Fedora 27 using:

[https://www.microsoft.com/net/learn/get-
started/linuxfedora](https://www.microsoft.com/net/learn/get-
started/linuxfedora)

There were issues with Fedora 25 which is what I was previously running, but
that resolved itself after I dnf upgraded to 27.

Or am I missing something here?

~~~
mcny
Fedora has strict guidelines that you have to meet to be included in the
default repos. These packages don't meet them.

This indicates the project isn't free enough.

------
polskibus
.NET Framework is still closed source AFAIK. .NET Core is open source, but
that's two different things. Moving existing applications from .NET Framework
to .NET Core and running them on Linux is still troublesome (for example lack
of proper ODBC support on .NET Core). Serialization between the two is often
not possible or not easy (differences in byte layout). While I think .NET Core
is better than nothing, it all has a long way to go, including MS-provided API
dlls (like ADOMD, etc.).

------
kilon
It’s funny when Java devs mention that C# and .NET is a copy cat. The irony is
the other way around , even though Java predates .NET , the same creator was
then one that created Delphi which Java pretty much copy pasted not as
elegantly. It’s great to see Delphi being around and it’s legacy continue
through C# and .NET. The fact that Microsoft open sourced it brought a smile
in my face. My Delphi days are over, nowadays I Code in Python, but .NET still
feels like home.

~~~
wglb
It actually goes further back than that. Anders Hejlsberg created Turbo
Pasacal, then Delphi.

However, the development of c# did follow the development of Java. C# is not
really related to Delphi or Pascal other than they have the same author.

~~~
kilon
Not really, .NET is heavily tied to its IDE and winforms are very similar to
VCL. Not to exclude the fact that Microsoft was already heavily copying Delphi
way before .NET. Java is simply another programming language.

------
pnikosis
I learned C# a while ago when started a project in the now defunct XNA. I
loved how I felt like home when moving from Java bit with some really nice
differences.

I thought that after open sourcing .Net the C# adoption outside the MS
ecosystem would be wider by now, but I feel it's not the case. Or am I missing
a trend I'm not aware of? (which is very likely too)

~~~
oblio
There is still wide resentment towards Microsoft, just go to /r/programming
and check out threads about .Net, there's at least a few threads at the bottom
going "EEE".

Plus dotnet core wasn't API stable until recently. I think we're still 1-2
years from mass adoption.

Also check @librexpr's comment above, there's a lot of confusion around.

~~~
mattmanser
It's still not really any where near finished is it?

I think they finally managed to get image manipulation in to replace the
missing System.Drawing, but EF Core is still woefully half-finished.

The literally seem to have no clue about how people actually use their system
and keep focusing on all the wrong things. Actually, it's more like some
idealist programmers have become the core team instead of getting-it-done
programmers, so it's all the latest fads instead of getting finished. The
obsession with async isn't helping either, it makes the code so bad for no
real-world performance gains.

My impression is they are moving super slowly and from the POV of an existing
customer, the whole process has been a complete disaster. It might end up ok,
but at the moment it's just a bad version of existing .Net.

~~~
genzoman
Your paragraph about they "literally don't know how people use their system"
seems obvious to me that you must be a 10x mega developer with insider
knowledge. Idealist programmers, you're right! Async await offers NO benefits
and was implemented in es6 as a mistake... probably corporate bullying.

------
jsingleton
Link to the recording (slides and audio):
[https://www.youtube.com/watch?v=garlskQb8BU](https://www.youtube.com/watch?v=garlskQb8BU)

~~~
romanovcode
Thanks, this is exactly what I've been looking for.

~~~
matthewwarren
If you don't want to watch through the whole thing I wrote a post the gives an
outline, see [http://mattwarren.org/2017/11/14/Microsoft-and-Open-
Source-a...](http://mattwarren.org/2017/11/14/Microsoft-and-Open-Source-a-
Brave-New-World-CORESTART/)

------
mmgutz
Being open source is good but outside of Windows it's still perceived as a
Windows solution with bonus Linux support. I have yet to hear someone migrate
from Java, Go, Node, Ruby ... to .NET in meetups I attend. Is open source .NET
penetration on Linux any better than Mono?

------
Yuioup

       What exactly is .Net's niche, given front-end wars are over?
    

.NET works as an awesome back-end for Angular 2+

~~~
danthejam
But so do most other programming languages and frameworks.

------
romanovcode
Can we have a link to the actual talk please?

------
lafar6502
Maybe because it hasn’t been the most popular tech among open source
developers .net is now a very effective tool for almost any kind of work. The
choice of libraries and frameworks is smaller than in Java but quality is
better and purpose more clear. You can pick a few core libraries and build on
that instead of sifting through millions of half-done or incompatible
frameworks. And if you don’t demand that Windows is like Linux then it’s quite
decent OS. The only thing missing is good desktop UI framework, but nobody has
a better solution now

------
dustinmoris
I am extremely impressed by Microsoft. I think Microsoft has proven the world
that nothing is impossible. Once a hip tech company at the beginning of the
computer era, then transitioned into an old, boring and outdated corp has now
turned into one of the healthiest, most innovative, brave and genuinely nicest
tech giants of our time again. What Microsoft has done and achieved in recent
years is astonishing.

They played many years catch up and I think at the point when they realise
they cannot do everything themselves and started to embrace the open source
world they quickly moved from catching up to being the innovator who pushes
new limits again (Azure, Surface devices, Window 10, .NET Core, etc.)

It's already a bit old, but I wrote a blog post not too long ago where I tried
to sum up some of the amazing things that happened at Microsoft over the
course of the last few years:

[https://dusted.codes/thank-you-microsoft-for-being-
awesome](https://dusted.codes/thank-you-microsoft-for-being-awesome)

~~~
flatline
Literally none of these characterizations of Microsoft, past or present,
resonate with me at all. Maybe the company has truly turned a new page, but I
still mostly see them copying others’ ideas and playing second string as a
result. I’m glad they finally have some real OSS offerings but I don’t yet see
any as truly collaborative efforts which keeps them on the sidelines.

But, you know, hail corporate!

