Revision 7 as of 2010-03-31 18:32:26

Clear message

"" Warning -- third draft and as such subject to change.""

Urban Skudnik

Contact information


  • Project Name: Home user backup solution (deja-dup improvements (Was "Home User Backup Spec"))
  • Project Description:

The fundamental idea of the project is that backup should be introduced to home users that still (at least in part) believe that backup and its maintenance are rocket science. Many attemts have been started and many solutions are already available, but Ubuntu has yet to implament backup solution that would be simple enough for home users that do not have time nor experiance with maintanance of Linux operating system (or any operating system for that matter) and at the same time be properly integrated with Ubuntu.

Important factor in the project will be do usage of existing tools since a solution that would be built completely from scratch would take on the order of magnitude of man-years to achieve properly reliability (which is by far the most important factor of a backup). I had chosen to use Deja Dup.

For a proper solution, I will have to work on Deja Dup itself (for example, it still does not support restoring of a single file, it does not check whether or not the disk has space for backup, etc.), with Ubuntu's migration assistant (user will have to be presented with an option to create backup at the next Ubuntu upgrade that will support mu backup solution) and since it will have to be integrated with Ubuntu's GUI I will have to work with Gnome and its file manager (Nautilus).

Deja Dup seems to be particularly well suited for my project since it supports backup to external hard drives and to Amazon S3/Ubuntu One. The backup solution should also support quick restore of system settings so that if user looses his hard drive he can be up to speed as quickly as possible and restore his data later on.

  • If you would be willing and able to do other projects instead, which ones?

I haven't done proper reasearch and discuss other ideas with mentors, but my other alternative was "Testdrive Front End" which seems to be taken already. A similar project to which at least a part of my ideas could be applied is "Ubuntu System" Restore and Backup utility".

  • Why did you like this idea?

At today's prices of hard drives and prices of storage in the cloud, it is unbelievable that there are still people that have neither. At least a part of that problem lies in the misconsception that backup is hard to make and maintain. Apple introduced idea quite effectively to its users and I believe that same can be achieved with such user-oriented Linux distribution as Ubuntu.

  • Please describe a tentative project architecture or an approach to it:

Basic goals are

  1. Simple to use
  2. High automation (to depend on users input as little as possible)
  3. Integration

General user experiance

Since the focus of the project are home users it should be noted that simplicity should be kept in my the whole time.

As such, backup should not be done just by a program located in some sub-menu of Application menu, but should be presented to user from day one - from installation/upgrade - and from that day on with an Indicator Applet. This will of course mean big extensions to Deja Dup itself and will mean that the project will require work with several other programs/components.


After fresh installation, user should be first given an option of restoring from an existing backup. If he selects this option, he must plug in his external hard drive or give credentials of his Ubuntu One/Amazon S3 account at which point Ubiquity should use duplicity to begin the restore process.

If user does not want to restore, he is presented with backup options. As such, he is reminded that:

  1. Ubuntu now gives its users 2 GB of storage for free in the cloud and that this space can be upgraded to 50 GB
  2. Backup can be made to Amazon S3
  3. If they don't have an external hard drive yet, it is highly recommended that they purchase it
  4. Possibly other options that Deja Dup supports

At the same time, user should probably be specifically reminded that those 2 GB should be used at least for the backup of settings and documents (since those are, for most user by far the most important and are not replicable by download). If user would then decide to go along with recommendations, he should either enter Ubuntu One's credentials or be given an option of creating a new account at which point initial backup of home directory should be done.

I have yet to decide and it is possibly open to debate whether or not the complete configuration of backup should be done during installation wizard or later when user logs in for the first time. Either way, user should configure his initial backup directories and what he wants to backup - for example, it would probably be best to select home directory as source directory, but it could be that Downloads and Videos directories are excluded if user is backing up to remote location (in case of external hard drives even those files are selected since they are quick to back up).

Deja Dup and configuration of backup

When configured, Deja Dup would be used to do backups on regular basis. I would change the default setting of schedule backup to hourly basis for the last few days and have those backups as incremental updates, so that user could see the history of a specific file.

Deja Dup would also regularly notify the user about the status of backup (time of last backed up, failure, possibly actions that were taken on file system - especially if any file was removed - with an option of restoring a file, etc.) through Indicator Applet. Statuses should be reported on source-per-source basis (separate list of data for external hard drive, Ubuntu One, etc.)

