Fida is a template for building independently distributed applications. The Fida package is built upon the Mithral client/server library and is designed to simplify the building of simple distributed applications across multiple platforms.
The purpose of fida is to make it possible to make use of the large amount of idle cpu time on pc's which are connected to the internet. There are many applications, particularly in science, which can be broken up into independent pieces. If these pieces can be sent to idle computers, the whole calculation can be done faster. The canonical examples of this type of distributed computing can be found at distributed.net and seti@home. A good resource of distributed computing projects is Kirk Pearson's site.
There is a substantial barrier to writing these kind of applications for the average scientist who might still be writing code in Fortran 77. Fida was written to bridge this barrier. The user has to write a set of functions which conform to the fida architecture. These functions can be thought of as a module which contains only application code. This module has functions which tell fida what to do when a client gets a work packet for example, and what kind of data should be returned to the server. All of the communication is done by the fida framework.
The ease of using fida comes at the price of adapting to the framework. Fida is structure around a typical scientific calculation. The calculation is started on the server. Any initialization for the calculation is done here, at which point the server waits to hear from clients. Clients initiate the distributed calculation by contacting the server. The client first checks to see if it has the right application module and updates this if it does not. There is an optional security package with fida that can be used to sign this module to make sure it originated with your server. Next clients get a work packet which consists of an array of numbers. It is up to the application module to determine what should be sent from the server and what the client does with the data. Once the client is done its part of the calculation, it contacts the server again to return its results in another array of data. This continues until the server decides that the calculation is done. A limitation of the fida framework is that the server can not initiate communication with clients, and clients can not communicate directly with other clients.