smOOdynamics Systems Made Outa Objects 2400 NE 25th, Suite 800 Portland, OR 97212 (503) 249-8300 phone & fax Rik Fischer Smoody, Honcho riks@smOO.com 5 August, 1996 Grossly Distributed Programming: some thoughts submitted for Object Replication and Mobil Computing workshop of OOPSLA '96 Background: Others have worked on programming in Distributed Systems. They might extend from a totally contained and controlled environment such as a single Smalltalk image to a less contained, but still controlled environment such as a group of Smalltalkers working with Envy. Or they may convert from mainframe under the control of the DP department to a network of computers under the control of the DP department. I wish to consider progress in the face of anarchy (the web comes to mind). Very little can be taken for granted, yet programming is possible. Gross vs. carefully-designed distribution Smalltalk has discarded the notion of "program" in the sense that "my program" is holographically contained in an image. The notion of "programming team" has also become holographic. The people whose efforts interact do not all work for the same company. Some are be suppliers, others are competitors. Systems should even expect malicious attacks. Introducing the notion of a "Colony". A colony is a loosely-bounded collection of objects. Colonies often appear to have a purpose: it makes sense to speak of a "mill town", a "college town", a "database server", or an "internet service provider". This does not strongly imply that all of the objects in the colony work continuously toward the "common goal". Rather, the economy of the colony can be an emergent behavior. A village should be able to tolerate a "village idiot". In text that follows, I have mixed personal and object references and pronouns. Individuals can leave a colony. If they are planning to return shortly, they can use an answering machine: messages are stored for later receipt. If an object is leaving for a long time, it might leave a forwarding address with the local post office. A correspondent from a remote colony might remain unaware of the object's migration even though a message is responded to, but it might also get a change-of-address message. It is not necessary for all colonies or all individuals to handle such situations the same way. In the U.S.A. forms such as job applications ask for our place of birth. That is, one's colony of origin may be used in creating a globally unique identity. Url's of the web follow the same pattern. People or objects might create fake IDs for nefarious reasons. A healthy colony can deal with it. When someone arrives in a colony from a far-away place, most new acquaintances do not check references, but they warm up slowly to strangers. The grocery store will not take your check until you have established an account with a local bank. The bank does a more thorough ID check. Sometimes the counterfeit goes undetected, but little damage occurs. In Oregon recently, a 60-something man turned himself in as a fugitive from Washington who had been convicted of a crime more than 40 years ago. He had married and worked productively. Counterfeit money costs and annoys the government, but most of us would just spend a fake billwithout knowing. It is not necessarily wise for any given individual to try migrating to a given colony. A human should not try to live in a bee-hive nor a computer; a file handle should not try to leave its machine (although it could create a surrogate which can migrate). Individuals and colonies can perish. People die, disks crash, timber towns turn to ghost towns. The demise of a friend can have a profound impact. Loss of a service provider could even prove fatal. Most relationships are not so crucial: you can find a new physician if your old one quits their practice. You can probably even retreive your medical record for the benefit of your new doc. Most towns and computers are ordinary. The "common knowledge" that McDonalds makes hamburgers and WordPerfect is a text editor is used by countless people each day. Most messages are mundane: from an acquaintance, for an ordinary request, and no one dies if the information gets into the wrong hands. Messages which are more sensitive should be handled more carefully: since they are less common, it is OK if they require more processing, verification, encryption. Smalltalk code is "almost" portable. That is, the bulk of ordinary applications is comprised of standard (= vendor-provided) classes or of project-specific additions. Extraordinary effort is required (and reasonably so) when local dialects differ. Code which assumes a different base-set of well-known objects might "almost" work. Similarly, the "English" language almost works in the U.S.A., and "Americanese" almost works in Britain.