Code Monkey home page Code Monkey logo

Comments (117)

kylecarbs avatar kylecarbs commented on May 22, 2024 58

Currently, we do not support multiple users collaboratively editing on the same code-server instance. We've thought of this and would love to hear what your thoughts are.

In our world, it'd be great to provide collaborative access, but never allow the collaborator to have control over the host machine in any way (for security reasons).

from code-server.

rdbeach avatar rdbeach commented on May 22, 2024 52

Hi. the collaboration system using firebase is now open source. You can set up multiple accounts for the same code-server instance, each with their own settings! You can collaborate in real time with team members. There is a user tracking system so you can see where everybody is and what they are doing, and you can quickly focus in on their work.

I have released a beta version. Get it here: https://github.com/coderpair/vscode-live
Looking for some people to try it and give me feedback.

screenshot2

Also looking for help in general as to long term maintenance and/or incorporating it into code-server. It's a big mod, almost doubling the size of the patch, so I don't know if it make sense to work it in or just continue to develop in parallel.

from code-server.

nhooyr avatar nhooyr commented on May 22, 2024 43

Yes, you're absolutely right. Unfortunately at the moment the team is occupied but I am reopening this. Hopefully we can get to it within the next few months.

from code-server.

rdbeach avatar rdbeach commented on May 22, 2024 22

Hi. I have developed a real-time collaboration system for code server based on Firepad/Firebase.

You can see a demo here:

https://youtu.be/fW9oXbbHjC8

I plan on shopping this around a bit to see if there are any companies that are interested, and would like to work with me on integrating this feature into there business.
[email protected]

from code-server.

AnthonyMastrean avatar AnthonyMastrean commented on May 22, 2024 21

I came here looking for information on multiple users sharing one code-server server, not for collaboration, but for each user to work on their own projects with proper isolation... I don't want to run a code-server per user with random ports.

Is there a feature/issue for this use-case?

from code-server.

zanhk avatar zanhk commented on May 22, 2024 17

The user interface may look like this:

Code-server1
Code-server2
Code-server3

from code-server.

MatthiasHertel avatar MatthiasHertel commented on May 22, 2024 17

@nhooyr whats up with this ...

i guess corona virus "makes the time right" for the strong demanded collab feature. it should be possible use collab on premise instead of using live share.

https://github.com/cdr/code-server/blob/master/doc/FAQ.md#collaboration
from the faq.md

Collaboration
At the moment we have no plans for multi user collaboration on code-server but we understand
there is strong demand and will work on it when the time is right.

from code-server.

baryla avatar baryla commented on May 22, 2024 16

This feature is a must for us. In terms of access, I would say that allowing the use of a terminal and editing any file/folder etc. would be enough.

My suggestions based on Cloud9 experience:

  • Allow for a shared terminal
  • See exactly where others are on a file (cursor, line highlight)
  • A way to see how many people are currently viewing the project
  • A way to see a person's active file (we usually talk about a particular file that may be nested in 10 folders)

The way Cloud9 tackled this is great and it is something I'd personally love to see implemented in code-server. We use it as our go-to IDE but after Amazon's take over, we're looking for alternatives and Coder/code-server would be it if it had collaboration/live share.

from code-server.

KaKi87 avatar KaKi87 commented on May 22, 2024 16

you can start hosting a CodeTogether session from the CodeTogether view and then share the URL with others. Anyone with the URL can join using either a browser or an IDE

So, the collaborators won't use the host's VSCode instance, which is my point.

Therefore, those options are not solutions but alternatives.

The feature requested here implies that all collaborators directly interact with the self-hosted code-server instance without any third-party dependency.

from code-server.

xPaw avatar xPaw commented on May 22, 2024 15

I currently use https://github.com/c9/core for collaboration, where multiple users can log into the same server and work together.

code-server interests me as it uses VS Code so it heavily supported, unlike Cloud9. For my use case, permissions aren't really a problem.

from code-server.

KaKi87 avatar KaKi87 commented on May 22, 2024 15

Here's recent activity occuring, then. Have a nice week !

from code-server.

 avatar commented on May 22, 2024 13

I'd have a look at how MS Word Online handles it:
Word Online

I like the idea of having a different cursor for every person actively editing,
this could be implemented via WebSockets / WebRTC.

