Kibi is a configurable text editor with UTF-8 support, incremental search, syntax highlighting, line numbers and more, written in Rust with minimal dependencies. In this fork, simple collaboration features based on Melda have been implemented. The implemented paradigm is save and refresh: when the user saves the local copy, changes from other users are merged. It is also possible to merge changes without saving the document (using the 'Refresh' keyboard shortcut).
Melda is a Delta-State JSON CRDT. CRDTs, which stand for Conflict-free Replicated Data Types, are data structures which can be replicated (copied) across multiple computers in a network. Each replica can be individually and concurrently updated without the need for central coordination or synchronization. Updates made on each replica can be merged at any time.
There exist different types of CRDTs: operation-based CRDTs (which generate and exchange update operations between replicas), state-based CRDTS (which exchange and merge the full state of each replica) and delta-state CRDT, such as Melda, (which exchange only the differences between versions, or states, of the data type).
Melda natively supports the JSON data format and provides a way to synchronize changes made to arbitrary JSON documents.
For the majority of the functionalities, this version works as the main version of Kibi. However, it is now possible to use one of the following CRDT storage backends when opening a document from the command line:
Storage type | Example path | Description |
---|---|---|
Folder (file://) | file://$(pwd)/mycrdtdocument | The absolute path of a folder (can be on a network share) |
Folder w/compression (file+flate://) | file+flate://$(pwd)/mycrdtdocument | The absolute path of a folder (can be on a network share) |
Solid Pod (solid://) | solid://anuser.solidcommunity.net/mycrdtdocument | The URL of a Solid Pod |
Solid Pod w/compression (solid+flate://) | solid+flate://anuser.solidcommunity.net/mycrdtdocument | The URL of a Solid Pod |
For Solid Pod's access, a username and password will be asked. Compression uses a DEFLATE-based algorithm.
Keyboard shortcut | Description |
---|---|
Ctrl-F | Incremental search; use arrows to navigate |
Ctrl-S | Save the buffer to the current file, or specify the file path |
Ctrl-G | Go to <line number>[:<column number>] position |
Ctrl-Q | Quit |
Ctrl-D | Duplicate the current row |
Ctrl-E | Execute an external command and paste its output |
Ctrl-R | Remove an entire line |
Ctrl-P | Refresh document (integrate changes from other users) |
Ctrl-N | Save document with a new name / path |