chroma-sdk/Colore

Consider removing out of support TFMs

ViktorHofer opened this issue · 3 comments

Detailed Description

Most libraries already target .NET Standard 2.0 or a supported platform that support .NET Standard 2.0 like

  • .NET Core 2.0 and above
  • .NET Framework 4.6.1 and above
  • UAP10.0.16299

I would suggest to consider dropping support for .NET Standard 1.3 and older .NET Framework versions in favor of a broader API set a simplified dependency graph. Other open source repositories are dropping support for older targets as well, i.e. xunit v3. I would be willing to send a PR but wanted to open an issue to discuss this first.

This would probably make sense yeah. Originally the reason for targeting that low on the frameworks was because Unity consistently lagged behind in their support of modern framework versions. It seems though that lately they've managed to keep up a bit better and now support .NET Standard 2.0.

It should probably be fine to target .NET Standard 2.0 as the only TFM and drop the others for future releases.

Given it's a breaking change it's probably best to schedule this change for a 7.0 release (we can of course add .NET Standard 2.0 to 6.x releases but I'm unsure if it brings anything worthwhile given it already targets 1.3).

Currently develop has been updated to have .NET Standard 2.1 as the only target framework. It won't be supported by .NET Framework, but that platform is more or less doomed anyway, and Unity seems to be on its way to support .NET Standard 2.1.

I don't think we'll create the 7.0 release before 2022 anyway, and by that time it'll probably be fine to drop support for framework altogether (not to mention .NET 6.0 will be out by then).

Edit: I'll keep this issue open for a while longer in case more discussion happens.

Update again: .NET Standard 2.0 might be worth to keep as a target for compatibility with Framework for those who are still using that (targeting standard 2.0 instead of some framework target means we can build Colore on non-Windows machines).

So the current plan will be to target .NET 6.0, .NET Standard 2.1, and .NET Standard 2.0.

.NET Standard 2.1 mostly for compatibility for now. Since going forward, Microsoft wants to do away with the "Core" and "Standard" separation, targeting only .NET 6.0 will be the ideal state when previous versions fall out of use.