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

Allow third party extension points to be marked with isDynamic #67958

Closed
mjbvz opened this issue Feb 6, 2019 · 11 comments
Closed

Allow third party extension points to be marked with isDynamic #67958

mjbvz opened this issue Feb 6, 2019 · 11 comments
Assignees
Labels
extensions Issues concerning extensions feature-request Request for new features or functionality

Comments

@mjbvz
Copy link
Collaborator

mjbvz commented Feb 6, 2019

Follow up on #66574

Request
Add a declarative API to mark a third party extension point as dynamic. This is needed by the markdown extension (#67574) and TypeScript extensions (#67575) which have custom extension points. I am doing work this iteration to make sure these extensions properly respond to extension changes

@mjbvz mjbvz changed the title Allow third party extension points to be marked 66574 Allow third party extension points to be marked with isDynamic Feb 6, 2019
mjbvz added a commit that referenced this issue Feb 6, 2019
@mjbvz
Copy link
Collaborator Author

mjbvz commented Feb 6, 2019

I propose a new contributionPoints section for contributes:

{
  "contributes": {
    "contributionPoints": [
      {
        "name": "markdown.previewStyles",
        "isDynamic": true
      }
    ]
  }
}

@sandy081 sandy081 added this to the February 2019 milestone Feb 7, 2019
@sandy081 sandy081 added extensions Issues concerning extensions feature-request Request for new features or functionality labels Feb 7, 2019
@sandy081
Copy link
Member

sandy081 commented Feb 7, 2019

I think you can also give the schema of your contribution point which can be added to contributes section.

@mjbvz
Copy link
Collaborator Author

mjbvz commented Feb 7, 2019

@sandy081 We've used this trick to define schema contributions but it would be good to standardize things: https://github.com/microsoft/vscode/blob/37fbae08a4391ec3078c35772ddd33dc3d4fa62f/extensions/typescript-language-features/schemas/package.schema.json

@alexdima
Copy link
Member

After discussing this in the stand-up, starting with next stable all 3rd party extension points will be implicitly considered dynamic.

@sandy081 , you had a great analysis on this, can you please share the numbers here.

@sandy081
Copy link
Member

sandy081 commented Feb 11, 2019

I have done extensions analysis to know how many extensions are using external contribution points because of which they require reload when installed. Attaching the results from top 1000 extensions

Top 1000 Extensions

  1. ms-python.python (yamlValidation)
  2. vscjava.vscode-java-test (javaExtensions)
  3. vscjava.vscode-java-debug (javaExtensions)
  4. redhat.vscode-yaml (yamlValidation)
  5. ms-mssql.mssql (outputChannels)
  6. yzhang.markdown-all-in-one (markdown.markdownItPlugins, markdown.previewStyles)
  7. magicstack.MagicPython (//)
  8. Ionide.Ionide-fsharp (outputChannels)
  9. jebbs.plantuml (markdown.markdownItPlugins)
  10. vscjava.vscode-java-dependency (javaExtensions)
  11. VisualStudioExptTeam.vscodeintellicode (typescriptServerPlugins, javaExtensions)
  12. vector-of-bool.cmake-tools (yamlValidation)
  13. jpoissonnier.vscode-styled-components (typescriptServerPlugins)
  14. Pivotal.vscode-spring-boot (javaExtensions)
  15. sbrink.elm (outputChannels)
  16. goessner.mdmath (markdown.previewStyles, markdown.markdownItPlugins)
  17. joaompinto.asciidoctor-vscode (asciidoc.previewStylesEditor, asciidoc.previewStylesDefault, asciidoc.previewScripts)
  18. bierner.markdown-preview-github-styles (markdown.previewStyles)
  19. ms-vscode.notepadplusplus-keybindings (activationEvents)
  20. Ionide.Ionide-Paket (outputChannels)
  21. kangping.luaide (luaideConfig)
  22. bierner.lit-html (typescriptServerPlugins)
  23. ms-vscode.vscode-typescript-tslint-plugin (typescriptServerPlugins)
  24. cake-build.cake-vscode (outputChannels)
  25. asvetliakov.snapshot-tools (typescriptServerPlugins)
  26. AureliaEffect.aurelia (folding)
  27. vstirbu.vscode-mermaid-preview (markdown.previewScripts, markdown.markdownItPlugins)
  28. bierner.markdown-mermaid (markdown.previewScripts, markdown.markdownItPlugins)
  29. Prisma.vscode-graphql (typescriptServerPlugins)
  30. dgileadi.java-decompiler (javaExtensions)
  31. Ionide.Ionide-FAKE (outputChannels)
  32. docsmsft.docs-markdown (yamlValidation)
  33. JaimeOlivares.yuml (markdown.markdownItPlugins)
  34. mermade.openapi-lint (yamlValidation)
  35. manuth.markdown-converter (markdown.markdownItPlugins)

Markdown (8)

  1. yzhang.markdown-all-in-one
  2. jebbs.plantuml
  3. goessner.mdmath
  4. bierner.markdown-preview-github-styles
  5. vstirbu.vscode-mermaid-preview
  6. bierner.markdown-mermaid
  7. JaimeOlivares.yuml
  8. manuth.markdown-converter

Typescript (6)

  1. VisualStudioExptTeam.vscodeintellicode
  2. jpoissonnier.vscode-styled-components
  3. bierner.lit-html
  4. ms-vscode.vscode-typescript-tslint-plugin
  5. asvetliakov.snapshot-tools
  6. Prisma.vscode-graphql

Others

  • yamlValidation (5)
  • javaExtensions (6)
  • outputChannels (6)
  • // (1)
  • asciidoc.previewStylesEditor (1)
  • asciidoc.previewStylesDefault (1)
  • asciidoc.previewScripts (1)
  • activationEvents (1)
  • luaideConfig (1)
  • folding (1)

Overall in the Marketplace(~10000) there are 140 extensions require reload out of which

  • 42 depends on Markdown contribution points
  • 20 depends on Typescript contribution point
  • 20 depends on Yaml & Java contribution points

@sandy081
Copy link
Member

@alexandrudima I see the need for this new contribution point because there could be extensions whose extension points might not be dynamic (just like language pack contributions)

So we can by default consider the external contribution points to be dynamic unless they tag them not.

What do you think?

@alexdima
Copy link
Member

alexdima commented Feb 11, 2019

@sandy081 I would really like to avoid adding anything to package.json unless there is a clear necessity. IMHO we should reach to the owners of these extension points if we know them, and let them know that starting with next stable extensions are dynamic and ... that's it.

In other words, I suggest we don't support non-dynamic 3rd party extension points starting with next stable.

@sandy081
Copy link
Member

Makes sense with the strategy to wait for the users.

@mjbvz Does the typescript plugin extension point is dynamic, it means can it be loaded without reloading VS Code when the new plugin is added?

@mjbvz
Copy link
Collaborator Author

mjbvz commented Feb 12, 2019

Yes, the markdown and typescript extension points are now dynamic

@sandy081 sandy081 removed this from the February 2019 milestone Feb 13, 2019
@sandy081
Copy link
Member

Closing this as this feature is not needed anymore.

@alexdima
Copy link
Member

👍 I've created #68603 to remember to remove the code entirely.

@vscodebot vscodebot bot locked and limited conversation to collaborators Mar 30, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
extensions Issues concerning extensions feature-request Request for new features or functionality
Projects
None yet
Development

No branches or pull requests

3 participants