Pumping pads as files into publishing frameworks!
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.
 
 
 
 
 

180 lines
15 KiB

<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>