Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Drop support for netstandard2.0 for Npgsql 9.0 #5296

Closed
roji opened this issue Sep 27, 2023 · 10 comments · Fixed by #5434
Closed

Drop support for netstandard2.0 for Npgsql 9.0 #5296

roji opened this issue Sep 27, 2023 · 10 comments · Fixed by #5434
Assignees
Milestone

Comments

@roji
Copy link
Member

roji commented Sep 27, 2023

After some internal discussion, we believe the time has come: we'll be dropping support for netstandard2.0 for Npgsql 9.0; this notably means that it will not be possible to use Npgsql 9.0 from .NET Framework. People still on .NET Framework will need to stay on older versions of Npgsql, such as 8.0.

@roji roji added this to the 9.0.0 milestone Sep 27, 2023
@manandre
Copy link
Collaborator

I fully support this decision, it was already great to keep compatibility with .NET Framework for such a long time!

The impact on supported TFMs for Npgsql 9.0 is not clear for me, in particular for packages currently supporting netstandard2.0 like some Npgsql.* plugins, do they move to netstandard2.1?

@roji
Copy link
Member Author

roji commented Oct 18, 2023

@manandre netstandard2.1 supports only .NET Core 3.0 and above (and no .NET Framework at all, see table); given that the oldest .NET Core TFM that's supported is net6.0, netstandard2.1 is kinda dead.

So the plan would be for Npgsql 9.0 to target net6.0 as its minimum TFM. The Npgsql plugins which are maintained in our repo would also be updated to target net6.0 as the minimum, others would need to update as well.

@manandre
Copy link
Collaborator

@roji Does this table correctly sum up the targeted setup?

Package netstandard2.0 netstandard2.1 net5.0 net6.0 net7.0 net8.0 net9.0
Npgsql Remove Remove Remove Keep Keep Keep New
Npgsql.DependencyInjection Remove Keep
Npgsql.GeoJSON Remove New
Npgsql.Json.Net Remove Keep
Npgsql.NetTopologySuite Remove New
Npgsql.NodaTime Remove Keep
Npgsql.OpenTelemetry Remove New

@Brar
Copy link
Member

Brar commented Oct 19, 2023

Given that Npgsql 9 will probably appear after November 12, 2024, maybe we should align with the official .NET support policy and already drop net6.0.
I know that net6.0 currently causes very little maintenance burden, but that will occur at some point and I see a big pro in having a predictable support policy.

@roji
Copy link
Member Author

roji commented Oct 19, 2023

@manandre given that net7.0 goes out of support in May of 2024 and Npgsql 9.0 will be released in October, I don't think we'll be targeting net7.0. But otherwise that looks more or less right.

@Brar yeah, technically we could drop net6.0 as well for 9.0. As net6.0 will go out of support exactly when we release Npgsql 9, I think it would be helpful to support it for one more year, giving users a bit more time to upgrade; but I don't have super strong feelings about it...

(It's already such a relief to get rid of netstandard2.0 and the old stuff that keeping net6.0 for a year seems like no effort at all 😅 )

@Brar
Copy link
Member

Brar commented Oct 19, 2023

What I have in mind that we typically not only support the current Npgsql release, but rather also the two previous ones.
So dropping it with Npgsql 10 in 2025 would make us install the long unsupported net6.0 for maintenance purposes until 2027 in order to be able to backpatch and test things for Npgsql 9.
Also I don't see the point in upgrading Npgsql to the newest release (given we still maintain the older ones too) while staying on an out of support version of .NET.

@roji
Copy link
Member Author

roji commented Oct 19, 2023

Yeah, we'll certainly have some unsupported TFMs in CI for previously-released versions for patching, but that seems pretty harmless no?

Also I don't see the point in upgrading Npgsql to the newest release (given we still maintain the older ones too) while staying on an out of support version of .NET.

Maybe, but we know lots of people do that... They may urgently need a feature or bug fix from the new Npgsql version, but don't have the time right away to upgrade and test the new .NET version, for example.

I'm not really pushing back that much - we can see what the other Npgsql folks think. It's just that keeping net6.0 for another year will likely add no burden on us, is all.

@manandre
Copy link
Collaborator

Let's start with this setup, we may adapt later if needed.

Package netstandard2.0 netstandard2.1 net5.0 net6.0 net7.0 net8.0 net9.0
Npgsql Remove Remove Remove Keep Remove Keep New
Npgsql.DependencyInjection Remove Remove New
Npgsql.GeoJSON Remove New
Npgsql.Json.Net Remove Keep
Npgsql.NetTopologySuite Remove New
Npgsql.NodaTime Remove Keep
Npgsql.OpenTelemetry Remove New

@roji
Copy link
Member Author

roji commented Oct 19, 2023

@manandre assuming we keep net6.0 for Npgsql, Npgsql.DependencyInjection should also keep working on net6.0.

@manandre
Copy link
Collaborator

Oh you are right! New attempt:

Package netstandard2.0 netstandard2.1 net5.0 net6.0 net7.0 net8.0 net9.0
Npgsql Remove Remove Remove Keep Remove Keep New
Npgsql.DependencyInjection Remove New Remove
Npgsql.GeoJSON Remove New
Npgsql.Json.Net Remove Keep
Npgsql.NetTopologySuite Remove New
Npgsql.NodaTime Remove Keep
Npgsql.OpenTelemetry Remove New

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants