Thanks Scott for writing this up and providing better insight in these 
approaches!


On 05/24/2011 10:27 AM, Scott Wilson wrote:
Hi everyone,

Looking over some of the recent discussions I thought it would be useful to 
clarify how Wookie and Shindig can interact - or remain largely separate - in 
Rave.

I've made a schematic here:

http://dl.dropbox.com/u/4504633/shindig-wookie-rave%20wiring.png

Model 1: Integrated approach
=======================
In the first model, Shindig is integrated with Wookie using the built-in 
integration in Wookie. However, this only provides a unified mechanism to 
acquire and manage widget instances, it doesn't include the capability for 
either registering OSAPI and RPC functions or for handling social data API. So 
Rave provides an SPI connector to Shindig and the OpenSocial JS with the OSAPI 
and RPC functions is made available for all Rave Widgets.

Model 2: Separated approach
=======================
In the second model, Rave connects directly with both Wookie and Shindig and 
has separate rendering processes for each type of Rave Widget (W3C and 
OpenSocial). The two types of Rave Widget are unified for the user through 
discovery in a common Widget Store metadata repository.

+1
I'm also in favor of this approach, with the added question if we cannot also bring the Wookie Preferences within Rave through a Wookie provided SPI layer. That way these widget/gadget engines, and hopefully others too, can be managed and integrated in a generalized way. Furthermore, it should allow for much more flexible scaling where the management and integration of multiple instances of Wookie/Shindig servers is under the control of Rave and not (no longer) a concern of these engines themselves.


Comparison
=========
- Model 1 is simpler if there is always exactly one instance of Wookie and 
Shindig; Model 2 is simpler if there are 0..* instance of each
- Model 2 has the advantage that there is no dependency on Wookie-Shindig 
integration, which could be broken when either project makes a new release
- Model 2 has the advantage of letting developers experienced with each project 
to work in a reasonably independent manner
- Model 1 has the possible advantage that it removes the Preferences concern 
from Rave; conversely with Model 2 Preferences are now stored in two places (or 
Wookie has to be modified to support external preferences storage).

Recommendation
==============
The Wookie-Shindig integration mechanism was designed as a useful convenience 
for anyone wanting to use Shindig for basic gadgets and who doesn't want the 
hassle of sorting the social data APIs out - which is a reasonably common use 
case, but not what Rave is focussed on, which is full OS support.

In both cases, the Widget Store could provide lightweight interoperability by 
exposing the set of available Rave Widgets - wherever they come from - in a 
consistent manner. It also makes it clear how we might add other types of Rave 
Widgets in the future.

So, I recommend using Model 2, keeping the Shindig and Wookie integration 
separate, but with a Widget Store (project location TBC) to provide 
consistency, especially at the UI level for users wanting to discover and 
select Rave Widgets to add to their pages without having to worry about what 
kind of server is handling them.

+1.
The Widget Store/Repository IMO should belong to Rave (see also my reply to the proposal of Ross). Especially the Widget Repository will need to provide much more than just a "store" solution and will need a high level of customization and extendability to support features like access privileges, ratings, recommendations, "temporarily taking offline" etc. which much more belong to and are tied into a specific Rave instance and its specific usage and less usable and meaningful out of its context.

Thanks,

Ate


S

Reply via email to