The TWIP Concept
The most essential part of TWIP is the real time collaboration. Everybody should see what everybody else is doing in a a split second. In order for that ho happen, you need a server. A central authority. A point with which all users synchronise.
Most of all, you need that to preserve coherence. Another big word, right ? Coherence means that all users do the operations in exactly the same order. Let’s say user A draws a red line and sends a message to user B (so B can have it drawn as well). User B, less than a second after, draws a green line on top of the red line. Now, without preserving coherence, user A will see the green line underneath the red line and user B will see the green line above the red line. This would happen because each user would get the message from the other user with a certain delay. And we wouldn’t fix that, the whole collaboration thing would suck, as we’d have no way of knowing that the same data is available on all computers. Fortunately, we have a way to fix that and this is done by a server, a central authority. Think of it as a commander who keeps the privates in attack formation. The thing for you to remember right know is coherence, as being essential.
Next there is the question of extensibility, scalability. Let’s say we fix this whole coherent method of synchronisation. A text editor. Or a picture editor. Or for a piece of software for editing programming code or 3D models. We’ll put a lot of work into the sync engine and into the application itself, but what about all the other apps ? So we thought it’d be waaaay cooler to have this synchronisation engine avaialable onto which we could build. Or anyone else for that matter. There would be no point in our trying to develop all these collaborative apps, when there are a of really intricate, exciting pieces of software available. All they need is the collaboration scheme.
So this is how we thought about the Framework. Basically, this would be the synchronisation engine onto which to build. Think of it like a programming interface or an API. Regardless (almost regardless) of application a few simple rules should be respected and the collaboration would come right in !
Then, we thought we’d do everything in Java, so it would be portable on any OS, both on the client side and on the server side. This even opens the perspective of making a mobile version of TWIP, but let’s no get ahead of ourselves.
Java opens more doors for our project. Like the transparent application distribution. This means that all the apps are stored on the server-side, and when a users wants a new app, it automatically downloads and plugs in together with all the TWIP resources on the client system.
As far as the server is concerned, it has four major roles:
- Handling the real-time synchronisation (keeping the client apps in line, as previously discussed)
- Storing an online version of the data (so users can have access to only one resource, instead of keeping individual copies on their computer)
- Managing users and users rights.
- Managing the apps stored online and making them available to users.
Look at the diagram below to get a better picture of the whole relationship between the clients and the server:
On the server-side, synchronisation also means the server must keep an updated version of all the data. So the server must constantly read the messages received from clients and change the stored data accordingly.
Right now, I and my team-mate, Cristi, are working on the Framework and on the synchronsation schemes.
What would be really useful to us would be having your feedback. Tell us how collaboration would work for you. Tell us what you need and what you’d think is cool as far as team work is concerned.
Give us the top three applications you would use in a collaborative fashion, with your friends. Ask your friends. Leave a comment or two
Tags: application distribution, client server, coherence, collaboration, feedback, real time, scalability, sync, synchronisation, Team Work Interactive Platform, TWIP
You can comment below, or link to this permanent URL from your own site.