diff --git a/README.md b/README.md index f7b77b31..aebbc4b1 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,49 @@ -# [Yatta!](./Yatta.svg?raw=true) +# ![Yatta!](./Yatta.svg?raw=true) -A Collaboration Framework for arbitrary data structures that is _not_ based on Operational Transformation. +A real-time web framework that manages concurrency control for arbitrary data structures and is _not_ based on Operational Transformation. +Yatta provides similar functionality as [ShareJs](https://github.com/share/ShareJS) and [OpenCoweb](https://github.com/opencoweb/coweb) +but does not require you to understand how the internals work. The predefined data structures provide a simple API to access your shared data types. + +Predefined data structures: +* Text +* Json - [example](./examples/IwcJson.md) +* XML (coming soon) + +Unlike other frameworks, Yatta supports P2P message propagation and is not bound to a specific communication protocol. + +Currently supported communication protocols: +* [IWC](dbis.rwth-aachen.de/gadgets/iwc/resources/iwc.manual.pdf) - Inter-widget Communication + +# About +Find out more about the concurrent editing problem here +([Cooperation, Concurrency, Conflicts, and Convergence](http://opencoweb.org/ocwdocs/intro/openg.html)) and here +([Operational Transformation (OT)](http://en.wikipedia.org/wiki/Operational_transformation)) + +My Bachelor Thesis project aim was to develop a P2P OT Framework that enables collaboration on XML documents and supports +[Intention Preservation](http://www3.ntu.edu.sg/home/czsun/projects/otfaq/#intentionPreservation). +After some time I realized that OT has significant drawbacks in P2P environments. + +With my gained experiences I came up with a new approach. I named it Yata - Yet Another Transformation Approach. +Very surprising is that my approach enables concurrent editing with the following space and time properties: +* Time complexity: O(S), whereby S is the number of operations that are inserted concurrently at the same position. This means that my approach does not transform against operations that happen on other positions. +* Space complexity = O(|Document|), |Document| is the size of shared document. Depending on the used data structure, Yata may needs 4*|Document| of space. +This means that my approach beats all OT time complexities. Furthermore, it is possible to make a very strict definition of Intention Preservation, and I was able to +show that it is never violated. + +Another advantage of my approach is that propagated messages are very small. +Background: In Real-Time P2P OT algorithms you have to send a state-vector with every message that defines the state of the History Buffer +on which the operation was created. This is not necessary in Yata. + +One downside is that the History Buffer holds at least as many operations as there are characters in the document. +In contrast, an OT algorithm can have an empty History Buffer while the document size is very big. +# Status +Yatta is still in an early development phase. + +# Support +Please report any issues to the Github Issue # License -Yatta! is licensed under the [MIT license](./LICENSE.txt). +Yatta! is licensed under the [MIT License](./LICENSE.txt). diff --git a/Yatta.svg b/Yatta.svg new file mode 100644 index 00000000..edaaedc1 --- /dev/null +++ b/Yatta.svg @@ -0,0 +1,345 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + Y + + + + A + + + + T + + + + A + + + + ! + + + + T + + + + + + + + + diff --git a/doc/extra/LICENSE.txt.html b/doc/extra/LICENSE.txt.html new file mode 100644 index 00000000..558d0ca6 --- /dev/null +++ b/doc/extra/LICENSE.txt.html @@ -0,0 +1,112 @@ + + + + + Yatta! Documentation + + + + + +
+ +
+ +
+

The MIT License (MIT)

Copyright (c) 2014 Kevin Jahns.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

+
+
+ + +
+ +
    +
    +
    +

    + Quickly fuzzy find classes, mixins, methods, file: +

    + +

    + Control the navigation frame: +

    + +

    + You can focus and blur the search input: +

    + +
    + + \ No newline at end of file