, then Freenet
. Wham! Bham!
Any network geek will tell you that peer-to-peer networking fails above a certain scale because of the bandwidth eating property of the nodes-linking-all-other-nodes model (think nodes arranged in a circle with lines drawn to every other node. Is that like a degree 2 polynomial or something? I dunno.).
Still, the idea of decentralized networking actually working - well, kind of, in the case of Gnutella - really surprised me. I figured it would be pretty easy to communicate securely and reliably over Gnutella by using pre-arranged secrets to encrypt data (of course, the secrets cannot be told over Gnutella, they must be exchanged in a trusted manner). The trouble is that Gnutella fragments as a way of coping with increased usage. Hmm. So much for point-to-point communication.
I suck at networking theory. Maybe I'll read up on it some day. It seems that it'd be cool to delegate responsibility and award trust within Gnutella somehow, to nodes that have been proven reliable and trustworthy. This would add benefits of traditional networking, basically constricting broadcasts to relevant areas. Trust is key; it must be awarded carefully, and it would need a prearranged network of secrets or trusted associates. However, it would maintain the decentralized nature of Gnutella.
Then once you have trust, nifty features we've all come to expect from networks can happen, like name resolution, routing, intelligent routing (path caches, etc.)
Implementing a trust model sounds like an interesting project.
Oh, yeah. Is anyone but me struck by the fairly remarkable fact that the nodes that comprise Gnutella can't be power-cycled without destroying the network? This is a property of organic brains too.