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

Add package readme for obsolete .NET Standard 1.x packages #88911

Closed
wants to merge 4 commits into from

Conversation

MSDN-WhiteKnight
Copy link
Contributor

@MSDN-WhiteKnight MSDN-WhiteKnight commented Jul 14, 2023

There're a lot of .NET Standard 1.x packages that are no longer updated and just forward to inbox implementation both on .NET and .NET Framework (System.Runtime, System.Runtime.Extensions, System.Net.Http and others). They still show up high in NuGet search results, because they have lots of downloads, which creates some confusion for users.

This PR adds text for a generic package readme for these packages, to clarify that they should not be used. This readme should be added manually to them using NuGet gallery website. It can't be added automatically, because these packages are not published any more.

Fixes #86667

Related to #59630

@ghost ghost added the community-contribution Indicates that the PR has been added by a community member label Jul 14, 2023
@ghost
Copy link

ghost commented Jul 14, 2023

Tagging subscribers to this area: @dotnet/ncl
See info in area-owners.md if you want to be subscribed.

Issue Details

The System.Net.Http package is not published since 2018, but it still shows up high in NuGet search results, because it has lots of downloads. This PR tries to clarify that it should not be explicitly referenced in user projects.

NOTE: When this is merged, the readme should be updated manually on NuGet gallery website. It will not be updated automatically, because the package is not published any more.

Fixes #86667

Related to #59630

Author: MSDN-WhiteKnight
Assignees: -
Labels:

area-System.Net.Http

Milestone: -

@karelz
Copy link
Member

karelz commented Jul 16, 2023

I didn't realize we can edit README on the package in the nuget UI. Once we agree on the text, I can update it.

@karelz karelz self-assigned this Jul 16, 2023
@karelz karelz added this to the 8.0.0 milestone Jul 16, 2023
Co-authored-by: Karel Zikmund <karelz@microsoft.com>
@karelz karelz requested a review from a team July 16, 2023 12:13
@karelz
Copy link
Member

karelz commented Jul 16, 2023

