Mind Touch and the Dream Framework

by Miguel de Icaza

A few Mono contributors went to work and consult for a mysterious company a while ago, and this week we finally found out where they had gone.

They went to MindTouch, an open source startup company that sells an appliance for document management, using a Wiki framework. The press release is here.

They created a framework for building web applications, the dream framework. It is mostly focused on the back-end side of things. The framework allows developers to easily create REST services, with a number of interesting features:

MindTouch Dream is a REST-based distributed application framework developed in Mono/.NET. With Dream, a Web service is similar to an object, and features interact through standard HTTP verbs. This design allows the developer to assume an "idealized" world where everything a service comes into contact with is accessed through Web requests. The Dream service library addresses common problems, and the Dream runtime orchestrates all interactions without requiring a Web server to be pre-installed on a target machine.

MindTouch Dream manages all the complex aspects of interactive web services, such as providing storage locations, database connections, event notifications, automatic data conversion from XML to JSON and short-circuit communication for co-hosted services.

And they ported MediaWiki to run on top of this framework, this port is DekiWiki. It differs from MediaWiki in that they have a GUI designer for the page, it is quite nice. You can see it in action here.

I am told that they are porting the entire MediaWiki to C# as well.

Aside from the high-level descriptions, there are a couple of interesting bits about Dream, the framework and applications are designed assuming that network connectivity could go down at any point, that the network will likely fail. A focus on making fault tolerant applications.

Currently Dream and DekiWiki run out of the box with Mono, for installation instructions see this.

I told Urs that I would migrate www.mono-project.com to it, but it first has to be ported to C# ;-)

Posted on 27 Jul 2006