Additional Blogs by Members
cancel
Showing results for 
Search instead for 
Did you mean: 
Former Member
0 Kudos

Last week at TechEd Bangalore, Marilyn Pratt and I were having a conversation about Gravity – Collaborative Business Process Modelling within Google Wave, we talked about how innovative it was and how such collaborative user interfaces could be useful in various different business applications, in addition to just BPM. During this discussion, I expressed to her that I don't understand why Google Wave was chosen as a platform for building Gravity ... don't get me wrong, I really like Wave and I'm very excited about its potential, but at the same time I realize that Wave will probably not become a reality in our workplace for another few years. Gravity, on the other hand is something people have a need for today and that is the reason I wonder why it was not built on a platform that can be delivered sooner.

Looking at the Gravity – Collaborative Business Process Modelling within Google Wave I can make out that the core functionality Gravity needs from Wave is the ability of keeping multiple clients synchronized to create a realtime collaborative environment, which is what makes me wonder, since creating such an environment should be feasible outside of Wave, I'm thinking XMPP, JMS or even a simple custom protocol.

Later that night, I spent some time actually writing a rudimentary prototype of such a server. I've been learning Erlang for the past month or so and creating such a server seemed like an interesting learning exercise. So 47 lines of erlang code later, here's what I had ...          

 


As you watch the above video, note as I drag a rectangle in any one Flash application, its sends messages to the server and the server multicasts those messages to other connected clients and those clients update in almost realtime. While in the example above all the application instances are running on the same system, they could just as easily be running on different system in the browser and still communicate via the server.
 
Here's the code for the Erlang server ..
 
 

Click to download code

  

This ability of having realtime synchronized clients, as I understand it, is the primary ability that Gravity needs from Wave which is why I'm puzzled.
 
It should be feasible to build Gravity's realtime messaging on top of existing solutions like Adobe's Lifecycle Data Services, XMPP or even custom protocols like a more elaborate version of the code I wrote above, so I wonder what were the reasons to choose Google Wave as the base for building Gravity. I'm also curious if Gravity's messaging layer is replaceable with some other protocol, if so, then I would love to know if the team behind gravity is considering any other such options.
 
6 Comments