Code-server: Extensions are outdated and not retrieved from Microsoft

Created on 6 Mar 2019  路  20Comments  路  Source: cdr/code-server

  • code-server version: 1.31.0-20 (or 1.0.0 according to it's own output)
  • OS Version: Fedora 29
  • Extension: any

All extensions are extremely outdated. I noticed it's querying some google storage (https://storage.googleapis.com/coder-production-extensions) instead of the VS Code Marketplace.

Why not use the official one?

enhancement needs-decision

Most helpful comment

I found a workaround for this;

  1. Use the official code with X and install extensions from VS Code Marketplace.
  2. Make symlink to ~/.vscode/extensions:

    rm -rf ~/.code-server/extensions
    ln -s ~/.vscode/extensions ~/.code-server/extensions
    
  3. Run code-server; you can use the installed extensions!

All 20 comments

I found https://github.com/codercom/code-server/commit/c384dfb81579ce054ad3323d353dfa6115a4b977

According to the commit message and the code setting SERVICE_URL should allow to override it, but it doesn't. Does the binary override the environment variables?

@schrej keep in mind code-oss which Coder bases off, does not include Extensions that has access to the registry.

We can't use Microsofts official extension registry as they don't open it to the public.

We'd love to open the world of extensions to all users, so we've created a system of observing and building from open-sourced GitHub repos for extensions. It isn't perfect yet, but we're working on it.

Which extensions in-particular have you found to be out of date?

cc: @foresthoffman

@kylecarbs Eclipse Che's extension registry might interest you. They've been working on it and we can adapt it for Coder/VSCode OSS

https://github.com/eclipse/che-plugin-registry

@sr229 I believe Che's extensions are written in Java, so that would require a large refactoring of the way extensions are currently handled.

I think the approach we're currently taking works nicely, and allows for a very open community where the builds are pulled directly from GitHub, GitLab, etc.

@kylecarbs Che 7 is VSCode-compatible (moved to Theia, which is VSCode-compatible), which can be adapted for Coder as well with substantial modifications.

We can't use Microsofts official extension registry as they don't open it to the public.

Can't we still download the extensions from the official registry? Or do we need to make modifications to them?

we could but we need to learn the underlying API for it. @nhooyr

@nhooyr They don't have a public API for us to pull from, so any web scraping would be very jank and unreliable. The added benefit of building from open source is: we can prevent versions that are failing to build from getting into the marketplace.

I doubt their API is changing very often. I don't think it will be jank or unreliable. Right now our approach is causing outdated extensions and a divergence which is a bigger problem.

Their TOS disallows it.

I found a workaround for this;

  1. Use the official code with X and install extensions from VS Code Marketplace.
  2. Make symlink to ~/.vscode/extensions:

    rm -rf ~/.code-server/extensions
    ln -s ~/.vscode/extensions ~/.code-server/extensions
    
  3. Run code-server; you can use the installed extensions!

And what if you are running it on ubuntu/debian server?

I used X server on Windows like MobaXterm + ssh -X to the ubuntu/debian server.

It can work as a temporary solution, but it's certainly needed a more definitive way to implement extensions

@ymmt2005 my extensions show up as disabled if I do this on ubuntu server

All good or was me setting the extensions folder incorrectly

@andreimc which extensions are showing up as disabled?

Another (easier than settung up X server) workaround is to just install extensions locally and then copying them over to the server using SCP (or whatever)

What immediatly comes to my mind is to make an extension that loads the marketplace into a vscode tab, and make a simple bookmarklet or browser extension that appends a button onto the extensions page / card. All it would need to do is grab the rifi2k.format-html-in-php value and post it back to a simple webhook you were listening locally on via your inital extension or whatever. Use the vscode cli to download it for you. So technically you wouldn't be breaking the TOS someone would have implemented a way to download extensions via the already existing vscode cli.

Or you could do the same thing but only append and make the extension downloadable if it links to a public repo, then you can just grab it that way.

Closing as there isn't really a solution to this. Our marketplace seems to be improving though :hugs:

Was this page helpful?
0 / 5 - 0 ratings

Related issues

justmao945 picture justmao945  路  3Comments

broady picture broady  路  3Comments

chrischabot picture chrischabot  路  3Comments

RealSlimMahdi picture RealSlimMahdi  路  3Comments

KSXGitHub picture KSXGitHub  路  3Comments