hi,
our client is still beta (but RealBigSwede asked me to tell about).
For beeing sure I can post here, I scaled back the development of GPU today to alpha ;-) No, the reason that GPU goes back to Alpha is that a new Delphi developer who joined the Open Source project today criticised the code because of its lack of object orientation. And his critics is constructive, because he now works on an UML analysis for getting source code which will be more readable. Thank you Daniele, this should help other developers in joining the project.
Another reason that our client scales back to Alpha is that after adding the GWebCache system, I noticed that slabpc181.ethz.ch, a host at the university reserved "abusively", crashed after 2 hours online. I could see it because GPU writes every two minutes an entry in the debug.txt file.
The integrated chat system should work fine, but at the moment only two people exchanged something over the gnutella transport layer. Me and Zillion Zhang, the project manager, talked together separated by a distance of about the half of the world. I live in Switzerland and he lives in China!
how the chat system works? we use the following system, we send out a search for files, that begins with 'CHAT:' , followed by the username and then the message, spaces are converted to '_'.
how are you? becomes a search string for files like this
CHAT
angermouse:How_are_you?
Of course if our client should become popular (more a dream than reality), the other clients will have to filter out search files that begin with CHAT:.
Nice to see how sometimes robognutella clients answer to the chat entries in the download window page: when you download their files you see that it is always the same rubbish. They just rename the same file again and again with the exact name of the file request. Hackers can track the host IP of this roboclients with GPU and let's say once that a nice Denial of Service to that people would be gained.
With Zillion I exchanged also computational tasks, I asked his computer in China to compute 1+1 (the notation we use in GPU is the polnish notation 1+1 becomes 1,1,add) and I got the comfortable answer that 1+1 doesn't sum to 3, but to two, also in China. In fact they have a long scientific tradition. He did the same, he asked my host to compute pi using the montecarlo method, which gives only an approximation of pi. The more packets you send out, the better the Pi computation becomes.
Another thing I did: I typed this command in GPU
{{1000000,pi},1,sj}, 9, rpt
this means send out the job with ID 1 to compute pi with montecarlo using 1000000 throws nine times.
I clicked the Compute locally button and I got nine results from the computer in China. I could see that the average of Pi became better the more packets came back. The standard deviation of the results went down to 10 ^ -5, which means I got the first 4 digits of Pi correctly.
Then I added 60,sleep,avg[1] to the packet:
{{1000000,pi},1,sj}, 9, rpt,60,sleep,avg[1]
This time I clicked to the Compute globally button. The client in China got the packet, executed it and send back to me nine {1000000,pi} packets. My client in Switzerland computed them, sending back the results to China. After one minute (60,sleep) the GPU in China sent back the average of the results (avg[1]).
At the beginning we had also lot of hosts sending rubbish to us: if GPU goes out of syncronization, it just disconnects the evil host without compliments.
The download system seems to work: I started the download of nine music files (Jewel is phantastic!). When I came back I noticed GPU wasn't there anymore, but at least there were 8 files in the download folder.
Another important thing to say is the following: DON'T DOWNLOAD our client because the file upload system is still not implemented, we hope to do so in the next 3 or 4 weeks. The reason it takes so long is that (many of us are in holiday, else it would take a week to get this. In fact Delphi has an integrated TWebserver component).
So a network of GPU would be just an egoistic network where all want to download and nobody wants to share.
So here the description of GPU v0.63b
file upload: not implemented
file download: works sometimes.
small feature: we filter out search requests with local IP addresses. From this clients you'll never download anything
Hosts sending back results can be seen.
Chat system: can be disabled
never give out your credit card number ;-)
Cache system: GWebcache, although sometimes I am not so happy with this cache. Perhaps the code nees some review (perhaps???)
CPU share system: can be disabled
one local thread, three threads for computing jobs from network.
Documentation will come to document all commands and to explain to developers how to write plugins. We could beat
http://distributed.net in the search of the optimal Golomb ruler with 24 marks. Theoretically we could offer the same service Seti@home does. There is lot of data from radiotelescopes and satellites to be analyzed. I know from one Swiss-U.S. telescope that watches the Sun, I was doing my semester work there, but then I had some trouble with the boss, because he suspected me to be the hacker who deleted the whole database of the satellite. They didn't have backup copies because the satellite sent back twice the size of the expected data. I am more a scientific student, I don't know enough SQL for doing this. So I left the project and started the GPU project, and professor W. accepted the semester work and encouraged me.
To come soon: Upload system, Ultrapeers, Handshake 0.6, documentation, strong structured source code using patterns, golomb ruler plugin, signing of plugins using zero knowledge proofs for avoiding abuses, other plugins.
To come later: perhaps a SQL database distributed over the gnutella network, perhaps a secure voting system using homomorphic functions.
Thank you for any comments, feature requests, ideas, criticism at the forum of the GPU project site.
And sorry for writing so much, it's yet another gnutella client.
Dangermouse
Open source project site
http://sourceforge.net/projects/gpu