
Introducing .NET Core - ntakasaki
http://blogs.msdn.com/b/dotnet/archive/2014/12/04/introducing-net-core.aspx
======
pauldbau
I for one am extremely excited about having MS supported ASP.Net on Linux.

Mono is a great community effort, but the server side has always lagged
Windows pretty heavily. Having the same level of API and implementation
support at a core level on Linux will be awesome.

Shall be interesting to see how this affects IIS market share in 5-10 years
time.

~~~
robert_tweed
TBH, this could help IIS in the long run, since it should improve adoption of
.Net. This could also be the sort of kick in the pants that's needed to make
IIS evolve into something people would choose on merit. The difference between
IIS of today and IIS of 2020 could be very much like the difference between IE
6 and IE 11.

~~~
300bps
_The difference between IIS of today and IIS of 2020 could be very much like
the difference between IE 6 and IE 11_

As a Microsoft developer with two MCSD certifications and an MCDBA
certification, I actually laughed at this. IE11 is certainly better than IE6,
but I find it unusable comparable to its modern day competition.

Abysmal plugin support, none of the nice usability features of Chrome (ex:
Paste and Go on address bar, right-click Search Google for highlighted text,
etc) and more leads me to believe Microsoft should give up with IE and start
over with an IE branded version of Webkit or heck even Chromium. They could
continue their Xbox marketing and call it Internet Explorer One and actually
dominate the browser wars again. Leave the old IE classic on there for the
small percentage of people that need ActiveX support (blech).

