  The ability to store multiple versions of a data item is a powerful primitive
that has had a wide variety of uses: relational databases, transactional
memory, version control systems, to name a few. However, each implementation
uses a very particular form of versioning that is customized to the domain in
question and hidden away from the user. In our going project, we are reviewing
and analyzing multiple uses of versioning in distinct domains, with the goal of
identifying the basic components required to provide a generic distributed
multiversioning object storage service, and define how these can be customized
in order to serve distinct needs. With this primitive, new services can
leverage multiversioning to ease development and provide specific consistency
guarantees that address particular use cases. This work presents early results
that quantify the trade-offs in implementing versioning at the local storage
layer.
