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

Developers benefit from nullable annotations throughout all netcoreapp and Windows Compat Pack libraries #41720

Open
5 of 23 tasks
Tracked by #43619
jeffhandley opened this issue Sep 2, 2020 · 12 comments
Labels
area-Meta Team:Libraries tracking This issue is tracking the completion of other related issues. User Story A single user-facing feature. Can be grouped under an epic.
Milestone

Comments

@jeffhandley
Copy link
Member

jeffhandley commented Sep 2, 2020

Across .NET Core 3.0 and .NET 5.0, we annotated 94% of the netcoreapp assemblies for nullable reference types. In .NET 6.0/.NET 7.0, we plan to annotate the remaining 6% of that surface area and continue through other assemblies built from the dotnet/runtime repo.

This issue represents the assemblies previously tracked in #2339 that did not get completed in .NET 5.0. Following the same practices we used in .NET 5.0, we will:

  • Submit individual PRs, one for each assembly. Each PR should include changes to both the src and the ref. Each PR should contain only changes related to the nullable annotations/attributes, no other changes.
  • PRs can be merged once the annotations have been appropriately reviewed in PR.
  • Group all of the nullable annotation changes together in Changes to Nullable Reference Type Annotations in .NET 6.0 docs#21202

In .NET 5.0, as was tracked in #2339, we completed groups 1-8, most of group 9, all of group 10, and some items in groups 11 and 12

Planned for .NET 6.0

Group 9

Group 11 (not part of netcoreapp but reference netcoreapp)

Stretch Goal for .NET 6, or Carry Over to .NET 7.0

Group 12 (built from dotnet/runtime but not in netcoreapp and reference netstandard)

With netstandard not annotated, we will need to be cognizant of the fact that all dependencies will be viewed as oblivious:

  • System.CodeDom => netstandard
  • System.ComponentModel.Composition.Registration => netstandard, System.Reflection.Context
  • System.Composition.AttributedModel => netstandard
  • System.Composition.Convention => netstandard, System.Composition.AttributedModel
  • System.Composition.Hosting => netstandard, System.Composition.Runtime
  • System.Composition.Runtime => netstandard
  • System.Composition.TypedParts => netstandard, System.Composition.Runtime, System.Composition.AttributedModel, System.Composition.Hosting
  • System.Configuration.ConfigurationManager => netstandard, System.Security.Cryptography.ProtectedData
  • System.Diagnostics.PerformanceCounter => System.Configuration.ConfigurationManager
  • System.DirectoryServices.AccountManagement => System.Configuration.ConfigurationManager
  • System.IO.Ports => netstandard
  • System.Management => System.CodeDom
  • System.Runtime.Caching => netstandard, System.Configuration.ConfigurationManager
  • System.Security.Cryptography.Xml => netstandard
  • System.ServiceModel.Syndication => netstandard

Lastly

  • Remove #nullable enable from individual files after all dependent projects annotated
@jeffhandley jeffhandley added area-Meta tracking This issue is tracking the completion of other related issues. labels Sep 2, 2020
@jeffhandley jeffhandley added this to the 6.0.0 milestone Sep 2, 2020
@Dotnet-GitSync-Bot Dotnet-GitSync-Bot added the untriaged New issue has not been triaged by the area owner label Sep 2, 2020
@jeffhandley
Copy link
Member Author

@ericstj Do you think we should include the Microsoft.Extensions assemblies in our nullable annotations for 6.0?

@jeffhandley jeffhandley removed the untriaged New issue has not been triaged by the area owner label Sep 2, 2020
@jeffhandley jeffhandley self-assigned this Sep 2, 2020
@danmoseley
Copy link
Member

Do you think we should include the Microsoft.Extensions assemblies in our nullable annotations for 6.0?

I wonder whether the path is smooth enough now (and our guidance up to date?) that community members could help with annotating those. We've had community folks in the past be happy to help with eg dead code and cleaning up analyzer warnings. I know one concern in the past was that it's hard to review/evaluate community PR's for annotations.

@jeffhandley
Copy link
Member Author

Good suggestion, @danmosemsft. We'll put some effort into ensuring the guidance is fully up to date. I intend do to some more project planning around this and probably spawn issues for each assembly to annotate, with them all on a project board. When we do that, we can consider which of them could be marked as up-for-grabs.

@daniel-white
Copy link

I'd be happy to pick up one.

@safern
Copy link
Member

safern commented Sep 2, 2020

I also opened: #41724 to keep track of validation.

@maryamariyan
Copy link
Member

maryamariyan commented Oct 20, 2020

I'd be happy to pick up one.

@daniel-white items under Group 1 in issue #43605 are also up for grabs once the guidance is up to date for community contributions as explained above by @jeffhandley and @danmosemsft

@jeffhandley jeffhandley added the Priority:2 Work that is important, but not critical for the release label Jan 14, 2021
@krwq krwq added Cost:L Work that requires one engineer up to 4 weeks Cost:XL Work that requires one engineer more than 4 weeks and removed Cost:L Work that requires one engineer up to 4 weeks labels Jan 15, 2021
@jeffhandley jeffhandley changed the title Annotate remainder of .NET Core assemblies for nullable reference types Developers benefit from nullable annotations throughout all netcoreapp and Windows Compat Pack libraries Jan 22, 2021
@jeffhandley jeffhandley added User Story A single user-facing feature. Can be grouped under an epic. Bottom Up Work Not part of a theme, epic, or user story labels Jan 22, 2021
@jeffhandley jeffhandley modified the milestones: 6.0.0, 7.0.0 Jul 22, 2021
@ghost ghost added the needs-further-triage Issue has been initially triaged, but needs deeper consideration or reconsideration label Jul 22, 2021
@jeffhandley jeffhandley added Priority:3 Work that is nice to have and removed Priority:2 Work that is important, but not critical for the release needs-further-triage Issue has been initially triaged, but needs deeper consideration or reconsideration Cost:XL Work that requires one engineer more than 4 weeks labels Jul 22, 2021
@jeffhandley jeffhandley modified the milestones: 7.0.0, Future Aug 11, 2022
@elachlan
Copy link
Contributor

elachlan commented Dec 7, 2022

Should this be moved to the .NET8 milestone? Is this still being worked on?

@mairaw
Copy link
Contributor

mairaw commented May 26, 2023

I'm cleaning up the .NET 6 project. This shows as completed on the project dashboard but still open here. Not sure if remaining work should be moved to a new issue @jeffhandley?

@jeffhandley
Copy link
Member Author

@mairaw I'm sure the checkboxes on this issue description are out of date, but also not entirely completed. We completed our checkpoints for 6.0 and 7.0, so it's accurate that the card was completed on the project board. I'd prefer to leave this issue open though, and I'll leave this on my todo list to update this, refine the list of what's left, and decide what to do from there.

@mairaw
Copy link
Contributor

mairaw commented Jun 2, 2023

Sounds good @jeffhandley.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-Meta Team:Libraries tracking This issue is tracking the completion of other related issues. User Story A single user-facing feature. Can be grouped under an epic.
Projects
No open projects
Development

No branches or pull requests