Distributed Concurrent Editor

EDist: a distributed, concurrent, text-editor

EDist: a distributed, concurrent, text-editor

EDist is a distributed, concurrent, text-editor. It exists for practice and documentation: practising how to write and test distributed systems, and documenting the process.

A set of articles, documenting this project's purpose, design and implemenation, is available starting with this introduction.

Getting the code

Fossil users

If you are a fossil user or would like to use fossil, install fossil on your computer. Then:

$ fossil clone https://fossil.wellquite.org/edist
$ cd edist

Non-fossil users

If you have no wish to install or use fossil, you can directly grab a tarball:

$ curl https://fossil.wellquite.org/edist/tarball?name=edist | tar xz
$ cd edist

Building and running

Nix users

If you happen to be a nix user then, once you cd edist you should be able to run nix-shell and that should set up all the dependencies. If you are also a user of direnv then you should be able to run direnv allow once, and then the nix shell should automatically run whenever you cd edist.

Non-nix users

The dependencies are not huge, and should be reasonably platform agnostic:

  1. go Version 1.16 minimum
  2. nodejs
  3. bebop
  4. Some sort of make command

These need to be installed on your computer and made available on your PATH in some way.


Once you have the dependencies installed:

  .../edist$ cd http/browser
.../browser$ npm install

This only needs to be done once. It fetches the JavaScript dependencies I'm using (typescript and parcel).

With that done, the usual build and run it command is:

.../edist$ make && ./edist -db /tmp/edist

The created binary edist command is completely self-contained (well, ok, it's not a a static binary, but it doesn't depend on much). It has all the browser assets embedded within it. This makes it easy to move it about and deploy it, but it also means that if you change any of the browser assets (in http/browser/src/) then you have to rebuild the binary. Currently, that takes less than 5 seconds, so it's not something I feel is a problem.

With the binary running, in your browser head to http://localhost:8765/

I've only been able to test on Chrome and Firefox. It would seem there might be some issues with Safari, but I don't have a Mac so I can't test it, so Safari and Edge (and IE) are unsupported at this time.