You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
165 lines
8.9 KiB
165 lines
8.9 KiB
4 years ago
|
# real-time collaborative editing software
|
||
|
Re-turning to this real-time collaborative editing dive, visiting different softwares, histories and environments.
|
||
|
|
||
|
__PUBLISH__
|
||
|
|
||
|
|
||
|
# Desktop based & peer-to-peer
|
||
|
|
||
|
## Hyperpad-desktop
|
||
|
Using Electron, which makes it cross-platform accessible.
|
||
|
|
||
|
>>> p2p ??
|
||
|
|
||
|
## Gobby (!)
|
||
|
https://gobby.github.io/
|
||
|
"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)
|
||
|
https://github.com/sveith/jinfinote (javascript implementation of 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
|
||
|
|
||
|
Using infinoted
|
||
|
https://github.com/gobby/gobby/wiki/Dedicated%20Server download links and plugins
|
||
|
https://www.mankier.com/1/infinoted-0.7 man page
|
||
|
http://techmonks.net/working-together-on-text-and-source-code-with-gobby-and-infinoted/ tutorial
|
||
|
|
||
|
Setup a Gobby server
|
||
|
1. install infinoted
|
||
|
2. create the file /etc/xdg/infinoted.conf and add the following settings:
|
||
|
|
||
|
[infinoted]
|
||
|
security-policy=require-tls
|
||
|
certificate-file=/etc/xdg/infinoted.cert
|
||
|
key-file=/etc/xdg/infinoted.key
|
||
|
password=YOURPASSWORDHERE
|
||
|
autosave-interval=5
|
||
|
root-directory=/var/data/gobby/data
|
||
|
sync-directory=/var/data/gobby/export
|
||
|
sync-interval=120
|
||
|
|
||
|
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
|
||
|
infinoted &
|
||
|
|
||
|
5. restart the server
|
||
|
|
||
|
# Browser based & peer-to-peer
|
||
|
|
||
|
## Conclave
|
||
|
https://conclave-team.github.io/conclave-site/
|
||
|
"A private and secure real-time collaborative text editor"
|
||
|
"a peer-to-peer, real-time, collaborative text editor built from scratch in JavaScript."
|
||
|
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
|
||
|
collaborative writing
|
||
|
chat
|
||
|
multiplayer games
|
||
|
constantly evolving datasets
|
||
|
webservice workers passing around messages
|
||
|
> from https://blog.ipfs.io/25-pubsub/
|
||
|
|
||
|
>>> tiny note: have tried it and it is not ideal, but it is interesting in terms of streaming text without any authorship indication
|
||
|
|
||
|
Their next blogpost: "Decentralized Real-Time Collaborative Documents - Conflict-free editing in the browser using js-ipfs and CRDTs"
|
||
|
https://blog.ipfs.io/30-js-ipfs-crdts.md
|
||
|
"In this 10-minute video [https://www.youtube.com/watch?v=-kdx8rJd8rQ] 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
|
||
|
pubsub = publish & subscribe pattern
|
||
|
https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_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
|
||
|
https://blog.datproject.org/2018/05/14/dat-shopping-list/
|
||
|
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).
|
||
|
|
||
|
https://ar.al/2018/08/04/multiwriter-dat-could-power-the-next-web/
|
||
|
|
||
|
>>> in development
|
||
|
|
||
|
# Browser based & single server
|
||
|
|
||
|
## Etherpad lite
|
||
|
"In 2009, Google started beta testing Google Wave, a real-time collaboration environment which Google hoped would eventually displace email and instant messaging.[citation needed] EtherPad was acquired by Google, which allocated the EtherPad team to work within the Wave project. However, Google announced in August 2010 on its blog[7] that it had decided to stop developing Wave as a standalone project, due to insufficient user adoption. After Google released the abandoned EtherPad source code as open source in December 2009, the community took over its development and produced a complete rewrite named Etherpad lite, which is written entirely in JavaScript and built on top of node.js." https://en.wikipedia.org/wiki/Collaborative_real-time_editor
|
||
|
|
||
|
A list of active public SSL secured pad servers: <https://github.com/ether/etherpad-lite/wiki/Sites-that-run-Etherpad-Lite>
|
||
|
|
||
|
## CodiMD
|
||
|
<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
|
||
|
|
||
|
## textb
|
||
|
<https://textb.org/t/ymh6lj10lo/>
|
||
|
* markdown support
|
||
|
* python/django based
|
||
|
|
||
|
by <https://r-w-x.org/>
|
||
|
|
||
|
## hackmd
|
||
|
https://hackmd.io/
|
||
|
|
||
|
## PeerPad
|
||
|
https://peerpad.net
|
||
|
https://github.com/peer-base/peer-pad
|
||
|
|
||
|
"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."
|
||
|
|
||
|
## ShareDB
|
||
|
https://github.com/dennisdebel/artce
|
||
|
nodejs try out, using operational transforms for conflict free collaborative editing. (Not production ready).
|
||
|
|
||
|
## CKEditor 5
|
||
|
https://ckeditor.com/blog/Lessons-learned-from-creating-a-rich-text-editor-with-real-time-collaboration/
|
||
|
* WYSIWYG rich text collaborative editor
|
||
|
* backend as a SaaS solution
|
||
|
|
||
|
## Convergence
|
||
|
https://convergence.io/
|
||
|
* collaborative editing framework, providing a server and database with javascript API
|
||
|
* 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.
|
||
|
|
||
|
Plus, the NodeJS javascript heaviness is not so attractive.
|
||
|
|
||
|
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://en.wikipedia.org/wiki/Collaborative_real-time_editor
|
||
|
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 ;)
|
||
|
|
||
|
# Links
|
||
|
* <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.
|
||
|
|
||
|
|