Introduction

What is DogSync?

DogSync is a cross-platform synchronization software. It allows you to synchronize directories between different computers or on the local computer. More synchronization features, like Firefox bookmarks, will be added in later versions.

Where can I get it and where do I report bugs?

The DogSync website is hosted at SourceForge.

Warning

There are no releases of DogSync yet! You can test it on Ubuntu, though, using the experimental PPA archives on launchpad. Just add “ppa:andidog/ppa” in the Synaptic package manager, update and then install the “dogsync” package.

If you are interested in DogSync’s development, want to report a bug or look at the source code, then check out launchpad.net/dogsync.

What do I need to run DogSync?

On a Debian-based Linux, you can simply install the “dogsync” package (see download links above) and all dependencies should automatically be installed.

If you’re using Windows, you need the following:

  • GTK+ installation

    Make sure you choose a GTK+ installer that includes libglade. This is the case in the above link, but not for the downloads on gtk-win.sourceforge.net because Alexander Shaduri, who packages those downloads, creates “pure” packages without extra libraries or utilities.

  • Python 2.6

    Choose “Windows x86 MSI Installer” even if you’re using a x64 architecture because some Python packages are not available as x64 versions.

  • pygtk 2.16 with Glade support

  • pygobject 2.20

  • pycairo 1.8

  • M2Crypto

    Choose the latest installer, e.g. “M2Crypto-0.19.1.win32-py2.6.exe”. Do not use an older version than 0.19.1!! Note that there are a few other installers on the Internet, but most of them do not include the OpenSSL DLLs.

  • pywin32 extensions

    Choose the latest installer for Python 2.6, e.g. “pywin32-214.win32-py2.6.exe”.

  • setuptools

    Yes, unfortunately this is a runtime requirement because the GUI scripts for starting DogSync require the “pkg_resources” module from setuptools. I will try to make a better solution for Windows (own script, for example).

What are its principles and what can it do for you?

At the moment, DogSync only offers synchronization of files. This is the main feature which will surely be developed further. Automated and customized synchronization of files will be added in a future version. Right now, DogSync is already usable for manual synchronization. For example, you can make backups of your documents or music using DogSync.

In general, DogSync wants to be secure and customizable, but also has some other principles:

  • Secure

    Connections to other computers (i.e. other instances of DogSync) are made using encrypted connections. Therefore, DogSync has the concept of DogSync users. They are separate from the computer’s users. In this documentation, a DogSync user is always referred to as “user”.

    When creating a new user, an asymmetric key pair [1] is created. The private key is used to create symmetric keys for encrypted connections. The user information (which includes the key pair) is stored on the hard disk in an encrypted file. You have to specify a password for each user, and a user must be logged in in order to use any synchronization configuration that is stored for him/her. That is because the configurations are also encrypted to the user’s password.

    The user model of DogSync is very special: If you create a user on computer A and want to synchronize something with computer B, the user file must also be installed on B. At the moment this means that you have to log the user in on both machines. If you are too lazy and are not concerned about security risks, you can just enter “1234” as a password and choose to store the password so that you don’t have to enter it when DogSync starts.

    Later in development, it might be possible to store the password in a key ring [2] which is enabled when the computer user logs in. And/or it might be possible to log a user in on a remote computer that runs DogSync, without having to sit in front of that other computer. But those are just ideas, they’re not implemented yet.

  • Customizable

    DogSync has a modular design. Synchronization is done by “synchronization providers”. Currently, there’s only the file sync provider which is able to synchronize files between directories.

    As a general principle, each provider should have configuration options that let the user decide how exactly the synchronization is done. You will see that in the file synchronization chapter.

    Providers are designed to be able to run automatically, so that for example the backup of your music folder is done automatically once a week (not implemented yet).

  • Cross-platform

    DogSync is written in Python 2.6 (probably working with later 2.x versions too) and uses C for some Python extensions. It is tested on Windows XP, Windows 7 and Ubuntu, which should cover the majority of popular operating systems. The package should be installable on a Debian system as well.

    In order to ensure cross-platform support, DogSync makes heavy use of unit tests that check how the Python modules behave on each operating system.

    Apart from the great Python programming language, GTK+ (in combination with PyGTK and Glade) is used to create the GUI. GTK is easy to install in Linux - actually, installing the “dogsync” package will automatically install it. On Windows, there are GTK installers available and all other DogSync dependencies (see above).

    GTK allows the GUI to be themed, which is a great thing because you can get the native look on both Windows and Linux systems, but making it possible for the user to change the theme to something cooler. Take a look at the Equinox theme for example - awesome!

Please have a look at the next chapter for an overview of file synchronization.

Footnotes

[1]Public-key cryptography on Wikipedia
[2]GNOME Keyring on Linux, for example