Skip to content

Latest commit

 

History

History
160 lines (124 loc) · 4.61 KB

personal-cloud.org

File metadata and controls

160 lines (124 loc) · 4.61 KB

Core in-cloud services

; This what an OS should be providing. ; As thin a layer above the OS as possible. ; As language-agnostic as possible. ; See App Engine.

Security

Authentication service.

OpenID, OAuth accepted from remote systems

(?) OpenID, OAuth provided outside

Capability-based access control.

Encryption service (uses user’s secrets).

(?) SSH infrastructure exposed

(?) GPG keys and infrastructure exposed

Storage

Persistent blob storage (binary data), mime-typed.

Intended as distributed

; Works on server(s) and clients, auto-propagates changes.

Eventual consistency

; DVCS-style, manual conflict resolution where necessary.

Efficient search by keys and by tags.

Temporary storage

Not replicated

Efficient copying to persistent storage

Automatic garbage collection

Tagging service

; All user-facing metadata is in tags

Tag discovery for items that reasonably support it

; audio, photo.

An unique ID tag are automatically added to each data item.

Tag-based “file system”.

Memcached

(?) Fast key-value DB

; Can it be unified with something?

Internal messaging

Queues

Cron

Pub-sub

; Post to subscribers’ queues

Service discovery

; Services are REST, so usual conventions should apply

Well-known service names

API level versions

Diffenrent providers of the same service

Contacts

Profiles for human contacts

; linked to security credentials as needed

Gravatar for userpics.

A local profile can be filled in to give more details.

Internally may link several profiles to a contact.

(?) Profiles for machine accounts

; external services, RSS feeds, etc

Optional in-cloud services

; Many apps may need them

Storage

Full-text search

RDBMS

User-facing apps

; Built on top of common services.

File storage.

; Exposes the tag-based “file system”

Dropbox-like client

Web interface

Picture gallery.

Video gallery.

Webmail.

; a web interface on top of regular exim/dovecot or whatnot.

Contacts / address book management

Calendar.

; if possible, on top of a regular calendar server.

Word processor

; See hackpad and ginkgo-app

Must have serious offline capabilities

Spreadsheet?

Must have serious offline capabilities

Extensibility

; Common language-neutral engine allows to add parts. ; Language-neutral late binding: HTTP, REST, JSON.

Publishing

; Any piece may provide consumer views, intended not only for authors / owners.

Authenticated consumer access

Public / anonymous access

; OK for viewing. With caution, possible for commenting.

Comments

Easy to integrate into consumer views.

Use auth.

Tree or flat.

Navigation

Tags

; See the reverse tags document

Tags are hierarchical

; most specific part goes first: inbox/mail, “Moby Dick”/title

Tags are pervasive.

; All applications within the cloud use the same set of tags.

Tags have presentation attributes

; color, a short text blurb, maybe an icon, set manually or ; auto-extracted form auto-tags, like userpic for contacrs.

Contacts serve as implicit tags

; Probably “firsname lastname”/contact and nickname/contact

Saved searches, aka Folders

; Searches by any content can be saved. Possibly “sub-searches” with additional ; constraints can look like “sub-folders”.

; Searches purely by tags are drag targets: if any taggable item was dragged ; onto them, necessary tags are added, incompatible tags are removed. ; It’s a fast categorization tool.

Concurrent updates and consistency

Version control

Implementation

Message bus / queues. Key-value blob store with byte-range access. Full-text indexing engine. Tag storage. Common internal REST-like interfaces. Language independence.

Authentication

Author Authentication

Facets

Consumer authentication

OpenID

OAuth

Linking of accounts (or not)

Anonymous aka public access

Service Description and Discovery Common message bus

Abstracted and custom storage