2015-01-23 16:00:03 +00:00
..
2015-01-23 16:00:03 +00:00
2015-01-23 16:00:03 +00:00

<!DOCTYPE html>
<html>
  <head>
  <meta charset='UTF-8'>
  <title>Yatta! API</title>
  <script src='../javascript/application.js'></script>
  <script src='../javascript/search.js'></script>
  <link rel='stylesheet' href='../stylesheets/application.css' type='text/css'>
</head>
  <body>
    <div id='base' data-path='../'></div>
<div id='header'>
  <div id='menu'>
    <a href='../extra/README.md.html' title='Yatta!'>
      Yatta!
    </a>
    &raquo;
    <a href='../alphabetical_index.html' title='Index'>
      Index
    </a>
    &raquo;
    <span class='title'>README.md</span>
  </div>
</div>
    <div id='content'>
      <nav class='toc'>
        <p class='title'>
          <a class='hide_toc' href='#'>
            <strong>Table of Contents</strong>
          </a>
          <small>
            (<a class='float_toc' href='#'>left</a>)
          </small>
        </p>
      </nav>
      <div id='filecontents'>
        <h1 id="-yatta-https-dadamonad-github-io-files-layout-yatta_logo-png-"><img src="https://dadamonad.github.io/files/layout/Yatta_logo.png" alt="Yatta!"></h1><p><a href="http://layers.dbis.rwth-aachen.de/jenkins/job/Yatta/"><img src="http://layers.dbis.rwth-aachen.de/jenkins/job/Yatta/badge/icon" alt="Build Status"></a></p><p>Yatta is a framework for optimistic concurrency control and automatic conflict resolution on arbitrary data types. The framework implements a new OT-like concurrency algorithm and provides similar functionality as <a href="https://github.com/share/ShareJS">ShareJs</a> and <a href="https://github.com/opencoweb/coweb">OpenCoweb</a>. Yatta was designed to take away the pain from concurrently editing complex data types like Text, Json, and XML. You can find some applications for this framework <a href="https://dadamonad.github.io/Yatta/examples/">here</a>.</p><p>In the future, we want to enable users to implement their own collaborative types. Currently we provide data types for</p><ul>
