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

PSA: New Manifest Schema #8900

Closed
denelon opened this issue Mar 17, 2021 · 18 comments
Closed

PSA: New Manifest Schema #8900

denelon opened this issue Mar 17, 2021 · 18 comments

Comments

@denelon
Copy link
Contributor

denelon commented Mar 17, 2021

New Manifest Schema

We're about to implement major breaking changes to the YAML manifest syntax.

Discussion
JSON schemas

The intent is to enable a more robust way of describing packages with multiple architectures, languages, and installers. We will also be releasing a new CLI (ETA: May 1st) to make it easier to generate and submit pull requests for manifests (it will be open-source). Some of the new keys are in anticipation of new capabilities that are still in development (like dependencies).

There is a singleton schema for a "single file" YAML manifest for packages with only one locale and one installer. We will be converting all of the current manifests to this new format.

For all other packages there is a "multiple file" YAML structure. There is a "version" file that acts essentially as a reference or pointer for the other files. The "default locale" file provides the descriptive meta-data, additional "locale" files provide descriptive meta-data for other locales. The "installer" file provides the meta-data for one or more installers.

In addition, we will be partitioning the manifest directory by the (lower case )first letter of the publisher name. This will help with GitHub limitations around how many files/folders are displayed in the web UI. For example /m/Microsoft/PowerToys/.

We will be taking a snapshot of the repository and working through the conversion process which will incur downtime. All of the validation and publishing pipelines will be halted for this upgrade. Our first attempt will be Monday, March 22nd March 29th. Any open pull requests along with any new pull requests during this conversion will not be validated.

The Windows Package Manager client will continue to function normally during this transition.

If you are aware of any third party tools or utilities like the sandbox, PowerShell scripts or the list below, please let them know about the changes coming.

Note: I will make edits to update the list of projects and authors/contributors as I am informed.

@denelon denelon added the Issue-Feature Complex enough to require an in depth planning process and actual budgeted, scheduled work. label Mar 17, 2021
@ghost ghost added the Needs: Triage label Mar 17, 2021
@denelon denelon pinned this issue Mar 17, 2021
@denelon denelon added Public-Service-Announcement and removed Needs: Triage Issue-Feature Complex enough to require an in depth planning process and actual budgeted, scheduled work. labels Mar 17, 2021
@denelon denelon self-assigned this Mar 17, 2021
@DrewNaylor
Copy link
Contributor

Having a version file will help a lot with trying to figure out where each manifest is. Sounds like it'll be a fun challenge to switch over support in my own code once this is complete.

@jedieaston
Copy link
Contributor

jedieaston commented Mar 17, 2021

Hooray! Now I don't have to worry about my indentation going wacky.

Is the current version of winget-cli able to consume the new manifest format or should we look for an update?

@denelon
Copy link
Contributor Author

denelon commented Mar 17, 2021

Our intent is to have the current client able to install packages that were submitted with the new schema. There are some new YAML keys that are present for future functionality that is not yet supported. So for those new behaviors, one would need to upgrade to a newer version of the client, but this is not a case where we anticipate an immediate upgrade of the Windows Package Manager (winget.exe) client.

@denelon
Copy link
Contributor Author

denelon commented Mar 22, 2021

I've got a draft PR with some examples microsoft/winget-cli#816.

We're working on something that can parse the JSON schemas and generate documentation so hopefully we will stay more current and accurate for documentation to be published in the next few days.

@denelon
Copy link
Contributor Author

denelon commented Mar 22, 2021

We ran into some internal issues this morning. If all goes well, we will try again tomorrow.

@denelon
Copy link
Contributor Author

denelon commented Mar 24, 2021

We've successfully tested in our pre-production environment. We're looking to start the migration this afternoon in production. I'll update this Issue when we start the migration and disable the validation pipelines. I'll also send a tweet out to try and make sure as many people can be informed as possible.

Any open PRs will remain open, but they will not validate as the schema will have been changed. Authors will need to update their PRs.

@jedieaston
Copy link
Contributor

I was attempting to test a 1.0 manifest in preparation for this, and upon doing winget install -m...

PS C:\Users\WDAGUtilityAccount\Desktop\altmanifest> winget install -m .\Microsoft.VisualStudio.Community.yaml                                         An unexpected error occurred while executing the command:
Unsupported ManifestVersion: 1.0.0
0x8a150007 : Cannot process manifest. The manifest version is higher than supported. Please update the client.
PS C:\Users\WDAGUtilityAccount\Desktop\altmanifest>     

winget validate also fails with a similar message.

Should I open an issue for this in winget-cli?

@denelon
Copy link
Contributor Author

denelon commented Mar 25, 2021

@jedieaston, I'm pushing the current version of the package manager that knows how to validate 1.0 manifests out tomorrow. No need to open an issue. It includes several bug fixes as well as the winget import command.

@denelon
Copy link
Contributor Author

denelon commented Mar 25, 2021

We've got a bit more work to do on the back end to have enough time to feel good about the migration. We're pushing out until Monday March 29th. We have quite a few different services that all needed to be upgraded, and the one that got us was part of our manual validation. We're testing in our Pre-Production Environment (PPE) and we'll throw a few more scenarios at it tomorrow and Thursday. Updates will continue here as we make progress.

@denelon
Copy link
Contributor Author

denelon commented Mar 25, 2021

https://github.com/microsoft/winget-cli/releases/tag/v-0.2.10771-preview has just been published via GitHub. I am publishing this release to the Microsoft Store now. I'll update once it's available.

@denelon
Copy link
Contributor Author

denelon commented Mar 29, 2021

3/29 update:

All of the fully automated scenarios for validation and publishing are working in PPE.
We're locking down on a gap with the automation to help out with manual validation steps.
Once that's complete, I'll update this Issue with the schedule.

@denelon
Copy link
Contributor Author

denelon commented Mar 29, 2021

We are targeting the production migration to start tomorrow morning at approximately 8:30 AM PST. We expect this will take six to eight hours to complete. @KevinLaMS and I will both be presenting at the Microsoft MVP Summit starting at 8:00 AM so it's likely I won't be able to update until a bit later in the morning after the first presentation is complete. Hopefully, the migration will be finished before our second presentation at 5:00 PM PST.

@ghost ghost mentioned this issue Mar 30, 2021
4 tasks
@denelon
Copy link
Contributor Author

denelon commented Mar 30, 2021

I just finished the first MVP Summit presentation with @KevinLaMS and saw the first notification in my e-mail for the migration in progress. We're on our way to the new 1.0 schema.

@jedieaston
Copy link
Contributor

Screen Shot 2021-03-30 at 12 43 54 PM

:O

@denelon
Copy link
Contributor Author

denelon commented Mar 30, 2021

Yuck! I haven't seen that message before.

This was referenced May 17, 2021
@denelon denelon unpinned this issue Jun 2, 2021
@denelon denelon added this to the 1.7 Packages milestone Nov 1, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants