mirror of
https://github.com/hexedtech/codemp.git
synced 2025-02-18 16:18:44 +01:00
91 lines
6.7 KiB
Markdown
91 lines
6.7 KiB
Markdown
[](https://code.mp)
|
|
|
|
[](https://github.com/hexedtech/codemp/actions)
|
|
[](https://docs.rs/codemp/)
|
|
[](https://crates.io/crates/codemp)
|
|
[](https://gitter.im/hexedtech/codemp)
|
|
[](https://github.com/hexedtech/codemp/commits/dev/)
|
|
[](https://github.com/hexedtech/codemp/releases/tag/v0.8.2)
|
|
|
|
> `codemp` is a **collaborative** text editing solution to work remotely.
|
|
|
|
It seamlessly integrates in your editor providing remote cursors and instant text synchronization,
|
|
as well as a remote virtual workspace for you and your team.
|
|
|
|
> `codemp` is build with state-of-the-art CRDT technology, guaranteeing eventual consistency.
|
|
|
|
This means that all agents are guaranteed to converge to a consistent state once all changes are received,
|
|
_no matter their order or timing_, while preserving each operation's original intention. On top of this
|
|
baseline, `codemp`'s protocol is optimized for speed and low network footprint, meaning even slow
|
|
connections or dated hardware can provide stable real-time editing.
|
|
|
|
The full documentation is available on [docs.rs](https://docs.rs/codemp/).
|
|
|
|
# Usage
|
|
`codemp` is primarily used as a plugin in your editor of choice.
|
|
|
|
## Installation
|
|
> [!IMPORTANT]
|
|
> The editor plugins are in active development. Expect frequent changes.
|
|
|
|
`codemp` is available as a plugin for a growing number of text editors. Currently we support:
|
|
- [NeoVim](https://github.com/hexedtech/codemp-nvim)
|
|
- [VSCode](https://github.com/hexedtech/codemp-vscode)
|
|
- [Sublime Text](https://github.com/hexedtech/codemp-sublime)
|
|
- [IntelliJ Platform](https://github.com/hexedtech/codemp-intellij)
|
|
|
|
## Registration
|
|
The `codemp` protocol is [openly available](https://github.com/hexedtech/codemp-proto/) and servers may be freely developed with it.
|
|
|
|
A reference instance is provided by hexed.technology at [code.mp](https://code.mp). You may create an account for it [here](https://code.mp/signup).
|
|
During the initial closed beta, registrations will require an invite code. Get in contact if interested.
|
|
|
|
An open beta is going to follow with free access to a single workspace per user.
|
|
After such period, [code.mp](https://code.mp) will switch to a subscription-based model.
|
|
|
|
# Development
|
|
This is the main client library for `codemp`. It provides a batteries-included fully-featured `Client`, managed by the library itself, and exposes a number of functions to interact with it. The host program can obtain a `Client` handle by connecting, and from that reference can retrieve every other necessary component.
|
|
|
|
`codemp` is primarily a rlib and can be used as such, but is also available in other languages via FFI.
|
|
|
|
Adding a dependency on `codemp` is **easy**:
|
|
|
|
### From Rust
|
|
Just `cargo add codemp` and check the docs for some examples.
|
|
|
|
### From supported languages
|
|
We provide first-class bindings for these other programming languages:
|
|
|
|
|
|
| | Build Status | Package | Build Instructions |
|
|
| ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------- |
|
|
| JavaScript | [](https://github.com/hexedtech/codemp/actions/workflows/javascript.yml) | [](https://npmjs.org/package/codemp) | [README](./dist/README.md#javascript) |
|
|
| Python | [](https://github.com/hexedtech/codemp/actions/workflows/python.yml) | [](https://pypi.org/project/codemp) | [README](./dist/README.md#python) |
|
|
| Java | [](https://github.com/hexedtech/codemp/actions/workflows/java.yml) | [](https://central.sonatype.com/artifact/mp.code/codemp) | [README](./dist/README.md#java) |
|
|
| Lua | [](https://github.com/hexedtech/codemp/actions/workflows/lua.yml) | [](https://luarocks.org/modules/alemi/codemp) | [README](./dist/README.md#lua) |
|
|
|
|
|
|
|
|
As a design philosophy, our binding APIs attempt to perfectly mimic their Rust counterparts, so the main documentation can still be referenced as source of truth.
|
|
Refer to specific language documentation for specifics, differences and quirks.
|
|
|
|
### From other languages
|
|
> [!IMPORTANT]
|
|
> The common C bindings are not available yet!
|
|
|
|
Any other language with C FFI capabilities will be able to use `codemp` via its bare C bindings.
|
|
This may be more complex and may require wrapping the native calls underneath.
|
|
|
|
# Get in Touch
|
|
We love to hear back from users! Be it to give feedback, propose new features or highlight bugs, don't hesitate to reach out!
|
|
|
|
## Contacts
|
|
We have a public [Gitter](https://gitter.im) room available on [gitter.im/hexedtech/codemp](https://gitter.im/hexedtech/codemp).
|
|
It's possible to freely browse the room history, but to send new messages it will be necessary to sign in with your GitHub account.
|
|
|
|
If you have a [Matrix](https://matrix.org) account, you can join the gitter room directly at [#hexedtech_codemp:gitter.im](https://matrix.to/#/#hexedtech_codemp:gitter.im)
|
|
|
|
## Contributing
|
|
If you find bugs or would like to see new features implemented, be sure to open an issue on this repository.
|
|
|
|
In case you wish to contribute code, that's great! We love external contributions, feel free to open a PR!
|