The intent of modgits is to ``sneak'' representation into authors' early design stages. Authors of INDIE projects know they need questions, answers (both in response to questions and as general media items), and notebooks. The easiest way for them to put these types of items in storyboards and walkthroughs is to use modgits. When making the modgits show text or movies, authors are really building parts of the model they will need in the long run. The modgits are visual enough, however, that authors report that they don't feel burdened with up-front representation building.
This leads us to define more carefully what a modgit is:
A modgit is an area of a screen that shows the state of the model and gives users9.5 a chance to interact with a model object or set of model objects directly. A modgit shows one class or set of subclasses of model objects. The visual attributes of a modgit are homogeneous--each object in the model is shown with the same look and feel as another object shown in the same modgit.
Thus, a question viewer is a rectangle that shows one class of model objects--questions. Each question is shown with the same attributes--the same button picture, the same font, the same margins. The same question shown in another modgit might have a different look, such as a new font, but any other question shown in that modgit has that same new font.
This is similar to the feel of a model-view-controller (MVC) [Goldberg 1990]. The MVC paradigm from Smalltalk programming is a way of structuring code such that programmers can mix model, view, and controller classes into their objects to build visual interfaces to object structures.
In an MVC, an interface object mixes in the view class. Model objects mix in the model class. Any change to a model object informs the appropriate view of the change and the viewer responds by displaying the new piece of information. Most interface objects also mix in the controller class which gives a common programmer ``hook'' to speak to the model directly.
Modgits are similar--whenever a model object changes (such as the state of a question object moving from seen to unseen), the appropriate modgit is informed and usually changes its view (such as putting up a new question button). Modgits give a piece of the model with which students can interact (i.e., clicking on a question button), which can change the state of the model again and start a new cycle of changes. Here, however, modgits are not mixin classes for programmers but full instantiations that authors can use without writing new code, as long as they can fit their content into INDIE's available classes of data.