Introduction

Unnetworked computers are an anachronism. The Internet has radically changed our understanding of computation; computers used to be calculating machines, boxes sitting alone waiting for a user to come along and use their functions. But now a computer is much more than a number tool. It is a communication device, a gateway into an environment of data, services, other computers and other people. Similarly, computers are no longer passive objects waiting to be told what to do. They are active peers in a network, ready to respond to requests from other computers and initiating requests on their own.

But while the uses of computers have expanded with the Internet, the way we design computer systems has largely remained the same. The programs we use daily are still mostly designed to be single processes running on one machine, maybe fetching a thin stream of data through a network interface but otherwise largely independent of the vast sea of computation out on the Internet. The World Wide Web expanded the realm of data from isolated document stores to an interconnected, distributed mesh of information. A similar transition is happening for computation; computer processes will increasingly occur in the Internet, not just make use of it. Programs on the network will interact in complex and sophisticated ways.

The Internet is not just a network in which computer programs operate, it is a social environment, a place where people are present every day carrying out their activities. The application of this thesis research is to develop a distributed system to represent the presence of people in the Internet, to reveal the social aspects of the network. The application will be built with a new design paradigm, an ecology of distributed agents that work together to make people's presence on the Internet visible. In addition to building a useful application, this thesis research will explore the metaphor of computational systems as complex ecologies of computer programs.

Ecologies of Programs

Distributed computation is not a new research topic. But most of the work in distributed programming has been from a very particular point of view; systems where a single designer creates programs that interact in precisely predetermined ways. While such top-down engineering practices are valued because they give predictable results with exact control, the resulting systems are often brittle, inflexible, and limited in scale.

Another way to approach distributed computation is to consider the communication of programs on networks as analogous to the interaction between organisms in an ecosystem. An ecological metaphor can be a useful way to understand what happens on computer networks. For example, the interaction of computer viruses and infected computers is understood by analogy to real viruses infecting hosts. The very name ``computer virus'' is an ecological metaphor. Andrew Leonard's book Bots: The Origin of New Species [13] takes ecological metaphors further, presenting a phenomenology of the behavior of active computer programs (``bots'') in such diverse environments as MUDs, IRC, and the Web. In Leonard's narrative, bots interact in complex ways reminiscent of natural ecology: fighting, stealing, cooperating. And ecology is not just a metaphor for understanding existing systems: Tom Ray's Network Tierra system [17] creates a computational ecology by building an artificial environment for computer programs to live in, breed, grow, die, and evolve.

An ecological metaphor carries with it a new understanding of computation. A natural ecology is the sum total of the interaction of many organisms; a computational ecology is the result of the interaction of many independent programs. Ecosystem interactions can take many forms; competition, cooperation, symbiosis. In addition, ecology implies the idea of diversity, many different species of programs coexisting. Instead of being limited to systems that a team of engineers can design and fully understand, a computational ecology is a system that is open-ended, capable of novelty and surprise.

Interactions between programs on the Internet are often complicated precisely because of the diversity and open-endedness of the network. New programs are created every day that interact with other programs in ways that their authors never intend or understand. At its best, in the Internet ecology computer programs interact in synergistic ways. For example, the interaction between Web spiders and Web servers has made it possible to search an unimaginable amount of information without the spider authors ever directly coordinating with webmasters. But our intuitions about the complex interactions between programs are poor; complex network systems often fail and software designers often miss opportunities for beneficial interactions between disparate programs.

How do we improve our understanding of ecologies of computation? By experimenting with them, by building systems that deliberately embrace the power and complexity of ecological interactions between programs. The core research for this thesis is to make an ecology of computer programs manifest, to build a system where agents travel around the Internet, visit people's machines, and act in interesting and useful ways. The agents themselves have complex interactions with each other and suffer life-or-death selection at the hands of users. By building a computational ecosystem I will explore the ecological metaphor and study the methods it inspires for designing and understanding complex distributed programs.

Distributed Agents

In order to build a computational ecology a technology is needed to support programs living natively in a network environment. The key requirement is to integrate communication into the computational framework, to make it as simple and natural for programs to work over the network as they operate on a single machine. One promising paradigm for networked computation is distributed software agents: programs that are autonomous, network aware, and (potentially) move from machine to machine. Distributed agents open up new possibilities for the way that we design computational systems.

The term ``agent'' is used to mean many different things; for the purpose of this thesis, the idea of autonomy is the most important part of the definition of a software agent. Briefly, an autonomous agent is a program that has sensors, actuators, and its own goals and purposes. Software agents are capable of independently acting in their environment. Agents are a natural component of computational ecologies -- they are the computational analogy of biological organisms.

