18 September 2006 1:08 PM (scheme | google | distributed systems | r6rs)
I am currently very plussed by three excellent papers.
Revised5.91 Report on the Algorithmic Language Scheme, the latest draft for the long-awaited R6RS.
Bigtable: A Distributed Storage System for Structured Data, describing the database-like store that Google uses as a backend of a lot of their applications.
The Chubby Lock Service for Loosely-Coupled Distributed Systems, about a highly available lock service / database / name server.
The first is important, bringing the Scheme up to speed with the implementations, and a bit beyond as well: unicode, a standard compilation-friendly library mechanism (finally!), standard support for #!-style scripting, byte vectors, records, standardized exception and condition handling, byte-based i/o, fixnums, quasisyntax (!!!), and more.
The bit about library support is key. Libraries are especially difficult in languages with macros (see Composable and compilable macros:: you want it when?). Yay. Yay!
The other papers are more relevant to my current line of work, building distributed systems for Fluendo. It's really interesting to see what kinds of reusable pieces Google has managed to factor out of their applications, and the practical experience building tools to make a Google application. From what I can see from these two papers and the previous ones at their papers page, they have an extremely strong platform. It is enviable.
I still feel like Google is a fortress. This time in addition to the processional desire, paper releases are pushed by their recruiting department as well -- see the conspicuous "Why work at Google?" link once you have finished digesting their papers.
I've been thinking a bit about how to build a distributed "Web 2.0" app using peer-to-peer technologies. You would need what they have, a mapreduce/sawzall approach to data processing, but instead of bigtable/gfs you would need freenet. You might even have to give up on locking completely. Then on the presentation side, each node would have to serve web pages using this store, running distributed programs on a safe VM.
Among other lessons, the Google papers show that if you have the platform, the applications come a lot easier. That their subversion code hosting uses Bigtable as a backend is a no-brainer.
Well. Enough incoherent babbling for one morning!