Peer-to-Peer Failed in Earlier Iterations, but now it’s Back for Good
Usability has been the enemy of Peer to Peer ever since the internet started.
Usability is key for the end-user adoption.
Think Windows/MAC vs Linux.
DropBox a brilliant example of masterful UI (not Peer-to-Peer). And then we have RSync basically the same thing but lacks Usability.
Alright, Skype was peer-to-peer and very successful. And yes, Bittorent too.
Peer-to-Peer is a lot harder to work with for two main reasons:
(A) No centralization=no control (we can argue this is good from a philosophical/privacy perspective).
(B) Hard to distribute software/carry out version updates.
Further reasons as to why Peer to Peer didn’t take off in the past
- The cloud: large scale distributed systems seemed to make more sense on the cloud at the time.
- No trustless digital currency. Mojo was a digital currency, but required trust — a huge component.
- Hardware didn’t make sense for a lot of use cases.
Why peer to peer will work now
- Usability has improved
- Computing has changed. Moore’s law: there are accelerating returns in computing and storage. More CPUs!
- Improved tooling and more use-Cases (not just copyright infringement)
- Trustless Smart Contracts (ie. Ethereum)
Current Atmostphere and Challenges:
Situation: There’s a lot more data, and it’s saturating bandwith. It’s not cheap. This is why companies move their data physically by hard drives, direct fiber, etc. Example: Amazon won’t take huge data sets over the internet.
- Challenge for P2P: Mass adoption. Example: Dropbox/Gdrive/Skydrive etc., all offer free storage. To make P2P storage systems financially viable, there would have to be mass adoption. Each new user that connects to the decentralized network represents a node with hardware infrastructure and one that improves bandwidth efficiency, forming a super node. Check out FairTorrent as a good example of this (also Storj and Sia)
Wait, but why did Skype change to Client-Server and Cloud Model?
Short answer: Scalability
With the increasing number of connected users at any point in time, the efficiency of P2P had been put into question, especially after two serious outages. The high volume of user nodes requesting service required more complex algorithms.
The client-server model is simple: every user is a client that connects to a Skype-controlled server to receive (request) service. This is a one-to-many dynamic, and many is a lot.
Skype owns these servers that they call ‘supernodes’. They control these nodes and set parameters they can handle (think of insane number of connecting clients).
The significant increase in the number of users from different and unserviced (at the time) platforms like iOS and Android made the use P2P more problematic.
Moreover, P2P required too much energy, and gobbled up too much expensive data. The client-server and cloud-computing model would hopefully solve all this.