diff --git a/README.md b/README.md index aebbc4b1..b949ea85 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ -# ![Yatta!](./Yatta.svg?raw=true) +# ![Yatta!](./extras/imgs/Yatta_logo.png?raw=true) 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) +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: @@ -10,7 +10,7 @@ Predefined data structures: * 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. +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 @@ -27,7 +27,7 @@ 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. +* Space complexity = O(|Document|), whereby |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. @@ -38,9 +38,12 @@ 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. - +So, how did I come up with the name for the implementation (Yatta! is not Yata)? +![YATTA!](./extras/imgs/YATTA.png) +Yatta! means "I did it!" in Japanese. You scream it when you accomplish something you are proud of (for proper application I refer to the Yatta-man in [Heroes](http://heroeswiki.com/Yatta!)). +There is also this awesome video on the Internet that will change your life [Yatta](https://www.youtube.com/watch?v=kL5DDSglM_s). # Status -Yatta is still in an early development phase. +Yatta!is still in an early development phase. # Support Please report any issues to the Github Issue diff --git a/extras/imgs/YATTA.png b/extras/imgs/YATTA.png new file mode 100644 index 00000000..e81aeb19 Binary files /dev/null and b/extras/imgs/YATTA.png differ diff --git a/Yatta.svg b/extras/imgs/Yatta.svg similarity index 75% rename from Yatta.svg rename to extras/imgs/Yatta.svg index edaaedc1..9073d2eb 100644 --- a/Yatta.svg +++ b/extras/imgs/Yatta.svg @@ -9,104 +9,111 @@ xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="744.09448819" - height="1052.3622047" + width="97.848381" + height="48.098545" id="svg7976" version="1.1" inkscape:version="0.48.4 r9939" - sodipodi:docname="New document 29"> + sodipodi:docname="Yatta.svg"> + style="overflow:visible"> + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="matrix(-1.1,0,0,-1.1,-1.1,0)" + inkscape:connector-curvature="0" /> + style="overflow:visible"> + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(-0.6,-0.6)" + inkscape:connector-curvature="0" /> + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="scale(0.6,0.6)" + inkscape:connector-curvature="0" /> + style="overflow:visible"> + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + transform="matrix(-0.2,0,0,-0.2,-1.2,0)" + inkscape:connector-curvature="0" /> + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + transform="matrix(0.2,0,0,0.2,1.2,0)" + inkscape:connector-curvature="0" /> + style="overflow:visible"> + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + inkscape:connector-curvature="0" /> + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + transform="matrix(0.8,0,0,0.8,10,0)" + inkscape:connector-curvature="0" /> + inkscape:window-width="1280" + inkscape:window-height="979" + inkscape:window-x="-4" + inkscape:window-y="-3" + inkscape:window-maximized="1" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" /> @@ -150,14 +161,15 @@ image/svg+xml - + + id="layer1" + transform="translate(-67.180226,-76.938699)"> @@ -303,7 +315,7 @@ sodipodi:role="line">T