Good news everyone! ProGet for Linux now uses .NET Core 3.1! As .NET 5 release day approaches, ProGet will be available on .NET 5.
What does this mean for ProGet users?
Honestly, not much really… but that’s the whole point. While this change is pretty significant for us (thanks to the major changes in .NET 5), I didn’t want ProGet users to notice any functional differences. The software will be installed and upgraded just as before, and it will look and feel the same.
ProGet for Linux ships as a Docker container named proget. As of v5.3.12, that container now uses .NET Core and will soon be .NET 5-based. We are still shipping the Mono-based image, and if there are any problems, users can install progetmono instead. Some day, we’ll stop shipping new versions of the progetmono image.
ProGet for Windows users won’t notice a thing. Perhaps in a year or two, in some major release of ProGet, we may require that a newer version of .NET is installed on the operating system. In that case, the Inedo Hub will prevent you from installing or upgrading until that requirement is met. Or, maybe we’ll use the “self-contained runtime” feature of .NET and ship with an embedded runtime.
What’s the point of .NET Core / .NET 5 then?
For one, we don’t have a choice: Microsoft has made it clear that .NET Core / .NET 5 is the only supported path going forward. The sooner we stop using the to-be-deprecated .NET Framework, the more flexibility you’ll have in deciding when to upgrade ProGet.
But the main benefit for us will be strong cross-platform capabilities across our other products, BuildMaster (CI/CD platform) and Otter (server configuration/provisioning). Both products have always integrated with Linux but being able to run on Linux will be a great option for our users.
.NET Core / .NET 5 should also bring improved stability and performance for our ProGet for Linux users. Unfortunately, Mono’s frequent regressions and “quirkiness” often translated to a poor user experience, and we’d often scramble to find a workaround or submit a patch to the Mono project to fix it.
In fact, this instability was one of the main reasons I hesitated to ship BuildMaster and Otter on Linux. Technically it wasn’t that hard to get running on Mono, but I just didn’t trust the platform, especially for production-critical systems. It’s going to be a much different story for .NET Core / .NET 5 on Linux.
What happens next?
.NET 5 is a big deal, and it’s important that you think about migrating to post-.NET Framework versions sooner rather than later.
We’ve been planning to do this for a long while now, and shipping ProGet for Linux via .NET Core 3.1 is the first public milestone. There were several non-public milestones we had to cross, including migrating many of our supporting libraries.
After ProGet, we’ll move on to Otter; this will be another big step, in part because it will also involve making the Inedo Agent be cross-platform as well. I’m hoping we’ll be able to ship Otter for Linux before .NET 5 day (November 10). And finally, we’ll focus on BuildMaster for Linux.
This is quite a journey for us, and we’ll be sharing the steps and missteps in our own migration, as well as talking about how we’re making all these behind-the-scenes changes without users noticing. Well except you, the readers of these blog posts.
Get a Copy of the .NET 5+ Migration Guide
We’ve built a guide on how to be successful with your .NET 5 migration! Get your free copy today!