Wednesday, 2 February 2011

What is a "Functional skin"?

To understand what Functional skin is, why and how it can be useful, you have to first understand what is a space. You can read more information about it here: Space.

For now you can see it as a place where you have few friends and you share some resources with them: few youtube videos, slideshare presentations and some applications: opensocial gadgets (calendar, todo list) for example. We can call such space as group.

Let's say that the container's default view of your space is as in the picture below
Default view

Let's say that you are not always satisfied with this view and you want a different one, where videos are directly shown on the page on the left and friends are shown as a list in the right column. And it also has some additional functionality as "Play all" button, that will play all youtube videos one-by-one. Like in image below
Play view

Easy! That is exactly what the functional skin is supposed to do.
The goal of functional skin is to take your space information (list of applications in a space, list of resources in a space, list of people in space) and build some functionality and visual representation for it. Once such functional skin is implemented, it can be attached to any space and space can be presented in different ways.

Well, easier said than done. How actually it can be done? There is one suggestion on how to do that. First, use Opensocial gadget for this functional skin. You implement required functionality as opensocial gadget, then you attach this gadget to a space. 
But how does gadget know about this space and how it can get list of people and videos for this space?
This should be managed by a space extension to Opensocial. Read more about it here.

Once this function skin gadget is ready, you can switch between different views for a space.
It is like a skin but the main goal is to provide new functionality (view all videos at once in current scenario), this is why we call it Functional skin.

For more detailed information, please refer to the paper:
Contextual Spaces with Functional Skins as OpenSocial Extension

What is a "Space" and what is it used for?

A space is an abstract concept that shapes the context in which user is currently placed. A space can represent a group of people, a university course, a company division, a folder, a forum, a blog, etc.

A space normally consists of people, tools, assets and other sub-spaces. Tools are different applications and agents that exist inside a space and can be used by people inside this space (opensocial gadgets for example). Assets are different resources that can be added to space, this includes documents (attachments, html pages), online resources (youtube videos, slideshare presentations), etc. A space can contain other sub-spaces as well.

Space concept allows to model such concepts as group of people, community, event, competition, etc. It is an important part of our social lives, that's why we proposed it as an extension to Opensocial specification.

See below more information and discussions about space.

Space proposal to Opensocial 2.0
Space extension draft
Space proposal discussion