Download Cache
As the Gnutella network grows the amount of available clients to download files from decreases there need to be a built in system to compensate for this. Besides the fact that everone should share there files.
The solution that I see is that of an upload cache on each computer that will store a certain amount of hard drive space that can be allocated to store the most used files on the network. The Gunetella client monitors the push requests coming past the computer to figure out what files are the most requested. When the user of the computer goes idle and the computer processing and bandwidth are not being taxed the client can search for the most requested file. The client could reach out and download the file. Once the file has been downloaded into the cache that file could then be shared.
If this system was to be implemented then there would have to be safety algorithms to protect the client, and bandwidth of the user. The first problem that would have to be addressed is the problem of all the clients on the network downloading most requested file on the network while ignoring the second third fourth and fifth most downloaded files and so on. This could be solved by when the client send out a search request to find clients that contain the file to download from, the client can count the number of clients that already hold that file that is searching for. If the number is deemed large then that file would be skipped and it would move on to the next file. The second way to combat this problem would be that when an automatic cache download is requested that it only request it directly instead of through a push request. This would keep the other clients on the network from would confuse the automatic cache download instead of request as an actual user downloading a file.
I think the other value that must be calculated is the maximum single file download size should be controlled by the size of the bandwidth. This would protect the modem user from downloading a 100 megabyte mpeg. The maximum file size that should be downloaded is by the available bandwidth subtracted by the bandwidth that Gnutella network uses to keep the client function properly on the network. This bandwidth should be multiplied by approximately 10 minutes. That way if the user returns and the file is downloading or uploading it would not monopolize the user bandwidth for an extended period of time but would always be within 10 minutes of being done(10 minutes is a arbitrary time, it may need to be increased or decreased to find optimum performance.) This statement is true unless you have a low speed connection downloading from a high speed connection. Under these circumstances it would not be unobtrusive due to the fact the user still has bandwidth available. There are already is maximum upload speed built into most clients (This should be suspended if the computer is idle.)
The next problem to be implemented is that of cache filters. There are many people that would be offended if there computer hosted adult material for other people. There would have to be an adult filter on due to this. Also the user could state if he did not want to store programs or music on his computer. Maybe a keyword filter could be added to for more flexibility.