INDIE depends on authors defining both data objects, like points, questions, and answers, and viewers for those data objects, like question viewers, answer viewers, and notebooks. This creates a sort of chicken-and-egg problem--authors should be able to create the interface without defining data objects, and they should be able to group their data by context without having defined the interface in advance.
What we decided to do was add a second class of data object, an organizing class. For example, a question viewer is associated with a question list (Figure 4.11). Authors can then create question viewers independently of the interface, and then hook them into question lists as needed. Authors define links between every question and one question list.
| 53#53 |
As students do some action that makes a question visible, the question informs the question list that it is active. If there is a question viewer that is associated with the question list, it is automatically informed and puts a new question button on the interface.
Notebooks work similarly, as do answer viewers. A notebook shows an evidence list, and each point is associated with one of these lists. Answer viewers show any of a list of ``speakers,'' and each answer has a speaker. Speakers serve double-duty--not only do they mediate information between answers and answer viewers, they keep track of the name of whomever it is speaking in the content clip. The answer viewers then show the name of the speaker beneath the media item when it plays.9.4
This indirection is not entirely intuitive. When asked what their hardest understanding barrier was in INDIE, authors usually report that the <something>-list/<something>-viewer separation was among the hardest to grasp. We attribute this to both the indirectness of this metaphor and because it was frankly the first complex thing they had to understand, since they ran into it as soon as they wanted to play a movie. Ways to rectify this situation are discussed in Chapter 8.