Also, when providing a login functionality, there should be a modern backend for this, not just local users.
A solution that would fit very many people would be to integrate SAML and/or OpenID authentication.

As I mentioned in #85, you could use Keycloak (which can handle both SAML and OpenID) as an IdP:
Keycloak: keycloak/keycloak
Keycloak NodeJS integration: keycloak/keycloak-nodejs-connect

from code-server.

zanhk avatar zanhk commented on May 22, 2024 11

Maybe also with an interactive button in the status bar showing connected user and options to manage permissions.
This could be a really game changer

from code-server.

sr229 avatar sr229 commented on May 22, 2024 10

@ZK-G yes its still planned to be done, but we're doing a rewrite of code-server using VSCode Web. That way we have a environment close to VSO (Microsoft's closed beta Online IDE service) which basically is just standard VSCode Web with Live Share.

I think that's a better route to go to rather than making our own. I wouldn't mind people reverse-engineering VS Live Share to make a Open Source implementation, it'll help us alot.

from code-server.

prosenjit-manna avatar prosenjit-manna commented on May 22, 2024 10

I am able to create multiple instance with multiple local user account and setup in aws ubuntu server. Each user have their own directory permission.

from code-server.

AuthorShin avatar AuthorShin commented on May 22, 2024 10

Any update on this?
Aside from collaboration, is there a way for different users to sign in with their own credentials to access their own workspace?

from code-server.

code-asher avatar code-asher commented on May 22, 2024 9

from code-server.

caio-vinicius avatar caio-vinicius commented on May 22, 2024 8

+1 this really will help

from code-server.

pojntfx avatar pojntfx commented on May 22, 2024 8

To mitigate this issue, I wrote pojde, which creates multiple isolated code-server instances with Docker (or another CRI implementation) and handles updates, authentication, volumes, toolchains, TLS etc. - I already use this to share a powerful central server with some fellow uni students (and code from anywhere on the planet), although proper multi-tenancy support (and especially real-time collaboration) would still be awesome :)

from code-server.

sr229 avatar sr229 commented on May 22, 2024 7

I am able to create multiple instance with multiple local user account and setup in aws ubuntu server. Each user have their own directory permission.

This is out of topic and not related to the actual feature request.

from code-server.

kainzpat14 avatar kainzpat14 commented on May 22, 2024 6

This seems to be possible as an extension without any additional APIs, I have been experimenting with Rijul5/vscode-teletype and it seems that the decoration API and the editor API both provide everything one would need.

The current state of the experiments can be found in kainzpat14 /
vscode-teletype
. The original version was with Teletype, which is a bit to opinionated for my tastes and also uses proprietary APIs, so I have been trying to get YJS (which was mentioned in this thread) working instead, it seems to do what one would need.

VSCode has a few unfortunate behaviours that make something like this a bit difficult, such as the fact that it seems to be multithreaded (which a node program shouldn't be) and provides no way to mark edits as "system" generated, leading to race conditions, for which I have yet to come up with a nice synchronization mechanism.

All in all it appears to be very possible and I hope to continue working on the extension to provide both code-server internal co-editing and sharing between VSCode and code-server.

from code-server.

pojntfx avatar pojntfx commented on May 22, 2024 6

One solution I have gotten to work: https://www.codetogether.com/

Supports pretty much everything live share supports (conflict-free multi-user editing, search, refactoring, terminals etc.), but also works in (just tested it):

  • code-server
  • VSCodium
  • VSCode

Plus IntelliJ and Eclipse, although I haven't tested it. They also allow anonymous usage w/o an account which is pretty nice and they publish to Open-VSX, so it's installable from the "Extensions" tab: https://open-vsx.org/extension/genuitecllc/codetogether

I think the last part to make code-server support it 100% is having something like VSCode's argv.json to set the required proposed API flags (-enabled-proposed-api) and this would be pretty much a 1:1 replacement for live share :)

from code-server.

zanhk avatar zanhk commented on May 22, 2024 5

Is the multi-users function planned for any time soon?

Thanks

from code-server.

UnlimitedCookies avatar UnlimitedCookies commented on May 22, 2024 5

I don't know if this helps.
Potentially the javascript-based backend shareDB might be a good fit for syncing the texts between the clients.

from code-server.

baryla avatar baryla commented on May 22, 2024 4

@kylecarbs - sorry I accidentally commented and then deleted it haha. See my new comment.
Regarding how Cloud9 implemented this - I'm not sure about the self-hosted version as I haven't used it however, the way we use cloud one is this:

  1. We create a remote SSH workspace from our master account per project
  2. From the master account, we invite all devs to have access to the workspace (files/folders + terminal)
  3. Then you switch to your personal account and use the workspace shared by the master account.

I'm trying to think what malicious activity there could be if this is self-hosted? Surely if you have a secure server and you trust your devs, there is nothing to worry about? In our case, we only have 3 full-time devs so I guess the only time where there could be a concern for this is if we get a freelancer or something.

If you could share some of your concerns about this, I'd love to hear them! :)

from code-server.

 avatar commented on May 22, 2024 4

My concern is not one of trust, it's one of software security. For an optimal experience, i'd really like to see each terminal in it's own docker container, where you can select any docker image before running it. That would solve both security and the build/dev environment, and also is able to scale properly.
I'd use this as an instance on kubernetes to provide it to friends for example, where just trusting them not to screw up my server simply isn't enough :)

