Software, like any piece of literature, invites those who experience it into a Secondary world. Unlike most literature, however, software must satisfy the needs of at least three very exacting audiences.
A Personal Note
For many years, I have been committing my thoughts, feelings, ideas, aspirations and goals to paper, to remind myself in times to come of the person that I had been: a projection of my present self into the future.
Now, I find that I am presented with this opportunity to go beyond the boundaries of my notebooks, and affect-- or amuse-- and entire community, many of whom I will never meet in the Primary World.
The Secondary World
Which comment provides a transition to today's topic: the distinction, and connection, between the Primary and Secondary Worlds.
The foremost exposition of the Secondary World is found in J. R. R. Tolkien's essay "On Fairy Stories," wherein he argues for our physical existence or awareness in the Primary, physical world, and our intellectual and emotional existence in a Secondary world as large as imagination:
"Faerie contains many things besides elves and fays, and besides dwarfs, witches, trolls, giants, or dragons, it holds the sea, the sun, the moon, the sky, and the earth and all things that are in it: tree and bird, water and stone, wine and bread, and ourselves, when we are enchanted."
Of course, Tolkien was not the first to propose the the "realm of imagination" could be treated metaphorically as if it were a real place: terms such as "land of make-believe" had been in common use well before his time. But no one before him had the authority-- or, perhaps, the audacity-- to use this concept as the basis of a theory of literature: that any work of literature was no more and certainly no less than a log book of explorations into that Secondary World.
Now, today, we live in a world that Tolkien would likely have found hard to accept, in terms of the possibilities for exploring the Secondary world: there are, of course, advances in technology, such as 'virtual reality', 'augmented reality', computer games, console games, arcade games, paper-and-pencil role-playing games, games played via email, and a host of other examples.
Some of these I'll discuss in future log entries here: I am myself an avid role-playing gamer, both electronic and paper-and-pencil, and the current generation of computer games are rich with inspiration and opportunity on the technical and artistic levels.
For the moment, however, I'd like to focus on a form of literature that's been dancing in and out of the software industry press over the past few years: software itself.
Software as Literature
Since meeting Richard Gabriel at the First Jini Community Summit in Aspen in May of 1999, I've become more and more convinced that software does function as a literature, in much the same sense that an essay-- such as this one-- is intended to inform its audience, or to elicit from the audience a particular response.
In this sense, software is among the most complex literary forms yet devised, because any piece of software has inherently three audiences: the computer that will act upon it, the user that will experience it, and the software authors or editors who will read it, criticize it, and possibly, be inspired by it.
It is with these audiences in mind that one must write software, and I propose that better software is written by unifying as much as possible the experiences of these audiences.
A Signpost for the Future
Over the next few weeks and months, you'll see quite a few code snippets here and at other locations that I'll reference from time to time. All such code will try to follow: this basic principle in a simple way: adherence to an underlying metaphor, in the vocabulary of the shared experience.
Of course, this is already a widely-held tenet of object-oriented design: objects, classes, and operations should be named as much as possible for the things they represent.
In the case of the systems from which these examples will be drawn, that will be a wide range of objects from the Secondary world itself, since these systems are primarily design and support software for role-playing games and similar immersive entertainment settings.
A short list of abstractions, therefore might include:
Along the way, I'll interject a few points about the design of more-or-less robust software systems, Jini and otherwise, and a rant or two about the state of intellectual property law, and, as the occasion arises, observations on the state of affairs in the Secondary world itself:
Aliquae res credenda est videri: some things must be believed, to be seen.
 Yes, I know that not everyone is a Dick Gabriel fan, but bear with me: I happen to think that he has a good point about this.
 Note that this view of software-as-literature is not simply a conceit of a few software architects: it is on this basis that the issue of the distribution of software as a form of protected free speech is even now making its way through the courts.
 Often known as "programmers" and "software quality engineers"
> Now, today, we live in a world that Tolkien would likely > have found hard to accept, in terms of the possibilities > for exploring the Secondary world: there are, of course, > advances in technology, such as 'virtual reality', > 'augmented reality', computer games, console games, arcade > games, paper-and-pencil role-playing games, games played > via email, and a host of other examples. > Why do you think Tolkien would find today's world hard to accept, since you list so many "possibilities for exploring the Secondary world"?