microsoft/winget-cli

Increase the number of allowed tags from 16 to many more in Manifest 1.12

Opened this issue ยท 7 comments

Relevant area(s)

WinGet CLI

Description of the new feature / enhancement

When validating a package with winget validate --manifest (...), the max number of tags that (...).locale.(language code).yaml allows without throwing an error is 16.

For a handful of the most popular and multi-purposed packages in winget-pkgs, 16 is sometimes not enough. Off the top of my head, Epic Games Launcher and AOMEI Partition Assistant, are the clearest cases.

For instance, to take Epic Games Launcher, 1.3.155.0 has filled up its 16 tags previously, which are:

- distribute
- epic
- epic-games-launcher
- epic-games-store
- epic-online-services
- fortnite
- game
- game-store
- games
- games-store
- gaming
- launcher
- marketplace
- store
- unreal
- unreal-engine

I myself would probably have removed at least 5 of those existing tags, but only on the assumption that people simply use e.g. winget search game instead of searching for whole tag names; but that's not the point for this particular issue report.

Besides those 16 listed above, a fair few tags would be well warranted and would've warranted expanding the amount of tags:

- egs (Very, very common abbreviation)
- unrealengine (Non-dashed version of tag)
- epicgamesstore (Non-dashed version of tag)
- epiconlineservices (Non-dashed version of tag)
- xp99vr1bpsbqj2 (The ID of the program on Microsoft Store)

A somewhat similar situation is AOMEI Partition Assistant, where 10.9.0 has so many programs-within-a-program that I needed to use spacing (- ext2 ext3 ext4) to work around the tag limit, and even then there's at least 10 more tags that it would warrant (- discrecovery, etc.).

Proposed technical implementation details

In the upcoming specifications for Manifest 1.12, increase the number of allowed tags from 16 to, let's say, 50.

@dkbennett I "like" powers of two. How hard would it be to bump the number up to 64 for the WinGet 1.12 schema and make sure we're consistent in the REST source as well? Would this fit with our impending release or should we hold until our first 1.13 preview.

@denelon - See both linked PRs

In regards to the power of two, 32 would likely (but not necessarily) suffice, but 64 would be futureproof.

In regards to the power of two, 32 would likely (but not necessarily) suffice, but 64 would be futureproof.

Next thing you'll be asking for more than 640KB of memory... ๐Ÿ˜‰

This does make me wonder if all fields should have their limits reviewed for 1.13

@DandelionSprout generally, tags should be all "lower" case and exclude spaces and prefer a single hyphen between words. The inspiration came from Stack Overflow if memory serves.

I've usually avoided spaces entirely and written tags as one word; so that I write, as a theorethical example, - systempartitions, and not - system-partitions (unless there's enough spare tags to fit both spellings).