Bavarian developer ZenJu isn’t a fan of those everything-but-the-kitchen-sync data replication programs. Instead, his FreeFileSync utility is based on two principles: simplicity and speed.
ZenJu got the idea for FreeFileSync about a year and a half ago when he wanted to mirror-sync two hard drives so he could use one for backup. The free sync tools he tried were either restricted in functionalty (because the vendor sold a non-free version too), or overloaded with functionality that cluttered up the user interface, or they were too slow or required preconditions like installing various versions of Microsoft’s .Net or a C++ runtime.
ZenJu began with a grocery list for the perfect sync tool: It should require only the input data necessary for the job, and not force users to specify options that people seldom need. However, advanced users should still be able to create more complex sync scenarios. Equally important, it should be fast. “It’s not that speed is that important when doing a backup,” ZenJu says, “but I still optimize the algorithms, just because I can. I take code quality and design very seriously. (But please don’t transfer this to GUI design; I’m into abstract thinking, not graphic arts.)”
To write the software, ZenJu chose the MinGW compiler and the Codeblocks IDE. “Both seem very lean to me: no installer needed, no writing temporary files on my hard disk without notice, no registration required, no frameworks needing to be installed a priori, no consuming a gig of disk space.” He chose wxWidgets as the GUI framework after reading up on both it and Qt, the two major cross-platform GUI frameworks. “And I’m very content with my decision so far. Sure, wxWidgets still has a few teething problems, but none are really critical and they only come up when you explore corner cases of functionality.”
Version 1.0 of the software hit SourceForge.net a little more than a year ago. “I chose SourceForge mostly because of its reputation as an open source hoster,” ZenJu says, “And I’m quite satisfied right now. Navigation for me, as a developer, is sometimes cumbersome (always requiring me to click the Develop button), but after I have set respective bookmarks, it’s OK with me.” By the way, we’re working on an interface revision that will fix that problem.
Since ZenJu’s design philosophy is all about understatement, FreeFileSync doesn’t have a GUI option for every task it can do. For instance, you won’t read a line about the Volume Shadow Copy functionality until the first time you try to copy a locked file. ZenJu says, “There’s no need to bother users who don’t copy locked files with that option, so it’s simply not there before you need it.”
Instead, users can just select directories by dragging them or the files within them onto the main screen, or load batch or GUI configurations by dropping them onto the main screen. All directory selection fields in FreeFileSync accept dropped files and directories as input.
ZenJu plans to add a synchronization database to future releases to detect and propagate deletions, as well as provide a hierarchical representation of folder data. He aims to come out with new versions every three to six weeks, but work on the project depends on how much free time he has.
One thing that’s already coded is a Linux build of FreeFileSync, which is functionally equivalent to the Windows build, as much as that’s possible given all the ways in which Windows and Linux differ – for example, in handling of symbolic links and file traversing. In fact, ZenJu says the Linux version is even faster than the Windows build, because the Linux C-API is quicker than the Win32-API.
However, the developer says he could use some help with the Linux version’s assembly; “the current release format seems to be too difficult for users to work with. There’s a precompiled Ubuntu build that only runs if a user has compiled wxWidgets and downloaded GTK2 development files, or users can completely compile everything themselves. In both cases many users can’t get it to work, so I could need help for creating an easy Linux installer/package for inexperienced users to get the program installed quickly and without problems.” If you can help, you can contact ZenJu from the project’s page.