-
Notifications
You must be signed in to change notification settings - Fork 643
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
[TFM Display] Badges and Table UI. #8885
Conversation
Overall it looks good, but I think the display looks very busy, because of all of the computed boxes. Few thoughts here:
|
This looks...AMAZING! GREAT JOB! Seriously, this looks great!
P.S. Are we not able to use an accent color like light blue or orange for these that complements say the border? i.e. #0078d4 |
There are no supported framework assets in this package.
Compatible target framework(s)
Additional computed target framework(s) |
Aligning with @clairernovotny's first point -- I think we should hide dnx and aspnet unless that package has actually assets category. In other words, if that category only has computed frameworks, hide it. Could you show Newtonsoft.Json and one other package with only a netstandard package asset? |
I wrote about this in a spec somewhere, but we should consider removing from this list the "deprecated frameworks": https://docs.microsoft.com/en-us/nuget/reference/target-frameworks#deprecated-frameworks I believe it's fine as it is now and we can iterate on it as we get more feedback. |
@JonDouglas, thanks for the clarity. Sounds good to me. @dannyjdev feel free to proceed without my first comment. The additional screenshots will help so please add those.
|
Perhaps it's already in the UX design (but not part of this PR) - I wonder if we can use the real estate in this tab to help users learn about TFMs and TFM compatibility. This can be especially useful for new .NET users. Are there docs we can link? A 101 video we can point to? |
} | ||
else | ||
{ | ||
<span tabindex="0">This NuGet package contains no supported frameworks in their assets.</span> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do our users understand what this means and its implications?
Feel free to ignore this feedback if this is not a common category (few packages with few downloads)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I added a "Learn more about..." link for the tab, it will appear if the package contains or not frameworks, so that users can learn about TFM and .NET. Please refer to the screenshot "Package with no supported frameworks in their assets."
<div> | ||
<i class="ms-Icon ms-Icon--SquareShape frameworktableinfo-computed-icon"></i> | ||
<span class="frameworktableinfo-text">Additional computed frameworks</span> | ||
</div> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do users understand what a Compatible target framework(s)
or Additional computed frameworks
mean? Do they understand the implication of a TFM being a computed framework versus an asset framework?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We definitely need some doc snippets about framework precedence & direct matches. Maybe we do that here? https://docs.microsoft.com/en-us/nuget/consume-packages/finding-and-choosing-packages once we ship?
Please check the 2 latest screenshots I added to the description of this issue. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wonderful job. All my concerns are addressed. There are definitely things we can improve on this in future iterations, but the current experience is how we start to get more feedback from our community. Seriously, great job from spec -> implementation here. Impressive work!
Wow, there's a LOT of weird frameworks on the netstandard one. I think it's still fine to wait and see with customer feedback on including them (per @JonDouglas's feedback). But it might be overwhelming to new users or shed light on some very esoteric frameworks that we don't want to spend energy on. |
Looks awesome 👏 Minor comments:
|
Two last questions as I took another quick look:
Scenario 1. netstandard1.0, netstandard1.3, netstandard2.0 -> .NET Standard 1.0+ / .NET Standard 1.0. (or higher) Scenario 2. netstandard1.0, netstandard1.3, netstandard2.0 -> .NET Standard 2.0 Latest is greatest? Maybe?
i.e. Thoughts anyone? |
Yes, I agree. This emphasizes the support "range" rather than a specific framework. We should do this IMO.
I have no strong feeling here, but I think the numeric ordering is a bit easier to read rather than grouping by "has package assets" first and then by number ordering. |
This was discussed with PM/UX when the design was created, but ended up not adding. Since this is something that could be easily added I'm discussing it with @JonDouglas offline. |
Since most packages do not target the entire world, I think it's fine as is. But maybe we change later if it makes sense?
We're working to get this included as a footnote of the legend. |
Can we do a cross comparison of current supported frameworks both in code / docs & within our mappings? https://docs.microsoft.com/en-us/nuget/reference/target-frameworks#supported-frameworks For example TFM like From another issue about
Similarly I'm going to add a couple client folks to help review TFM here for comments. This will help add some polishing touches 🥇 @nkolev92 @zivkan would you be able to give this a quick review based on screenshots? |
While I agree with other people's comments that the compatible TFM list looks very busy and I imagine it would be overwhelming to people new to .NET, but I have nothing to add and I'm certainly not a UX expert. From a technical/NuGet Client point of view, looking only at the screenshots, not the code, it looks fine. As others mentioned, .NET Standard 1.7 isn't really a thing. It's not listed in the .NET team's own docs on .NET Standard. So, I'd say it should be removed, and maybe only shown when a package contains netstandard1.7 assets. Having a quick look through other people's comments, I don't see .NET (5+) platform version compatibility being raised. While the .NET SDK allows projects to not provide a platform version, and will therefore use its default, customers can opt into higher platform versions if they want to get access to newer APIs. For example, 7.0 is the default platform version for Windows, which means that customers do not have access to Windows 10 APIs. Anyone creating a WinUI needs to make their project, and any packages they create, target The same goes for android, ios, maccatalyst, and so on. It's just that there are different default versions for each. One idea is to display the full NuGet Framework (technically TFM standards for Target Framework Moniker, which is the The problem is that most customers won't know what the default platform version is for each .NET SDK, so they won't know that |
Some of these frameworks that are computed were retrieved from the FrameworkConstants |
@zivkan I just added 2 screenshots on how it will look if a package contains a specific net5.0-windows version, for computing additional frameworks we only have empty versions for those platforms, but if a user has a package with an asset for an specific version, the whole version will show as you can see on the screenshots. |
From a UX perspective, particularly for newbies, I have no idea, so I'm not even going to try to comment. From an advanced .NET developer and technical point of view, looks good to me. That package that has Anyway, lgtm from my end 👍 |
Description
DisplayPackagePageV2
.PackageFrameworkCompatibilityFactory
now returns an immutable dictionary with the first four keys ordered to be .NET the based frameworks (if they have compatible frameworks for the package), the remaining keys are ordered by alphabetical order.GetBadgeVersion()
extension method returns the version that we are going to display for the .NET badge framework.Addresses
Screenshots
Package with supported frameworks, table and badges shown in UI
Package with supported frameworks, but not .NET framework in asset.
NOTE: On badges we only show a .NET based framework if it's in the assets.Package with no supported frameworks in their assets.
NOTE: Badges are not shown here, and since there are no supported assets we provide a little message.
Newtonsoft.json before removing deprecated/unofficial frameworks
Newtonsoft.json after removing deprecated/unofficial frameworks
Package with only netstandard1.0
Package with net5.0-windows10.0.17763
Package with only net5/6 windows10.0.18362