Handling Source Code in a Database (CMS)

Let me show you the pleasures of a different way of programming.

The Simple Solution

My name is Wolf Wejgaard. I am a freelance programmer who builds his own IDEs. I like it simple, and am amazed about the complexity you endure in conventional program editors. The root of the complexity is the source code text file. You need source files for the compiler, ok. But you are not forced to handle the whole programming process on files. There is a better way.

Why Not in a Database?

A program is an ordered collection of units: procedures, objects, methods, variables, etc., each identified by a name (ID). Collections are usually handled in lists or databases. I keep wondering: Why is source code still managed in text files? Why don't programmers prefer a database? As a Source Code Content Management System.

Smalltalk does. But Smalltalk is extreme, it handles source and code in a database, an "image". There are no source files. Instead you have this wonderful source browser that lets you work directly on the whole program.

"Procedural Smalltalk"

Smalltalk was the role model for Holonforth. I admired the hierarchical order of OO programs and wondered how the source browser could be applied to procedural source. You have files and programming units but a middle level is missing. Then I noted that generally groups of units tend to serve common functions. The first Holon system had a structure of modules, groups and (Forth) words. It was functional in 1989 and evolved into Holon86.

Holon86 is a complete IDE including compiler, assembler and debugger. Source and compiled code are managed in an 'image', similar to Smalltalk. There is no need for external source files.

Later Holonforth became a multi-platform IDE for general use. HolonU creates source files as a pipe to a code generator (compiler or interpreter). Each module is mirrored in a file.

Chapters, Sections, Units

It was obvious early on, that the browser presented the source text like a book, modules being chapters and groups acting as sections. But I hesitated to rename the structure. Would you accept an IDE with a structure that calls your source files 'chapters'?


Holon evolved more by gut feeling than planned. I had an idea, tested it and often it simply worked and improved the system. In 1989 I presented Holonforth to the Forth community at the EuroFORML conference. The concept was well received and I expected it to spread widely. The advantages of the Holonforth way are so overwhelmingly convincing, I thought ... 25 years later Holonforth is still the only "Procedural Smalltalk" to my knowledge.

All IDEs presented in this site are working examples of handling source code in a CMS. I offer them for study and discussion.