from code-server.

jdabs avatar jdabs commented on May 22, 2024 3

Isn't this what git should be handling? I don't see why I'd want two developers working on the same file without seperate branches. Maybe in a learning environment, but not in a business setting.

The git checkout feature should feed to the editor, only. If collaboration is needed, outside of an educational setting, then what for?

from code-server.

AndyIsHereBoi avatar AndyIsHereBoi commented on May 22, 2024 3

i would love to see this. it would be basicly replit but better.

from code-server.

baryla avatar baryla commented on May 22, 2024 2

@PhilsLab - 100% agreed about the project selection. When it comes to accidentally killing the server - I guess there could be times when this happens but I don't think this is a massive concern. Well, it would be if you worked directly from a live server. Ideally you should only be working on a dev or staging server and then only push your code live so it's not a big deal (IMO).

from code-server.

vanducng avatar vanducng commented on May 22, 2024 2

This feature will bring code-server to a new level, i just installed for some people in my team. It works like charm.

from code-server.

brandonkal avatar brandonkal commented on May 22, 2024 2

@vanducng what extension did you just install for this?

from code-server.

rdbeach avatar rdbeach commented on May 22, 2024 2

@code-asher @zepinto Im not saying it can't be done as an extension, but I couldn't figure out how to do it. I doubt that it can be done, at least with a Firepad based solution.

I originally tried to create it as an extension but but was frustrated by the lack of low level access. With a Firepad based solution, you need to have access to an ICodeEditor instance, and they don't even give you that in the extension API. I also ended up having to make a few fundamental changes to the way the ICodeEditorWidget works. One more thing: with the API, they don't let you interact with the DOM at all (probably with good reason!) so I tapped into some native code to give the user list more of the look and feel of vscode.

As for right now, I would like to know if the guys at coder would be open to bringing in some of the server side changes I have made? These changes are small--like adding options to the configuration for Firebase. Even the multi-user option is fairly straightforward and could easily be implemented right now. I also put back the dashboard that had previously been taken out. If you brought in these changes, then I would basically only have to keep the patch up to date, which I can easily do by myself. Then we can figure out what to do with the patch or how to make it more modular later.

One thing: I started working on this before you changed the whole thing to express, and I have yet to look at those changes.

Lastly. My original intent was to create a derivative work from vscode and incorporate it into some kind of web based service. I have an idea of what I want to do, but I'm kind of looking for someone to team up with. I actually talked with a few code-interview businesses about using this, but I didn't get any takers as of yet.

from code-server.

gsmachado avatar gsmachado commented on May 22, 2024 2

@sr229 @daumling
Maybe it's totally unrelated to this subject, but I tried MS-vsliveshare.vsliveshare extension with code-server and I couldn't make it work because of some kind of authentication issue.

I described what happened in this discussion topic.

from code-server.

jsjoeio avatar jsjoeio commented on May 22, 2024 2

Liveblocks is real‑time collaboration infrastructure as a service

https://liveblocks.io/blog/introducing-liveblocks

I don't know if this could be integrated into code-server but worth posting here so I don't forget.

from code-server.

code-asher avatar code-asher commented on May 22, 2024 2

from code-server.

toddewilliams avatar toddewilliams commented on May 22, 2024 2

@AndyIsHereBoi There are already two solutions that provide this for code-server, (Duckly and CodeTogether).

