Promise v0.1 Demo
I recorded a brief (4 minute) screencast of the promise service in action as of today. This is a sketch of a public contract/promise system in which participants can create custom contracts, assume roles within those contracts, sign them, and comment on them. The idea here is that each user then establishes a set of contracts, and implicity a set of contractual relations. Since the contract expresses a relationship between a set of individuals, and information about the contract, such as dates or tags or comments, are then also applicable to the participants in the contract. It is a potentially rich, dense network. It breaks beyond social networks like myspace or facebook or friendster, because these relationships are flexibly and arbitrary, and there are expectations and requirements, more like real life.
While there are no breakthrough technologies here, I think the idea of social promises, agreements and contracts is new and worth exploring. Somehow the promise being out there, public on the web makes it more real than even a simple paper copy. There is an interesting feeling when I actually sign the thing and put it into effect. My role within the promise goes from being undoable to… fixed. Sort of scary, but powerful too. It reminds me of the first time I bought something online, when the idea was so weird and new but the actual act was fairly straighforward. There is something to this, some kernel that is worth pursuing. It’s a simple action and simple technology, but with potentially complex social ramifications.
From here there are a few easy-ish add-ons that could enhance this system and make it seem more relevant. A web service API, with URI-based identification (like open-id), would allow sites to automatically set up their community members in contracts. Also syndication and RSS/Atom feeds would make it easy to monitor contracts and promises as they happen, including creation of new ones, addition of comments, signatures and breaches. Feeds could also be used to monitor users’ participation in promises. The more public we can make this data, the more weight the binding of the participants to their roles.
One challenging problem is to find the language to express these human relationships, which are complicated enough individually, and extremely intricate collectively. As I’ve often thought before, and as John actually brought up today, law is the ultimate programming language. It is the language for expressing human systems, social, political and economic. Capturing the elements of legal language in this contract system is hard. I’ve ranged in my approaches from full programming languages like Ruby (similar in spirit to Sussman and Hanson’s scheme law system) to something like what I have in this demo, which is natural language with a few placeholder variables. Burak had a few nice suggestions for wiki-like group editable contracts, and John had some intriguing thoughts about tapping a little more into some simple language processing, a la Zork. (similar to Hunt the Wumpus, which I fondly recall from my cs106 days). The vision of interactively, socially constructing these agreements is a good one. Looking forward I’ll see what I can do by revisiting the text interface, with an expressive but compact vocabulary and instantaneous, visual feedback.
