Hi everyone!

I've been spending some time with the .NET runtime lately, and I was
informed in a GitHub issue discussion that we decided to skip the .NET 5.0
release and wait for the next LTS version of .NET, which is .NET 6.0. Shawn
Black helpfully linked me to the mailing list archives which helped me get
up to speed with what was discussed officially before.

I'd like to suggest we actually change direction and publish runtimes for
each .NET release, including their "current" (non-LTS releases). I have a
few reasons for this...

1) Many developers are okay taking on the risk of deploying applications
using non-LTS software. Devs who have less to manage and are able to
quickly update their apps fit into this category. Microsoft's own blog post
explaining their new versioning scheme even mentions that:

"If you’re building a service and expect to continue updating it on a
regular basis, then a .NET Core "Current" release like .NET 5.0 may be your
best option to stay up to date with the latest features .NET Core has to
offer." (
https://devblogs.microsoft.com/dotnet/net-core-releases-and-support/)

I think OpenWhisk users creating user functions fit into this category.
They have control over the software they're creating and "expect to
continue updating it on a regular basis."

2) There's also a situation where a developer likes to use LTS software in
production, but finds it challenging to migrate software two major versions
at a time. I fit into this category. I have a real world example at work
where we had to upgrade through multiple major versions of Elasticsearch at
a time. We found it more approachable to upgrade one major version at a
time, ensuring the software was running stable in production for each major
version update. It's probably the case that making an OpenWhisk user
function is a lot less complex than running Elasticsearch, but I think this
philosophy still stands. If each .NET version had a runtime for OpenWhisk,
users could upgrade one version at a time if that works better for them.

When thinking about potential problems, I was thinking about how this might
affect OpenWhisk operators, like IBM Cloud. They'd have an awkward
situation where they'd either introduce a new runtime for a platform and
then pull it out of service (because it would have reached EOL) before
publishing the next version of the platform, or publish all runtimes for
the platform, and warn users as strongly as they could that the non-LTS
runtimes for the platform may be EOL despite being available to use, and
should only be used for development and testing purposes (like my example
with upgrading major versions one at a time).

But I don't think that's even a big deal because what we're talking about
here is what's available to all OpenWhisk operators and users. Operators
can choose to not support non-LTS runtimes if that works better for them.

I'm curious to hear everyone's thoughts on this. If time is an issue, I
should mention that I already have a POC of a .NET 5 runtime working. I
tested it on IBM Cloud as a Docker runtime. I can lend my time to polishing
it up for release and helping with the release process if someone is
willing to show me the ropes. :)

Thanks,
Matt

Reply via email to