Gwydion
Home Page


Project Goals and History

The goal of the Gwydion project has been to support the evolutionary development of complex software systems. By "evolutionary development", we mean any software development in which it is impossible or impractical to completely specify the system's desired behavior before coding begins. In most real-world software development, the customer does not really know what he wants until he has played with a prototype system for some time. And most software systems continue to evolve thoughout their useful lifetime.

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.

Release Pointers

  • The current release of the Gwydion Project's Hypercode Programming Environment (for Java), which we call Sheets.
  • The Gwydion Project's Dylan Language implementation is now being maintained by an external group. You can retrieve the latest implementation from the "Gwydion Dylan Maintainers", or the older Project Gwydion release.
  • CMU Common LISP (developed by a precursor to the Gwydion Project) is also being maintained by an outside group. You can retrieve their latest release from http://www.cons.org/cmucl.
  • More Information

  • Here is a white paper describing our original (circa 1993) vision for Gwydion.
  • The Gwydion project was named for a legendary character from Welsh mythology.
  • Members of the Gwydion Project.
  • The Gwydion Project is one of Carnegie-Mellon University's research projects in the School of Computer Science.
  • Questions or comments? E-mail gwydion-group@cs.cmu.edu