The proper way to set each of them up is documented on the collaboration page. Each website has the detailed capabilities of each so you can see which on is a better choice for you.

Also, here is a multi-product comparison chart that includes both of those products (as well as others), to help you decide what solution is best for you and your team.

from code-server.

toddewilliams avatar toddewilliams commented on May 22, 2024 2

@KaKi87 I've never used Duckly but since CodeTogether is my company's product I can answer definitively for it.

You will not need a separate VS Code instance with CodeTogether.

Once you've followed the installation procedures on the collaboration page, you can start hosting a CodeTogether session from the CodeTogether view and then share the URL with others. Anyone with the URL can join using either a browser or an IDE (VS Code, VSCodium, Eclipse, IntelliJ, or an IDE based on one of those).

Here is a quickstart guide for the process for VS Code. Just skip Step 1 (install) and use the installation instructions from the code-server documentation instead.

from code-server.

toddewilliams avatar toddewilliams commented on May 22, 2024 2

@pkkid I'm not going to comment on your feedback for the code-server team as that feedback is for them.

I would like to simply clear up a couple of the concerns you expressed specifically about CodeTogether.

Both solutions mentioned require a third-party external account as well as limitations on how long or what we can share unless paying for an account.

CodeTogether provides completely anonymous (no account) and free usage for an unlimited number of sessions for up an hour and four participants. Sessions that are longer or larger than that would require one of our subscription plans.

The workflow of logging into another account, then sharing a link together is jarring and confusing when we just want to see the other user's cursor and potentially follow their location.

An account to join a CodeTogether session is never required. Any session at any level can always be joined with just a URL.

Both options are more like using a screen sharing tool than they are working together on the same code like Replit because of the host/client connection process.

I don't know what you mean in CodeTogether's case because it does has the same "Google Docs-like" editing that Replit does, as well as chat and audio/video if you want it. You're literally editing the same files at the same time in the editor of your choice and no screen sharing is involved.

Sharing with a CodeTogether link actually opens a second IDE on their website. So there are technically two IDEs

I believe there is confusion here. When you join a CodeTogether session, there is no "second IDE on their website". You have an IDE-like experience in your browser, or in your actual IDE. If you join from an IDE, then there are technically two IDEs, one for the host and one for the participant since they joined from it.

and code being send to third-party servers

This is somewhat true in that the minimal amount of content is sent through the servers in an E2E-encrypted channel that they don't store and can't decrypt. There are the details on the end-to-end security of CodeTogether for the interested. We also have a version you can run behind your firewall, completely on-premises and without Internet access.

and none of the host IDE settings transfer over.

That's true and by design. Each participant chooses the theme and keybindings they prefer from their favorite IDE. The host has one set of preferences and each participant can choose something else.

If @pkkid or anyone else has any questions about CodeTogether, the development team answers questions on Gitter and here's the GitHub project for any bugs or enhancements.

from code-server.

Mustafa-C avatar Mustafa-C commented on May 22, 2024 1

Since c9 appears to no longer be worked on and it's collaboration is shady many are looking for other web IDEs that support collaboration, it's one of the greatest advantages of having a cloud IDE. Hopefully this features is added in the months to come.

from code-server.

sr229 avatar sr229 commented on May 22, 2024 1

Since c9 appears to no longer be worked on and it's collaboration is shady many are looking for other web IDEs that support collaboration, it's one of the greatest advantages of having a cloud IDE. Hopefully this features is added in the months to come.

As a matter of fact, I think I found a livecollab extension in the extension gallery that is open source, might worth checking?

from code-server.

mgielda avatar mgielda commented on May 22, 2024 1

What about yjs - https://github.com/yjs/yjs ? It has Monaco support: https://github.com/yjs/y-monaco

from code-server.

umcconnell avatar umcconnell commented on May 22, 2024 1

@nhooyr The TogetherJS examples aren't working, because the examples try to connect to hub.togetherjs.com. This hub doesn't exist anymore. This issue gives more details on the problem and instructions on how to set up a hub.

from code-server.

daumling avatar daumling commented on May 22, 2024 1

I've implemented nginx authorization via its auth module. It would be great if I could set a HTTP header to have code-server open a file, folder or workspace. I've opened feature request #2506 with more details.

from code-server.

sr229 avatar sr229 commented on May 22, 2024