~~~
px1999
Web apps developer here, in terms of standards/proposed standards support, the
situation is much, much, much better than it was with IE7/8/9/to a lesser
extent 10. We develop primarily against chrome, and IE11-specific behavior
(measured by # of defects) is less common than firefox-specific behavior,
which is less common than IE10 specific behavior.

The plugin support may suck, the dev tools may suck, but in terms of the
browser itself, it is much more capable than what they've had in the past.

------
meddlepal
As a Java and JVM focused developer the openning up of .NET really excites me.
First, because .NET is a fantastic framework in and of itself, but also
because this hopefully will encourage Oracle to be faster and more competitive
with Java features and improvements.

~~~
Someone1234
I know what I am about to say is both heresy and insanity, but maybe we could
get a C# implementation that compiles to the JVM?

I mean, yes, C# has been largely open-sourced already. But with the new
compiler framework being opened up also it seems imaginable that someone could
write a version that spits out Bytecode instead of MSIL.

I have nothing against the JVM, but am not a huge fan of the Java language
(and also how the Java libraries have been forced to be developed due to
limitations within Java the language).

Yes Java 8 made Java much MUCH better than before, but just because Java 8 is
a around doesn't mean all the libraries and other underpinnings got magically
updated overnight.

~~~
zastrowm
One of the primary problems with this is generics (java/JVM uses type erasure,
CLR/C# keeps type information) and value types (CLR/C# has them, JVM does
not); That's why you can implement the JVM on the CLR (see IKVM.NET[1]), but
not the other way around.

[1]:
[http://en.wikipedia.org/wiki/IKVM.NET](http://en.wikipedia.org/wiki/IKVM.NET)

~~~
meddlepal
I'm not a vm or compiler expert by any means but Gosu and Ceylon have
implemented reified generics on the JVM somehow. It seems possible, but I
don't know what the performance impact would be.

~~~
gsnedders
Well it's obviously doable — both the JVM and CLR are equivalent to Turing
machines, so it follows that they can run the same set of programs. It just,
uh, might be non-trivial. :)

~~~
meddlepal
Fwiw, when Gavin King (Ceylon) did a AMA on Reddit a while back I asked about
how they implemented reified generics on the JVM:

[https://www.reddit.com/r/programming/comments/2iszra/ceylon_...](https://www.reddit.com/r/programming/comments/2iszra/ceylon_11_is_now_available/cl5vp6x)

------
dominotw
I am betting on F# taking off big time.

None of the existing functional languages on linux could deliver on functional
programming hype. Clojure is too ugly, Scala is too complicated, Haskell too
arcane.

~~~
notduncansmith
Is "ugliness" the main point of contention with Clojure? It's a Lisp, so sure
people will love it or hate it, but I hadn't heard this criticism directed
specifically at Clojure until now.

~~~
oscargrouch
As someone who have tried clojure a little bit after it was launched , but
after a while dropped; my personal view is that Lisps are great for small
stuff, but once you need to go for something bigger, with big teams, the thing
start to melt down.

And here is where OOP shines.. The probable "winners" of the languages of the
next decade will be OOP ones that glue well with functional techniques and
functional languages that are very good at OOP techniques.

F# is really good here, and from the OOP side C# and Java are also running for
this trophy (again).

Maybe swift.. but we need to see if the adoption will have a limit, given its
tied to a closed platform, and its also closed source

(But Rich Hickey is a bad ass and the framework design behind clojure is a
piece of art)

~~~
jared314
> but once you need to go for something bigger, with big teams, the thing
> start to melt down.

The people in the Clojure community have already started exploring this issue.
Component [1] [2], Jig [3], and others are trying to add just enough OOP back
for the reasons you mentioned.

[1]
[https://github.com/stuartsierra/component](https://github.com/stuartsierra/component)

[2]
[https://www.youtube.com/watch?v=13cmHf_kt-Q](https://www.youtube.com/watch?v=13cmHf_kt-Q)

[3] [https://github.com/juxt/jig](https://github.com/juxt/jig)

------
steven777400
As a .NET developer, I've oft complained to my coworkers that years and years
ago, a Java program could be compiled and run as a desktop app, or in the
browser as an applet, or theoretically in other contexts. Microsoft kept not
figuring that out, requiring different and slightly incompatible libraries
(say, between WPF and Silverlight). It drove me crazy. Same with WPF and
Windows Phone.

I see this kind of motion as very positive and recognition that horizontal re-
use is a desired feature (one of the reasons people like node.js).

~~~
pjmlp
> Microsoft kept not figuring that out,

.NET 1.0 allowed it, but very few people ever used it.

------
jameshart
The nuget package versioning/app local deployment model introduces a very
different model for security patch distribution. Microsoft got their fingers
burnt a few years back with the 'embeddable' SQL Server distribution, MSDE,
when the Slammer worm hit and there were hundreds of systems redistributing
MSDE which had to figure out how to deliver patches separately.

When .NET applications all share the installed .NET framework, all
applications benefit from Windows Update patch distribution for .NET Framework
fixes. But when all applications are distributing their own required versions
of dozens of .NET core nuget packages, those patches won't be deployed until
the app developer updates the nuget reference, rebuilds and ships their own
patch.

~~~
shanselman
We've already got a way to patch zero days at the system level even if you use
local NuGets. Fear not! This exists today, in fact.

~~~
lloydsparkes
How is this possible?

~~~
hokkos
It is enabled for .Net 4.5.1 as explained here :
[http://blogs.msdn.com/b/dotnet/archive/2014/01/22/net-4-5-1-...](http://blogs.msdn.com/b/dotnet/archive/2014/01/22/net-4-5-1-supports-
microsoft-security-updates-for-net-nuget-libraries.aspx)

~~~
bruceboughton
Will patches be installed on servers that have never run the application but
have it deployed, such as DR servers?

The mechanism describes seems to imply they won't as Microsoft Update won't
know the vulnerable assembly is sitting on the machine waiting for a failover.

~~~
jameshart
Same applies if I have an old build of an application which I push; it'll be
vulnerable until Windows Update kicks in to patch it.

------
jmnicolas
The complexity of the .NET ecosystem as revealed in this article is baffling
me.

And I don't even have the excuse of being in foreign territory here, I'm a C#
dev since 2009.

The language itself is easy to learn, but understanding everything behind is
quite a challenge (at least for me). I guess it's a feature of enterprise
products.

Sometimes I wish I could leave work at work and not have to stay on top of my
domain of expertise in my spare time.

~~~
V-2
Does anybody know it all? It's almost as vast as the Java world. A friend of
mine is a C# web dev, they didn't know what I was talking about when I did
WPF. I used Xamarin, but I don't know a hoot about Sharepoint.

------
delluminatus
I'm psyched for the changes in the way .NET applications are being deployed.
NuGet was already a great step, and having a well-factored .NET core framework
in NuGet is only going to make it better.

Even little things like renaming the NuGet packages so that they are the same
name as the assembly (hopefully "System.Web.Mvc" instead of
"Microsoft.AspNet.Mvc" or whatever it is now) are a good sign to me that this
push to create a cohesive .NET ecosystem around NuGet might actually succeed.

Unfortunately at least at our company this will take a long time to be fully
embraced, but I look forward to the day when you can update the version of
System.X that your team depends on without making it a system-wide upgrade
initiative to move from one version to the next.

------
S_A_P
I have to say I'm very impressed with how ms is keeping .net a relevant
platform. A few years ago, I started to worry that I was going to have a skill
with a rapidly declining market value. While I still believe that being a
polyglot is the best way to mitigate this risk(as well as just general
professional development), I do feel like MS is taking great strides in
keeping.NET developers employed.

~~~
ravi_thakare
I have my doubts. MS is clutching at straws. They should have fired Steve
Ballmer a long time ago and this should have happened in 2006 - 2008.

Python/Ruby(and Rails) and node are probably deeply entrenched in developers
minds by now. It seems company managements never learn. Developer mindshare is
probably lost by now, my bet is, this is not going to save .net

~~~
frowaway001
> Python/Ruby(and Rails) and node

I think every professional developer is happy when all the hipster kids moved
to those platforms.

~~~
pmontra
I don't want to sound conflictual but many Java/C* professionals use tools
written in Python and Ruby daily. I'm thinking about Bitbucket (Django) and
GitHub (Rails). They seem to work well enough.

------
AntiRush
The referencesource project seems to be MIT licensed:

[https://github.com/Microsoft/referencesource/blob/master/LIC...](https://github.com/Microsoft/referencesource/blob/master/LICENSE.txt)

------
Varcht
I suppose the Xamarin guys need to eat but it's kind of disappointing they are
not directly targeting iOS and Android.

~~~
dubcanada
I doubt they would want to directly compete with someone who is 100% focused
at that market and is already in a partnership with Microsoft. It just doesn't
make any sense for them.

tbh I wouldn't be surprised if Microsoft just flat out bought Xamarin
eventually.

~~~
Varcht
Yeah, I was hoping they would pick them up sooner rather than later. I really
like working with Xamarin, I am able to work in C# and share >75% of my code
between iOS and Android but I am hamstrung using it on my own projects and it
can be a hard sell to use it on commercial projects.

~~~
tonyedgecombe
I don't see why they would, if they wanted to be in the IOS/Android developer
marketplace they have the clout to enter it without buying Xamarin.

------
guiomie
Am I the only one not being a fan of nugget?

I constantly have issues with "Package Restore", where I need to restart
visual studio or clean packages and reinstall them. Sometimes, my
package.config will end up with multiple same package with different versions.
I get a lot of those problems with MVC.

I like C# and static typing, but I prefer nodejs and npm when it comes to
packaging.

~~~
achr2
An optimistic thought is that having nuGet become even more prevalent will
force issues to be resolved. And I personally have had very few issues.

------
Xdes
The day has come when I can deploy my .NET apps in docker containers.

~~~
shanselman
Yes, and we have and will continue to update a docker for aspnet-core.

------
blinkingled
The ASP.NET part is what has me excited - it wasn't clear from the article (it
may be due to my limited knowledge of the ASP.NET stack) but if I could write
a full fledged ASP.NET app on Linux using the often needed features like ORM,
LINQ, whatever the equivalent of JSF is - that would be a great development.
Right now on *NIX platforms nothing matches the maturity of Java/J2EE.

It still remains to be seen how much the of the tooling - debuggers,
profilers, deployment tools etc. will be available on non-Windows platforms.
May be that will become available as more and more people start using it in
Production.

~~~
aespinoza
My understanding is that .NET core will not include tooling. This project's
focused on delivering a framework only, the Open Source Community (Mono
Developers in this case) will take care of the rest.

Now, Xamarin has been doing a good job of creating beautiful and powerful
tools, so I assume the tooling will be really good. Hopefully one day we will
see Visual Studio supported by Microsoft on Linux and Mac.

But I also hope other providers, like Jetbrains step up to make .Net amazing
on Linux and Mac. So either way this is amazing.

~~~
michaelsbradley
Although it's focused only on C# at the moment, OmniSharp seems to be taking
cross-platform .NET tooling in a good direction:

[http://www.omnisharp.net/](http://www.omnisharp.net/)

~~~
aespinoza
This is a great resources, thanks for sharing. I usually use Xamarin Studio
and Emacs in Linux and Mac. OmniSharp integrates with Emacs, that is pretty
cool.

------
sdkaufman78
> _...is available as open source, and is supported by Microsoft on Windows,
> Linux and Mac OSX._

Somehow, the words _Microsoft_ , _support_ and _Linux_ still don't seem to
sound right in the same sentence.

I'd been your stereotypical Linux fanboy and MS hater since a teenager. But
today I'm totally awed by how radically Microsoft has managed to change
itself. I can't even imagine how hard the people inside Microsoft must have
fought to make this happen. Well done, guys.

I think I'll pick up a C# book for Christmas.

------
leke
I think C# will be the new Java for the next 20 years.

------
sandGorgon
I really hope somebody starts a kickstarter for Rails 4.2 on IronRuby (based
on .NET Core). I'm really keen to see how that will compare with JRuby (which
is already quite good).

The biggest problem which I see with the .NET ecosystem is the lack of
appliction servers like JBoss, Tomcat, Wildfly.. even Jetty.

Am I wrong or is IIS pretty much the only .NET application server ?

~~~
pionar
You're half-right.

With OWIN[0], you can use any application server you want that supports it,
there seems to be 5 as of now, including IIS and Kestrel (a dev server that
runs under Mono) which aren't mentioned on the OWIN page.

IIS, though, right now is the de facto server for ASP.NET sites.

[0][http://owin.org/](http://owin.org/)

~~~
sandGorgon
hey thanks for that info - never knew about this part of .NET.

Could you describe what non-Windows OS stack works with .NET. Can I use
MySQL/Postgres with it ?

------
sytelus
I know lots of people don't care about Windwos Forms anymore but it would been
GREAT if they were also included in the Core, may be re-labeled as just
"Forms" with as many platform independent goodies as possible. Native desktop
apps are no longer for consumer at large but I keep finding myself developing
new desktop app every now and then for development tasks. For example, right
now I'm working on desktop app that allows you to quickly browse, slice and
dice very large data files of order of 100s of GBs. It would be nice if I can
release this kind of apps for all platforms using .net.

PS: I don't want WPF in Core. It's over-engineered uglyness I care lease
about.

~~~
seanmcdirmid
I started working at Microsoft in 2007, and so have never been exposed to
Winforms. It seems archaic to WPF, which can do almost anything. I don't
bother with high level WPF widgets however, and mostly just roll my own
because it is so easy to do (plus my interests usually require custom
widgets).

~~~
tonyedgecombe
I've been finding WPF development very slow going, I know this is partly due
to inexperience but I suspect mostly because WPF and its tooling is not
polished enough.

In particular I find myself diving into the XAML all the time, whereas I
hardly look at the generated code in my WinForms application.

~~~
seanmcdirmid
XAML is evil, thankfully you don't have to use it with WPF, and I dont.

~~~
tonyedgecombe
So are you building your application by just creating the object model in code
or using the designer and never looking at the XAML?

~~~
seanmcdirmid
All code, i even wrote a helper framework to make coded wpf more powerful:

[http://bling.codeplex.com](http://bling.codeplex.com)

You can write things like button.Left = label.Right + 20 and it will
synthesize the data binding code automatically.

------
icantthinkofone
When Firefox was version 0.9 (2003?), I said it would take a large chunk out
of IE's 95% market share and IE would become an also ran browser. I also said,
later, that iPhones and iPads would take over mobile and dominate the internet
and Google would be more important than Microsoft on a day-to-day basis.

In both cases I was made fun of and downvoted into oblivion.

So listen to what I'm saying now. In three to five years, none of you will be
using .NET anything. Well, some of you will be maintaining legacy stuff but,
new things? No. Especially in five years, no one will think of doing any new
project in .NET anything.

As I said back in 2003, write it down. Check back with me. I'll see you then.

~~~
radmuzom
Well, it appears that in both cases you were wrong. IE still has higher market
share than Firefox, with Chrome being the clear leader it seems (though some
usage stats may show otherwise).

Even today, Microsoft is far far more important than Google for their users -
not necessarily developers. If Google disappeared tomorrow, yes it would make
it a bit difficult to work in the short term, but people will manage. If
Windows / Offce were to say, vanish tomorrow, then millions of businesses will
just collapse and cannot function at all.

------
jayvanguard
I think this will be about as revolutionary as Silverlight was.

~~~
nwah1
Silverlight, from a development standpoint, was actually pretty great. You
could write code in .NET with an infinitely customizable vector-based user
interface, defined in a clean and consistent XML-based markup language. It
could run in a browser, and even on a Mac.

You could develop using all the powerful Visual Studio tooling. It didn't
crash all the time like Flash.

Using Silverlight and XAML was sort of like what I imagine web programming
will be like in about 10 years. Except that you could do it back in 2007.

You have a high level language (C#) with reusable components (UserControls)
and fantastic debugging, profiling, static analysis, and automatic
refactoring.

Incidentally, that is where the web is just now heading. Higher level and
strongly-typed languages (AtScript, Typescript, Flow, ES6+) with reusable
components (Web Components) and better tooling (Firefox and Chrome dev tools)

~~~
jayvanguard
It would have been great but they didn't follow through on their cross
platform commitment.

They never have in the history of their company so I'm not sure why people
believe this time they will. Open sourcing the core guarantees nothing if they
move the Microsoft support at a faster pace and don't commit to keeping the
other platforms at par.

