The DrScheme programming environment supports a tower of programming language dialects for different needs and levels of expertise. Building and maintaining this tower posed several interesting software engineering challenges. One of the central problems was to arrange the system so languages could be built by composition and extension.
In my talk, I will first present this extensibility problem and my specific solution. I will then show how this problem is an instance of a more general scenario that has been posed repeatedly in the research literature and that system architects frequently encounter. My work focused attention on this problem, and researchers are presenting a growing number of alternate solutions for it.
To compare the programming paradigms and patterns offered as solutions, I also developed a formal theory of extensibility. I applied this theory to some of the proposed solutions. This investigation lead to a deeper understanding of extensibility, which I then harnessed in the construction of several diverse applications, including the next generation of the language layers in DrScheme. I will discuss some of these findings in the last part of my talk.