harmony-header [ introduction | distribution | members | publications | support ]
Introduction
[Top]

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 databases.

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.

Distribution
[Top]

Harmony is composed of two largely distinct systems:

Binary Distribution

We distribute pre-compiled binaries for Linux (x86), OS X (x86 and PPC), and Window (Cygwin):

floppy harmony-20080112-osx-intel-binary.tar.gz 7.91 MB12 Jan 2008 8:33pm
floppy harmony-20080108-windows-cygwin-binary.tar.gz 8.3 MB8 Jan 2008 4:04am
floppy harmony-20071213-osx-ppc-binary.tar.gz 11.89 MB13 Dec 2007 1:33pm
floppy harmony-20071213-linux-x86-binary.tar.gz 10.86 MB13 Dec 2007 12:30pm

Source Distribution

We also distribute the Harmony sources:

floppy harmony-20080112-source.tar.gz 1.51 MB12 Jan 2008 8:38pm
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.

Subversion Access

For anonymous, read-only access our Subversion repository, follow these steps:

Commit access for frequent contributors can be arranged.

Past contributors
[Top]
Publications
[Top]

Papers

 
Aaron Bohannon, J. Nathan Foster, Benjamin C. Pierce, Alexandre Pilkiewicz, and Alan Schmitt. Boomerang: Resourceful Lenses for String Data. In ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL), San Francisco, California, January 2008.
[ bib | tech report | short version ]
 
Sanjeev Khanna, Keshav Kunal, and Benjamin C. Pierce. A Formal Investigation of Diff3. In Arvind and Prasad, editors, Foundations of Software Technology and Theoretical Computer Science (FSTTCS), December 2007.
[ bib | short version ]
 
Aaron Bohannon, J. Nathan Foster, Benjamin C. Pierce, Alexandre Pilkiewicz, and Alan Schmitt. Boomerang: Resourceful Lenses for String Data. Technical report, Dept. of CIS, University of Pennsylvania, July 2007.
[ bib | tech report | short version ]
 
J. Nathan Foster, Michael B. Greenwald, Jonathan T. Moore, Benjamin C. Pierce, and Alan Schmitt. Combinators for bidirectional tree transformations: A linguistic approach to the view-update problem. ACM Transactions on Programming Languages and Systems, 29(3):17, May 2007. Preliminary version presented at the Workshop on Programming Language Technologies for XML (PLAN-X), 2004; extended abstract presented at Principles of Programming Languages (POPL), 2005.
[ bib | conference version | full version | slides ]
 
J. Nathan Foster, Michael B. Greenwald, Christian Kirkegaard, Benjamin C. Pierce, and Alan Schmitt. Exploiting Schemas in Data Synchronization. Journal of Computer and System Sciences, 2007. To appear. Extended abstract in Database Programming Languages (DBPL) 2005.
[ bib | tech report | short version | full version | slides ]
 
J. Nathan Foster, Benjamin C. Pierce, and Alan Schmitt. A Logic Your Typechecker Can Count On: Unordered Tree Types in Practice. In Workshop on Programming Language Technologies for XML (PLAN-X), informal proceedings, January 2007.
[ bib | conference version | slides ]
 
Aaron Bohannon, Jeffrey A. Vaughan, and Benjamin C. Pierce. Relational Lenses: A Language for Updateable Views. In Principles of Database Systems (PODS), 2006. Extended version available as University of Pennsylvania technical report MS-CIS-05-27.
[ bib | tech report | .pdf ]
 
Michael B. Greenwald, Sanjeev Khanna, Keshav Kunal, Benjamin C. Pierce, and Alan Schmitt. Agreeing to Agree: Conflict Resolution for Optimistically Replicated Data. In Shlomi Dolev, editor, International Symposium on Distributed Computing (DISC), 2006.
[ bib | tech report | short version | slides ]
 
Aaron Bohannon, Jeffrey A. Vaughan, and Benjamin C. Pierce. Relational Lenses: A Language for Updateable Views. Technical Report MS-CIS-05-27, Dept. of Computer and Information Science, University of Pennsylvania, December 2005.
[ bib | .pdf ]
 
Benjamin C. Pierce, Alan Schmitt, and Michael B. Greenwald. Bringing Harmony to Optimism: A Synchronization Framework for Heterogeneous Tree-Structured Data. Technical Report MS-CIS-03-42, University of Pennsylvania, 2003. Superseded by MS-CIS-05-02.
[ bib | tech report ]

Talks

 
Benjamin C. Pierce. The Weird World of Bi-Directional Programming, March 2006. ETAPS invited talk.
[ bib | slides ]
 
J. Nathan Foster. Exploiting Schemas in Data Synchronization, June 2005. Talk given at New England Programming Languages Symposium (NEPLS), Williamstown, Massachusetts.
[ bib | slides ]
 
Benjamin C. Pierce. Harmony: The Art of Reconciliation, April 2005. Invited talk at Trusted Global Computing conference, April 2005.
[ bib | slides ]
 
Benjamin C. Pierce. Combinators for Bi-Directional Tree Transformations: A Linguistic Approach to the View Update Problem, October 2004. Invited talk at New England Programming Languages Symposium.
[ bib | slides ]
 
Benjamin C. Pierce. Harmony: A Synchronization Framework for Tree-Structured Data, September 2003. Slides from a talk presented in several places (Cambridge, Edinburgh, Philadelphia, Princeton) in Fall 2003.
[ bib | slides ]
 
Benjamin C. Pierce. Synchronize globally, compute locally, July 2002. Keynote address at Research Day on Global Computing, EFPL, Lausanne.
[ bib | slides ]

Miscellaneous

 
J. Nathan Foster, Benjamin C. Pierce, and Alan Schmitt. Harmony Programmer's Manual, 2006.
[ bib | home page | .pdf ]
 
Aaron Bohannon, Jeffrey A. Vaughan, and Benjamin C. Pierce. Relational Lenses: A language for defining updateable views, October 2005. Poster presented at Greater Philadelphia DB/IR Day.
[ bib | .pdf ]
 
J. Nathan Foster. Harmony: A Generic Synchronization Framework for Heterogeneous, Replicated Data, October 2005. Poster at DB-IR Day.
[ bib | .pdf ]
Support
[Top]

The Harmony project is supported by the National Science Foundation under the following grants:

harmony-footer