As we are getting closer to the release of our next Fast Track - Nuxeo Platform 7.2, we have been busy adding a few more features and improvements to our products. One of the highlights for this release is a new version of Nuxeo Drive, our desktop syncapplication. We are now publishing a beta release of the master branch, version 2.0. This is a tremendous news for the Nuxeo community because this version of Drive comes with a major rewrite and lot of great improvements.

Why Refactor?

Nuxeo Drive did revolutionize the Nuxeo ecosystem, but the first version had several limitations which we wanted to address at the earliest:

  • A mono-threaded architecture:

UI actions, synchronization logic and download/upload of documents were all serialized. So, the synchronization process could be rather slow and not optimized. This was particularly noticeable when synchronizing hundreds of thousands of files. Not only that, at some point this single thread architecture would have been a blocker for some of the roadmap evolutions for this year (and the future).

  • UI with QT:

The user interface was based on QT Standard widgets and was designed to handle only one server connection. The new UI is based on Qt WebKit to leverage the flexibility of HTML and now handles the multiple server connections.

New and Improved

Nuxeo Drive 2.0 - New ArchitectureNuxeo Drive 2.0 - New Architecture

Here are the new features and enhancements added in this version:

  • Usage of watchdog to get events from the file system:

Instead of scanning the whole file system systematically like it used to, Nuxeo Drive now listens to file system events for registering sync actions to post. This dramatically reduces the CPU usage needed to maintain the synchronization. Earlier some users informed us that Drive was one of the top CPU consumers on their desktop. This has now been fixed! The synchronization is even more responsive since it is real time.

  • Storage of remote id on the file attribute (NTFS under Windows and user_xattr mount option under Linux required):

This gives the ability to add labels on files. By leveraging this feature, present in most common file systems, we made Nuxeo Drive much more robust. For instance, if a file is moved even when Nuxeo Drive is off it can be detected. This will automatically keep track of the Nuxeo Platform document that originated from the file.

  • Upload and download in parallel:

To speed up the synchronization process, uploads and downloads are now done at the same time using maximum bandwidth. We also have dedicated threads to create folders as those operations are quicker, thus making the process more responsive.

  • New HTML 5 based UI:

The UI has been completely rewritten in favor of an HTML5 interface using Bootstrap and Angular. This offers several advantages. It is easier to apply a skin and customize the interface, allowing fancier options for presentation (such as a progress bar). At the same time, the UI is localized. So, we are looking forward to your pull requests!

  • Multi-Repository:

Nuxeo Drive always had the ability to connect to multiple servers although the UI was not compatible. Now, we have added the user interface to manage the connections! This means that now you can use Drive at the same time with your company’s Nuxeo Platform instance and that of your partners.

  • Drive Edit:

Since we are using watchdog, dedicated collection is no longer required. When we listen to the file system events, we don’t need a collection for synchronizing the documents being edited with Drive Edit. Such documents are now downloaded in a temporary folder that is cleaned up when Drive starts. One big advantage is that there is no delay between a user’s save action and the document upload.

Another improvement is that Drive can now handle more files. Long operations (such as remote full scan) can now be interrupted and resumed. This is very useful in case of a large number of files.

Screenshot from Nuxeo Drive 2.0 - Drive settingsScreenshot from Nuxeo Drive 2.0 - Drive settings

Screenshot from Nuxeo Drive 2.0 - synchronization completeScreenshot from Nuxeo Drive 2.0 - synchronization complete

Availability

Nuxeo Drive 2.0 will be available in one month (maybe earlier!). According to our support policy, the version 2 of Drive will be compatible with Nuxeo Platform 5.6, 5.8 and 6.0, and ,of course, the 7.X 2015 Fast Track series.

Until then, you can test the Drive V2 beta deployed on https://community.nuxeo.com/static/drive-tests/. To test it you can either directly download the latest version on https://community.nuxeo.com/static/drive-tests/nuxeo-drive-2.0https://community.nuxeo.com/static/drive-tests/ (msi or dmg) or try an auto-update on a previsously released version of Drive V1 (For example, 1.3.1216) by setting the org.nuxeo.drive.update.site.url Framework property to https://community.nuxeo.com/static/drive-tests/ in the nuxeo.conf file.

Until the GA release, we will fix any bugs that may arise and also make some more UI improvements!