  The problem of data synchronization arises in networked applications that
require some measure of consistency. Indeed data synchronization approaches
have demonstrated a significant potential for improving performance in various
applications ranging from distributed ledgers to fog-enabled storage offloading
for IoT. Although several protocols for data sets synchronization have been
proposed over the years, there is currently no widespread utility implementing
them, unlike the popular Rsync utility available for file synchronization. To
that end, we describe a new middleware called GenSync that abstracts the
subtleties of the state-of-the-art data synchronization protocols, allows users
to choose protocols based on a comparative evaluation under realistic system
conditions, and seamlessly integrate protocols in existing applications through
a public API. We showcase GenSync through a case study, in which we integrate
it into one of the world's largest wireless emulators and compare the
performance of its included protocols.