One aspect of Deja Dup that needs addressing is backing up to multiple source and selection of these sources. For this Deja Dup's interface will have to be changed at least to some extent since going to Preferences to change backup destination is far too awkward. Not just that, Deja Dup should be changed so that, if user sets it so, it backs up settings and documents (and certain other smaller files if they only have 2 GB in cloud) to Ubuntu One even if user already has external hard drive. Usefulness of this is obvious - if user has his computer and external hard drive at the same location and some kind of disaster or theft happens, his data is still available.

The easiest solution for this is that backup is always done to all available mediums that were configured which should also be the default choice. Since option of "Restore" that is available on default view is used to do a full restore, it should be renamed to "Full restore". "Backup", on the other hand, should stay as it is. It should, however, do backup to all configured sources.

If, on the other hand, user specifically sets that backup should be done to single source (or smaller set of sources) only, another control should be shown in the main window. The best would be Drop Down List with a possible addition of a + button at the right side so that user could add another source to which backup is done. For a better understanding I am attaching a picture.

Another improvement that could be implemented is the selection of directory that should be restored, although this might be redundant if my improvements to Nautilus are implemented and therefore unnecessary. It however might be necessary to develop this feature if it is realized that users replaced Nautilus with some other file browser, though it could be argued that in such a case home backup solution is also probably inadequate for them.

Nautilus improvements

Since Deja Dup is a separate program that will run in the background (or its jobs), working with files and directories is more naturally located in the domain of file browser. It should be implemented as an extension to Nautilus that would add additional items to pop-up menu when user clicks with his right mouse button and possibly by another option in menu bar under View menu.

In case of a file, user should see history of a file (e.g. "Modified 2 hours ago, Modified two days ago, Modified on 15. October 2009) with an option of restoring to that version and seeing a difference with that version.

In case of directory the user should see the same list although with a different values (e.g. "File 'abc' deleted 2 days ago" with an option to restore that file).

If user would click with right mouse button in a directory on none of these (in blank space), an it should also show the history of the directory.

work in progress

work in progress

As briefly described in the project description, the project will require work on several components. The backup process itself will be handled by Deja Dup, which, although simple to use and with many features, still lack many and has lots of bugs that will have to be addressed during the project. The good thing is that it supports not only external hard drives but also Ubuntu One, so user can access certain (before selected) files and system settings from anywhere (and, in case he or she has enough space in the cloud, even his larger files). A must is also nice and friendly handling of hard drives - when hard drive is not connected, a backup should silently fail (up to some reasonable time limit, after which user should be notified).

At the same time, backup should be available on the directory and file level as well, which will require integration with Nautilus. One option, which should probably be discussed later with mentor, is that when user click with his right mouse button and opens the menu, he should see if there is an option of backup restore and (in case of text files/directories), what kind of changes were made since. Menu item and other Nautilus hacking would be done with Python-Nautilus. Other options, that should be available in directory, are possible history of the directory (a list of files - "file x deleted 1 minute ago", "file y deleted 3 hours ago", etc.) and the ability to restore such a file.

My primary choice for the language is Python, which seems ideal since Deja Dup is made with it (and with C, with which I am not familiar as much as with Python, but can still find my way around).

  • Give us details about the milestones for this project
  • Why will your proposal benefit Ubuntu?

In short: it will give every Ubuntu user a safe heaven for their most precious belongings - data.

Open Source

  • Please describe any previous Open Source development experience
  • Why are you interested in Open Source?


  • How long will the project take? When can you begin?
  • How much time do you expect to dedicate to this project? (weekly)
  • Where will you based during the summer?

At home in Slovenia

  • Do you have any commitments for the summer? (holidays/work/summer courses)
  • Please designate a back up student (in case you need to withdraw your application)


  • Have you ever participated in a previous GSoC? (describe your project)
  • Have you applied for any other 2010 Summer of Code projects? If yes, which ones?

Not yet, but I am thinking of one or two. If I do, I will make appropriate notifications

  • Why did you apply for the Google Summer of Code ?
  • Why did you choose Ubuntu as a mentoring organisation?
  • Why do you want to participate and why should Ubuntu choose you?