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:
These need to be installed on your computer and made available on your PATH in some way.
Everyone
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.