Content Hub  0.0.1
A session-wide content-exchange service
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Friends
/build/buildd/content-hub-0.0+15.04.20141110/doc/Mainpage.md
Go to the documentation of this file.
1 Content Management & Exchange {#mainpage}
2 =============================
3 
4 Unity and the overall Ubuntu experience put heavy emphasis on the
5 notion of content, with Unity’s dash offering streamlined access to
6 arbitrary content, both local to the device or online. More to this,
7 Unity’s dash is the primary way of surfacing content on mobile form
8 factors without the need to access individual applications and their
9 respective content silos. The content-hub deals with
10 application-specific content management and implements an architecture
11 that allows an app to define its own content silo, exchange content
12 with other applications/the system, and a way to provide the user with
13 content picking functionality.
14 
15 To ease conversations, we start over with a set of definitions:
16 
17  - Content item: A content item is an entity that consists of meta-data
18 and data. E.g., an image is a content item, where the actual pixels
19 are the data, and information like size, image format, bit depth,
20 location etc. is considered meta data. \sa com::ubuntu::content::Item.
21 
22  - Content types: A set of well-known content types. E.g., images or
23  music files. \sa com::ubuntu::content::Type.
24 
25  - Content set: A set of unique content items. Can be considered a
26  content item itself, e.g., in the case of playlists.
27 
28  - Content owner: The unique owner of a content item. A content item
29  has to be owned by exactly one app. \sa com::ubuntu::content::Peer
30 
31  - Content store: A container (think of it as a top-level folder in
32  the filesystem) that contains content items of a certain
33  type. Different stores exist for different scopes, where scope
34  refers to either system-wide, user-wide or app-specific storage
35  locations. \sa com::ubuntu::content::Store, com::ubuntu::content::Scope
36 
37  - Content transfer: Transferring content item/s to and from a source
38  or destination. A transfer is uniquely defined by:
39  * The content source
40  * The content destination
41  * The transfer direction, either import or export
42  * The set of items that should be exchanged
43  \sa com::ubuntu::content::Transfer, com::ubuntu::content::Hub::create_import_for_type_from_peer
44 
45  - Content picking: Operation that allows a user to select content for
46  subsequent import from a content source (e.g., an application). The
47  content source is responsible for providing a UI to the user.
48 
49 Architectural Overview
50 ----------------------
51 
52 The architecture enforces complete application isolation, both in
53 terms of content separation, sandboxing/confinement and in terms of
54 the application lifecycle. As we cannot assume that two apps that want
55 to exchange content are running at the same time, a system-level
56 component needs to mediate and control the content exchange operation,
57 making sure that neither app instance assumes the existence of the
58 other one. We refer to this component as the content hub. \sa com::ubuntu::content::Hub
59 
60 Example usage - Importing Pictures
61 ----------------------------------
62 
63 \snippet acceptance-tests/app_hub_communication_transfer.cpp Importing pictures