I have been tasked with making our implementation of Shindig work with
URL gadgets. After much searching, I have seen few examples and little
documentation. I have made it work in our environment have come across
some issues...

Issue 1
Given simply the "libs=" parameter, per:
http://code.google.com/apis/gadgets/docs/legacy/fundamentals.html#JS_URL
, it seems one needs to instruct the gadget author to prefix it with a
server URL. This seems to have some serious issues:

1) The gadget author must know the server URL. This prohibits the author
from writing a URL gadget targeting different gadget servers. Even in
our case where the user is authoring a gadget for our site, the gadget
goes through a lifecycle from development to sandbox to production, all
with different servers.

2) The gadget server host needs to publish the server URL. This becomes
a public interface and changing it can become problematic once gadgets
have been developed.

A possible solution is to make the parameters value a full URL (no CSVs)
that the gadget author simply includes in a <script src=...>.

Note - there was one posting in the news group about needing to trust
where the JS comes from, I believe the solution to trust should be
something completely different, such as signing URLs, etc...

Issue 2
Do people support the gadgets.* features with this? I have yet to see
documentation suggesting this. But for many of the features it is
possible. However, the gadgets.* features require some initialization,
which can be seen in the HTML gadgets between the feature JS and gadget
content. Where will this come from?

Problem, this cannot be generated without additional information, such
as the name of the container, gadget URL, locale, perhaps view and
module id.

A possible solution is to have another parameter with a full URL that
the user includes after the one above.

Note - the reason for separating them, is the feature JS is constant and
cacheable. The initialization JS, while cacheable, has more variability
in the URL (e.g. cache key), plus requires some type of dynamic
generation.

Jon Weygandt

Reply via email to