We'll never abandon selfservicing, as indeed it will be a major impact to a lot of users and that's simply not a thing we want to do. Same goes for VB.NET. It might be that adding new things like nullable reference types, span etc. in the future might not be doable in areas for selfservicing or VB.NET (I have no idea why not, but let's say that's the case
), then we'd not add these to selfservicing/vb.net, like we've done in the past with some features: people will still be able to use selfservicing but might have to deal with the absence of some features, none of them deal breaking.
It's always a struggle to decide when to cut off older versions and e.g. when .NET 5 arrives, code written to run well on .net 5 with the latest features won't run on older .net fx versions however a lot of customers might still have codebases on net fx for years to come. So we have to see whether we'll freeze our runtime in time for .netfx and fork a .net 5 version off going forward, with the occasional bugfix on the 'frozen' runtime (as .net fx is frozen in time as well: no new features are added) and new stuff added to the .net 5 one.
Looking at the backlash the EF Core team got when they decided to go .net standard 2.1 only in EF Core 3.0 (and then migrated back to .net standard 2.0 in ef core 3.1), it's not the case that the vast majority of .net devs are using .net core already, but indeed, it's inevitable one day they have to.
So I think it's reasonable to assume we'll freeze the 5.x version we have at that time for .net fx and add new stuff to a .net 5 version. When that is, is a bit unclear, likely next year (I have no idea when .net 5 arrives. Looking at the sorry state of winforms/wpf on .net 5 at the moment I don't think it's any time soon
)