If I remember, this is a planned feature. But if this was a 1:1 code-oss port. VS Live Share could work on this.

from code-server.

sr229 avatar sr229 commented on May 22, 2024

I think we should do this the way how VS Live share does it - RBAC by limiting views to read-only and restricting terminal access.

from code-server.

nhooyr avatar nhooyr commented on May 22, 2024

@kylecarbs does vscode live share work?

from code-server.

kylecarbs avatar kylecarbs commented on May 22, 2024

I believe it would if the extension was open-sourced. Unfortunately, we can't provide support for it.

See: microsoft/vscode#38733 (comment)

from code-server.

zanhk avatar zanhk commented on May 22, 2024

This is a must for a cloud ide, Without this feature I don't even see an advantage of using a cloud editor as there are few ways to share the workspace through the client: and in plus require less resources than the browser.
So definitely +1

from code-server.

kylecarbs avatar kylecarbs commented on May 22, 2024

from code-server.

 avatar commented on May 22, 2024

I think project selection should be done after login via a seperate page, locking each vs code session to one project to work on at a time.

from code-server.

 avatar commented on May 22, 2024

@baryla You could accidentially kill the server/container via the terminal, e.g. by installing packages that mess with the system, or killing the wrong process ID.
I already had some thoughts about that in #86.

from code-server.

nadavpa avatar nadavpa commented on May 22, 2024

See how the jupyter team solved this: https://jupyter.org/hub

from code-server.

babakness avatar babakness commented on May 22, 2024

I believe codesandbox io has this feature as well and it is open source.

https://github.com/CompuIves/codesandbox-client

from code-server.

sr229 avatar sr229 commented on May 22, 2024

Be reminded we can try VS Live Share, which is available in the official extensions gallery, I think we can pull from there and support that atm

from code-server.

NGTmeaty avatar NGTmeaty commented on May 22, 2024

