Harmony is framework for defining, updating,
and synchronizing views over strings, trees, and relations.
It can be used, for example, to synchronize the bookmark files
of several different web browsers, to convert address books represented
in vCard to CSV, and to map between BiBTeX and RIS-formatted bibliographic
A central theme of the project is bringing ideas from
programming languages to bear on a set of problems more commonly
regarded as belonging to the purview of databases. Views are usually
discussed in the context of databases, but actually arise in a host
of applications across many diverse areas of computing. In many of
these applications, is necessary to apply an update to the view, and
have the update be reflected back on the source. Unfortunately, the
view update problem remains largely unsolved; except in very simple
cases, views are read-only. Our goal is to develop programming
languages in which programmers can specify both how to calculate
a view, and how to translate updates to a view back to the source, and
to use these bidirectional programs—called
lenses—to build converters and synchronizers for a
variety of real-world data formats.
Harmony is composed of two largely distinct systems:
- Boomerang: our current work, which focuses on lenses for string data.
- Focal: older work on lenses and synchronizers for trees and relations.
We distribute pre-compiled binaries for Linux (x86), OS X (x86 and PPC), and Window (Cygwin):
We also distribute the Harmony sources:
Harmony is free software; you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published
by the Free Software Foundation.
For anonymous, read-only access our Subversion repository, follow these steps:
- Store the contents of this file as ~/.ssh/harmony_key.
- Update the file's permissions: chmod 600 ~/.ssh/harmony_key
- Add the line IdentityFile ~/.ssh/harmony_key to ~/.ssh/config.
- Check out the repository: svn checkout svn+ssh://email@example.com/trunk.
Commit access for frequent contributors can be arranged.
The Harmony project is supported by the National Science Foundation under
the following grants:
- ITR-0113226: Principles and Practice of Synchronization
- CPA-0429836: Harmony: The Art of Reconciliation
- IIS-0534592: Linguistic Foundations for XML View Update