@dotnet/ncl can somebody else please check the text? (I heavily edited it, so I'd like to see one more opinion)

@karelz
Copy link
Member

karelz commented Jul 16, 2023

Thanks @MSDN-WhiteKnight for initiating it!

@jkotas
Copy link
Member

jkotas commented Jul 17, 2023

The same guidance applies to all abandoned .NET Standard 1.x era packages: System.Runtime, System.Runtime.Extensions, ... . The exact story for each may differ a bit, but the end result is the same: These packages are obsolete and not necessary, and they should not be used.

Should we stamp the same readme on all these packages?

@MSDN-WhiteKnight
Copy link
Contributor Author

The same guidance applies to all abandoned .NET Standard 1.x era packages: System.Runtime, System.Runtime.Extensions, ... . The exact story for each may differ a bit, but the end result is the same: These packages are obsolete and not necessary, and they should not be used.

Should we stamp the same readme on all these packages?

Likely yes. I've picked System.Net.Http first, because NuGet team mentioned it as a highly downloaded package without Readme (a second time already), but looks like there are more packages that are similar. Are all .NET Standard 1.x dependencies of NETStandard.Library obsolete?

If there're a lot of packages obsolete for the same reason, we probably don't need to add the same package.md file for every library. Instead we could add a single generic "obsolete-package-readme.md" somewhere under docs directory, then file issue to manually add it for packages that need it. Should i change this PR to add generic readme, or keep it focused for System.Net.Http for now?

@jkotas
Copy link
Member

jkotas commented Jul 18, 2023

Should i change this PR to add generic readme, or keep it focused for System.Net.Http for now?

Generic readme makes more sense to me.

@MSDN-WhiteKnight MSDN-WhiteKnight changed the title Add package readme for System.Net.Http Add package readme for obsolete .NET Standard 1.x packages Jul 18, 2023
@MSDN-WhiteKnight
Copy link
Contributor Author

Changed PR to add generic Readme in project docs directory. It now needs to be moved to area-Infrastructure or area-Meta.

@jkotas
Copy link
Member

jkotas commented Jul 22, 2023

The text looks good to me.

@karelz @ericstj Could you please take it from here and apply this readme to all obsolete .NET Standard 1.x packages on github?

@jkotas jkotas requested a review from ericstj July 22, 2023 13:37
@ericstj
Copy link
Member

ericstj commented Jul 24, 2023

We should gather the list of packages to apply this to and review it before taking action. Do we have that anywhere?

Here's a similar list I had from a previous effort where we looked at all packages that folks should remove on the latest framework. Probably this covers a lot - but some are not obsolete on older frameworks. https://gist.github.com/ericstj/de25740692bcbc7ee138f41956b2ea75

@MSDN-WhiteKnight
Copy link
Contributor Author

I was thinking that the list of packages is equivalent to the list of .NET Standard 1.x dependencies of NETStandard.Library, but looks like it does not cover all obsolete packages. For example, System.Net.Http.Rtc is clearly obsolete, but it is not in .NET Standard. Where this package comes from? There's no directory under libraries for it now. Is it in the same bucket as .NET Standard packages, or it's obsolete for another reason?

Also, probably the best way to gather list of obsolete packages is to pick ones that NuGet forwards to inbox implementations on .NET Core and .NET Framework. Do someone know where's the forwarding logic in NuGet or SDK source code?

@karelz
Copy link
Member

karelz commented Jul 31, 2023

@ericstj who can help with generating and verify the list of packages?

@karelz karelz removed their assignment Jul 31, 2023
@ghost
Copy link

ghost commented Jul 31, 2023

Tagging subscribers to this area: @dotnet/area-meta
See info in area-owners.md if you want to be subscribed.

Issue Details

There're a lot of .NET Standard 1.x packages that are no longer updated and just forward to inbox implementation both on .NET and .NET Framework (System.Runtime, System.Runtime.Extensions, System.Net.Http and others). They still show up high in NuGet search results, because they have lots of downloads, which creates some confusion for users.

This PR adds text for a generic package readme for these packages, to clarify that they should not be used. This readme should be added manually to them using NuGet gallery website. It can't be added automatically, because these packages are not published any more.

Fixes #86667

Related to #59630

Author: MSDN-WhiteKnight
Assignees: karelz
Labels:

area-Meta, community-contribution

Milestone: 8.0.0

@ericstj
Copy link
Member

ericstj commented Jul 31, 2023

@ViktorHofer would be good to help with this - I think we already have a similar list we produced for the upgrade assistant. I'd like us to go over that and decide what we do for each of these packages. In some cases it might make sense to actually obsolete them, rather than just add the readme saying they are obsolete.

@MSDN-WhiteKnight
Copy link
Contributor Author

In some cases it might make sense to actually obsolete them, rather than just add the readme saying they are obsolete.

Maybe, actual .NET Standard 1.x packages can't be deprecated based on this: #86667 (comment) , but many non-.NET Standard ones probably can.

I'll post my current attempt at classifying obsolete packages:

.NET Standard 1.x packages (candidates for adding obsolete readme)

Microsoft.Win32.Primitives
System.AppContext
System.Collections
System.Collections.Concurrent
System.Console
System.Diagnostics.Debug
System.Diagnostics.Tools
System.Diagnostics.Tracing
System.Globalization
System.Globalization.Calendars
System.IO
System.IO.Compression
System.IO.Compression.ZipFile
System.IO.FileSystem
System.IO.FileSystem.Primitives
System.Linq
System.Linq.Expressions
System.Net.Http
System.Net.Primitives
System.Net.Sockets
System.ObjectModel
System.Reflection
System.Reflection.Extensions
System.Reflection.Primitives
System.Resources.ResourceManager
System.Runtime
System.Runtime.Extensions
System.Runtime.Handles
System.Runtime.InteropServices
System.Runtime.InteropServices.RuntimeInformation
System.Runtime.Numerics
System.Security.Cryptography.Algorithms
System.Security.Cryptography.Encoding
System.Security.Cryptography.Primitives
System.Security.Cryptography.X509Certificates
System.Text.Encoding
System.Text.Encoding.Extensions
System.Text.RegularExpressions
System.Threading
System.Threading.Tasks
System.Threading.Timer
System.Xml.ReaderWriter
System.Xml.XDocument

Other obsolete packages (candidates for deprecation)

Microsoft.CSharp
Microsoft.NETCore.Targets //already deprecated
Microsoft.VisualBasic
Microsoft.Win32.Registry
Microsoft.Windows.Compatibility.Shims
System.Collections.NonGeneric
System.Collections.Specialized
System.ComponentModel
System.ComponentModel.Annotations
System.ComponentModel.EventBasedAsync
System.ComponentModel.Primitives
System.ComponentModel.TypeConverter
System.Data.Common
System.Data.DataSetExtensions
System.Diagnostics.Contracts
System.Diagnostics.FileVersionInfo
System.Diagnostics.Process
System.Diagnostics.StackTrace
System.Diagnostics.TextWriterTraceListener
System.Diagnostics.TraceSource
System.Drawing.Primitives
System.Dynamic.Runtime
System.Globalization.Extensions
System.IO.FileSystem.AccessControl //already deprecated
System.IO.FileSystem.DriveInfo
System.IO.FileSystem.Watcher
System.IO.IsolatedStorage
System.IO.MemoryMappedFiles
System.IO.Pipes
System.IO.Pipes.AccessControl //already deprecated
System.IO.UnmanagedMemoryStream
System.Json
System.Linq.Parallel
System.Linq.Queryable
System.Net.Http.Rtc
System.Net.NameResolution
System.Net.NetworkInformation
System.Net.Ping
System.Net.Requests
System.Net.Security
System.Net.WebHeaderCollection
System.Net.WebSockets
System.Net.WebSockets.Client
System.Net.WebSockets.WebSocketProtocol
System.Numerics.Vectors.WindowsRuntime
System.Reflection.DispatchProxy
System.Reflection.Emit
System.Reflection.Emit.ILGeneration
System.Reflection.Emit.Lightweight
System.Reflection.TypeExtensions
System.Resources.Reader
System.Resources.Writer
System.Runtime.CompilerServices.VisualC
System.Runtime.InteropServices.WindowsRuntime
System.Runtime.Serialization.Formatters
System.Runtime.Serialization.Json
System.Runtime.Serialization.Primitives
System.Runtime.Serialization.Xml
System.Security.Claims
System.Security.Principal
System.Security.Principal.Windows
System.Security.SecureString
System.Threading.Overlapped
System.Threading.Tasks.Parallel
System.Threading.Thread
System.Threading.ThreadPool
System.Xml.XmlDocument
System.Xml.XmlSerializer
System.Xml.XPath
System.Xml.XPath.XDocument
System.Xml.XPath.XmlDocument

Non-obsolete packages (still have uses on .NET Framework - these should not be touched as part of this PR)

Microsoft.Bcl.AsyncInterfaces
Microsoft.Bcl.Cryptography
Microsoft.Bcl.HashCode
Microsoft.Diagnostics.Tracing.EventSource.Redist
Microsoft.IO.Redist
Microsoft.NETCore.Platforms.Future
NETStandard.Library
System.Buffers
System.Memory
System.Numerics.Vectors
System.Runtime.CompilerServices.Unsafe
System.Runtime.Experimental
System.Runtime.Intrinsics.Experimental
System.Runtime.Loader
System.Security.AccessControl
System.Security.Cryptography.Cng
System.Security.Cryptography.Csp
System.Security.Cryptography.OpenSsl
System.Threading.Tasks.Extensions
System.ValueTuple

@ViktorHofer
Copy link
Member

Thanks for the contribution @MSDN-WhiteKnight. I'm not sure we want to check that README in for the cases where we would just need to update the metadata on nuget.org. I.e. I would just keep this saved somewhere, i.e. as a gist and retrieve it from there when necessary.

Note that while we have made some decent progress on package READMEs for active packages, we haven't yet started with obsoleting netstandard1.x packages and/or updating the ones that don't ship anymore from the main branch. We will revisit this topic when time allows.

@MSDN-WhiteKnight
Copy link
Contributor Author

I'm not sure we want to check that README in for the cases where we would just need to update the metadata on nuget.org. I.e. I would just keep this saved somewhere, i.e. as a gist and retrieve it from there when necessary.

Yes, this PR is not required to be checked in, the purpose was to share the proposed readme text for review. Feel free to close and move to gist if that works better.

@ViktorHofer
Copy link
Member

Sounds good. I'm closing this until we find time to deprecate the older .NET Standard 1.x packages.

@ghost ghost locked as resolved and limited conversation to collaborators Nov 26, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-Meta community-contribution Indicates that the PR has been added by a community member
Projects
None yet
Development

Successfully merging this pull request may close these issues.

System.Net.Http NuGet Package Missing README File
6 participants