Natural ecologies have complex natural environments; the environment for a computational ecology is the network itself. Distributed agents are agents that are native to their particular environment, the network. Part of being Internet-native is being able to easily talk to other agents across the network. In particular, distributed agents require high-level interagent communication in order to make it easy for agents to find each other and meaningfully interact.

One particular distributed agent facility, mobile agents [5] [21], is also an important part of a computational ecology. Mobile agents can move themselves across the network, picking up from one machine and moving to another in order to get better access to resources. Mobility for natural organisms is common but not required -- there are animals that move, but there are also stationary plants. Similarly, some (but not all) agents living in networks can benefit from being able navigate the environment, from moving from computer to computer.

Mobility and distribution are clearly needed if we are to remain true to the ecological metaphor; we do not want an ecosystem consisting entirely of isolated plants. But there are many questions about the usefulness of distributed and mobile agent systems. The foremost criticism of distributed agents is the complexity of the software technology. Building distributed object oriented systems is difficult; until Java there were not many widespread tools for programming network-native applications. Fortunately, better tools for building distributed systems are becoming available.

Mobility is a more controversial technology. There are few (if any) examples today of an application built with mobile agents that could not also be built by some simpler, better understood technology. But mobile agents are a powerful way of designing solutions for problems in some scenarios including limited bandwidth, unreliable networks, and itinerant computing. And most importantly, mobile agents make computers more flexible -- with a system based on mobile code, servers can be extended with unforeseen functionality by simply sending in a new agent to provide a new service. One conclusion is that even if mobile agents do not do anything new, they do provide better ways to do the things networked systems need [9].

Visualizing Activity and Presence in the Network

To give focus to the research in ecologies of distributed agents, this thesis will concentrate on building one particular application -- representing the presence and activity of people online. This topic has been popular both in practice and in research. Basic systems have been reinvented many times, from the BSD finger protocol to IRC and the recently popular ICQ system [19]. There is also a large amount of research in representing activity and presence more expressively; Judith Donath's Ph.D. research at the Media Lab, for example, in particular the Visual Who system [7].

A natural way to build a system that represents people online is to write distributed software agents to collect and display information about people's activities. Agents in this application can serve several roles. They can themselves represent people, either graphically or through other modalities. They can also mediate communication of information between computers; people can have agents living on their computer that manage their own data profile and communicate it to other agents for display.

There are many reasons an ecology of distributed agents is attractive for this application. Presence is inherently a distributed application; distributed agents can naturally manage communication between users' computers. In addition, there are many different ways to represent people. An ecology of agents allows for a diversity of different approaches. Users are not limited to any fixed set of possible representations: mobile agents are free to come and go between machines, bringing in new types of display and functionality. Users can make personal choices about which agents they like. The ecology as a whole is a complex expression of how well individual agents are matching people's desires.

Other Applications of Computational Ecologies

At the MIT Media Lab there are several projects underway that are related to distributed agents. Kwin Kramer's ``Tiles'' thesis proposal and Tom White's ``Buzz'' project both have at their core the idea of programs that live in and move around a computer network. The interaction between the programs and the network environment is what makes them interesting.

The applications of ecologies are not limited to conventional computers on the Internet. Distributed agents could also be a natural way to coordinate the various computational devices being designed by participants in the Things That Think consortium. Individual TTT devices might not have much computational power, but agents that live in the environment of many TTT devices networked together could make great use of the diverse resources available.

Summary of Expected Contributions

These various projects are only hints at what distributed agents can do. A major goal of this thesis is to explore distributed agent technologies, including mobile agents, to try to understand what these techniques are best applied to. Distributed agents are a natural way to design a computational ecology. Furthermore, distributed agents are interesting independent of an ecological metaphor; they are a powerful way to describe and design computational systems. An ecology of agents is particularly appropriate for designing an application that represents presence online. It is time to experiment with distributed agents, to design specific systems with this paradigm and see what is possible, what is easy, and what is hard.

The core research contribution of this work will come from the experience of building and understanding of an ecology of agents. The process of creating the system itself will provide valuable insight into designing systems with distributed agents, in particular what languages, tools, and technologies are appropriate for designing and understanding ecologies of distributed agents. Once the basic system is built, an iterative process of implementation, use, and evaluation will yield an understanding of how complex software ecologies operate and change. In summary, this thesis research will make contributions in the following areas:


next up previous contents
Next: Application Scenario Up: No Title Previous: Contents

Formatted: Tue Dec 2 14:47:20 EST 1997
Nelson Minar