For three semesters now, I have been an AI (associate instructor, not the other kind) for the C211: Introduction to Computer Science class at Indiana University. C211 is (and has been for many years) taught using the Scheme programming language, a dialect of Lisp following a minimalist viewpoint which makes it ideal for education. Unfortunately, many of the IDEs most commonly used to edit Scheme, Lisp, and other languages based on S-expressions tend to be rather complex and require time to learn on their own, reducing the time dedicated to other topics in such an introductory class.
For many years, the editor of choice has been SWL, based on the Scheme Widget Library, a free GUI library developed for Chez Scheme. Unfortunately, SWL has not been updated or maintained in many years, since at least 2006. While SWL works well enough for some tasks, there are a number of idiosyncrasies that make it less than ideal as an introductory environment. As such, work began on a replacement IDE.
The first replacement for SWL was Odette, a plugin for jEdit which added Scheme as a language for use in that program. The Scheme backend for this system was Petite Chez Scheme, the freely available interpreter associated with the Chez Scheme compiler. Unfortunately, the strain of trying to fit a system using S-expressions onto one built primarily for a C-like language proved to be rather problematic. Automatic indentation like that previously implemented in SWL was included, but the indentation was inconsistent, particularly when spread over multiline function calls. In addition, Odette came with all of the baggage and options that it inherited from jEdit. While such options are useful for more advanced developers, particularly in Java development, they were unnecessary and often confusing for the students. Finally, wrapping a native process (Petite) in a Java application required some work and ultimately proved unstable with drawbacks such as leaving orphan processes on closing. In the end, Odette was used only during the Summer semester of 2011.
Finally, I decided to follow the old saying that if you want something do, it’s best to do it yourself. So I set out to write my own editor for C211. And so Wombat was born.
The very first versions of Wombat were written in a few days using C# and Microsoft’s .NET framework. The goal was to use a framework that I was familiar with to facilitate development and one that could run on a wide variety of systems (via Mono for OSX and Linux) with little to no extra effort to the students. Unfortunately, I hit problems almost immediately in finding a suitable version of Scheme that I could embed in the program to avoid the problems that Odette had with interfacing with a native process. I ended up abandoning .NET before I choose a Scheme, but I most likely would have ended up using IronScheme. I’ve used it in the past with a similar goal of embedding Scheme in .NET and it worked well in that particular instance.