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

Set extensionKind in package.json to support Remote Development #147

Closed
mjbvz opened this issue May 2, 2019 · 3 comments · Fixed by #148
Closed

Set extensionKind in package.json to support Remote Development #147

mjbvz opened this issue May 2, 2019 · 3 comments · Fixed by #148

Comments

@mjbvz
Copy link
Contributor

mjbvz commented May 2, 2019

Hi, I'm on the VS Code team. We recently released support for Remote Development and I noticed that your may extension need a small change to ensure users have a good experience when using it remote workspaces.

What is the issue?

To make remote development as transparent as possible to users, VS Code distinguishes two classes of extensions:

  • UI Extensions: These extensions make contributions to the VS Code user interface and are always run on the user's local machine. UI Extensions cannot directly access files in the workspace, or run scripts/tools installed in that workspace or on the machine. Example UI Extensions include: themes, snippets, language grammars, and keymaps.

  • Workspace Extensions: These extensions are run on the same machine as where the workspace is located. When in a local workspace, Workspace Extensions are run on the local machine. When in a remote workspace, Workspace Extensions are run on the remote machine. Workspace Extensions can access files in the workspace to provide rich, multi-file language services, debugger support, or perform complex operations on multiple files in workspace (either themselves or by invoking scripts/tools).

You can find more details about this architecture here.

VS Code currently infers that your extension is a Workspace Extension. This means that users who have your extension installed must also install it to the remote in order to use it in remote workspaces. I believe that your extension should probably be a UI extension instead. That way your extension will always be enabled for users who install it, even if they open a remote workspace.

How do I fix this?

To tell VS Code that your extension is a UI extension, just add "extensionKind": "ui" to your extension's package.json.

UI Extensions always run on the user's local machine, even when they open a remote workspace.

I'll submit a PR that does this. Please let me know if you have any questions or concerns about the issue. We've also put together a guide to help you test your extension in remote workspaces

PS: As a temporary workaround for a few popular extensions, we've automatically added your extension to an internal whitelist so that is always treated as a UI extension

mjbvz added a commit to mjbvz/better-comments that referenced this issue May 2, 2019
@aaron-bond
Copy link
Owner

Thanks for this, I love it. I'll merge and get this on the next release :D

@mainrs
Copy link

mainrs commented Sep 4, 2020

I just got access to the GitHub Codespaces Beta and I cannot install the extension. Codespaces throws an error when trying to install it:

Cannot install 'Better Comments' because this extension has defined that it cannot run on the remote server.

I think this has to do with this issue/PR.

@ican2002
Copy link

this is a cool extension. but I can only install it locally. I am working on a remote linux server, using development remote, and i would like it to support remote development. Can you make it? thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants