On 05/20/2011 12:40 AM, Ross Gardler wrote:
On 19/05/2011 17:14, Ate Douma wrote:
Hi Ross,

I must admit your answers have cleared up several things but confused me
even more on some others ;)

I tend to do that alot ;-)
:)


I'm not going to respond to individual points in this mail as I see Scott has
followed up already and I don't see anything major I want to comment on there.
There are a couple of important differences between how he imagines the
widgetstore (see below for a definition) being implemented, but this proposal is
not about the widgetstore (see below) it's about the GUI for handling Wookie
Widgets in Rave.

Up until now, when I have said widget I mean a widget *or* gadget. In many ways,
they are the same thing, they are a webapp written in HTML+CSS+Javascript. The
only difference between them is the APIs available to them and the packaging
mechanism. For me this means the terms are interchangeable (yes this is a
simplification from a technical perspective, but code can do anything we want it
to, including translating between APIs and packaging standards).

However, in Scott's response to your questions he agrees that it would make more
sense for Rave to use Shindig directly rather than via Wookie. I defer to his
far better understanding of both Shindig and Wookie. It's a shame though, I'd
like to think that the two can become one. I'll leave that goal for a 2.0
version though.
Well, I'm not sure I agree, on this level that is.
As long as the specifications for W3C widgets and OpenSocial are not (enough) interchangeable, or at least the W3C widgets spec eclipses the OpenSocial one, I'm not sure why this should be come a critical feature of Wookie itself. That is, now we have/get Rave who will provide integration and collaboration between these two (and more) type of "widgets" on the front-end. Before Rave it made sense to try to abstract this away on the Wookie server level, but imo Rave should be able to provide a better and more extensive solution that ever would "fit" for Wookie alone. Once we can provide this through Rave I would even go as far as suggest that Wookie probably better focus solely on the W3C widget spec and leave the integration and interoperability functionality to Rave...


When I say "widgetstore" I am using it like "appstore". That is it is a place
where we can find out what widgets and gadgets are available to be served from a
suitable widget/gadget server. a widgetstote does not host instances of the
widgets, only the code (and associated packaging information) that allows us to
create instances. In this proposal I am making no assumptions about where the
widgetstore project is housed (Rave, Wookie or another TLP). I agree that it
should present both open social and W3C Widgets.

When I say "Wookie" or "Widget Server" I mean a server that hosts instances of
widgets. It manages widget instances, tracks who owns those instances, what data
is stored against them and serves them up for rendering (i.e. unpacks them and
delivers them in a form usable by a container).

I think of these as separate applications because not everything needs both.
Imagine, for example, a standalone application that ships with a given set of
Widgets/Gadgets and the appropriate widget/gadget server code. Such an
application would have no need for a widgetstore that allows other
widgets/gadgets to be discovered and instantiated.
Sure. However AFAIK that widget/gadget server still needs the meta-data management (even if only read only) for those widgets, which also are under the domain/management of such a widgetstore (repository as I would call it). So while you wouldn't need the administration features nor a front-end application for a widgetstore, I think you still need the backend for it. That, or in your view the widget/gadget servers keep and maintain their own backend model, and the widgetstore/repository only interfaces with it or duplicates/synchronizes them. My personal view is that widget/gadget servers are or should be (mostly) lightweight and transient engines which delegate their persistence management through an SPI to a hosting portal like Rave. That makes them extremely scalable and reusable while the actual configuration and (meta) data management stays with and belongs to the concrete solution domain, e.g. users, security, preferences, appstore/repository, layout, skins, etc.


Finally, when I say a container I mean an application that hosts
widgets/gadgets. A container is neither a widget server nor a widget store. A
container is useless without a widget and/or gadget server, but it need not have
a widget store. Containers need not be heavyweight (like Rave), they could be
very simple, just providing a fixed layout for our hypothetical standalone
application.

I agree that a container could be lightweight and not need to "host" the widgets/gadgets. But for me the host and widget/gadget servers (engines) can or should be separate entities too. It would be perfectly fine for Rave to be used as only a host, even without an (frontend) widget store, which is accessed and used in an external light-weight container/website. That is a typical and spec supported use-case for open-social gadgets and Rave should definitely support this, see:
  http://www.opensocial.org/page/sharing-and-accessing-social


Really all this proposal boils down to is that Wookie provides a set of W3C
Widgets that can be used to build an admin application for a W3C Widget Server.
These W3C Widgets are used within Rave.

Since both Ate and Scott feel it would be better to work directly with
OpenSocial Rave may provide another set of (presumably gadgets) for
administering the the OpenSocial server.
I would expect that the Rave admin widgets would or should abstract away the differences between W3C, OpenSocial, etc. from a UI management POV. While certainly these will need to adapt and provide specific management features depending on each widget/gadget server, IMO Rave should not (need to) separate these individually if/when the outset goal is to serve and manage both equally well. But that also might mean these Rave admin widgets would not be reusable as W3C Widgets externally, only within (a) Rave instance. I'm not sure if limiting our options and capabilities to allow and support reuse of these admin widgets for within a Wookie only host is in the best interest of Rave. But I can understand that for Wookie to rely (only) on Rave for its admin *UI* also might be limiting.
So I'm really not sure how we should tackle this.

I would hope that in the majority of
cases the W3C Widgets can be used directly or extended to support OpenSocial
containers too.

I imagine the same model for the widgetstore, that is a separate server
application that provides an API and suitable widgets/gadgets for interacting
with the "catalogue" of widgets.
I agree it might be a separate application (an/or directly integratable in *a* Rave portal instance if so desired). Right now though I see this as a "native function of Rave and belong up in the Rave box" (quoting Matt here from a different thread).


Why should Rave keep them separate like this? Well it makes the application more
scalable, but perhaps more importantly it enables individual components to be
reused in ways we can't currently imagine. Thus increasing the chances of it
being reused and a community being generated.
That goal is definitely something we should strive for as much as possible, so I agree on that. But reusability needs to serve a purpose without (too much) upfront limitations for the current cases at hand.

IMO our first objectives for Rave should be to get a working and usable solution for the current contributers such that they can start converting to it ASAP. Future releases might be all about further generalizing and extending its usages, but we should be careful not to endanger our first objectives too much in the current stage ...

Regards,

Ate


Ross


Follow up questions below.

Regards,

Ate


On 05/17/2011 04:42 PM, Ross Gardler wrote:
On 17/05/2011 14:31, Ate Douma wrote:
Great to see this proposal Ross!

Of course, it immediately raises many questions (cool!), which also
means that right now its not clear enough to me if and how we can or
want to do it (exactly) like you propose.

But before I'll bring up the questions concerning the proposal itself,
I'd like to express my worry about the overloading of the term Widget,
especially in this context (not just this proposal).

We now have W3C Widgets, Wookie Widgets and Rave Widgets (low/upper
case?), and I wouldn't be surprised if we get OpenAjax Widgets join the
party some time soon too.
Reading the proposal I very quickly got confused and uncertain which one
was meant or if I might be interpreting/expecting them different.
Anyway, I don't have an easy solution for this, but this is bound to
cause much semantic problems and confusion.
Maybe we should seriously reconsider choosing a new and different name
for Rave widgets?

Yes, Scott did try to raise this concern early on ;-)

From the perspective of Wookie a Widget is either an OpenSocial Gadget
or a W3C
Widget. One treats OpenSocial gadgets and W3C widgets identically in
Wookie.
That is the method for grabbing an instance and rendering it is the same
regardless of how it is implemented.

I know. But that doesn't help making it less confusing semantically :)

So, should we discuss if we should or need a more differentiating term
for our Rave widgets, or are you suggesting to drop the notion of Rave
widgets all together and just use Wookie widgets as primary concept ...?


Question about the proposal and more generally about Wookie/Rave
integration:

* In you proposal the Admin Widgets would be based on Wookie (alone?),
but AFAIK those then should (also) be capable to manage Rave widgets in
general, not just W3C/Wookie Widgets, right?

As proposed I am talking about Wookie Widgets (which includes
OpenSocial gadgets
that the server has been made aware of).

I propose that Rave uses Wookie for all its management of Rave Widgets.
OK, that much is clear now.

I'm certainly open to the idea, but what I'm not sure of is if this
might impose limitations to dealing with OpenSocial Gadgets related
administration and management. In a Rave portal environment (so not any
other container), I expect we'll use Shindig directly to render
OpenSocial Gadgets, not via Wookie.

It might be fine to use (only) Wookie for implementing our admin
widgets, but please note that Wookie does have some limitations for
rendering OpenSocial Gadgets. So possibly this might pose restrictions
in the context of managing OpenSocial Gadgets, e.g. like showing a
Gadget preview or dealing with "People" related meta-data during the
administration?

The thing really unclear yet is who "owns" and manages the data.

My current view is very much like what Matt said on the other discussion
concerning the OpenSocial SPI implementation: Rave manages the core
data, which includes security, people, widgets (store *and* instances?),
pages, etc. and this then gets re-exposed to the rendering engines, e.g.
through some SPI integration layer.

Can you explain how this works with your proposal, to use Wookie for all
admin widgets?


One of the goals of your proposal is that (for Wookie) "The admin
widgets can be used to create an admin app in any container able to host
widgets."

Yes, a widget server admin app, not a Rave admin app or a widgetstore
admin app.

Although I find the idea intriguing, I'm doubtful if such admin widgets
really can be made so generic/independent from Rave that they become
reusable for other (non-Rave based) container applications. Especially
as we'll (need to) device a "store model" which is (much) more than just
the Wookie model...

There will be Rave specific admin features, such as user management
and there
will be widgetstore specific features, like making a widget available.

My proposal separates these three things out:

Wookie is the widget server
WidgtetStore is the "app store" of widgets/gadgets
Rave is the "portal" framework

In this proposal the "admin widgets" are only concerned with
administration of
Wookie, e.g. things like:
Here you've got me confused.
I think earlier you said you want to use Wookie for the administration
of all Rave Widgets, but now you say only administration of Wookie
(widgets), right?


- deploy widget/gadget to server
- instantiate widget
- preferences store
- manage whitelist
- manage features
- etc.

So these are Wookie *specific* administration widgets AFAIK, not dealing
with OpenSocial Gadgets which are not served by Wookie, but might be
served natively by Shindig?



The "widgetstore" would be responsible for things like:

- searching available widgets
- rendering descriptions of widgets
- rating widgets
- etc.
The widgetstore however should cover all Rave widgets, Widgets/Gadgets
to be rendered by Wookie and also Gadgets to be rendered (directly) by
Shindig.


Rave is responsible for:

- user management
- layout managemet
- OpenSocial SPI
- etc.
Important IMO to mention here is page management, which will require
referencing Rave widgets (from the store).


* AFAIK, there are no Wookie admin widgets available yet right now,
although the team from the UK Open University might want to donate their
current work in this area. The prominent question is: are they and other
Wookie users willing to become dependent on Rave for their
administrative purposes, which also (at least) implies pulling in
Shindig/OpenSocial into their mix?

As explained in the proposal, the Wookie team have not voted. I felt
it best to
discuss here first. However, the idea has been well received. It is my
belief
that if the Rave team are supportive of the idea then a vote will pass.

Bringing OpenSocial into the mix is not relevant since Wookie already
supports
open social.
True, but it doesn't depend on it unless you need it.
Adding a Rave based widgetstore then might force you into it if we want
or need to depend also on Shindig for the widgetstore.


The idea of providing the admin interface via widgets has been
discussed a few
times, even before Rave was proposed, and has been well received as an
idea.

Wookie would not be dependant on Rave for its admin application.
OK... So does that mean the widgetstore meta-data is "owned" by Wookie?

