Like it or not, this evolutionary style of development is a fact of life for most software projects. While many software engineering efforts attempt to ignore this fact, preferring to focus on static program specifications and the tools for turning these into correct software, the Gwydion project decided to develop a set of software tools that would be optimized for evolutionary development. Specifically, we decided to combine a high-performance "dynamic" language -- we chose Dylan -- with a "hypercode" development environment. A hypercode system maintains all kinds of knowledge about a software system, including the code itself and all kinds of docuemntation, in a richly inter-linked online form. This makes it much easier for future developers to understand and modify this software system.
In the first phase of our project we collaborated with Apple, Harlequin, and others on the definition of the Dylan language. We developed two implementations of Dylan: Mindy, a very flexible and portable implementation, but with low performance, and d2c, a faster but less portable implementation.
Unfortunately, by the spring of 1996, Apple had dropped all work on Dylan and the implementation effort at Harlequin was running more than a year behind their original schedule. In the meantime, Java had become very popular, occupying many niches that might have belonged to Dylan. After much discussion, we decided to implement our hypercode environment in Java rather than Dylan. The result is a Java development environment that we call Sheets.
The Gwydion Project has been supported by DARPA under the Evolutionary Development of Complex Software (EDCS) program. However, this support has recently been terminated, and the project is now in the process of shutting down. We have put both our Dylan and Sheets implementation into the public domain. Source code is available at this web site. It is our hope that others may pick up this software and carry on our work.
Questions or comments? E-mail gwydion-group@cs.cmu.edu