I don't think it'll be "officially" supported because I don't believe there's a official way to obtain it. (But I do think it's a very good solution if you can get the .VSIX.)

from code-server.

sr229 avatar sr229 commented on May 22, 2024

You can apparently

from code-server.

baryla avatar baryla commented on May 22, 2024

@sr229 - have you tried it? does it actually work?

from code-server.

PassTheMayo avatar PassTheMayo commented on May 22, 2024

@baryla
image

from code-server.

baryla avatar baryla commented on May 22, 2024

@PassTheMayo Great! haha. Thanks for letting me know that it doesn't work ;)

from code-server.

stepri avatar stepri commented on May 22, 2024

I've installed VS Live Share via the following Dockerfile commands:

RUN curl -JL https://marketplace.visualstudio.com/_apis/public/gallery/publishers/MS-vsliveshare/vsextensions/vsliveshare/0.3.1326/vspackage | bsdtar -xvf - extension
RUN mv extension /root/.code-server/extensions/ms-vsliveshare.vsliveshare-0.3.1326

But I got the following error when starting a session:

Error: command 'liveshare.joinFromActivityBar' not found

I've also added the command to install the required dependencies:

RUN wget -O ~/vsls-reqs https://aka.ms/vsls-linux-prereq-script && chmod +x ~/vsls-reqs && ~/vsls-reqs

But still got the following error:

Visual Studio Live Share was unable to download needed dependencies to finish installation. Ensure you have network connectivity and restart VS Code to retry.

from code-server.

andreimc avatar andreimc commented on May 22, 2024

So I got vscode liveshare to work but there are a few caveats, you need to install normal vscode and x11 and vnc and you install the extension via vscode and you open vscode once, you symlink the extensions. It then works like supposed to via code server. I tried a few things without vnc like installing all the required packages it doesn’t seem to work. I have an ansible repo that sets up code server in this way: https://github.com/devonlineco/ansible-roles

from code-server.

sr229 avatar sr229 commented on May 22, 2024

This falls under collaboration feature as well so you already came to the right issue. However, for the isolation part - I don't think this is a possibility considering we only support use cases to run docker containers interactively @AnthonyMastrean

from code-server.

AnthonyMastrean avatar AnthonyMastrean commented on May 22, 2024

@sr229 All I need to do to make the Docker container into a service is add -d and a restart policy! But, I understand what you're saying. Is there anything under the Enterprise offering that might address this use-case?

from code-server.

sr229 avatar sr229 commented on May 22, 2024

Also our friends from the Theia project is working on a open source VSCode-compatible Livecollab extension, should be promising since I'm also pushing code-server for inclusion in Che.

from code-server.

Mustafa-C avatar Mustafa-C commented on May 22, 2024

Sounds interesting. What's the name of the extension you found?

from code-server.

brandonkal avatar brandonkal commented on May 22, 2024

@sr229 Also interested in the name of that livecollab extension. Thanks for looking into this.

from code-server.

AnthonyMastrean avatar AnthonyMastrean commented on May 22, 2024

@jdabs when pair programming (or other similar practices)... and definitely in a business env. My team is full time remote. We screen share using a number of tools. VS live share has helped, but we’d love to use server based VS.

https://www.jamesshore.com/Agile-Book/pair_programming.html

from code-server.

sr229 avatar sr229 commented on May 22, 2024

@jdabs I disagree with pair programming on the non-business side. Some companies that adopt Agile encourages this, Pair programming is quite useful in a practical sense:

  • Situation 1: you need live assistance with the person in charge of that subsystem, and you're not present in the office or the engineer in charge isn't.

  • Situation 2: when crunching, having a dev environment already setup and people to connect to is easier, especially if its a minute change and the codebase is too large to pull, especially in constrained bandwidth environments (4G, EDGE, etc.)

from code-server.

nhooyr avatar nhooyr commented on May 22, 2024

This is unlikely to occur at the moment. I'll be sure to open an issue for this when the time is right.

from code-server.

marfier avatar marfier commented on May 22, 2024

How about using TogetherJS by Mozilla?

from code-server.

nhooyr avatar nhooyr commented on May 22, 2024

That looks really cool! Unfortunately the examples don't seem to work for me. I tried to use my invite link in a separate private browser tab and couldn't get the two to connect. If I can get it to work, it seems like it'd be a great low cost solution.

from code-server.

ribrdb avatar ribrdb commented on May 22, 2024

It looks like firepad has support for Monaco, I wonder if that could work.
https://github.com/FirebaseExtended/firepad/blob/master/examples/monaco.html

What is Firepad?
Firepad is an open source real-time collaborative text editor. It provides true collaborative editing, complete with intelligent operational transform-based merging and conflict resolution.
How is Firepad different than other collaborative text editors?
Most collaborative text editors require special code to run on a server, making them impractical to use if you're not already using the right server stack. Firepad has no server dependencies and instead relies on the Firebase Realtime Database for real-time data synchronization. This means that it's easy to add Firepad to any application, even static websites. All you need to do is drop in the JavaScript files and go.

from code-server.

OliverwengFiltered avatar OliverwengFiltered commented on May 22, 2024

@kylecarbs @nhooyr

Hi there,

wondering if you guys have any new updates regarding to this live share.

the terminal is not synced currently, so we have to do a screen share additionally when it comes to live collaboration.

it would be great if the code server itself has this feature supported.

we can discuss about a sponsorship if that's something you guys interested in.

Thanks
-Oliver

from code-server.

nhooyr avatar nhooyr commented on May 22, 2024

Hi. the collaboration system using firebase is now open source. You can set up multiple accounts for the same code-server instance, each with their own settings! You can collaborate in real time with team members. There is a user tracking system so you can see where everybody is and what they are doing, and you can quickly focus in on their work.
Also looking for help in general as to long term maintenance and/or incorporating it into code-server. It's a big mod, almost doubling the size of the patch, so I don't know if it make sense to work it in or just continue to develop in parallel.

This is great news! I'll try and take a look soon and we what we can do! 🚀

from code-server.

zepinto avatar zepinto commented on May 22, 2024

Awesome, what kind of help do you need?

from code-server.

bpmct avatar bpmct commented on May 22, 2024

@rdbeach I just gave this a shot and it works quite well! I noticed that different passwords will allow you to log in as different users, but there is no username field in the login page.

@code-asher @nhooyr can we support this (and future projects) as "plugins" so it doesn't have to be done as a patch? I understand that some work was done to support this, but I'm not up to date with the current state of this :)

from code-server.

nhooyr avatar nhooyr commented on May 22, 2024

@code-asher @nhooyr can we support this (and future projects) as "plugins" so it doesn't have to be done as a patch? I understand that some work was done to support this, but I'm not up to date with the current state of this :)

