An Open remote-development framework

#collaborative#rust#framework#editor#product3 min readalemi2024-09-18 17:11
codemp logo

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.

making remote development as pleasant as on-site

I'm a fan of remote working: offices are distracting and having two sets of computer gear is wasteful and commuting wastes a lot of time (and also pollutes if you don't walk or bike to work!).

Most employers told me that "being in office makes working together easier", that "I need to be close with my colleagues to effectively work", but I believe these are false claims.

My work is mostly developing software and systems, and can be split in

  • actually making the thing
  • explaining the thing

While the explaining part requires interaction (of course), a call with virtual blackboard is perfect and often better because each colleague has their PC at hand and can help me search or test things, rather than just looking at me explain.

For actually making the thing instead I usually work best alone: making software is mostly thinking, writing is hopefully the least time-intensive part of the job. I think while writing thanks to the compiler/LSP feedback loop, but it's mostly exploring and thinking.

Actual collaborative work is usually debugging, or modeling features. These require us all to be in our dev environments, otherwise it quickly becomes someone debugging/modeling and everyone else watching (or not even that)

exploring the competition

There are some available solutions, such as LiveShare by Microsoft or CodeWithMe by JetBrains, but these are all locked in their own ecosystems, mostly offered as tools to complete the suite they're selling.

A collaborative tool must not lock you in, otherwise colleagues with different tastes will be left out as their environment isn't compatible.

I want a truly cross-editor solution, to be able to work with anyone without having to comprimise or my editor (or having them switch for me).

introducing codemp

Fed up with these limitations, around 2022 I started working on "Code Multi Player", my solution for remote development. By mid 2023 I had onboarded some friends and we were all working hard on different sides of this project.

codemp has many parts: we have a core library which is used to build many different clients, and a reference server which handles both GRPC and web traffic. Distributing work, researching deeply and generally doing our best, we never gave up and made something we're proud of.

As of October 2024, codemp is almost ready for public release. We plan to offer commercial subscriptions to fund our infrastructure and ongoing development, but we are deeply committed to making an Open solution, to connect any environment and allow seamless remote development.

website -- core -- proto -- nvim -- vscode -- intellij -- sublime