.NET Core Is Boiling the Ocean
aaronstannard.com
aaronstannard.com
.NET Core exists side-by-side the full .NET Framework. You can use the .NET Framework now, and into the future. Newer versions of ASP.NET and Entity Framework have adopted the "Core" moniker but they run on both platforms.
For example, Microsoft.EntityFrameworkCore [1] ships the necessary bits for:
* .NETFramework 4.5.1 (full "Desktop" framework)
* .NETCore 5.0 and .NETStandard 1.3 (the "Core" framework)
If you plan your timelines around pre-release software (that's what .NET Core is) then Microsoft is not to blame.
For what it's worth, I'm not a fan of what happened with Release Candidate 1 [2] but I would NEVER place a dependency on pre-production software coming out of Microsoft.
[1] https://www.nuget.org/packages/Microsoft.EntityFrameworkCore
When I wrote that, I was thinking like a business owner whose technology is rooted in .NET. Not like a developer working on a single project. I invite you to step into my shoes for a moment.
For some background reading, read through: https://medium.com/swlh/how-one-announcement-destroyed-the-n...
I expect that .NET Core (or any platform, really) will be able to deliver $X worth of value to my business in N months and set business plans accordingly. I invest my team's time, some capital, and maybe other resources like hardware into pursuing the value on that platform. Z months in, where Z < N, all of those plans are upset by a sudden direction change. Now I have to make a choice: my previous costs are all sunk, but any future investments I make into .NET Core - are they also at risk of being sunk also? Should I keep investing into .NET Core? Am I risking some portion of my business' future profits by not pursuing something else instead?
I've, correctly, judged .NET Core to be a poor investment of my business' resources right now because the risk of my plans around it being upset is not just high, but higher than expected. Releasing RC2 and then reneging on it is pretty exceptional.
You as an individual developer are effectively making the same choice that I am as a business owner when you invest your time and energy into .NET. Could that time be better spent elsewhere in a way that would increase your value? Does this explanation help explain my reasoning at all? Please let me know.
Just because the technology is early doesn't mean it's a bad idea to invest in it if you think the impact for your business will be huge. That's just another risk you have to take into account and quantify. For what my company does specifically .NET Core could be transformational for us, so I'm quite excited for a future where I can rely on it. But my confidence that we'll be there sooner rather than later has been shaken.
And no, the pre-release line doesn't really apply here. When you release RC2 with a Golive license and publicly state "you can be confident to use it in Production and we will support you" only to backtrack on it (days, weeks?) later then that's on Microsoft.
> Starting with the RC1, we are including a “Go Live” license ... [the] duration of this license for the RC1 last until the next release candidate or the completed release of ASP.NET 5 (called an RTM release) that is currently scheduled for Q1 2016.
So if you did choose to use RC1 in a production environment, you'd be unsupported as soon as the next RC or RTM occurred. You'd need to spend time upgrading your projects. Which means you're taking a gamble on the size of changes between RC1 and the next release.
[1] https://blogs.msdn.microsoft.com/webdev/2015/11/18/announcin...
Where did they do that? Does .NET Core even have an RC2 or an RC1? Are you talking about ASP.NET Core? Where did they backtrack on the Golive license on ASP.NET Core RC2?
I don't think Microsoft has ever announced a release date for .NET Core, so why you were confident it would release at a particular point is confusing to me.
There's also never been a release date for ASP.NET Core. Certainly, RC2 took a lot longer than you would reasonably extrapolate from the speed between betas and RC1, but I don't see much support for the rest of your post in any announcements I've ever read.
And yes .NET Core does: https://www.infoq.com/news/2016/05/dotNETcore-RC2
The expectations that were casually set by members of the team at talks, on Twitter, on Podcasts, and so forth all indicated that .NET Core's arrival was imminent. The bulk of my criticism has been that their communication strategy on its readiness has not been carefully managed. Therein lies the problem.
I implore you to take a look at this pull request:
https://github.com/dotnet/coreclr/pull/4874
All this does is changes the "core" library for CoreCLR to be renamed from "mscorlib" to "System.Private.Corelib" -- this has an important function, now the .NET team can add more backward compat features (missing types and methods) to mscorlib for those who want to use it.
If your library or product doesn't want to use it, you don't need to.
.NET Core doesn't become more bloated, it says beautiful and Core.
https://github.com/JamesNK/Newtonsoft.Json/issues/618
Muddling around, guessing by looking at what other people have done and discovery by word of mouth through the community sucks.
boil the ocean
tv. to waste one’s time attempting to do the impossible.
(see also plowing water.) You’re wasting my time. You
might as well be boiling the ocean.
http://idioms.thefreedictionary.com/boil+the+oceanOne could also use the original meaning of Vaporware:
Vaporware
"Vaporware" was coined by a Microsoft engineer in 1982 to
describe the company's Xenix operating system. It became
popular among writers in the Industry as a way to
describe products they felt took too long to be released.
InfoWorld magazine editor Stewart Alsop helped popularize
it by lampooning Bill Gates with a Golden Vaporware award
for the late release of his company's first version of
Windows in 1985.
https://en.wikipedia.org/wiki/VaporwareMany burned their fingers, and will tell you: wait till the first Service Pack.
javascript:(function (){var x = document.getElementsByTagName("img");for (i = 0; i < x.length; i++){x[i].setAttribute("src","");}}());
alpha and 1.0 - for experimentation only
2.0 - OK for internal tools
3.0+ - ready for production
This has been true going all the way back to mfc through asp.net, mvc, etc.
2.0 and even 1.0 might work in production, but you end up with the problem of having a bunch of production code that needs updated to the newer 3.0+ api changes which ends up being significant.
https://news.ycombinator.com/item?id=11646939
The worst open source projects are more social than engineering -- then manage to waste the positive energy by mis-communicating. Unfortunately Microsoft seems to be threading that needle. And I simply cannot believe the documentation situation. It's like they forgot that's the one thing they're great at.
Likewise the BashOnWindows stuff is just... tragic. Reading the threads it's obvious that they have people with little Linux experience working on it. Naturally, basic developer scenarios simply don't work because Microsoft devs are testing their own stuff while learning basic Linux commands for the first time. And posts from program managers saying things like "yeah, I guess we should have targeted Debian instead of Ubuntu, we kinda woulda got both for free" don't inspire confidence.
"Alright, the Earth has only one mechanism for releasing heat to space, and that’s via (infrared) radiation. We understand the phenomenon perfectly well, and can predict the surface temperature of the planet as a function of how much energy the human race produces. The upshot is that at a 2.3% growth rate (conveniently chosen to represent a 10× increase every century), we would reach boiling temperature in about 400 years.
[1] http://physics.ucsd.edu/do-the-math/2012/04/economist-meets-...
I salute MS at their efforts and am very excited. Yes, we are waiting now for at least a year but whining does not help. If you want to help then make some PR's instead.
Also, nobody is pulling the rug from anyone, you will be able to use MVC6 with regular .NET, just remove .NET Core from dependencies and you're set.
You're a leader, you are responsible for doing the risk assessment.
Do you build your product on a platform which is been in development for 18 months; which is an ambitious rewrite, and which is planned to have the first RTM in the second half of the year?
You're lying to yourself if you say that you're working in the best interests of your employers if you say yes. You're being irresponsible. You're doing CV-driven-development.
As a leader you're an experienced developer: you know that shipping dates are unreliable at best. We know that version 1 of anything is simply a starting point. You know that building a platform is extremely risky.
This is exactly why I chose not to immediately start using .Net Core. Sure, the tech is great, but it is bound to be delayed. No way am I betting 6-9 months of a team of 10 developers on that.
I've been very critical of them deciding to call RC12 an RC because of the amount of breaking changes that have occurred up through beta (and now even between RC1 and RC2). I am typically met with apologists that tell me it's me who is wrong, despite that fact that the rest of the industry doesn't break their software (typically) between release candidates.
In the end, about two years from now, I suspect that this won't be an issue. I truly don't think there is malicious intent here on the part of Microsoft, I just don't think they put as much planning into this effort as they should have. They are also beginning to alienate their new-found open source followers by making decisions behind closed doors. They really need to be careful here...
Microsoft has always been terrible with versioning and though things seem to be improving there's still a long way to go.
After noticing the tendency described on the article, of development & deployment tools and techniques first appearing on the open-source community, and taking years to appear in the Microsoft scenario, usually as imperfect clones with a small community around them, I decided to solve my personal conundrum by going straight to the source of that innovation process.
I've since switched to Linux instead of Windows Server, JVM instead of .NET, and Scala instead of C# and I'm pretty happy with that stack.
So is the wonderful world of enterprise development.
I have enough time to wait.
That's why I can't avoid articles about .NET Core and fucking Azure these days. I don't use either and I probably won't until .NET Core has been stable for a year - and even then, I'll probably only use it for Windows-based work since I don't trust Microsoft on Linux. When I use Linux, I want to use the truly Unix-based tools that everybody else on Linux is using. When in Rome, you know... (I'll probably never use Azure because I've never liked the way Microsoft runs service-based businesses.)
Now Linux on Windows (as in "Bash" on Windows or Ubuntu on Windows)...that is one thing I'm looking forward to. It would be nice to be able to shutdown my constantly running Ubuntu Server VM.
Isn't this what Mono is for?
I brought up the comparison because I've seen it in wayyyy too many tech articles lately.