Concurrency Among Strangers

Programming in E as Plan Coordination
  • Mark S. Miller
  • E. Dean Tribble
  • Jonathan Shapiro
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3705)


Programmers write programs, expressing plans for machines to execute. When composed so that they may cooperate, plans may instead interfere with each other in unanticipated ways. Plan coordination is the art of simultaneously enabling plans to cooperate, while avoiding hazards of destructive plan interference. For sequential computation within a single machine, object programming supports plan coordination well. For concurrent computation, this paper shows how hard it is to use locking to prevent plans from interfering without also destroying their ability to cooperate.

In Internet-scale computing, machines proceed concurrently, interact across barriers of large latencies and partial failure, and encounter each other’s misbehavior. Each dimension presents new plan coordination challenges. This paper explains how the E language addresses these joint challenges by changing only a few concepts of conventional sequential object programming. Several projects are adapting these insights to existing platforms.


Target Object Account Manager Partial Failure Eventual Reference Temporal Isolation 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [Ami95]
    Amir, Y.: Replication Using Group Communication Over a Partitioned Network. PhD thesis (1995)Google Scholar
  2. [Bej96]
    Bejar, A.: The Electric Communities distributed garbage collector (1996),
  3. [BH93]
    Hansen, P.B.: Monitors and concurrent Pascal: a personal history. In: HOPL-II: The second ACM SIGPLAN conference on History of programming languages, pp. 1–35. ACM Press, New York (1993)CrossRefGoogle Scholar
  4. [BJ87]
    Birman, K., Joseph, T.: Exploiting virtual synchrony in distributed systems. In: SOSP 1987: Proceedings of the eleventh ACM Symposium on Operating systems principles, pp. 123–138. ACM Press, New York (1987)CrossRefGoogle Scholar
  5. [BL94]
    Bogle, P., Liskov, B.: Reducing cross domain call overhead using batched futures. In: OOPSLA 1994: Proceedings of the ninth annual conference on Object-oriented programming systems, language, and applications, pp. 341–354. ACM Press, New York (1994)CrossRefGoogle Scholar
  6. [Boe05]
    Boehm, H.-J.: Threads cannot be implemented as a library. SIGPLAN Not. 40(6), 261–268 (2005)CrossRefGoogle Scholar
  7. [CL85]
    Chandy, K.M., Lamport, L.: Distributed snapshots: determining global states of distributed systems. ACM Trans. Comput. Syst. 3(1), 63–75 (1985)CrossRefGoogle Scholar
  8. [CL02]
    Castro, M., Liskov, B.: Practical byzantine fault tolerance and proactive recovery. ACM Trans. Comput. Syst. 20(4), 398–461 (2002)CrossRefGoogle Scholar
  9. [Clo04a]
    Close, T.: Waterken YURL (2004),
  10. [Clo04b]
    Close, T.: web-calculus (2004),
  11. [DH65]
    Dennis, J.B., Van Horn, E.C.: Programming semantics for multiprogrammed computations. Technical Report MIT/LCS/TR-23, M.I.T. Laboratory for Computer Science (1965)Google Scholar
  12. [Don76]
    Donnelley, J.: A Distributed Capability Computing System (1976)Google Scholar
  13. [Eng97]
    Englander, R.: Developing Java Beans. O’Reilly & Associates, Inc., 981 Chestnut Street, Newton, MA 02164, USA (1997)Google Scholar
  14. [Fie00]
    Fielding, R.T.: Architectural styles and the design of network-based software architectures. PhD thesis, Chair-Richard N. Taylor (2000)Google Scholar
  15. [GHJV94]
    Gamma, E., Helm, R., Johnon, R., Vlissides, J.: Design Patterns, elements of reusable object-oriented software. Addison-Wesley, Reading (1994)Google Scholar
  16. [GK76]
    Goldberg, A., Kay, A.C.: Smalltalk-72 instruction manual, Xerox Palo Alto Research Center (March 1976)Google Scholar
  17. [GR83]
    Goldberg, A., Robson, D.: Smalltalk-80: The Language and Its Implementation. Addison-Wesley, Reading (1983)zbMATHGoogle Scholar
  18. [Har85]
    Hardy, N.: KeyKOS architecture. SIGOPS Oper. Syst. Rev. 19(4), 8–25 (1985)CrossRefMathSciNetGoogle Scholar
  19. [HBS73]
    Hewitt, C., Bishop, P., Steiger, R.: A universal modular ACTOR formalism for artificial intelligence. In: Nilsson, N.J. (ed.) Proceedings of the 3rd International Joint Conference on Artificial Intelligence, Standford, CA, August 1973, pp. 235–245. William Kaufmann, San Francisco (1973)Google Scholar
  20. [Hew85]
    Hewitt, C.: The challenge of open systems: current logic programming methods may be insufficient for developing the intelligent systems of the future. BYTE 10(4), 223–242 (1985)Google Scholar
  21. [Hoa65]
    Hoare, C.A.R.: Record handling, in Algol Bulletin 21.3.6 (1965)Google Scholar
  22. [Hoa74]
    Hoare, C.A.R.: Monitors: an operating system structuring concept. Commun. ACM 17(10), 549–557 (1974)CrossRefzbMATHGoogle Scholar
  23. [Hoa78]
    Hoare, C.A.R.: Communicating sequential processes. Commun. ACM 21(8), 666–677 (1978)CrossRefzbMATHMathSciNetGoogle Scholar
  24. [IBM68]
    IBM Corporation. IBM System 360 Principles of Operation. IBM Corporation, San Jose, CA, USA, 8th edn. (1968)Google Scholar
  25. [Kay93]
    Kay, A.C.: The early history of Smalltalk. SIGPLAN not. 28(3), 69–95 (1993)CrossRefGoogle Scholar
  26. [Kay98]
  27. [KTMB87]
    Kahn, K.M., Tribble, E.D., Miller, M.S., Bobrow, D.G.: Vulcan: Logical concurrent objects. In: Research Directions in Object-Oriented Programming, pp. 75–112 (1987)Google Scholar
  28. [Lam98]
    Lamport, L.: The part-time parliament. ACM Trans. Comput. Syst. 16(2), 133–169 (1998)CrossRefGoogle Scholar
  29. [Lef]
    Lefkowitz, G.: Generalization of deferred execution in Python,
  30. [LS88]
    Liskov, B., Shrira, L.: Promises: linguistic support for efficient asynchronous procedure calls in distributed systems. In: PLDI 1988: Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation, pp. 260–267. ACM Press, New York (1988)CrossRefGoogle Scholar
  31. [MD88]
    Miller, M., Drexler, K.E.: Markets and computation: Agoric open systems. In: Huberman, B. (ed.) The Ecology of Computation, pp. 133–176. North-Holland, Amsterdam (1988)Google Scholar
  32. [Mil92]
    Miller, M.S.: Transcript of talk: The promise system (1992),
  33. [MMF00]
    Miller, M.S., Morningstar, C., Frantz, B.: Capability-based financial instruments. In: Frankel, Y. (ed.) FC 2000. LNCS, vol. 1962, pp. 349–378. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  34. [MS03]
    Miller, M.S., Shapiro, J.S.: Paradigm Regained: Abstraction mechanisms for access control. In: ASIAN, pp. 224–242 (2003)Google Scholar
  35. [MTS04]
    Miller, M.S., Tulloh, B., Shapiro, J.S.: The Structure of Authority: Why security is not a separable concern. In: MOZ, pp. 2–20 (2004)Google Scholar
  36. [MYS03]
    Miller, M.S., Yee, K.-P., Shapiro, J.: Capability Myths Demolished (2003)Google Scholar
  37. [OBDMS98]
    Babaoğlu, Ö., Davoli, R., Montresor, A., Segala, R.: System support for partition-aware network applications. SIGOPS Oper. Syst. Rev. 32(1), 41–56 (1998)CrossRefGoogle Scholar
  38. [Ree78]
    Reed, D.P.: Naming and synchronization in a decentralized computer system, January 01 (1978)Google Scholar
  39. [Rei05]
    Reid, K.: E on Common Lisp (2005),
  40. [Sar93]
    Saraswat, V.A.: Concurrent Constraint Programming. MIT Press, Cambridge (1993)Google Scholar
  41. [Sha83]
    Shapiro, E.: A subset of Concurrent Prolog and its interpreter. Technical Report TR-003, Institute for New Generation Computer Technology (ICOT) (January 1983)Google Scholar
  42. [SKYM04]
    Stiegler, M., Karp, A.H., Yee, K.-P., Miller, M.S.: Polaris: Virus safe computing for Windows XP. Technical Report HPL-2004-221, Hewlett Packard Laboratories (2004)Google Scholar
  43. [SM87]
    Shapiro, E., Mierowsky, C.: Fair, biased, and self-balancing merge operators: Their specification and implementation in Concurrent Prolog. In: Shapiro, E. (ed.) Concurrent Prolog: Collected Papers, vol. I, pp. 392–413. MIT Press, London (1987)Google Scholar
  44. [SM03]
    Sussman, J., Marzullo, K.: The bancomat problem: an example of resource allocation in a partitionable asynchronous system. Theor. Comput. Sci. 291(1), 103–131 (2003)CrossRefzbMATHMathSciNetGoogle Scholar
  45. [SS75]
    Saltzer, J.H., Schroeder, M.D.: The protection of information in computer system. Proceedings of the IEEE 63(9), 1278–1308 (1975)CrossRefGoogle Scholar
  46. [SS04]
    Shroff, P., Smith, S.F.: Type inference for first-class messages with match-functions (2004)Google Scholar
  47. [SSF99]
    Shapiro, J.S., Smith, J.M., Farber, D.J.: EROS: a fast capability system. In: SOSP 1999: Proceedings of the seventeenth ACM symposium on Operating systems principles, pp. 170–185. ACM Press, New York (1999)CrossRefGoogle Scholar
  48. [ST83]
    Shapiro, E.Y., Takeuchi, A.: Object oriented programming in concurrent prolog. New Generation Comput. 1(1), 25–48 (1983)CrossRefGoogle Scholar
  49. [Sti04]
    Stiegler, M.: The E language in a walnut (2004),
  50. [SV05a]
    Spiessens, F., Van Roy, P.: The oz-E project: Design guidelines for a secure multiparadigm programming language. In: Van Roy, P. (ed.) MOZ 2004. LNCS, vol. 3389, pp. 21–40. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  51. [SV05b]
    Spiessens, F., Van Roy, P.: A practical formal model for safety analysis in Capability-Based systems. In: LNCS, Springer, Heidelberg (2005), Presentation available at
  52. [TM02]
    Tulloh, B., Miller, M.S.: Institutions as abstraction boundaries. In: High, J. (ed.) Social Learning: Essays in Honor of Don Lavoie (2002)Google Scholar
  53. [TMHK95]
    Tribble, E.D., Miller, M.S., Hardy, N., Krieger, D.: Joule: Distributed application foundations. Technical Report ADd03.4P, Agorics Inc., Los Altos (December 1995),
  54. [TMK+87]
    Tribble, E.D., Miller, M.S., Kahn, K.M., Bobrow, D.G., Abbott, C., Shapiro, E.Y.: Channels: A generalization of streams. In: ICLP, pp. 839–857 (1987)Google Scholar
  55. [vH45]
    von Hayek, F.: The uses of knowledge in society. American Economic Review 35, 519–530 (1945)Google Scholar
  56. [VH04]
    Van Roy, P., Haridi, S.: Concepts, Techniques, and Models of Computer Programming. MIT Press, Cambridge (2004)Google Scholar
  57. [WO01]
    Bryce “Zooko” Wilcox-O’Hearn. Deadlock-free (2001),

Copyright information

© Springer-Verlag Berlin Heidelberg 2005

Authors and Affiliations

  • Mark S. Miller
    • 1
    • 2
  • E. Dean Tribble
    • 1
  • Jonathan Shapiro
    • 1
  1. 1.Johns Hopkins UniversityUSA
  2. 2.Hewlett Packard LaboratoriesUSA

Personalised recommendations