There would be
a CLI. a REST API and a series of widgets for use in other domains.
It's try
that our reference implementation for a GUI would be provided by Rave
but we
would not be dependent solely on that implementation. For example, we
already
have a lightweight client side "panel" that allows us to render a
number of
widgets together, thus providing an alternative admin UI (if the
widgets existed).

Most importantly, if the Rave community believe this is a good
approach then
they Rave community would be contributing to the admin widgets in
Wookie. Wookie
loses little (our current admin UI is pretty poor) but potential gains
a great
deal.


* The current Rave code donations all already have some level of "store"
functionality, but based on/targeting the OpenSocial Gadgets.
I would imagine some of those donations also need to be taken into
consideration for devising our Rave widgetstore, especially their
functional and technical needs and then expanded to also cover Wookie.
I'm not sure if the end result will or can be (only) Wookie based admin
widgets. Neither am I sure if they will or can be (only) OpenSocial
Gadgets. More likely outcome IMO is they will become Rave (only)
specific "widgets".

I'm not seeing the problem here. Wookie provides support for both Open
Social
and W3C Widgets.
Well, the OpenSocial support is only up to a certain point AFAIK.
Reference: http://wookie.staging.apache.org/wookie/docs/shindig.html


Wookie is not a widgetstore it is a widget server which currently has
some
really basic widgetstore features for demonstration purposes. I'm not
proposing
using Wookie as the store for Rave on the widget/gadget server.

There is a separate discussion on the Wookie list about a widget
store, but that
is not a part of this proposal. It's too early to tell what will
happen with that.

Perhaps, because you read both lists, you are reading too much into my
proposal.
I am proposing that the widgetstore needs to be a separate application
from both
Rave and Wookie so that it can be more widely reused. I am proposing
that the
widgetstore provides its admin interface as widgets. But I'm not
proposing
Wookie be that store, that's not in our objectives for Wookie.

Where the store will be built is a separate issue.
OK, but who is managing/owning the store then, if its neither Rave nor
Wookie?
This seems to me the key question to answer first.
As I said above: I'm still pretty confused ;)


* Similar to the question already raised by Gerald concerning OpenSocial
SPI, how will Wookie manage/access the store meta-data from Rave, for as
much as Wookie needs that. Seems to me we'll need a Wookie SPI then as
well, with a specific implementation for the Rave<-Wookie integration.

Remember Wookie is not a container, it is only a widget/gadget server.
Like
OpenSocial it relies on the container to implement any required APIs
to enable
the widgets/gadget to run effectively.

Scott, can you please comment further on this.

* On the Wookie dev list I also noticed mentioning of things like
profiles, users, etc. in the context of the "store" app. Partly
independent of this proposal (I assume) but don't we need to consider a
single storage model for a Rave application concerning these things as
well, being it served by Wookie, Shindig or other "widget"
container/server.

See above. This is separate from my proposal here. Wookie does not
need an
widgetstore to be useful and, in my opinion, it should not grow to be
one. I see
the widget store as a completely separate application that users will
use to
find widgets before they are deployed and subsequently instantiated on
the
Wookie server.
Sounds more like a shop then?
My interpretation so far was that this was more than just that. Within a
container/portal there will be many references to the (store/shop)
meta-data of a widget/gadget instance. So AFAIK there will be a need for
an integration layer between the container/portal and the store.


In your proposal Wookie still provides its own persistence layer for
(among things) user/widget preferences. I wonder if that should be done
through an SPI layer then as well (like Shindig does) allowing it to be
delegated to the Rave persistence layer when running on/managed by Rave?

These two sections were in a single paragraph in your original
response. The
storage of preferences against an instance of a widget, at least for
me, is not
related to the widgetstore. I therefore assume that these two points
are not
connected.
The management and storage of preferences might be unrelated to the
store, but the reference of the widget/gadget instance AFAIK cannot.


With respect to an SPI layer proposal I wonder if Scott can comment on
this. As
I understand it the W3C widget specification already provides the API
for this.
Rave could, if I understand correctly, inject its own persistence
handling into
the widgets as they are deployed. This could override the Wookie provided
persistence.

