Thanks for getting this process going Michael.  This will really make
Shindig much easier to use.

Regarding some questions raised below here's my opinions:

* Metadata 'render' api should allow an array of [gadget url, moduleId,
view]
* Metadata api should be flexible enough to form the basis of a gadget
directory
* I want to see metadata and social calls batchable
* Note that with recent checkins we can support fetching JSON-RPC results
with JSONP or CORS.
* Login popup should be based on OAuth 2.0 User Agent flow, which will allow
for easier integration once OAuth 2.0 becomes more widespread.


On Wed, May 12, 2010 at 12:31 AM, Michael Hermanto <mherma...@google.com>wrote:

> Hi all,
>
> In Google, we've been developing a lightweight gadget-and-container
> framework, called "common container", to 1) simplify container and gadget
> integration model, and 2) provide near-zero barrier to entry to become a
> gadget container. The framework is a combination of JS (which container
> clients script source) and API RPC endpoints (which provides the JS with
> runtime metadata/information). Many of the features have been implemented,
> and are currently being productionized. Several Google containers are busy
> prototyping (to integrate with common container) with some success and
> speed.
>
> Meanwhile, there has been an independent community effort to modernize the
> Shindig container. It has a similar/same set of goals. In the spirit of
> re-use, we would like to bring non-Google-specific work that we've done in
> Google to Shindig. Engineers at Google and Paul Lindner have met, discussed
> and agreed on the motivations and feature sets. Roughly speaking, they are
> as follow --
>
> 1) JS is served via the gadgets server, as a container feature, ie:
> /gadgets/js/shindig.container?c=1. This will leverage gadget server
> compilation of JS and management of library dependencies through
> transitive-closure.
>
> 2) Standard JS API to get metadata to render a gadget, ie:
> /api/rpc?method=gadgets.get.
> - API is implemented using an RPC call similar to other APIs (people,
> activities, etc) in Shindig.
> - RPC will return a URL template and gadget metadata, sufficient to
> generate
> iframe render URL. Also, the response can be cached by the clientto
> evaluate
> URL template with data for subsequent/similar requests (ie: different user
> preferences) without requiring an HTTP fetch.
> - Also need JS API to refresh a security (/OAuth) token, ie: /api/rpc?
> method=tokens.get. Gadgets requiring tokens, both short- and long-lived,
> relies on the container to have these primed in a timely fashion.
>
> 3) Standard JS API to render/navigate gadget.
> - Base API renders into an HTML element, ie:
> container.navigateGadget(string, Element)
> - Ideally support double buffering for switching gadgets views, ie:
> gadget.views.requestNavigateTo().
> - Need a standard "ready-to-draw" RPC callback, when the gadget has
> finished
> initial rendering.
> - Respects preferred width, height and other gadget-specified metadata used
> in rendering.
> - Need rendering "styles" to show gadget in a modal dialog, show hovering
> next to an HTML element, etc.
> - Need concept of a "primary" gadget on the page. Navigating to this gadget
> should fire a callback on the parent page to support navigation in the
> browser bar.
>
> 4) All RPC APIs (gadgets, people, activities) should be callable form the
> container page.
> - Likely implementation is an iframe on the domain of the gadget host. Web
> site calls gadgets.rpc() to iframe and iframe makes XHR to gadget host.
> - Gadget render iframe URLs can be enhanced for latency-optimizing
> features,
> ie: container can be an RPC hub for gadgets on the page.
> - RPC responses can be obtained from pre-loaded/cache metadata for latency
> improvements.
> - Need to flesh out a standard API to redirect to a login page from the 3rd
> party site.
>
> What's next? Discuss. We would very much like to hear your thoughts. In the
> next few days, we will prepare common container code base for public
> viewing, and upon no strong objections, we will send an initial code drop
> for review, where which we can discuss further in greater technical
> details.
>
> Cheers,
> --Michael
>

Reply via email to