A network object is an object whose methods can be invoked over a netw
ork, The Modula-3 network objects system is novel for its overall simp
licity, It provides distributed type safety through the narrowest surr
ogate rule, which allows programmers to export new versions of distrib
uted services as subtypes of previous versions, The design and impleme
ntation of the system is described, including a thorough description o
f realistic marshaling algorithms for network objects, precise informa
l specifications of the major system interfaces, lessons learned from
using the system, and performance results.