News for hackers. Stuff that matters.
Re:Introducing .NET Standard by Analemma_ on Monday September 26, 2016 @01:38PM (#12583863)
I understand that Microsoft has to clean up a lot of legacy baggage around this ecosystem, and it does look like the way forward is much clearer and nicer, but man, was there any way this could've been done without another ".NET <foo>"? I'm still figuring out .NET Core/4.5/Framework and all the ASP naming zaniness... and I'm a .NET developer! I do trust Microsoft that this is really, truly the last time this will have to be done, but god it's a headache.
Re:Introducing .NET Standard by terrajobst on Monday September 26, 2016 @02:43PM (#12584462)
I fully share your concerns. I've expressed this problem with a homage to XKCD:

https://blogs.msdn.microsoft.com/dotnet/2014/12/04/introduci...

Don't think of .NET Standard as another .NET platform. Think of it as the standard that ties them all together. It's similar in spirit to POSIX. It's not another Unix, it's a way to write code that works on multiple Unixes.

Re:Introducing .NET Standard by pja on Monday September 26, 2016 @02:51PM (#12584537)
:)

As an aside, the content type for that URL is application/octet-stream, so Firefox won’t view the image but insists on downloading it. It needs to be image/png to be viewable in browser I believe.

Re:Introducing .NET Standard by terrajobst on Monday September 26, 2016 @03:07PM (#12584682)
Thanks, replaced with the link to my post. I'm clearly not a web guy ;-)
Re:Introducing .NET Standard by pjmlp on Monday September 26, 2016 @05:54PM (#12585922)
I think of POSIX as the actual C runtime.
Re:Introducing .NET Standard by iamcreasy on Tuesday September 27, 2016 @12:44PM (#12590947)
Isn't POSIX just a specification?
Re:Introducing .NET Standard by pjmlp on Wednesday September 28, 2016 @02:33AM (#12595819)
Yes, just like ANSI C is one.

The point being that ANSI C didn't took the rest of UNIX APIs to other OSes as part of the specification, but in the end most OSes that adopted C ended up having to support POSIX as well as a means to have some kind of usable C library common across OSes.

Re:Introducing .NET Standard by jug on Monday September 26, 2016 @02:59PM (#12584605)
I know right... I'm also a .NET developer and I wonder in particular how this new move will relate to .NET Framework.

I understand that .NET Core is sort of a subset of it, a new "fresh start" with refactoring done as well as platform-specific code cut in order to be able to support multiple platforms. And that .NET Standard covers .NET Core and .NET Framework as an umbrella.

However, where is Microsoft's focus now? Is .NET Core the future? What about .NET Framework 5? Will it happen? What about UWP? .NET Framework include a _ton_ of legacy stuff now. Windows Forms. Heck even WPF can be argued to be in the past, now that UWP is the future? UWP isn't directly interchangeable with WPF even though the technologies are confusingly similar. What about ASP .NET vs ASP .NET Core? What about Entity Framework vs Entity Framework Core? Is Microsoft honestly going to move them ALL forward at a good pace? That sounds like an insane undertaking!

I'm sure they want Windows devs to develop UWP apps for the Windows Store. Still, are they cannibalizing on that platform with this move? Windows Phone essentially doesn't exist. Xbox? Many wouldn't care about universal Windows apps and suffering by having to follow "weakest link support" due to non-existing smartphone platforms. Many devs would hit a MUCH larger target if developing .NET Core and targeting the web for anything UI related.

I wish Microsoft was more clear on this, but maybe the issue here is that they don't know either where they're going since it depends on where the devs are going... This whole .NET ecosystem is becoming extremely large and complex, even when singling out Windows. A whole lot has happened in a short time that it's dazzling.

Re:Introducing .NET Standard by cheez on Monday September 26, 2016 @09:33PM (#12586954)
Windows .NET developers won't need to change what they do. If they want to make portable .NET code (between Linux/Mac and Windows) then they need to get familiar with .NET core.

This is purely about growing market share (and they have my mind, over Java anyway).

Re:Introducing .NET Standard by nightski on Tuesday September 27, 2016 @01:25AM (#12587608)
Actually this makes it easier. It expands the subset of the .NET Framework that .NET Core supports. It's the same APIs we have used forever, just more of which are now available on other platforms (.NET Core, Xamarin)
Re:Introducing .NET Standard by Dayshine on Tuesday September 27, 2016 @06:03AM (#12588394)
That's only true if Microsoft continue to develop .NET Framework as well as .NET Core.

If I don't want portable code, I don't get support anymore without learning .NET Core?

Re:Introducing .NET Standard by rpeden on Tuesday September 27, 2016 @06:58AM (#12588607)
So far I haven't seen any indication that they plan to stop developing the full .NET Framework. I'm sure some parts of it will stop growing - things like WinForms and WebForms probably aren't going to see a lot of attention in the future, but they're also as close to done as software can be. Large enterprises will be using them for probably the next decade or more, even if they get no features at all.

I look at .NET Standard as a good thing. Even if you don't write portable code now, a whole lot more of what you know as the .NET Framework today will be available to Core as part of the standard should you ever want to write portable code in the future.

I think .NET Standard will eventually make it easier to describe what .NET is. Right now, the .NET Framework is way bigger than what most people think about when they hear the word framework. The .NET Framework is a pretty extensive library, plus Winforms, WPF, WCF, ASP.NET, ADO.NET, Workflow Foundation, and probably others I'm forgetting.

Having a robust stdlib in .NET Standard should simplify things. All .NET environments will have the same standard library, and the .NET Framework to .NET Core comparison will be something like the Java EE to Java comparison. I know that's by no means a perfect one to one comparison, but it'll help make it easier for people to understand the difference between the two main non-mobile .NET distributions.

Re:Introducing .NET Standard by sillysaurus3 on Monday September 26, 2016 @01:45PM (#12583926)
Re:Introducing .NET Standard by pweissbrod on Monday September 26, 2016 @04:20PM (#12585199)
The problem with that is, I feel like by adopting .NET I am the one being fired at by Microsoft
Re:Introducing .NET Standard by btown on Monday September 26, 2016 @07:49PM (#12586581)
Realistically, you are. There's a bit of lock-in that occurs here: you've spent X% of your career learning the ____ stack, and there's a huge opportunity cost to switching stacks... so ____'s incentives are aligned to make sure that that X% stays X% over time, that you're learning new ____ stuff, rather than their tech stagnating and you being able to use your now-free learning time to learn a competitor's stack.

I don't mean to be cynical - ____ legitimately want to improve their APIs and the experience of working with their software. But that's what makes the "build an ecosystem" business model so amazing if you can swing it: the crazier your innovations, the more you capture mindshare as people try to keep up, and so you're able to make a great profit while attracting the craziest talent.

Insert Microsoft in the ____'s.

Now, for all the Angular 2 programmers out there, insert Google.

Re:Introducing .NET Standard by nightski on Tuesday September 27, 2016 @01:24AM (#12587600)
Uh, .NET Standard adheres to the APIs in the .NET Framework. It's the same APIs you have been using for many years and that is the entire point of it all. .NET Core initially used a subset that was too painful to port to by a lot of developers so now they are expanding that subset closer to the .NET Framework.
Re:Introducing .NET Standard by hermitdev on Monday September 26, 2016 @09:58PM (#12587015)
I know I'm going to be reiterating/rephrasing what you've said, but it's true for any closed stack. Especially Java. At least with C# (maybe not .Net as a whole), at least the language is an ECMA spec (ok, not all versions of C#, but several of them): http://www.ecma-international.org/publications/standards/Ecm...

I appreciate that MS is working to find a common set of libraries. Eventually this refactoring hopefully leads us to the point where we can all use an open-source common set of libraries and then just add on the Windows, Linux, Android or OSX specific parts.

I like the direction MS is heading, in general, with Windows 10, even if there are certain things I don't like. I like that I can run python under WSL because it has a better CLI experience (in my opinion) than the native windows Python build. I also like they are open-sourcing key technologies.

I just wish they would do better about naming so to reduce confusion. I'm confused just looking at the tables of which versions support which versions of the Standard. In the one chart, in .NET Framework 4.6.1 supports standard 1.4. 4.6.2 supports 1.5, vNext supports 1.6. Then also 4.6.1 supports standard 2.0. So, .NET Framework 4.6.1 supports Standard 1.4 and 2.0, but 1.5 and 1.6 support different (presumably incompatible) standards? The way the table reads it's 2 steps forward, 1 step back.

Re:Introducing .NET Standard by watermoose on Monday September 26, 2016 @11:55PM (#12587339)
Google didn't intentionally change the world in Angular 2 to make sure that developers were learning new Angular 2 stuff vs. something else. If they wanted to do that, they were too late, because a lot of people had moved to React already.

Angular 2 is so different because they were trying to fix all of the problems with Angular 1. In fact, Angular 2 didn't even settle on how to do that after starting early releases of Angular 2. But, that wasn't some secret conspiracy to get people to use it. If anything, a lot of people that were sold on Angular 1 are slower to migrate, but that's what they get for trying to do things right.

Re:Introducing .NET Standard by pjmlp on Tuesday September 27, 2016 @03:02AM (#12587898)
We can also give Android APIs as an example instead of Angular, or the whole IDE and NDK reboot.
Re:Introducing .NET Standard by oblio on Monday September 26, 2016 @02:40PM (#12584441)
That only applies if your ecosystem is the hype-du-jour.

.NET is massive, it is entrenched, but I doubt it is growing.

So "fire and motion" doesn't apply here.

Re:Introducing .NET Standard by mbesto on Monday September 26, 2016 @01:55PM (#12584012)
Does anyone have a breakdown of how .NET Core/4.5/MVC/etc interact, are different, etc?
Re:Introducing .NET Standard by ihsw on Monday September 26, 2016 @02:03PM (#12584098)
.Net Core: cross-platform build tooling, minimal API

.Net Standard: cross-platform comprehensive API

.Net 4.5: Windows-only build tooling + comprehensive API

.Net MVC: Windows-only web framework built on .Net 4+

Re:Introducing .NET Standard by jongalloway2 on Monday September 26, 2016 @04:57PM (#12585480)
The .NET MVC thing is off.

ASP.NET MVC is a web framework that implements the MVC pattern, as opposed to ASP.NET Web Forms, which was control based. ASP.NET MVC versions 1-5 run on the full .NET framework.

ASP.NET Core includes MVC, and the API has stayed as close asp possible to previous versions of ASP.NET MVC. The lower level bootstrapping / hosting / middleware / config stuff is pretty different (much improved, IMO), but your application code (models, views, controllers, services, etc.) should move from ASP.NET MVC to ASP.NET Core pretty smoothly.

Re:Introducing .NET Standard by Dayshine on Tuesday September 27, 2016 @06:06AM (#12588399)
>but your application code (models, views, controllers, services, etc.) should move from ASP.NET MVC to ASP.NET Core pretty smoothly.

Controllers not so much. That's actually where the biggest changes are for most projects.

Re:Introducing .NET Standard by kierenj on Monday September 26, 2016 @02:18PM (#12584239)
Not quite (I think): .NET Standard is an API definition, or rather a versioned set of them. ".NET Framework" (e.g 4.5) "implements" that definition, with some extra features to boot. ".NET Core" also implements it. It's a cut-down (though not very), cross-platform implementation of the .NET Standard.

Mono is another implementation of the standard.. cross-platform too, but this time compatible with the actual .NET Framework, i.e. 4.5.

Re:Introducing .NET Standard by yazr on Monday September 26, 2016 @03:57PM (#12585044)
R U saying that (currently) Mono is a superset of Core ?

So i am starting with a large and varied Win code base, i will have an easier time porting (as much of it as possible) to Mono rather than Core ?

Re:Introducing .NET Standard by rodrigokumpera on Tuesday September 27, 2016 @02:54AM (#12587887)
MS engineer here, I work on mono.

Mono is not a strict superset of .net Core. We follow desktop more closely.

The extra APIs that are part of .net core, and are features on .net standard 1.6 will come to mono as we get the time to implement them.

Re:Introducing .NET Standard by aandrieiev on Tuesday September 27, 2016 @04:03AM (#12588064)
Is mono going to be fully merged into .net _something_ (core? standard?) at some point in the future or it will remain separate?
Re:Introducing .NET Standard by WorldMaker on Monday September 26, 2016 @04:14PM (#12585158)
Mono is not a direct superset of Core, but yes if you have an existing large .NET application you might have an easier time working with Mono than Core. Some of that may change as Core starts to get closer to .NETSTandard 2.0, depending on what sort of a legacy codebase you refer to. (That is, Mono has an okay-not-great emulation library for System.Windows.Forms, but it seems like it may be unlikely for .NET Core to have anything similar.)
Re:Introducing .NET Standard by maxxxxx on Monday September 26, 2016 @07:51PM (#12586598)
I am a .Net developer for more than 10 years and I don't know when to use Core or Standard. And why is 4.5 still around when I seem to be able to use Standard?

I really wish they would clean up their story. Same for UI. When to use WPF, Winforms or UWP? It's just a mess.

Re:Introducing .NET Standard by dragonwriter on Monday September 26, 2016 @08:09PM (#12586674)
.NET Core is a platform/implementation, like .NET Framework (there are others, as well.) .NET Standard is a "pure" API spec, not an implementation.

Any version of Core supports some version of Standard, as does any version of Framework from 4.5 on. (Framework 4.5 supports Standard 1.1, Framework 4.6.1 supports Standard 1.4 and 2.0, Framework 4.6.2 supports Standard 2.0 and 1.5, Framework vNext will support Standard 1.6 and 2.0, Core 1.0 supports Standard 1.6, Core vNext will support Standard 1.6 and 2.0, etc.)

Standard 2.0 will be a big deal, because pretty much all their active platforms will support it as of their next major version, though the earlier versions provide a handier way than has previously existing for addressing what works against the various .NET implementations, which should somewhat simplify cross-platform .NET development for the existing platforms.

Re:Introducing .NET Standard by forgotAgain on Monday September 26, 2016 @02:41PM (#12584447)
From the OP: ".NET Standard is a set of APIs that all .NET platforms have to implement. This unifies the .NET platforms and prevents future fragmentation.

Sounds like baseline API that will be present on all .Net <foo>.

Re:Introducing .NET Standard by ep103 on Monday September 26, 2016 @01:47PM (#12583948)
I agree 100%.

So anyone care to take a stab at it? How does this differ from .Net Core?

Re:Introducing .NET Standard by terrajobst on Monday September 26, 2016 @02:51PM (#12584533)
.NET Core is a specific .NET platform while .NET Standard is a specification that many .NET platforms, including .NET Core, implement.

In other words, .NET Standard is POSIX for .NET.

Re:Introducing .NET Standard by Someone on Monday September 26, 2016 @04:32PM (#12585304)
Small correction: .NET Core _will_ implement it. It has to grow quite a bit to get there.

At least, that's my reading, but they manage to be fairly confusing by mixing present tense and future tense with two different names:

"- .NET Standard is a set of APIs that all .NET platforms have to implement. This unifies the .NET platforms and prevents future fragmentation.

- .NET Standard 2.0 will be implemented by .NET Framework, .NET Core, and Xamarin. For .NET Core, this will add many of the existing APIs that have been requested.

- .NET Standard 2.0 includes a compatibility shim for .NET Framework binaries, significantly increasing the set of libraries that you can reference from your .NET Standard libraries.

- .NET Standard will replace Portable Class Libraries (PCLs) as the tooling story for building multi-platform .NET libraries."

So, do we have ".NET Standard" now and ".NET Standard 2.0" in the future? If so, why don't they say ".NET Standard 2.0 will include a compatibility shim for .NET Framework binaries"?

On the other hand https://github.com/dotnet/standard/blob/master/netstandard/p... seems to indicate the two are synonyms, and version 2.0 is the first version of this framework.

Re:Introducing .NET Standard by dragonwriter on Monday September 26, 2016 @06:54PM (#12586316)
> So, do we have ".NET Standard" now and ".NET Standard 2.0" in the future?

There are three key versions (and several others; they have 1.0 through 1.6 and 2.0) of .NET Standard referenced; the key versions are 1.5 (supported by .NET Framework 4.6.2 and later and .NET Core 1.0 and later), 1.6 (supported by .NET Framework vNext and later and .NET Core 1.0 and later), and 2.0 (supported by .NET Framework 4.6.1 and later and .NET Core vNext and later).

Re:Introducing .NET Standard by Someone on Monday September 26, 2016 @07:21PM (#12586446)
So, in a blog post titled "Introducing .NET Standard", it turns out .NET Standard already has 8 different versions?

Also, rereading the article, I notice "When we shipped .NET Core 1.0, we also introduced .NET Standard."

This text really could do with a good editor.

Re:Introducing .NET Standard by dragonwriter on Monday September 26, 2016 @07:53PM (#12586604)
> it turns out .NET Standard already has 8 different versions?

I think the versions prior to v1.6 were retrospectively defined based on the common capabilities of pre-existing platforms; v1.6 was what .NET Core 1.0 supported and .NET Framework vNext will support (2.0 is what .NET Framework 4.6.1 supports and what .NET Core vNext -- and vNext of MS's other platforms -- will support, and beyond 2.0 there will be more synchronous development across different platforms.)

Re:Introducing .NET Standard by terrajobst on Monday September 26, 2016 @08:07PM (#12586662)
That's exactly what happened, yes.
Re:Introducing .NET Standard by terrajobst on Monday September 26, 2016 @08:07PM (#12586666)
That's actually a fair point. I probably should have used a different wording.
Re:Introducing .NET Standard by terrajobst on Monday September 26, 2016 @06:38PM (#12586208)
> Small correction: .NET Core _will_ implement it. It has to grow quite a bit to get there.

.NET Core _already_ implements .NET Standard 1.x. It _will_ implement .NET Standard 2.0.

Re:Introducing .NET Standard by tracker1 on Monday September 26, 2016 @05:50PM (#12585899)
They're considering .Net Framework 4.6.x to be the guideline for Standard 1.x, And that when Core 1.0 hits, it will support .Net Standard 2.0.

My guess is jumping to 2.0 for future implementation base is to avoid conflicts with .Net Core 1.0 (though may exacerbate the issue)

Re:Introducing .NET Standard by ihsw on Monday September 26, 2016 @02:00PM (#12584064)
It's a common API for things like networking, IO, threading, serialization, and so forth.

Library authors need to do refactoring to achieve compatibility across .Net Platform (old stuff, Windows-only) and .Net Core (new stuff, cross-platform).

This is the bridge for library authors to transition from being Windows-only to cross-platform.

Think about library authors that need to write for both Python 2 and Python 3, there needs to be a common API between both, and this is it: .Net Standard.

Meanwhile .Net Core is cross-platform build tooling and a minimal API.

Re:Introducing .NET Standard by 616c on Monday September 26, 2016 @02:34PM (#12584395)
I believe this was discussed a while back by Scott Hunter in his interview on the .NET Rocks Podcast, who is the PM of all the .NET Platform. He explains, almost apologetically, what all this entails. Needless to say this is not news. I do not follow .NET that much until Core meant Linux, so I listen to things like this.

http://dotnetrocks.com/?show=1291

(I apologize in advance for anyone who uses JS blocking like me; open it in your other YOLO browser if you know what's good for you; the .NET Rocks team loves Angular a little too much.)

Re:Introducing .NET Standard by wmccullough on Monday September 26, 2016 @01:49PM (#12583961)
The article literally states the difference.
Re:Introducing .NET Standard by PercussusVII on Monday September 26, 2016 @01:51PM (#12583972)
It's the API definition that will be shared by .net Core/full framework/asp.net/xamarin.
Re:Introducing .NET Standard by davidfowl on Tuesday September 27, 2016 @05:36AM (#12588330)