Previously, in The Architecture of Open Source Applications, I described SocialCalc, an in-browser spreadsheet system that replaced the server-centric WikiCalc architecture. SocialCalc performs all of its computations in the browser; it uses the server only for loading and saving spreadsheets.
...diagram on SocialCalc's scalability model...
For the Socialtext team, performance was the primary goal behind SocialCalc's design. The key observation was this: Client-side computation in JavaScript, while an order of magnitude slower than server-side computation in Perl (are V8 and the new Firefox engines which are compiled to native code when optimized really an order of magnitude slower than Perl?), was still much faster than the network latency incurred during AJAX roundtrips. (Show a graph, or maybe explain briefly when/for what purpose those AJAX rountrips served in SocialCalc?)
Toward the end of the AOSA chapter, we intr