Back in the mists of time, when .NET was young and new and beloved of enterprise software developers, there was An Idea. Some developers who loved .NET and C#, but also wanted to expand their horizons, tried to take the ecosystem into places where Microsoft did not mean for it to go: onto other platforms; mixing with other systems than Windows, IIS, SQL Server and MSMQ; using libraries beyond the Framework itself and Microsoft’s in-house ORMs and web frameworks. The idea became known as ALT.NET, and the efforts of those who pushed for it were valiant, but they fought against an inexorable tide, and were frustrated.
Many of those developers, disheartened by the inertia and apathy they encountered, sought satisfaction elsewhere in the embrace of more open platforms, and more adventurous communities. Some were seduced by the friendliness of Ruby and the simplicity of Rails. Some saw an opportunity in Node.js. Still others set out to explore the explosion of languages targeting the ostensibly more open JVM. Most of them probably bought MacBooks. The ALT.NET dream flickered, and looked certain to die (although there are still some hold-outs dotted around the world).
But then a funny thing happened. Something long dormant stirred within Redmond; a courageous band of ‘softies decided to fight back against the stagnation of their pool. They wanted to try to win back the hearts and minds of the developers who had forsaken them. They started to build a new .NET: one that could compete with Ruby and Node and Scala and Go; more important still, one that was developed in the open, with contributions from the community. It started with Project K, an attempt to build a version of ASP.NET MVC free from the shackles of the dreaded System.Web, but over time it grew into something more ambitious: a recreation of .NET itself as a cross-platform, open-source framework, with command-line tools and multi-platform editor support.
It has not been plain sailing. The early vision of Node-like simplicity was subsumed by the greater vision of extending the new .NET across the full ecosystem, including old .NET, UWP and Xamarin. There have been more false starts than a Seahawks playoffs run, and it’s still not clear when all the promised pieces will finally be in place. But with the release of Visual Studio 2017 on March 7th, which will surely come with, if not the finished then at least a near-final Release Candidate of, .NET Core 2.0, it looks like we may have a real, stable platform to start pushing forward on.
What better time, then, to revive the spirit of ALT.NET?
And what will ALT.NET look like in 2017?
Here’s my take; I hope to see more and diverse ideas from the community soon.
I want to see .NET applications running in modern, cloud-native environments; on Linux as well as Windows; in Docker Swarms and Kubernetes Clusters and “serverless” platforms; on AWS and Google Cloud and Joyent as well as Azure; on ARM as well as Intel.
I want to see .NET solutions built as microservices and distributed systems, using message buses and distributed caches and Actors and hexagonal architectures, with libraries for every kind of supporting service and infrastructure.
I want to see .NET developers getting as excited about the latest developments in software engineering as their colleagues in other ecosystems; I want to see them working on MacBooks or Linux as well as Windows, using Visual Studio Code or Jetbrains’ Rider as well as Visual Studio 2017.
I want to see C# and F# being used to build things like Redis or Kafka or Elasticsearch, as well as line-of-business applications and apps and games.
I want to see a .NET that isn’t just Microsoft’s; one that has a thriving and motivated community driving it forward, pushing it in new directions, making it do things that nobody thought of before.
So let’s resurrect the ALT.NET idea. Let’s explore what we can do with it, where we can take it, how far we can push it. Let’s run meetups that people want to come to because they’re excited to see what’s happening in our world. Let’s take time to try Nancy instead of MVC, or Postgres instead of SQL Server, or Paket instead of Nuget. Let’s have some fun.