migration-assistant has been stagnating for several releases. It will be partially rewritten in Python in order to ease the maintenance burden. It will also be separated from ubiquity, the desktop CD installer, and turned into a D-Bus service.

Release Note

The migration functionality in the installer has been moved into its own application under System -> Administration -> Migration Assistant. It has also been updated to import from the following sources...


User stories




Operating Systems


| Select any accounts that you would like to import into Ubuntu.  |
| The documents and settings for these accounts will be available |
| after installation.                                             |
|                                                                 |
| +-------------------------------------------------------------+ |
| | v [X] Evan <small>Microsoft Windows 7 (/dev/sda1)</small> |^| |
| |       [X] (&) iTunes music <small>10 GB</small>           | | |
| |       [ ] (&) Desktop files <small>1.2 GB</small>         | | |
| |       [ ] (&) Wallpaper <small>0.5 MB</small>             | | |
| | > [X] evan <small>Ubuntu 9.04 (/dev/sda2)</small>         |v| |
| +-------------------------------------------------------------+ |
|                                                                 |
|                                             [ Quit ] [ Import ] |

(&) represents an application icon, as grabbed from the source operating system (see implementation notes below).


  1. The existing Windows registry code will be tidied up and wrapped in a Python C module.
  2. Python modules for parsing binary OSX plist, and XML OSX plist files will be written.
    • libplist has been created since we last looked at the binary plist format, and while it cannot be used as a drop in replacement (it just converts from binary to XML and back), we can reuse much of its code.
    • A working implementation of an XML plist parser already exists in Evan's local tree.
  3. migration-assistant will be partially rewritten in Python as a dbus service (see notes below), sufficiently abstracted to allow for importing to Ubuntu and Kubuntu, and sufficiently future proof to allow importing to intermediary storage and to allow use of its methods by other desktop applications.
  4. Code to import from OSX, Windows XP through Windows 7, and Linux sources will be written.

migration-assistant as a D-Bus service

The migration-assistant backend will be exposed to the frontend as a D-Bus service that will present the frontend with methods for importing data.

The D-Bus interface is detailed in /DBusService.

Conflict resolution

Copying /media/disk-2/home/evan/Documents/test to /home/evan/Documents/test:
vol_id /dev/sda1 -> 52ffe065-a09a-4ee7-b604-4ef54505e363
md5 52ffe065-a09a-4ee7-b604-4ef54505e363/home/evan/Documents/test -> 78ddc6ae8d1bd5afdd19e0ab61be853a -> $HASH

If $HASH not in /home/evan/Documents/.migration-assistant:
        If test in /home/evan/Documents:
                copy /media/disk-2/home/evan/Documents/test /home/evan/Documents/.migration-assistant/$HASH
                ln /home/evan/Documents/.migration-assistant/$HASH /home/evan/Documents/test$1
                copy /media/disk-2/home/evan/Documents/test /home/evan/Documents/.migration-assistant/$HASH
                ln /home/evan/Documents/.migration-assistant/$HASH /home/evan/Documents/test
        copy O_TRUNC /media/disk-2/home/evan/Documents/test /home/evan/Documents/.migration-assistant/$HASH

Targets of opportunity

These are items that would be nice to have, but should not be considered when evaluating this specification for completeness.

Test/Demo Plan

A test case for migration-assistant already exists. It will be modified to account for migration-assistant becoming a desktop application, and to cover the new features.

Unresolved issues

Future work:

/!\ If you replace Windows XP with Ubuntu, you will lose all of your
    documents and settings unless you first use the Migration Assistant
    application to import them.  [ Run Migration Assistant ]


MigrationAssistant/Karmic (last edited 2009-06-04 11:26:00 by ev)