← Back to team overview

ubuntu-phone team mailing list archive

Re: social application support and user interface


On 11/20/2011 10:54 PM, David Jordan wrote:
> I think using a real-time synchronized database is probably the best
> way to provide these sorts of seamless multiscreen applications.
> The way it works in Novacut, each system keeps a synchronized copy of
> the database.  Each application using the database communicates only
> through changes in the database, so when the user makes a change with
> one client, the client makes the appropriate change in the database. 
> These changes are then replicated to any remote databases in
> real-time.  The changes feed is sent to each application, which update
> themselves based on the new changes.
> This actually has a couple of benefits. If you implement this sort of
> architecture, you essentially get real-time collaboration almost for
> free.  It also makes it much easier to make sure the backend and
> frontend components are loosely coupled and enforces a consistent data
> model, which makes creating stable, robust applications much easier. 
> Now the database behind this needs to have properties fairly similar
> to couchdb: It needs to be document oriented, and in terms of sync it
> should probably work fairly similarly to how couchdb _rev works. 
> In terms of how the user interacts with applications on the TV, having
> a set of documents in the database for each state you want to
> control.  Then have a client on the tablet or phone that makes changes
> to the document.  In terms of what the user sees, they would press
> some buttons in a GUI on their tablet or phone and the client on the
> TV would respond.  You might setup general controls for the system the
> same way. 
> Setting up Synchronization:
> Initially you would need some way to pair devices, which would amount
> to finding the remote device, handling authorization as needed, and
> setting up synchronization. 
> We could use something like Avahi to make discovery easy on the local
> network.  Some way to control access to the device owner is probably a
> good idea.  Something like a captcha or qrcode displayed on the screen
> during pairing with an optional password to allow the device access to
> the database.  At this point the two databases should be able to
> synchronize any time they can see each other.  Synchronization over
> the local network is great for low-latency input and for letting
> friends pair their devices with your system while they're over.  One
> could perform similar synchronization via a service like Ubuntu One if
> it supported real-time sync.
> David Jordan
So basically, the TV would act as the "main" couchdb server and the
tablets/phones would synchronize their local copies of the couchdb
server with the tv?(I apologize if my terms are wrong here)

Follow ups