A widget is a stand-alone application that can be embedded into third party websites by any user, on a page where they have rights of authorship, e.g. a webpage, blog, or profile on a social media site. Widgets allow users to turn personal content into dynamic web apps that can be shared on websites where the code can be installed. Throughout this description the term Widget or Content Widget refers to a single content item presented on a specific glass. The exact technology of drawing the Widget may vary between glasses.
Depending on the specific context and Glass based application, widgets may have various graphical traits and functional features. For example:
- Editable: content on a widget may be editable and a widget may be deleted.
- Persistence: a widget may include internal persistence management.
- Minimize/Extend: a widget can be shown as minimized or extended.
- Draggable: a widget may be defined as draggable on the underlying view on which it is presented.
- Resizeable: a widget may be defined as being able to be resized.
- Group scope: a widget may be defined to be accessible by a group of peers.
- Online real-time stream: a widget may be defined to allow real time online interaction with parallel presences of the widget presented to other peers.
- Linkage: a widget can be used as a reference point for finding a linkage graph.
- Trigger and Action: a widget may be defined to react to some trigger.
- Open API: widgets behavior may be controlled and/or modified programmatically by an API provided by CG system. API is open for developers to shape state oriented apps based on specific application needs and requirements.
These features and more are available based on the type of glass and on application needs. Some applications may limit part of the functionality. For example, in some applications widgets are shared with users but users have no control and have no management access to widgets. Another example: some applications may enable real-time streaming between widgets and other applications may disable it. The real-time streaming may not always be supported by the running device, and sometimes it may require downloading an external plug-in. Thus, the list of available and used features is variable.
General Types of Widgets:
- Basic: a widget that can be used to share textual, vocal or visual data. For example text box, picture, video, document reader, profile capsule, vocal note, etc.
- Connector: a widget that is used as a tool for real-time collaboration between two or more peers in relation with given resources. For example Form-Connector widget is used to allow peers to fill form fields together without taking control over each other's device. More examples: Share-Screen widget and Co-Browsing widget.
- Application: a widget that includes some dynamic application logic. In the case of application widget, the shared content is not fixed or static. The shared data is application state and/ or user activities. For example Shopping-List, Virtual-Consulting, Floating-Form.
- Service Port: proxy to personal interaction with service providers. Service port widget provides an interactive port for either getting or setting personal data related with some service, as will be explained in detail below.
- Resource Proxy: These widgets act as proxy for managing remote and shared interaction with resources such as files, printers, storage and other desktop resources. This type of widgets is used by Device Glass applications as will be described below.
- Virtual Widgets: These widgets are created by Semantic Grouping operation applied on two or more widgets found of Linkage Graph. Virtual Widgets represent relation between other widgets. These relations are stored in the form of Virtual Widget and therefore the semantic of CG widgets sphere is dynamically extended by grouping activities performed by users. (see chapter ‘Semantic Grouping Of Widgets’ below)
User generated content in CG is either personal or shared between peers. For CG content to be shared, a Widget is required to be related to some personal identifier. Personal identifier and user contact are taken from existing accounts already owned by User, for example Email address, an ID on some social network (PIDN), registrant Id on some website etc. CG has integration mechanisms with various Personal Identifier Networks (Google, Yahoo, Facebook, etc.). Once a user signs-in to one or more accounts the Personal Identifier (account Id) and user’s contacts/friends are fetched. Personal Ids can then be related with a Widget so that when the user signs-in with a related account, he is capable of viewing the shared content globally, independent of the local storage on which content was initially created. User can also share the Widget with contacts or friends by assigning a peers-group made of fetched contacts. The peer users can watch the Widget by being signed-in with the account that was set in the peers-group. PIDN and content storage for the purpose of sharing are described in more details below.
As depicted schematically in Fig. 1, when creating content, depending on the specific glass, the content may be stored locally in the device memory until it is related with a Personal Identifier . Without relating the widget with a personal identifier, content is limited to local access. Once personal identifier is assigned to the widget, the widget is stored on the CG remote storage, and thus becomes available, in relation with the same glass-id, also when using other devices.
For example, a widget that has been created on top of www.contentglass.com is first stored locally in the browser's local storage. At this phase the widget is available locally but cannot be accessed from other browsers or other devices. To make it available remotely, the user has to sign-in via Networks Interface in one of the specified integrated Personal Identifier Networks (Google, Facebook, Yahoo, Twitter, other custom integration that can reflect user identifier and is able to reflect interrelation between users...).
Once this is done, the widget is stored on the CG remote database that will make it available to this user from other browsers and devices, as long as the user is signed-in to the relevant accounts (using Networks Interface).
To make the widget available also for other peers, those peers need to be included in the Peers Group 130 of the Widget. User can sign-in to accounts to get lists of contacts and friends that will be added to the peers group of the widget. Once a peers group is set, the widget becomes available also for the selected peers (assuming they are signed-in in the Networks Interface). Those peers are able to view and/or edit and/or use the widget (depending on permissions).
CG content can be shared offline and online with group of peers. Offline sharing means that widget set by Person-A at time T1 can be watched, managed and used (depending on permissions) by Person-B at time T2 where T2 > T1.
Online means that a stream of data can be open between two or more peers that share a widget so that content and activities can be shared in real-time (T1 = T2).