HNTF/Home Network TF Discussions/DocumentMigration

From Web and TV IG

Application Migration

Submitter: Jean-Claude Dufourd, Telecom ParisTech

Tracker Issue ID: ISSUE-15

Description: An application moving across devices in a decentralized situation (local application, without a server).

I start using my phone for the user interface to a device, then my tablet becomes available, so I move the interface application to the tablet. The application in question is an HNTF application, which means it has discovered services and has connections to some services and a history of execution. Just restarting the application on another device would lose the execution state, the existing connections, etc...

  • I start using my phone as a UI of a service on my TV, e.g. EPG, but the screen is small.
  • My tablet finally becomes available.
  • I request the migration of the current application: this is a user agent function.
  • The user agent discovers its peers on the network, i.e. other user agents capable of running the current document.
  • The user agent proposes to me a list of suitable user agents, including the one running on the tablet.
  • I choose the user agent running on the tablet.
  • The UA on the phone binds to the UA on the tablet, and sends a migration message with the URL of the document, and the URL of the execution state.
  • The UA on the tablet receives the migration message, fetches the application and the execution state, loads both.
  • The UA on the tablet signals to the UA on the phone that migration is complete, by replying "success" to the migration message.
  • The UA on the phone stops rendering the migrated application.
  • I pick up the tablet and go on with the service at the point I left it on the phone.



There is no way with current standards and in the absence of a central server to achieve the saving and transfer of the execution state of a widget, so there is no way to start an application on a device, switch devices and restart the application on the new device, keeping the exact same execution state.


This use case depends on discovery.