etherpump/publish/syncing-as-in-collaborative-writing.raw.html

181 lines
15 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<html>
<head>
<script src="/versions.js"></script>
<link href="../stylesheet.css" rel="stylesheet">
<link href="https://pad.vvvvvvaria.org/p/syncing-as-in-collaborative-writing" rel="alternate" title="Etherpad" type="text/html">
<link href="syncing-as-in-collaborative-writing.raw.txt" rel="alternate" title="Plain text" type="text/plain">
<link href="syncing-as-in-collaborative-writing.raw.html" rel="alternate" title="HTML" type="text/html">
<link href="syncing-as-in-collaborative-writing.meta.json" rel="alternate" title="Meta data" type="application/json">
<meta charset="utf-8">
<title>syncing-as-in-collaborative-writing</title>
</head>
<body># <strong>real-time collaborative editing software</strong>
<br>Re-turning to this <em>real-time collaborative editing</em> dive, visiting different softwares, histories and environments.<br>
<br>__PUBLISH__<br>
<br>
<br>
<strong># Desktop based &amp; peer-to-peer</strong>
<br>
<br>
<strong>## Hyperpad-desktop</strong>
<br>Using Electron, which makes it cross-platform accessible.<br>
<br>&gt;&gt;&gt; p2p ??<br>
<br>
<strong>## Gobby (!)</strong>
<br>
<a href="https://gobby.github.io/" rel="noreferrer noopener">https://gobby.github.io/</a>
<br>
<em>"Gobby is a collaborative editor supporting multiple documents in one session and a multi-user chat."</em>
<br>
<br>
<a href="https://www.infinote.org/" rel="noreferrer noopener">https://www.infinote.org/</a> (infinote protocol)<br>
<a href="https://github.com/gobby/libinfinity" rel="noreferrer noopener">https://github.com/gobby/libinfinity</a> (infinotes, a stand-alone infinote server)<br>
<a href="https://pypi.org/project/Py-Infinote/" rel="noreferrer noopener">https://pypi.org/project/Py-Infinote/</a> (python library speaking infinote)<br>
<a href="https://github.com/sveith/jinfinote" rel="noreferrer noopener">https://github.com/sveith/jinfinote</a> (javascript implementation of infinote)<br>
<br>
<strong>gobby</strong>/testing,now 0.6.0~20170204~e5c2d1-3 amd64 [installed]<br>  infinote-based collaborative text editor<br>
<br>
<strong>infinoted</strong>/testing 0.7.1-1 amd64<br>  dedicated server for infinote-based collaborative editing<br>
<br>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<br>
<br>Using infinoted<br>
<a href="https://github.com/gobby/gobby/wiki/Dedicated%20Server" rel="noreferrer noopener">https://github.com/gobby/gobby/wiki/Dedicated%20Server</a> download links and plugins<br>
<a href="https://www.mankier.com/1/infinoted-0.7" rel="noreferrer noopener">https://www.mankier.com/1/infinoted-0.7</a> man page<br>
<a href="http://techmonks.net/working-together-on-text-and-source-code-with-gobby-and-infinoted/" rel="noreferrer noopener">http://techmonks.net/working-together-on-text-and-source-code-with-gobby-and-infinoted/</a> tutorial<br>
<br>
<u>Setup a Gobby server</u>
<br>1. install infinoted<br>2. create the file /etc/xdg/infinoted.conf and add the following settings:<br>
<br>[infinoted]<br>security-policy=require-tls<br>certificate-file=/etc/xdg/infinoted.cert<br>key-file=/etc/xdg/infinoted.key<br>password=YOURPASSWORDHERE<br>autosave-interval=5<br>root-directory=/var/data/gobby/data<br>sync-directory=/var/data/gobby/export<br>sync-interval=120<br>
<br>3. run infinoted with --create-certificate --create-key to generate the certificate and key ($ infinoted --create-certificate --create-key)<br>4. start infinoted on every restart of the server. Edit the file /etc/rc.local and add this:<br>
<br># starts up infinoted (gobby server)<br># configuration file is in /etc/xdg/infinoted.conf<br>infinoted &amp;<br>
<br>5. restart the server<br>
<br>
<strong># Browser based &amp; peer-to-peer</strong>
<br>
<br>
<strong>## Conclave</strong>
<br>
<a href="https://conclave-team.github.io/conclave-site/" rel="noreferrer noopener">https://conclave-team.github.io/conclave-site/</a>
<br>
<em>"A private and secure real-time collaborative text editor"</em>
<br>
<em>"a peer-to-peer, real-time, collaborative text editor built from scratch in JavaScript."</em>
<br>Great documentation about <strong>Conflict-Free Replicated Data Type (CRDT)</strong> and their <strong>peer-to-peer architecture</strong>!<br>
<br>&gt;&gt;&gt; not maintained anymore<br>
<br>
<strong>## IPFS &amp; pubsub </strong>
<br>Pubsub is a decentralized "pattern" (this is how they call it) that can be used for <br>
<ul class="indent">
<li>collaborative writing</li>
<li>chat</li>
<li>multiplayer games</li>
<li>constantly evolving datasets</li>
<li>webservice workers passing around messages</li>
<li>&gt; from <a href="https://blog.ipfs.io/25-pubsub/" rel="noreferrer noopener">https://blog.ipfs.io/25-pubsub/</a>
</li>
<li></li>
</ul>&gt;&gt;&gt; tiny note: have tried it and it is not ideal, but it is interesting in terms of streaming text without any authorship indication<br>
<br>Their next blogpost: "Decentralized Real-Time Collaborative Documents - Conflict-free editing in the browser using js-ipfs and <strong>CRDTs</strong>"<br>
<a href="https://blog.ipfs.io/30-js-ipfs-crdts.md" rel="noreferrer noopener">https://blog.ipfs.io/30-js-ipfs-crdts.md</a>
<br>
<em>"In this 10-minute video [</em>
<a href="https://www.youtube.com/watch?v=-kdx8rJd8rQ" rel="noreferrer noopener">
<em>https://www.youtube.com/watch?v=-kdx8rJd8rQ</em>
</a>
<em>] 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."</em>
<br>
<br>
<strong>PubSub</strong>
<br>pubsub = publish &amp; subscribe pattern <br>
<a href="https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern" rel="noreferrer noopener">https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern</a>
<br>
<em>"This pattern provides greater <strong>network</strong>
<strong>scalability</strong>and<strong>a more dynamic network topology</strong>, with a resulting decreased flexibility to modify the publisher and the structure of the published data."</em>
<br>
<br>
<strong>## Dat multiwriter</strong>
<br>
<a href="https://blog.datproject.org/2018/05/14/dat-shopping-list/" rel="noreferrer noopener">https://blog.datproject.org/2018/05/14/dat-shopping-list/</a>
<br>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). <br>
<br>
<a href="https://ar.al/2018/08/04/multiwriter-dat-could-power-the-next-web/" rel="noreferrer noopener">https://ar.al/2018/08/04/multiwriter-dat-could-power-the-next-web/</a>
<br>
<br>&gt;&gt;&gt; in development<br>
<br>
<strong># Browser based &amp; single server </strong>
<br>
<br>
<strong>## Etherpad lite</strong>
<br>
<em>"In 2009, Google started beta testing <strong>Google Wave</strong>, a real-time collaboration environment which Google hoped would eventually displace email and instant messaging.[citation needed] <strong>EtherPad</strong> 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 <strong>Etherpad lite</strong>, which is written entirely in JavaScript and built on top of node.js." </em>
<a href="https://en.wikipedia.org/wiki/Collaborative_real-time_editor" rel="noreferrer noopener">https://en.wikipedia.org/wiki/Collaborative_real-time_editor</a>
<br>
<br>A list of active public SSL secured pad servers: &lt;<a href="https://github.com/ether/etherpad-lite/wiki/Sites-that-run-Etherpad-Lite" rel="noreferrer noopener">https://github.com/ether/etherpad-lite/wiki/Sites-that-run-Etherpad-Lite</a>&gt;<br>
<br>
<strong>## CodiMD</strong>
<br>&lt;<a href="https://demo.codimd.org/" rel="noreferrer noopener">https://demo.codimd.org/</a>&gt; demo server<br>&lt;<a href="https://hackmd.io/" rel="noreferrer noopener">https://hackmd.io/</a>&gt; CodiMD is a (recent -- March 2019) fork of HackMD, &lt;<a href="https://github.com/codimd/server/blob/master/docs/history.md" rel="noreferrer noopener">https://github.com/codimd/server/blob/master/docs/history.md</a>&gt; documentation of the history of this project <br>&lt;<a href="https://github.com/codimd/cli" rel="noreferrer noopener">https://github.com/codimd/cli</a>&gt; a CLI tool for CodiMD, with options to export to html/pdf/slides/md<br>
<br>
<strong>## textb</strong>
<br>&lt;<a href="https://textb.org/t/ymh6lj10lo/" rel="noreferrer noopener">https://textb.org/t/ymh6lj10lo/</a>&gt;<br>* markdown support<br>* python/django based<br>
<br>by &lt;<a href="https://r-w-x.org/" rel="noreferrer noopener">https://r-w-x.org/</a>&gt;<br>
<br>
<strong>## hackmd</strong>
<br>
<a href="https://hackmd.io/" rel="noreferrer noopener">https://hackmd.io/</a>
<br>
<br>
<strong>## PeerPad</strong>
<br>
<a href="https://peerpad.net" rel="noreferrer noopener">https://peerpad.net</a>
<br>
<a href="https://github.com/peer-base/peer-pad" rel="noreferrer noopener">https://github.com/peer-base/peer-pad</a>
<br>
<br>"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."<br>
<br>
<strong>##</strong>
<strong>ShareDB</strong>
<br>
<a href="https://github.com/dennisdebel/artce" rel="noreferrer noopener">https://github.com/dennisdebel/artce</a>
<br>nodejs try out, using operational transforms for conflict free collaborative editing. (Not production ready).<br>
<br>
<strong>## CKEditor 5</strong>
<br>
<a href="https://ckeditor.com/blog/Lessons-learned-from-creating-a-rich-text-editor-with-real-time-collaboration/" rel="noreferrer noopener">https://ckeditor.com/blog/Lessons-learned-from-creating-a-rich-text-editor-with-real-time-collaboration/</a>
<br>
<ul class="bullet">
<li>WYSIWYG rich text collaborative editor</li>
<li>backend as a SaaS solution </li>
</ul>
<br>
<strong>## Convergence</strong>
<br>
<a href="https://convergence.io/" rel="noreferrer noopener">https://convergence.io/</a>
<br>
<ul class="bullet">
<li>collaborative editing framework, providing a server and database with javascript API</li>
<li>try before you buy</li>
</ul>
<br>
<strong># Document-based collaborative editing?</strong>
<br>The examples are pretty interesting. Specially the offline writing and online <strong>syncing</strong> combination is a promising feature...<br>
<br>But all the text stays in the browser? It would be great to store local copies of the text directly, preferrably as files.<br>
<br>Plus, the NodeJS javascript heaviness is not so attractive.<br>
<br>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? <br>
<br>
<a href="https://en.wikipedia.org/wiki/Collaborative_real-time_editor" rel="noreferrer noopener">https://en.wikipedia.org/wiki/Collaborative_real-time_editor</a>
<br>
<a href="https://www.youtube.com/watch?time_continue=13&amp;v=qI8r8D46JOY" rel="noreferrer noopener">https://www.youtube.com/watch?time_continue=13&amp;v=qI8r8D46JOY</a> - Doug Engelbart "Mother of All Demos" (1968) presenting collaborative editing <br>
<a href="http://www.realjabber.org/" rel="noreferrer noopener">http://www.realjabber.org/</a> - real time editing over XMPP<br>
<a href="https://linux.die.net/man/1/ytalk" rel="noreferrer noopener">https://linux.die.net/man/1/ytalk</a> - ytalk real-time &amp; multi-user chat version of talk<br>
<a href="http://www.realtimetext.org/" rel="noreferrer noopener">http://www.realtimetext.org/</a> - RealTimeText.org is a website to stimulate knowledge in the field of Real-Time Text (RTT)<br>
<br>
<a href="http://www.realtimetext.org/sites/default/files/images/FastText-logo_outline_300.png" rel="noreferrer noopener">http://www.realtimetext.org/sites/default/files/images/FastText-logo_outline_300.png</a> Fast Text logo ;)<br>
<br>
<strong># Links </strong>
<br>* &lt;<a href="https://juretriglav.si/open-source-collaborative-text-editors/" rel="noreferrer noopener">https://juretriglav.si/open-source-collaborative-text-editors/</a>&gt; review article mainly about CKEditor 5 &amp; Atlaskit Editor (by Jure Triglav, May 2019)<br>* &lt;<a href="https://github.com/JefMari/awesome-wysiwyg" rel="noreferrer noopener">https://github.com/JefMari/awesome-wysiwyg</a>&gt; listings of web real-time collaborative rich text editing software (same author as article above)<br>* &lt;<a href="https://www.inkandswitch.com/local-first.html" rel="noreferrer noopener">https://www.inkandswitch.com/local-first.html</a>&gt; an article on <strong>local-first</strong> software, mostly covering collaborative editing tools, but also others (such as pixelpusher)<br>* &lt;<a href="https://diversions.constantvzw.org/wiki/index.php?title=Eventual_Consistency" rel="noreferrer noopener">https://diversions.constantvzw.org/wiki/index.php?title=Eventual_Consistency</a>&gt; article by Michael Murtaugh in the DiVersions publication, on the underlying algorithms/mechanisms of Etherpad and "<strong>diffractive technotexts</strong>"<br>
<br>
<em>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. </em>- N. Katherine Hayles, Writing Machines (MIT press, 2002), 25.<br>
<br>
<br>
</body>
</html>