-
Notifications
You must be signed in to change notification settings - Fork 236
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
Move settings and extensions properties to vscode namespace #1
Comments
Are runtime-specific parts those under the "build" property? |
@bamurtaugh @chrmarti Right now there's really three properties for VS Code that fall into this category I think. (Codespaces is discussing several):
Every other property would apply to other tools near as I can tell. Couple thoughts/questions to future proof a bit here.
For example, for question 1, we could do something like:
To avoid having to type product when only one is in use, we could allow "product.vscode" as well much like
For question 2, often what formats do is require the use of a domain that the company owns. That does get a bit verbose though. Otherwise do we need a process for people to claim a property, and then for question 3 only they get to state what should be added? |
I like the brevity of top-level {
// ...
"vscode": {
"extensions": [],
"settings": {},
"devPort": 3000
},
"codespaces": {
},
"customizations": {
"example.com": {
"foo": "bar"
},
"foobar.com": {
// ...
}
}
}
We need a way to reference the other dev container runtime's schema. Having the VS Code properties in the main schema is only an interim solution. Changes to their schema will then be under their control. |
Yeah makes sense. That's partly why I was thinking about putting these things under a common property - different tools and their related schemas could inadvertently collide at the top level. Something like |
|
@bamurtaugh Yeah I and I think we'll want to publicly document the owner of the namespace. Helps be explicit that it's not something we manage explicitly. |
[Update: Added Doing this in 2 stages will allow the support for the new properties to roll out before they become used more widely:
At a future point we might want offer a code action to move the old properties over to the new properties (e.g., when there are more of them). No need to break existing configurations though. For the devcontainer-features.json we can deprecate the old properties in the schema (but still read them) and start using the new ones. |
@chrmarti Given, gitpod-io/gitpod#7721, I think we've already got a use case here for Either way, we'll want to advertise how people can "reserve" a top level property in the schema (if we keep it at that level) rather than leaving it implicit. I worry about name conflicts if it's a "free for all" at the top level. Perhaps we should describe this in EDIT: I also think we can separate when it is a general part of the spec that is a way for external processors to augment the format from when the reference implementation supports it. Many of the things I'm talking about would be tool/service specific that may or may not be in the reference implementation - though obviously the more the merrier there. |
Documenting |
Yeah, I was thinking once we've finalized this proposal. |
Adding I think of |
Commit: 0041b15c6d0cf0db59026529d91192214f9f787b
Getting this ready for the February release as proposed above. Let me know if this needs further consideration before we can publish it in a stable release. |
I added |
Changes for February are available with Remote-Containers 0.223.0 (pre-release). |
One thing that is important in my mind is to not have a set of first-party/official products that are treated differently in the schema with a separate section for "unofficial" tools. As an open specification, each tool/product that uses devcontainer.json should have an equal playing field with respect to where and how they can extend the devcontainer.json schema for their product-specific customizations. In order to support this, I would propose that we do not have top-level {
"customizations": {
"vscode": {
},
"codespaces": {
},
"gitpod": {
},
"someOtherProduct": {
},
}
} |
My main argument for products running dev containers getting their own top-level property is simplicity of the format. Any such product could ask to be included there, maybe we would require a JSON schema we can reference. Other kinds of tools would remain under customizations which can be self-serviced without us doing anything. |
I feel like it's not a great experience to have an official/unofficial split. A few reasons:
The same thing is true for the presentation of published definitions -- I don't want us to have an official set and an unofficial set. Instead, we should just say who the publisher is and let the user decide whether they trust that publisher or not. That follows the verified publisher pattern of many other registries and doesn't result in having a two-tiered system where some things are more favored than others. |
Commit: d760b6eae9c5506016076e25e80ad4b9cf509aa1
As this is in finalization, should we work on the action items here (i.e. updating definitions and docs)? |
We moved the timeline by another month (updated the above comment). So we now publish and deploy the support for the new properties in April and can start using them by default in May. |
We've addressed the first item in the May checklist (updating samples and docs). Have we addressed the second item: Item 3 mentions documenting in |
Doing Looks like we are done. Closing this issue. Thanks everyone! |
These VS Code-specific properties are currently top-level. The proposal is to introduce a
vscode
property for VS Code-specific configuration and move these two properties there.We can copy the properties in the schema, keeping the old properties as 'deprecated' for compatibility.
One open question is how we can include runtime-specific parts of the JSON schema. For those runtimes we know of, we can reference or inline the schema. For now I suggest to keep these properties in the same schema file.
Interestingly settings and extensions also apply to Codespaces which already has a
codespaces
property for its own configuration./cc @bamurtaugh @Chuxel @jkeech
The text was updated successfully, but these errors were encountered: