dotnetcoreblog

Jamie

Posted on May 24, 2018

.NET Core History

On a recent ASP NET Community Standup Damien Edwards noted that since the live stream was moved from Scott Hanselman's YouTube account to the .NET Foundation one, the viewership has halved.

This is a real shame, because the weekly standups are a fantastic view into both the .NET and ASP.NET Core community and news on the up and coming features. It's also a great opportunity to ask the hosts (who are Jon Galloway, and the above mentioned Damien Edwards and Scott Hanselman) any questions that you have around .NET Core, ASP.NET Core, and the community.

I would definitely recommend subscribing to the .NET Foundation YouTube account. The .NET Foundation produce a lot more than just the weekly standups, too. The quickest and easiest way to find it would be to head over to live.asp.net.


In today's blog post, I thought I'd go through some stuff about the history of .NET Core. Did you know that the entire history of .NET Core and ASP.NET Core is publicly available?

In The Beginning

In the beginning, there was the .NET Framework; and it was good. Before we continue, I'm about to get parts of the lead up to .NET Core's open source release wrong. If you want to know more detail about the history of Microsoft and .NET, then I'd recommend taking a look at Richard Campbell's History of .NET talk.

Here's an embedded YouTube player for the talk:

A lot of people see Microsoft's work as closed source. Whilst this is true for the majority of projects, Microsoft actually offered access to the source code for a lot of their projects to selected partners.

They also released guides to the source for the .NET Framework over at Reference Source. They weren't as open as, say Linus Torvalds and his small kernel project, but that's still pretty open.

Along Came Satya

Let me be clear about this: Microsoft are an amazing company. Look at all of the stuff they give us developers for free (or at little cost, compared to the amount of money we charge for our services).

Sure, people complain about whatever tool they're using when it crashes, but it's invariably a massive piece of software which was made by a team of thousands of people. And then they took it to the next level with Azure. I might be a little biased, since I recently attended an Azure Red Shirts Dev Tour talk given by Scott Guthrie.

But I'll say this Azure is absolutely amazing. One of my more recent responsibilities at work has been to investigate Azure and see what things we can do with it. The answer, so far, has been: practically anything. Satya Nadella (the third, and current, CEO of Microsoft) was one of the big proponents of Azure, and it's through his insistence that Windows Server, SQL Server and a whole host of other core Microsoft technologies are now available on Azure.

When Satya became CEO of Microsoft in 2014, it became immediately apparent that the direction Microsoft was going to head in would be slightly different to their previous 40 years of operation. They were going to go after the cloud, and they wanted to not only be the best at it, but provide the best platform for developers and enterprises to help them lift and shift their applications to the cloud. Also, they decided to open source .NET.

It wasn't the first part of the .NET Framework which was open sourced. Aside from the select third parties which had access to the .NET Framework source code the first part of .NET Framework to be publicly open sourced was the Dynamic Language Runtime (the thing which provided us with the dynamic keyword). The DLR was announced back in 2007, but wasn't released until 2010 (there was an alpha in 2008). The DLR was adopted into the Mono project, as is, when it was released. The two goals of open sourcing .NET and pushing for Azure went hand in hand.

Everything Is Open

Around the time that Satya was telling everyone that .NET was going to be open sourced, there was a team of Microsoft engineers working feverishly on a project called ASP NET vNext. "vNext" is the name that they gave to the project which would be the next version of ASP NET.

It was going to be fully open source, the entire code base was hosted on GitHub. It wasn't shadowed to GitHub, it wasn't hosted internally at Microsoft then copied to GitHub. Microsoft engineers were working on vNext on GitHub... in the open.

It was decided that it would be a good idea to publicly chronicle the development of "vNext", so Scott Hanselman, Damien Edwards, and Jon Galloway started doing weekly ASP NET Community Stand Ups. These were hour long Google Hangout calls which were broadcast live to the community and stored on YouTube. What is so fantastic about these videos being publicly available is that they enable you can go back and watch the evolution of the "vNext" into ASP NET Core. In fact, here's the first one that they did (dated Sept 2nd, 2014):

Notes From The Call

I thought it would be fun to take a look at some of my notes from the first time that I watched that call. So here there are:

  • File > New Project was the main target
    • Damian Edwards: idea to change how the File > New Project experience is handled
  • Already support for MacOS and some distributions of Linux
    • This is major. I can now develop ASP NET stuff at home
    • The idea is to modularise as much of ASP NET as possible

This is something we were already seeing, but is even more prevalent now when you look at the packages in the ASP NET Core metapackage.

  • Uses project.json
    • This is different to csproj

Eventually project.json would be re-replaced with csproj files. But, looking back at this early video, you can see why they chose to try out project.json (it'll be more apparent in my quote from David Fowler)

  • Talking about Azure being a deployment target

This was BIG. Azure had only happened a few years previous to this, and it certainly hadn't had the wonderful UI rewrite that it's had recently. It certainly didn't offer a lot of the stuff that it does now, too.

  • "Kestrel is based on libuv, which is the cross platform networking stack that runs on nodejs. We took that and made a webserver called Kestrel, that's C# talking to lubuv directly. And what we envision is that you would host that as the main webserver and then you put nginx or apache in front of it."
    • David Fowler showing the nodejs influences

Since the design of Kestrel uses libuv, which is used by nodejs it's understandable why the "vNext" team would take a punt on using a slightly different project file type, too. Even though project.json would be replaced shortly after .NET Core 1.0 was released.

  • "My goal is that I want you to be able to host your ASP NET app on a Linux server as easily as you can on a Windows server... in a docker container if you want."

    • Scott Hunter
    • Also, this is HUGE!
  • "But [Kestrel] won't have all of the features of IIS. That's a completely different story."

    • Scott Hunter

With the exception of holiday times and when there have been events on

NDC, .NET Conf, etc.

there have been ASP NET Community Stand Ups every week... for 3 years. At the time of writing, there have been 127 videos. That's a lot of content to go through, especially since most of the videos are around 45 to 80 minutes long.

Is It All The Technical Details?

A lot of the earlier videos are all about how vNext works, how the kestrel works, and some of the design decisions. These videos usually have Damian in front of a white board as he explains how the different pieces of the software work, and they are fascinating - if you're the type of person who likes to know how it all fits together, then I would recommend watching the early videos. Recently the calls have had a similar format, and it goes a little something like this:

  • All three hosts (if present) will talk about their week and cool things that they have done
  • Jon will talk through interesting community links that he has found
  • Damian will talk about some of the exciting or interesting things that are coming up or being discussed internally
  • Scott usually leads the call
  • Damian will wear two watches
  • Scott will make fun of Jon for having too many Chrome extensions
  • Everyone has a great time

It's a professional call, in the same way that a professional meeting between developers will have some light-hearted, silly moments peppered throughout the talk, but the majority of the call is about serious businessTM.


The first stand up was my introduction to ASP NET Core (or as it was called then "vNext"), and I've followed it's development since then. I was so intrigued by some of the ideas that the team have presented in the years since they started, that I eventually started this blog. They have one every week (give or take time for vacations and big events like .NET Conf), so it's definitely worth tuning in, even if you watch it at a later time.

They're a fantastic resource for what's coming up next in the world of ASP NET Core, as well as a chance to put your questions to the team (if you're able to watch live, that is). The latest episode was all about calling Razor UI code from class libraries in ASP NET Core 2.1. Here's an embed of the YouTube video for that episode


Had you heard of the ASP NET Community Standups before? Do you regularly watch them (live or on demand)? You really should watch them, you know. They're really cool, and contain some of the most up to date information on ASP NET Core and some amazing community links.

💖 💪 🙅 🚩
dotnetcoreblog
Jamie

Posted on May 24, 2018

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

.NET Core History
netcoreversions .NET Core History

May 24, 2018