Thursday 15:30 in room 1.19 (ground floor)

ELVA - Local-First Real-Time Collaboration Apps in Your Terminal

Jakob Zahn, Tiziano Zito

Our Motivation

As scientists working with distributed groups all over the world, we have high and numerous expectations for a digital collaboration tool:

Several tools already exist that can fulfill a subset of these requirements, but they come with all sort of restrictions.

Some examples:

ELVA aims to close these gaps.

Our Ideas

In short, we want to have the comfortable real-time synchronization of in-browser apps but in a software that runs locally for proper access to the filesystem on every operating system.

Conflict-free replicating data types (CRDTs) are the backbone of ELVA. They provide the fundamental logic for proper integration of shared data fragments.

The suite shall be written in Python, as it is relatively easy to learn and widely used in scientific research. If users of ELVA feel the need for special functionality, they should be able to add it by themselves without much effort.

Also, as we intend ELVA to be also usable by non-technical people, we need to have a good user interface (UI). We decided to settle on text-based terminal apps, which are lightweight and work consistently across platforms, but graphical interfaces are likewise implementable.

Versioning could still be realized with a Git integration and synchronizing bulk storage is a question of app and protocol design.

Our Prototype

We are proud to present our prototype of ELVA with a working text editor and a chat app.

Currently, we use the pycrdt package providing Python bindings to the Yrs library, which holds the Rust implementation of CRDTs originating from the Yjs library. Yjs is used in a variety of popular software: JupyterLab, Facebook's Lexical editor, Nextcloud and many other projects.

The text-UI is powered by the Textual framework. We intentionally kept the UI minimal to also allow pure keyboard usage. A builtin REPL widget provides the needed configuration flexibility.

The project's design concept stands: We provide apps to be directly used and library code for writing own features and apps. The configuration specification as well as the synchronization protocol are also defined.

We publish comprehensive documentation under https://elva.mintgruen.tu-berlin.de alongside a few guides and a blog. Code management with versioning and changelog has been properly set up for ease in long-term maintenance.

The source code of ELVA is published under the AGPL-3.0 license on https://github.com/innocampus/elva.

Our Vision

We hope to build up a community around this project by showing it to and improving it with other people. As a part of that, we plan to introduce ELVA to our students in programming classes.

A dedicated app for bulk synchronization is being developed. Additionally, we would like to explore networking without a central server and implement easy to setup peer-to-peer communication protocols to also allow for spontaneous collaboration in meetings or at conferences. Other apps and integrations might be written in other languages than Python thanks to ELVA's integrated networking and the Yrs bindings available in several other languages.

Another important point is integrating Git into ELVA for proper versioning and publishing with services such as GIN.

Contact Information

Jakob Zahn Head of Software Development Projekt ELVA Pronouns: he/his Address: Mr.

Technische Universität Berlin innoCampus Room E116 Einsteinufer 19 10587 Berlin Germany

Phone: +49 30 314 77006 Mobile: +49 152 06370569 E-Mail: jakob.zahn@tu-berlin.de

https://elva.mintgruen.tu-berlin.de https://www.tu.berlin

Jakob Zahn

I studied Physics at Technische Universität Dresden and Freie Universität Berlin. After achieving my master's degree in 2021, I started working at Technische Universität Berlin in the ELVA project as technical lead and software developer.

Tiziano Zito