<li>Text</li>
<li>Json</li>
<li>XML</li>
</ul><p>Unlike other frameworks, Yatta supports P2P message propagation and is not bound to a specific communication protocol. Therefore, Yatta is extremely scalable and can be used in a wide range of application scenarios.</p><p>We support several communication protocols as so called <em>Connectors</em>. You find a bunch of Connectors in the <a href="https://github.com/rwth-acis/Yatta-Connectors">Yatta-Connectors</a> repository. Currently supported communication protocols:</p><ul>
<li><a href="http://xmpp.org">XMPP-Connector</a> - Propagates updates in a XMPP multi-user-chat room</li>
<li><a href="http://peerjs.com/">WebRTC-Connector</a> - Propagate updates directly with WebRTC</li>
<li><a href="http://dbis.rwth-aachen.de/cms/projects/the-xmpp-experience#interwidget-communication">IWC-Connector</a> - Inter-widget Communication</li>
</ul><p>You can use Yatta client-, and server- side. You can get it as via npm, and bower. We even provide a polymer element for Yatta!</p><p>The theoretical advantages over similar frameworks are support for</p><ul>
<li>.. P2P message propagation and arbitrary communication protocols</li>
<li>.. arbitrary complex data types</li>
<li>.. offline editing: Only relevant changes are propagated on rejoin (unimplemented)</li>
<li>.. AnyUndo: Undo <em>any</em> action that was executed in constant time (unimplemented)</li>
<li>.. Intention Preservation: When working on Text, the intention of your changes are preserved. This is particularily important when working offline.</li>
</ul>
<h2 id="use-it-">Use it!</h2><p>You find a tutorial, examples, and documentation on the <a href="https://dadamonad.github.io/Yatta/">website</a>.</p><p>Either clone this git repository, install it with <a href="http://bower.io/">bower</a>, or install it with <a href="https://www.npmjs.org/package/yatta">npm</a>.</p><h3 id="bower">Bower</h3>
<pre><code>bower install Yatta
</code></pre><p>Then you include the libraries directly from the installation folder.</p><pre><code>&lt;script src=&quot;./bower_components/yatta/yatta.js&quot;&gt;&lt;/script&gt;
</code></pre><h3 id="npm">Npm</h3>
<pre><code>npm install yatta --save
</code></pre><p>And use it like this with <em>npm</em>:</p><pre><code>Yatta = require(&quot;yatta&quot;);
</code></pre><h2 id="status">Status</h2><p>Yatta! is still in an early development phase. Don&#39;t expect that everything is working fine.
But I would become really motivated if you gave me some feedback :) (<a href="https://github.com/DadaMonad/Yatta/issues">github</a>).</p><h3 id="current-issues">Current Issues</h3>
<ul>
<li>The History Buffer should be able to store operations in a database</li>
<li>Documentation</li>
<li>Reimplement support for XML as a data type</li>
<li>Custom data types</li>
</ul>
<h2 id="support">Support</h2><p>Please report <em>any</em> issues to the <a href="https://github.com/DadaMonad/Yatta/issues">Github issue page</a>! 
I would appreciate if developers give me feedback on how <em>convenient</em> the framework is, and if it is easy to use. Particularly the XML-support may not support every DOM-methods - if you encounter a method that does not cause any change on other peers, please state function name, and sample parameters. However, there are browser-specific features, that Yatta won&#39;t support.</p><h2 id="license">License</h2><p>Yatta! is licensed under the <a href="./LICENSE.txt">MIT License</a>.</p><a href="&#x6d;&#x61;&#105;&#108;&#116;&#x6f;&#x3a;&#x6b;&#101;&#118;&#105;&#110;&#x2e;&#x6a;&#x61;&#104;&#x6e;&#115;&#64;&#114;&#x77;&#116;&#x68;&#45;&#x61;&#x61;&#x63;&#104;&#101;&#x6e;&#46;&#x64;&#101;">&#x6b;&#101;&#118;&#105;&#110;&#x2e;&#x6a;&#x61;&#104;&#x6e;&#115;&#64;&#114;&#x77;&#116;&#x68;&#45;&#x61;&#x61;&#x63;&#104;&#101;&#x6e;&#46;&#x64;&#101;</a>





      </div>
    </div>
    <div id='footer'>
  January 23, 15 15:59:30 by
  <a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
    Codo
  </a>
  2.0.9
  &#10034;
  Press H to see the keyboard shortcuts
  &#10034;
  <a href='http://twitter.com/netzpirat' target='_parent'>@netzpirat</a>
  &#10034;
  <a href='http://twitter.com/_inossidabile' target='_parent'>@_inossidabile</a>
</div>
<iframe id='search_frame'></iframe>
<div id='fuzzySearch'>
  <input type='text'>
  <ol></ol>
</div>
<div id='help'>
  <p>
    Quickly fuzzy find classes, mixins, methods, file:
  </p>
  <ul>
    <li>
      <span>T</span>
      Open fuzzy finder dialog
    </li>
  </ul>
  <p>
    Control the navigation frame:
  </p>
  <ul>
    <li>
      <span>L</span>
      Toggle list view
    </li>
    <li>
      <span>C</span>
      Show class list
    </li>
    <li>
      <span>I</span>
      Show mixin list
    </li>
    <li>
      <span>F</span>
      Show file list
    </li>
    <li>
      <span>M</span>
      Show method list
    </li>
    <li>
      <span>E</span>
      Show extras list
    </li>
  </ul>
  <p>
    You can focus and blur the search input:
  </p>
  <ul>
    <li>
      <span>S</span>
      Focus search input
    </li>
    <li>
      <span>Esc</span>
      Blur search input
    </li>
  </ul>
</div>
  </body>
</html>