mirror of
https://github.com/hexedtech/codemp-vscode.git
synced 2024-12-22 21:44:53 +01:00
docs: updated README
This commit is contained in:
parent
9349ce346f
commit
a6cfb2b87f
1 changed files with 8 additions and 28 deletions
36
README.md
36
README.md
|
@ -1,30 +1,10 @@
|
|||
# codemp
|
||||
This project is heavily inspired by Microsoft Live Share plugin for Visual Studio (Code).
|
||||
While the functionality is incredibly good, I often find issues or glitches which slow me down, and being locked to only use Visual Studio products is limiting.
|
||||
I decided to write my own solution, and to make it open source, so that any editor can integrate it with a plugin.
|
||||
# codemp vscode
|
||||
This repository contains the vscode extension for codemp
|
||||
|
||||
# Design
|
||||
## Client/Server
|
||||
While initially a P2P system seemed interesting, I don't think it would easily scale with many users (due to having to integrate many changes on each client).
|
||||
I decided to build a client/server architecture, with a central "Workspace" managed by the server application and multiple clients connecting to it.
|
||||
Each client will only have to care about keeping itself in sync with the server (remembering local-only changes and acknowledged changes), leaving the task of keeping track of differences to the server.
|
||||
## Building
|
||||
Just compiling is not enough: neon requires us to run `npm install` to produce a `*.node` file, loadable from nodejs.
|
||||
A vscode extension is basically a zip archive with a `.vsix` estension.
|
||||
If you're on Linux, the `.bundle.sh` script will produce a barebones extension bundle.
|
||||
|
||||
## Plugins
|
||||
This software will probably be distribuited as a standalone binary that editors can use to connect to a "Workspace". A dynamic library object might also be a choice.
|
||||
Each editor plugin must be responsible of mapping codemp functionality to actual editor capabilities, bridging codemp client to the editor itself. The client should be able to handle a session autonomously.
|
||||
|
||||
## Text Synchronization
|
||||
A non destructive way to sync changes across clients is necessary.
|
||||
I initially explored CRDTs, but implementation seemed complex with little extra benefits from "more traditional" approaches (Operational Transforms).
|
||||
This has to be investigated more.
|
||||
|
||||
# Roadmap
|
||||
* [x] Initial design choices
|
||||
* [x] Simple GRPC server with tonic
|
||||
* [x] Simple neovim client with RPC/msgpack
|
||||
* [ ] Implementing core protocol routes
|
||||
* [ ] Simple neovim client capable of displaying other person cursor
|
||||
* [ ] Implement OTs / CRTDs for sharing file deltas
|
||||
* [ ] More clients (VSCode? JetBrains IDEs?)
|
||||
* [ ] LSP functionality bridged to guests from host?
|
||||
* [ ] Full remote development suite by keeping the project repo on a server?
|
||||
## Installing
|
||||
From VSCode extensions tab, press the menu button and choose "install from vsix", then pick the previously built file.
|
||||
|
|
Loading…
Reference in a new issue