Description
Despite many attempts in both research and industry to develop successful language-based software engineering tools, the resulting systems consistently fail to become adopted by working programmers. One of the main reasons for this failure is the closed-world view adopted by these systems: it is virtually impossible to integrate them with any outside technology. To address this problem, and to create a flexible research infrastructure, we created Harmonia, an open framework for constructing interactive language-based programming tools. This report presents the architecture of the Harmonia framework. We briefly review the design of the two earlier Berkeley projects, the Pan and Ensemble systems, discuss their influences on the design of Harmonia, and present the organization and interactions of the major components in the Harmonia framework.