{"id":35,"date":"2005-11-06T17:38:24","date_gmt":"2005-11-06T22:38:24","guid":{"rendered":"http:\/\/alarmingdevelopment.org\/?p=35"},"modified":"2005-11-06T17:39:24","modified_gmt":"2005-11-06T22:39:24","slug":"the-world-wide-dynabook","status":"publish","type":"post","link":"https:\/\/alarmingdevelopment.org\/?p=35","title":{"rendered":"The World Wide Dynabook"},"content":{"rendered":"<p>David Reed gave a keynote at OOPSLA about <a href=\"http:\/\/www.opencroquet.org\/index.html\">Croquet <\/a>and <a href=\"http:\/\/www.opencroquet.org\/Croquet_Technologies\/architecture.html\">TeaTime<\/a>. Croquet is a re-imagining of Alan Kay\u00e2\u20ac\u2122s seminal <a href=\"http:\/\/www.squeakland.org\/school\/HTML\/essays\/dynabook_revisited.htm\">Dynabook <\/a>vision, a vision which has influenced many aspects of modern computers and software.  The Dynabook was a personal computing tool, while Croquet is envisioned to be a collaborative environment on the scale of the Web. I would call it \u00e2\u20ac\u0153The World Wide Dynabook\u00e2\u20ac\u009d. I applaud the grandness of the vision: reinventing how we interact with the internet, all the way from the end-user interface down to the network protocols and the programming language. I found the hints about their underlying architecture to be tantalizing, but unfortunately I got little more than hints, even after reading their publications. I will review what I have learnt so far.<!--more--><\/p>\n<p>At the top level, Croquet is a 3-D collaborative virtual world distributed on the same scale as the internet. You can walk around, and see other people walking around, and interact in various ways. Portals let you warp between spaces, and interface to conventional 2D UI\u00e2\u20ac\u2122s as well as the existing Web. <\/p>\n<p>Croquet is a mix of old and new ideas. Some of the old ideas are:<\/p>\n<ul>\n<li>3-D Cyberspace. William Gibson popularized this in fiction over 20 years ago, but it hasn\u00e2\u20ac\u2122t come to pass. The reason, I think, is that Cyberspace just isn\u00e2\u20ac\u2122t Euclidean. Abstract concepts and information don\u00e2\u20ac\u2122t often map well into a flat multi-dimensional space. If you look at the actual data structures we use, or the code itself, the topology is highly non-Euclidean. Apart from Physics simulations and games, I don\u00e2\u20ac\u2122t see how 3-D adds much more than eye candy.<\/li>\n<li>A homogeneous language environment with run-time binding and dynamic typing leads to easier creation and adaptation of software. This is a defining belief among some groups, but I am not sure it is a universal truth. I think it has proven true within small communities of highly-experienced programmers, as in the \u00e2\u20ac\u0153golden age\u00e2\u20ac\u009d of Smalltalk and Lisp. But it has failed to scale up to large communities of casual users. Being able to unplug anything and plug in something else is only useful if you understand the wiring, which in practice becomes infernally complicated and terribly fragile. Croquet essentially wants to scale a Smalltalk VM up to the size of the entire Web. I believe we do not yet understand how to sufficiently modularize software to make this practical. Croquet offers no breakthrough techniques of software composition: Squeak is merely warmed-over Smalltalk. Croquet seems predicated on the quaint belief that Smalltalk solved the problem 25 years ago, and the rest of the world just hasn\u00e2\u20ac\u2122t realized it yet.<\/li>\n<\/ul>\n<p>One thing I like about Croquet is the idea that, to borrow a phrase, \u00e2\u20ac\u0153the network is the language\u00e2\u20ac\u009d. The Web can be better built as a single giant distributed VM for a language that is smart about distributed processing and security. Others have also proposed this, but Croquet is taking a very comprehensive approach. I am most interested in TeaTime, which is their model of distributed state and computation. It is currently a layer on top of Squeak, but Alan Kay is rumored to be working on a new language based on its semantics.<\/p>\n<p>TeaTime radically unifies data and computation by reducing state to the history of communication. Objects interact solely be sending messages to each other. Objects do not have internal state. Instead, they record the history of all messages they have received. State is an illusion derived from the history of message receipts. Messages sends are a determinstic function of the history of received messages. This is an elegant purification of the original model of Object-Oriented programming, reducing it to the sequenced exchange of messages.<\/p>\n<p>Distributed computation works by bending time. Groups of objects share local virtual clocks that timestamp their messages. A form of distributed deadline scheduling is used to sort out the messages into a globally serialized computation that does not violate causality or consistency. A 2-phase commit algorithm is used to limit how far out of step things can get, triggering rollbacks and retries as needed. The details of exactly how this works have not yet been published, and appear to still be under development. David Reed\u00e2\u20ac\u2122s speech was frustratingly vague and abstract. I am a little worried by the invocation of 2-phase commit, which is often ascribed powers it does not in fact have \u00e2\u20ac\u201c but that is another post.<\/p>\n<p>I find TeaTime fascinating because it is a mirror image of my own ideas. Instead of reducing state to behavior, I am reducing behavior to state. The heart of Subtext is a model of structural variation, wherein action is replaced by versioning of states. Both approaches work by stepping outside of time and bending it to task. I am currently extending my initial model of simple branching time to allow merging, which I hope will support full-fledged concurrency and distribution. It will be interesting to see whether the result turns out to be a systematic dual of TeaTime.<\/p>\n<p>Croquet and TeaTime are worth watching.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Croquet is a re-imagining of Alan Kay\u00e2\u20ac\u2122s seminal Dynabook vision.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[4],"tags":[],"class_list":["post-35","post","type-post","status-publish","format-standard","hentry","category-reviews"],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/pfEnU-z","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/posts\/35","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=35"}],"version-history":[{"count":0,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/posts\/35\/revisions"}],"wp:attachment":[{"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=35"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=35"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=35"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}