That work was unrelated. Here we're talking about VS Code plugins. In #2252 we added an API that allows "application plugins" that e.g. add Jetbrains IDE support to code-server in the enterprise product.

@code-asher and I will need to take a look at @rdbeach's code before we can say whether or not it can implemented as an VS Code extension or if we need to extend the API to allow it to be implemented as such.

from code-server.

rdbeach avatar rdbeach commented on May 22, 2024

This is what I am looking for in terms of a plugin API. It is particular to my needs, but I think it could be made broad enough to be generally applicable.

  1. Allow custom plugin configuration options which would be accessible both on server and client side.

  2. A UI for interacting with the plugin. This can be built by the plugin, but code-server should provide a place for it to live. Preferably a centralized place.

  3. Plugins should be able to hook into some of code-server's functionality. My particular mod has an option to temporarily disable code-server.

Will be bringing the mod up to date with the most recent version of code-server soon. Probably not this week though since I am pretty busy.

Will also be looking into the possibility of using the extension api again. I was thinking about modifying Firepad to work with the API calls instead of using the low level calls to the Monaco editor. Don't know if it will work but I will try it.

Has anyone given consideration to multiple-user logins? Right now I am offering a very simple system that allows for multiple passwords. Each password logs a user in under a different account, and each account has their own settings folder. At the moment, there isn't even a way to log-out.

from code-server.

sr229 avatar sr229 commented on May 22, 2024

If you're interested you can use the APIs Live Share uses which is in the code base already.

from code-server.

jsjoeio avatar jsjoeio commented on May 22, 2024

I think the last part to make code-server support it 100% is having something like VSCode's argv.json to set the required proposed API flags (-enabled-proposed-api) and this would be pretty much a 1:1 replacement for live share :)

@code-asher any ideas on how difficult this would be to implement?

from code-server.

stale avatar stale commented on May 22, 2024

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no activity occurs in the next 5 days.

from code-server.

KaKi87 avatar KaKi87 commented on May 22, 2024

There are already two solutions that provide this for code-server

Don't these solutions require separate VSCode instances ?

from code-server.

pkkid avatar pkkid commented on May 22, 2024

While both solutions mentioned above are a great stop-gap, I also wanted to chime in and say that they are also less than ideal for a few reasons. I'm adding my comments here in hopes that the idea of moving toward an implementation to collaborate within code-server doesn't die because of the comments above. I don't want this post to sound like a rant against the existing solutions as they are both pretty decent, but more a "please don't let this request be swept under the rug."

  1. Both solutions mentioned require a third-party external account as well as limitations on how long or what we can share unless paying for an account.
  2. The workflow of logging into another account, then sharing a link together is jarring and confusing when we just want to see the other user's cursor and potentially follow their location.
  3. Both options are more like using a screen sharing tool than they are working together on the same code like Replit because of the host/client connection process.
  4. Sharing with Duckly, I couldn't get working correctly from the same instance of code-server. It times out after accepting and waiting to connect.
  5. Sharing with a CodeTogether link actually opens a second IDE on their website. So there are technically two IDEs, and code being send to third-party servers and none of the host IDE settings transfer over.

from code-server.

AndyIsHereBoi avatar AndyIsHereBoi commented on May 22, 2024

yea but it would be nice to have it on the app itself. either as a thing i can enable and then just share a link (like one of those other apps) and i can set a password for each one to use (and expiration). in my opinion i would like it to be on code server because it would just be easier for my use case. but that depends on what anyone else uses it for i guess

from code-server.

jsjoeio avatar jsjoeio commented on May 22, 2024

@AuthorShin nothing besides what we have in the docs

from code-server.

sylvaticus avatar sylvaticus commented on May 22, 2024

I follow the AuthorShin's question.. to be clear, in our lab server we have JupyterHub that manages the login and multi-user deployment of Jupyter for system users, and wondering if there is something similar for visual-studio code server...

from code-server.

UlyssesZh avatar UlyssesZh commented on May 22, 2024

+1 for this. Something like JupyterHub helps.

from code-server.

Jerry080801 avatar Jerry080801 commented on May 22, 2024

What about vscode live

from code-server.

toddewilliams avatar toddewilliams commented on May 22, 2024

@Jerry080801 Using VS Code Live Share is not legal. I cover exactly why that is here.

from code-server.

paccerdk avatar paccerdk commented on May 22, 2024