But why would Rave want to do that?
See above: because I assume there will be a need to integrate and relate
instances with their meta-data managed in the store.

Maybe all this really is mostly a semantic confusion though.
To me the term "store" in your proposal sounds like a "shop" whereas I
expect we'll need more a "repository" like store.


I better stop for now although I can come up with a zillion more
questions :)

We need to make sure Scott answers your questions as he is much more
intimately
connected to the way Wookie works. I've only got the 10,000 foot view.

Same here, so we both might be talking through clouds ;)


Ross


Thanks,

Ate


On 05/17/2011 02:38 AM, Ross Gardler wrote:
Recently I proposed that Apache Wookie stopped all development on its
rather
limited admin GUI and instead built its admin GUI using widgets in a
Rave
application. The proposal has been well received, although we have not
yet voted
for this major change in strategy.

Below is the proposal that we've come up with. Before taking it to a
vote over
on Wookie I would like to see how the Rave community feel about it. In
particular, does the Rave community like the idea of Wookie providing
admin
widgets that can then be used to develop a W3C Widget and Open Social
admin
application in Rave.

The full details of the proposal are as follows:

Wookie is focussed on providing a server based environment for the
hosting of Widgets and Gadgets. It provides the necessary
infrastructure for clients to request a widget/gadget instance (or a
wgt package if appropriate). It also provides a persistence layer so
that widgets/gadgets can store preference values. Wookie does not
concern itself with the rendering of those widgets/gadgets.

Rave is a server that focusses on the provision of user interfaces
built from widgets/gadgets. It provides GUI features for end users to
configure their portal pages. It does not concern itself with how a
widget/gadget is hosted, instead it seeks to leverage Open Social for
gadgets and, potentially, Wookie for Widgets.

These two applications overlap at the point of the "widget/gadget
store". Wookie currently provides a basic UI for the administration of
a "store",
but also exposes an API to manage this store. Wookie also provides a
very basic interface (and functional API) for the creation of
widget/gadget instances.

In addition some members of the Wookie community are working on a
complete widget store. Currently this work is extending Wookie outside
of the ASF project. We hope to bring this work into the
Wookie project as a separate web application, with its own set of admin
widgets. Currently this is a very early stage project and is yet to
gather significant momentum.

Proposal
========

Wookie will cease to provide a GUI. Instead it will focus on providing
a server for the management of widget instances. Administration of this
server will be via a REST API. There will be a command line tool and a
set of widgets for for administration purposes.

The admin widgets can be used to create an admin app in any container
able to host widgets. Apache Wookie and Apache Rave will
collaborate to provide a reference implementation of an admin GUI
using the Wookie admin widgets and the rave widget portal engine.

This collaboration would result in something like the following:


App Store User Apps
/|\ /|\
| |
+---------+---------+
|
RAVE (GUI Framework)
/|\
|
+------------+-----------------+
| |
| |
Admin Widgets User Widgets
/|\ /|\
| |
+-------------------+ 3rd Party apps
| |
Wookie (Widget Server) WidgetStore
/|\
|
Shindig (Open Social Server)

Wookie provides the following features:

* core features
* Parser Widget API
* Widget Instances API
* Properties API
* WhiteList API
* Participants API
* Flatpack API API
* Inter-widget communications
* Key API
* W3C Widget API (metadata, preferences)
* W3C Widget Updates
* W3C WARP
* JPA Persistence
* Proxy

* Optional features
* Command line admin tool
* Admin widgets
* Basic example widgets
* Scratchpad widgets
* JQuery Mobile feature
* Wave Feature
* oAuth Feature
* JCR Persistence
* OpenSocial integration

The proposed "WidgetStore" provides:

* a searchable index plus
* search API
* tagging API
* reviews and ratings API
* data sources (W3C metadata, also the Wookie log data) for generating
collections and recommendations
* Admin widgets

Rave provides the necessary GUI framework for building user
applications from widgets, the first of which will be the admin
application for WOokie and the proposed widet store.






Reply via email to