I am a fan of BOINC, which uses distributed computing to solve massive problems (some very serious, like finding a cure to certain types of cancer, others more abstract, like finding prime numbers).
The problem however is ease of use and distribution. You have to (a) know that this software exists and (b) know how to download and install it.
An other option would be to use a platform which is already widely distributed to make the delivery easier. Some of the options would be:
- Flash – version 10 has a JIT compiler for the ActionScript part
- Java and Silverlight 2 – they have more advanced JIT compilers, but are not as widely available as the first two options
There is some performance loss when we compare these technologies to native code (up to 90%), but we have at least two factors working in our favor: we can work on a large scale and the performance of these technologies will improve in the future.
Now, it is not all rosy:
- The computation performed by a single person is very limited, especially if the business model is to place the code on webpages, because the time spent on a webpage is small. This means that the task must be such that it can be chunked up into very small pieces
One company which is making a play for this market is Plura Processing (see also their blog). Disclaimer: I have no relations with the company, I just found their idea interesting. From what I understand, they use Java for the processing part and target pages which have a longer “stay-time” (like pages containing Flash games) and they have a revenue-sharing model with the webpages who embed their applet. Cool!
Picture taken from Shahram Sharif's photostream with permission.