Home   Partners   Tech   Sdk   Faq

Technology
The beWeeVee Software Development Kit allows you to enhance your application with live collaboration features. By leveraging Operational Transformation properties, beWeeVee is able to synchronize data structures without requiring locking a central copy to achieve the illusion of zero latency on collaboration scenarios.

Features
  • Peer-to-Peer Operational Transformation Engine
  • Support for .Net 3.5, .Net 4.0 and Silverlight 3.0
  • Designed to enhance your applications' user experience in:
    • Native support for simultaneous text edition (Ranges API)
    • Native support for .Net lists (Ranges API).
    • Support for conflict-free data synchronization (Ranges API or Native API)
  • Extensibility model

Overview
The Operational Transformation (OT) Technology is the typical support of advanced groupware systems. It was originally developed for consistency maintenance and concurrency control in live collaboration plain text documents editing. The base technology pioneer by C. Ellis and S. Gibbs in the GROVE system in 1989. It adopted a replicated architecture for the storage of shared documents to ensure good responsiveness over high latency networks, such as the internet. It's lock-free, non-blocking and time insensitive nature makes it very suitable for implementing live collaboration features.

beWeeVee users Operational Transformation to propagate the changes performed over data structures through a peer-to-peer or client-server architecture. Artifacts like documents, diagrams, web pages or other digital formats changes over time. Those changes can be transformed by beWeeVee to create canonical operations that can be replicated to remote sites achieving the illusion of low latency realtime changes. When operations are integrated into the local peer they become part of an operation stream that represent the entire document at a particular moment in time.

beWeeVee also support generic data lists, that allows the software developers to perform data synchronization in a peer-to-peer networks topology. As the support for realtime conflict-free changes is independent of the content itself multiple types of software application would benefit of integrating beWeeVee.

Domains matrix


The operation stream
Operation streams allow beWeeVee to reconstruct the state of the artifact at any specific moment in time. Given enough storage the operation stream can become the entire history of changes performed over a document. Think on it, as if, at every keystroke you are saving a copy to be used later, only that beWeeVee does that including your remote users, ensuring consistency and positional intention preservation. Operation streams in the context of beWeeVee enable features such as endless undo and artifact changes playback.

Technically speaking, we can think of any artifact as an initial copy and a set of operations performed over that artifact. Lets say that you have a list <1,2,3> and now you add 'a' in between 1 and 2.

In a simplified form, the operations stream would be:

(InsertEnd '1') (InsertEnd '2') (InsertEnd '3') (InsertInBetween<1,2> 'a')

Now you can apply those operations to your empty state and know how the list has been mutated to achieve the final form. Things get complex because your are not the only one performing the changes, other remote users may be doing that also. A simultaneous insertion of the 'a' in between 1 and 2 may be conflicted with the insertion of a 'b' in between 1 and 2.

In that case my operations stream would be:

(InsertEnd '1') (InsertEnd '2') (InsertEnd'3') (InsertInBetween<1,2> 'a') (T(InsertInBetween<1,2>) 'b')

while the remote users' operation stream would be:

(InsertEnd '1') (InsertEnd '2') (InsertEnd '3') (InsertInBetween<1,2> 'b') (T(InsertInBetween<1,2>) 'a')

If you noticed the T, it signal that beWeeVee have transformed the operation in such a way that applying it would cause the same end state in every single peer.

Architectures
beWeeVee is a native peer-to-peer enabled technology. If your application uses a client-server architecture, one of the peers behave as server and the other as client. Each beWeeVee client in a peer-to-peer architecture or a client-server architecture behaves as a server node and can use an open or a propietary protocol to send the operations to the rest of the peers.

Basic architecture


In other scenarios, multiple peers may behave as federated servers using the same or a different protocol. As beWeeVee, by design, do not assume the communication channel the application developer would use; the application developer is free to decide which communication technology is the best fit for their application. In the case of the peer-to-peer typical scenario, the application developer can decide how many peers to include in the peer-to-peer network topology

P2P architecture


In the following example the architecture uses a peer-to-peer network technology to implement a client-server architecture with a master-slave server architecture.

Thin architecture


Rest assure that the beWeeVee team would advice you on the best architectural approach for your application needs.

Contact us for any inquiry or visit our Forums .