# real-time collaborative editing software
Re-turning to this real-time collaborative editing dive, visiting different softwares, histories and environments.
# Desktop based & peer-to-peer
Using Electron, which makes it cross-platform accessible.
>>> p2p ??
## Gobby (!)
"Gobby is a collaborative editor supporting multiple documents in one session and a multi-user chat."
https://www.infinote.org/ (infinote protocol)
https://github.com/gobby/libinfinity (infinotes, a stand-alone infinote server)
https://pypi.org/project/Py-Infinote/ (python library speaking infinote)
gobby/testing,now 0.6.0~20170204~e5c2d1-3 amd64 [installed]
infinote-based collaborative text editor
infinoted/testing 0.7.1-1 amd64
dedicated server for infinote-based collaborative editing
tiny note: tried to install it on a mac os (failed eventually after 30 min install time) and brew overwrote my prev python + other installations. :| luckily nothing broke! but it was a tiny moment of suprise... yes.... shit! my mistake for not installing it in a venv :S hope everything is oke again now! yep all good :] not sure though if you can install it in a venv, as it is an apt package. ah ok, i installed it through brew, so it's very possible that brew messed up. but very curious to try on a linux machine! haha, great merge of sentences ;). :P git merge, real-time syncing! ;) great document mb btw! i love the insertion of chatty notes :D ahah that's definitely something i can help with :O hehe ! We have a great color match as well atm. ;) so 90s, i use to love pink and purple combinations. hahaha yes all we need is another light green shade and a Patagonia logo in a top right corner
https://github.com/gobby/gobby/wiki/Dedicated%20Server download links and plugins
https://www.mankier.com/1/infinoted-0.7 man page
Setup a Gobby server
1. install infinoted
2. create the file /etc/xdg/infinoted.conf and add the following settings:
3. run infinoted with --create-certificate --create-key to generate the certificate and key ($ infinoted --create-certificate --create-key)
4. start infinoted on every restart of the server. Edit the file /etc/rc.local and add this:
# starts up infinoted (gobby server)
# configuration file is in /etc/xdg/infinoted.conf
5. restart the server
# Browser based & peer-to-peer
"A private and secure real-time collaborative text editor"
Great documentation about Conflict-Free Replicated Data Type (CRDT) and their peer-to-peer architecture!
>>> not maintained anymore
## IPFS & pubsub
Pubsub is a decentralized "pattern" (this is how they call it) that can be used for
>>> tiny note: have tried it and it is not ideal, but it is interesting in terms of streaming text without any authorship indication
- collaborative writing
- multiplayer games
- constantly evolving datasets
- webservice workers passing around messages
- > from https://blog.ipfs.io/25-pubsub/
Their next blogpost: "Decentralized Real-Time Collaborative Documents - Conflict-free editing in the browser using js-ipfs and CRDTs"
"In this 10-minute video [
] I show you how we can use the js-ipfs library and conflict-free replicated data types (CRDTs) to build a simple text editor that allows several peers to collaborate in real-time. The resulting interactions between the nodes are conflict-free, support offline use, and allow nodes to come in and out of the network while continuously converging data to a single state in all the nodes."
pubsub = publish & subscribe pattern
"This pattern provides greater network
scalabilityanda more dynamic network topology, with a resulting decreased flexibility to modify the publisher and the structure of the published data."
## Dat multiwriter
a first step, but in order to sync with other writers through the browser, the application needs to connect to a node.js server elsewhere (called the gateway).
>>> in development
# Browser based & single server
## Etherpad lite
A list of active public SSL secured pad servers: <https://github.com/ether/etherpad-lite/wiki/Sites-that-run-Etherpad-Lite>
<https://demo.codimd.org/> demo server
<https://hackmd.io/> CodiMD is a (recent -- March 2019) fork of HackMD, <https://github.com/codimd/server/blob/master/docs/history.md> documentation of the history of this project
<https://github.com/codimd/cli> a CLI tool for CodiMD, with options to export to html/pdf/slides/md
* markdown support
* python/django based
"PeerPad is a decentralized editor that allows concurrent writing of text. Besides making live changes to a given document, it allows read-only nodes to follow the changes in real-time. It also allows you to publish a self-contained snapshot of the document to IPFS."
nodejs try out, using operational transforms for conflict free collaborative editing. (Not production ready).
## CKEditor 5
- WYSIWYG rich text collaborative editor
- backend as a SaaS solution
- try before you buy
# Document-based collaborative editing?
The examples are pretty interesting. Specially the offline writing and online syncing combination is a promising feature...
But all the text stays in the browser? It would be great to store local copies of the text directly, preferrably as files.
Is there software that works p2p, allows for discovery in your current local network, and saves local copies of the document as (plain) text documents?
https://www.youtube.com/watch?time_continue=13&v=qI8r8D46JOY - Doug Engelbart "Mother of All Demos" (1968) presenting collaborative editing
http://www.realjabber.org/ - real time editing over XMPP
https://linux.die.net/man/1/ytalk - ytalk real-time & multi-user chat version of talk
http://www.realtimetext.org/ - RealTimeText.org is a website to stimulate knowledge in the field of Real-Time Text (RTT)
http://www.realtimetext.org/sites/default/files/images/FastText-logo_outline_300.png Fast Text logo ;)
* <https://juretriglav.si/open-source-collaborative-text-editors/> review article mainly about CKEditor 5 & Atlaskit Editor (by Jure Triglav, May 2019)
* <https://github.com/JefMari/awesome-wysiwyg> listings of web real-time collaborative rich text editing software (same author as article above)
* <https://www.inkandswitch.com/local-first.html> an article on local-first software, mostly covering collaborative editing tools, but also others (such as pixelpusher)
* <https://diversions.constantvzw.org/wiki/index.php?title=Eventual_Consistency> article by Michael Murtaugh in the DiVersions publication, on the underlying algorithms/mechanisms of Etherpad and "diffractive technotexts"
Technotexts: When a literary work interrogates the inscription technology that produces it, it mobilizes relexive loops between its imaginative world and the material apparatus embodying that creation as a physical presence. - N. Katherine Hayles, Writing Machines (MIT press, 2002), 25.