Chat-Wane / CRATE

CRATE is a real-time distributed CollaboRATive Editor
http://chat-wane.github.io/CRATE
99 stars 13 forks source link

CRATE

Keywords: distributed, decentralized, collaborative, real-time editor, network of browsers

CRATE is a real-time distributed and decentralized CollaboRATive Editor running directly in web browsers.

Try it out

The online demo is available. First, make sure your browser is WebRTC compatible.

The short video explains how to use it. It is not up-to-date but it still gives the general principle.

Features

CRATE aims to enable collaborative editing anywhere, at anytime, whatever the number of participants, without third party. Compared to Google Docs, (i) CRATE does not limit the number of simultaneous users, (ii) CRATE does not rely on service providers, thus your documents belong to you and whom you trust, (iii) CRATE does not include all text editing capabilities.

CRATE is still in its very early stage of development. Therefore, the application may be buggy. Also, even basic functionalities are not implemented yet. Feel free to request functionalities, report issues, and ask questions.

Get started

When you open such link, you should see an empty page. To create a new empty document, click on the top-right blinking button. A menu appears containing 3 choices: (i) new document, (ii) open document, (iii) join an editing session. For now, click on the first option and enter the name of your document.

Currently, you have an empty document that you alone can edit. To enable collaborative editing, you must share the access to this document. To do so, click on the share button in the document's task bar. If everything goes well, you should see a blue spinning circle meaning that the document is accessible. In addition, you should see a sharing link on the bottom of the document containing the editing session identifier. Copy it.

Now, if you open the URL raw, a document should automatically appear trying to connect to the editing session. As an alternative, you can perform again the first step of this section but instead of creating a new document, you choose the third option : join an editing session. Then paste the URL in the relevant field, click on the join button, and the document should appear as well.

Be patient, establishing a connection may take time (hopefully less than 30 seconds depending on restrictions of your network). Once the joining editor has established the connections, you should observe a green globe in the document's task bar. Soon, it will retrieve the characters composing the shared document and you will be able to start the collaborative editing.

About the task bar buttons:

Developers

How to build

To build CRATE at home, you need git, bower, and lessc. In a terminal, type the following commands:

$ git clone http://github.com/chat-wane/crate.git
$ cd crate

$ bower install
$ lessc css/style.less css/generatedstyle.css

Now you are able to open the index.html file using your web browser.

Dependencies

CRATE comprises the following main components (i) LSeq [1, 2, 4] manages the shared document; (ii) Spray [3] builds the network of browsers.

The different modules that compose the editor are:

Acknowledgments

CRATE is developed within two research projects: The CominLabs project DESCENT and the ANR project SocioPlug. The CRATE editor is mainly developed by GDD team, LINA, Nantes University.

References

[1] B. Nédelec, P. Molli, A. Mostéfaoui, and E. Desmontils (September 2013). LSEQ: An Adaptive Structure for Sequences in Distributed Collaborative Editing. ACM symposium on Document engineering (pp. 37-46).

[2] B. Nédelec, P. Molli, A. Mostéfaoui, and E. Desmontils (2013). Concurrency Effects Over Variable-Size Identifiers in Distributed Collaborative Editing. In Document Changes: Modeling, Detection, Storage and Visualization (Vol. 1008, pp. 0-7).

[3] B. Nédelec, J. Tanke, D. Frey, P. Molli, and A. Mostéfaoui (2018). An Adaptive Peer-Sampling Protocol for Building Networks of Browsers. World Wide Web, vol. 21. Springer.

[4] B. Nédelec, P. Molli, and A. Mostéfaoui (2016). A scalable sequence encoding for collaborative editing. Concurrency and Computation: Practice and Experience. Wiley.