@toddewilliams I don't want to derail the subject of this issue, but it's not clear to me from what you shared, that its not legal - it does states that "You may install and use any number of copies of the software to use solely with Microsoft Visual Studio family of products."
But is this not a Microsoft Visual Studio family product?

from code-server.

toddewilliams avatar toddewilliams commented on May 22, 2024

But is this not a Microsoft Visual Studio family product?

Short answer: No, as it's not a product from Microsoft.

Longer answer: Microsofts lists those products in their Terms of Use for their website, which I referenced in my prior link. And they also have this handy page for documentation for the "Microsoft Visual Studio Product Family". You can see the members of the product family are both well-known and quite precisely restricted to Microsoft products.

from code-server.

paccerdk avatar paccerdk commented on May 22, 2024

It's pretty clear for me what the Visual Studio product family is, its just a little fuzzy for me when a product stops being Visual Studio Code (in this case, running in the browser), and starts being a "new" product that is no longer Visual Studio Code.
I'm going to go ahead and assume that you know. Thanks for the feedback.

from code-server.

danopia avatar danopia commented on May 22, 2024

Further explanation can be found on the Code-Server FAQ:
https://coder.com/docs/code-server/latest/FAQ#why-cant-code-server-use-microsofts-extension-marketplace

And the link to codium includes more info:

Microsoft's releases of Visual Studio Code are licensed under this not-FLOSS license and contain telemetry/tracking.

from code-server.

KaKi87 avatar KaKi87 commented on May 22, 2024

Anyway, I tried it and it doesn't work, so we can forget it.

Still looking forward to code-server featuring collaboration.

from code-server.

reyo avatar reyo commented on May 22, 2024

I currently use https://github.com/c9/core for collaboration, where multiple users can log into the same server and work together.

code-server interests me as it uses VS Code so it heavily supported, unlike Cloud9. For my use case, permissions aren't really a problem.

I'm in the exact same spot. Would really really like to see multi user support. Cloud9 is kinda dead, maybe, somewhat - underdeveloped and badly maintained under Amazon rule.

from code-server.

matbgn avatar matbgn commented on May 22, 2024

This feature seemed to be getting a lot of traction and was really close to being solved by @rdbeach back in 2020:

I have released a beta version. Get it here: https://github.com/coderpair/vscode-live Looking for some people to try it and give me feedback.

My question is, is there any fundamental opposition from @toddewilliams or anyone else, or is it just a case of bad luck that this issue has been stalling for exactly 4 years? Yet @nhooyr seemed to show some interest at one point, if I followed correctly.

from code-server.

cnicodeme avatar cnicodeme commented on May 22, 2024

I agree that it's surprising that this feature never saw the day of light!

@baryla, you mention this being a must for you (here). Can I ask what are you using nowadays that meet your needs? You mentioned Cloud9 on AWS but were looking to change. (We're on the same boat)

from code-server.

toddewilliams avatar toddewilliams commented on May 22, 2024

@matbgn I'm responding since I was specifically mentioned.

My question is, is there any fundamental opposition from @toddewilliams or anyone else

Not only don't I have any opposition to this, I'm not even in a position to have any opposition. I don't contribute to code-server and am not an employee of Coder.

I think all approaches to this issue are great! We (CodeTogether) developed our technology to enable cross-IDE collaboration between all the IDE's developers use (that are built on VS Code, Eclipse, or IntelliJ). As a result, it happens to work for code-server so I contributed to the documentation to make everyone aware that it was one solution to this issue.

My other posts simply point out that since code-server is not a Microsoft product, that it is prohibited from using Microsoft's Live Share as a solution due the the license under which Live Share is published.

So while I haven't looked at your project, I certainly applaud that you're trying to solve this issue as well and wish you nothing but success with it.

from code-server.

code-asher avatar code-asher commented on May 22, 2024

On the Coder end our scope has shrunk to maintaining what is already there and keeping Code up to date so adding collaboration is likely not something we would drive at the moment.

That said, as far as I know there is no fundamental opposition to collaboration. I do have some opposition to adding it directly to code-server though (rather than as an open-source extension, possibly extending the API if necessary) unless there is a compelling use-case that cannot be supported by extensions.

from code-server.

KaKi87 avatar KaKi87 commented on May 22, 2024

How could the authentication system be enhanced from an extension ?

from code-server.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.