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 a "Newly Added Packages" Feature to "winget source update" for Better Discoverability #5106

Open
davidldennison opened this issue Jan 4, 2025 · 5 comments
Labels
Command-Source Issue related to WinGet Source Issue-Feature This is a feature request for the Windows Package Manager client.

Comments

@davidldennison
Copy link

Description of the new feature / enhancement

It would be great to have the winget source update have the ability to list completely new packages that were added to the Winget repository since the last update.

This isn't about updated or outdated versions of existing packages—this is about spotlighting brand-new entries that weren't there before.

The idea is simple: after the sources are updated, the command would optionally display a list of new packages introduced to Winget. If there are no new additions, it exits as normal without any output. This would give developers and users a clear way to discover fresh software without the noise of version updates.

Why This Feature Matters

  1. Drives Discovery of New Software
    Users shouldn’t have to rely on random tweets or external blogs to find out what’s new on Winget. By highlighting new packages directly in the CLI, this feature ensures those tools don’t fly under the radar. For users, it’s about discovering hidden gems. For developers, it’s about ensuring their hard work doesn’t go unnoticed.

  2. Boosts Adoption of New Tools
    Developers who put in the effort to add their software to Winget want it to be used, and users want to find tools that solve their problems. This feature bridges the gap, driving quicker adoption of new tools and making developers’ contributions worth their while.

  3. Encourages Developers to Join Winget
    Adding a package to Winget takes time, resources, and technical effort. Knowing their software will be showcased immediately after it’s added incentivizes developers to onboard their tools to the repository. A clear reward for their efforts means more quality apps for users.

Proposed technical implementation details

Proposed Enhancement

  1. Command Addition

Introduce a flag like --new-packages to winget source update:

  • When this flag is used, the command performs a delta check between the previously cached source and the updated source.
  • If new packages are found, the CLI outputs a list in an easy-to-read format.

EXAMPLE:

 david   C:\      winget source update                                                                                                                             in cmd at 21:45:54
Updating all sources...
Updating source: msstore...
Done
Updating source: winget...
Done

NEW PACKAGES ADDED 🎉

1. StreamMaster - A live-stream management tool. - <URL TO HOMEPAGE>
2. CodePro - A modern IDE for web developers. - <URL TO HOMEPAGE>
3. RapidCompress - A fast and efficient compression tool. - <URL TO HOMEPAGE>

 david   C:\            
@davidldennison davidldennison added the Issue-Feature This is a feature request for the Windows Package Manager client. label Jan 4, 2025
@microsoft-github-policy-service microsoft-github-policy-service bot added the Needs-Triage Issue need to be triaged label Jan 4, 2025
@denelon denelon removed the Needs-Triage Issue need to be triaged label Jan 5, 2025
@denelon
Copy link
Contributor

denelon commented Jan 5, 2025

@davidldennison that's an interesting feature.

What do you think the behavior should be for clients getting their first update in a while?

We have a pretty steady flow of packages being updated and added to the repository. The list could get long.

WinGet performs a source update on its own after the cache expires ~15-16 minutes. Would this feature be only used when performing a manual source update?

@denelon denelon added the Command-Source Issue related to WinGet Source label Jan 5, 2025
@davidldennison
Copy link
Author

This idea stems from Scoops feature where they list all the new updates as shown below. However, I was thinking of only brand new new packages to winget, not updates or new releases. Although I personally would like having such a similar function for Winget as well.

It could also be something users have to opt into!

Image

@florelis
Copy link
Member

florelis commented Jan 7, 2025

Thinking a bit about what it may take to implement this...

For scoop, vcpkg and other package managers that directly use a git repo as their "source", this is relatively straightforward since it is basically a git log since last update. But winget doesn't actually interact with the git repo directly, so we can't do that.

For preindexed sources we use a package with sqlite db created from it. We would have to add something to the package or db to be able to determine what has been updated. It would be a bit tricky to be able to have access to both the old and new versions of the source at once, since the package update happens in-place. Maybe we could add a timestamp to the packages in the db (if we don't already have one) and we could query things more recent than the last update; that would increase the size of the source package but it should be a few bytes per package which may or may not be too much.

For Rest sources, the source update doesn't even do anything since we just query the endpoint when we need to. We would have to add to the rest API to be able to query it, implement it in the reference implementation, and wait for anybody with their own custom implementation to also do it.

@davidldennison
Copy link
Author

@florelis why not just do it by the id alone? For example, in this screenshot if a package id was added named `Microsoft.AIShell.Preview" it would trigger this function. Would that be easier?

Image

@florelis
Copy link
Member

florelis commented Jan 9, 2025

if a package id was added named `Microsoft.AIShell.Preview"

That is what I think is the hard part: determining what IDs were added. Unless somebody more clever than me comes up with a good solution

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Command-Source Issue related to WinGet Source Issue-Feature This is a feature request for the Windows Package Manager client.
Projects
None yet
Development

No branches or pull requests

3 participants