MindTouch takes a very different approach to software development.
Figure 1 provides a graphical depiction of MindTouch Deki's software architecture. MindTouch Deki is a composition of loosely coupled heterogeneous services that exist across networks. They share their behavior in a distributed and concurrent manner through the MindTouch Deki API and Dream (Dream is omitted for simplicity, see Figure 2). New functionality can be added in any programming language on any operating system executing on any server that communicates over any web protocol. In short, the application lives in the network. Rather than requiring adherence to a particular interface in a particular language, such as Java or C#, extensions only require adherence to a stateless web protocol. In essence, this is the wire implementation and the benefits are far reaching.
Let's take a more detailed look at the architecture of MindTouch Deki.
As mentioned earlier, MindTouch Deki is a wiki interface to a distributed application platform. Note the red box labeled "wiki interface". This is the user-interface client that communicates to the MindTouch Deki API (red box) over HTTP/S. The MindTouch Deki API uses Dream (yellow box) to federate and orchestrate functionality from other services, applications, and data stores, enabling MindTouch Deki to be used as an information bus across all of them. In essence, MindTouch Deki is the connective tissue within the enterprise.
Application behavior and data is surfaced to end users with the help of Dream and through the MindTouch Deki API. End users can create dynamic reports of data, composite applications -- sometimes called situational applications -- or data mashups. A site administrator approves the connections to applications, data, and services through an easy to use interface. End users can easily expose data and functionality to others without giving direct access to the applications or databases.