If a geometry server is to maintain connections with multiple clients simultaneously, would it be better for the server to push the data to the clients, or for the clients to occasionally poll the server for changes? Two existing analogous technologies might be IMAP and HTML (corrections / clarifications welcome.) With a push architecture, the clients are basically servers (so maybe X is a better analogy?) which sit and listen for updates from the "controller" (keeper of the data.) With a pull architecture, each client must continually ask the server if anything has changed ("are we there yet?") A pull architecture would certainly integrate better with the idea of "working offline", and should require less attention from firewall admins, but has the quality of "annoying" the server with too-frequent requests when the number of clients gets large. The push architecture gives the client better "real-time" status of the model, but wouldn't work so well with regard to "working offline" and of course not every client would have the luxury of having an internet-accessible IP address. Maybe something like a proxy-server setup? e.g. it really is a "push" architecture, but with the ability to chain hosts together (like ftp mirrors?) Possibly using a dual-channel approach, we could have all get/send traffic on one port, with the option to receive notifications on another port? (and these notifications could then also be relayed by the proxy server after it has fetched the updates.) Seems that something like subversion or cvs would be appropriate here, since an unexpected update from the controller could mean lost work if what you were working on should have been a branch. This, of course, would be a pull architecture, with "working offline" as a natural capability (although pure cvs/svn means "working online" is actually impossible.) Any thoughts / references on this sort of thing? What might be a good protocol(s) to build on? --Eric -- "It is impossible to make anything foolproof because fools are so ingenious." --Murphy's Second Corollary