Welcome to Harmony!

Harmony is a generic synchronization framework for tree-structured data. This site is a live demo of some of Harmony's features.

  • If you are new to Harmony, press the "Next" button above, Next button, for a quick introduction to this demo interface and a brief tour of Harmony's basic architecture.
  • If you're already familiar with the basic ideas of Harmony and want to experiment with some more sophisticated demos, choose one of the "Tutorial" demos from the pull-down menu above. (Some additional demos are available under "Expert" demos. Documentation for these is minimal, but you may enjoy playing with them.)
  • If you are familiar with our paper, Combinators for Bi-Directional Tree Transformations: A Linguistic Approach to the View Update Problem (POPL 2005, available here), and want to play with lenses, choose "Lens Programming" for a short tutorial.
  • If you are familiar with our paper, Exploiting Schemas in Data Synchronization (DBPL 2005, available here), and want to see some interesting examples of the use of schemas to guide the synchronization process, the address book and structured text demos are particularly recommended.
  • Our recent work on lenses for relational databases, described in our paper Relational Lenses: A language for defining updateable views (PODS 2006, available here), is illustrated in the tutorial section on "Relational Lenses."

These demos require a browser with full support for JavaScript and CSS. (Internet Explorer, in particular, is known not to work.)