kappa-db / workshop

let's learn how to write peer-to-peer applications in javascript!
https://kappa-db.github.io/workshop
71 stars 26 forks source link

kappa architecture workshop

by (in no particular order): hackergrrl, okdistribute, and mafintosh

A small series of workshops to introduce kappa architecture and how to build p2p programs with modules like hypercore, multifeed, and kappa-core.

What is "peer-to-peer"?

Most networked programs you use are probably using centralized or client-server model. Under this model, one machine is a trusted authority (server), and every other machine is a relatively untrusted member of the network (client) that relies on the server for coordination, authentication, and authorization.

In a decentralized or peer-to-peer model, every peer is an equal authority in the network. Examples of peer-to-peer (p2p) procotols include bittorrent, bitcoin, or tor. Since there is no central source of truth or power, this tends to lend itself to some powerful properties:

  1. generally, these services cannot be shut down by external forces, since eliminating any one peer will not take down the rest
  2. generally, these services work well offline, since the full dataset tends to be stored on every peer
  3. generally, these services lend themselves well to collective ownership, since it's difficult for any one peer to force authority on other peers
  4. generally, these services tend to scale very well and very cheaply: the more popular data is, the more efficiently it can be found & shared

Peer-to-peer networks have some challenges as well:

Some folks have been throwing around the confusing term "serverless", which is misleading, since it's still centered on using another company's servers to control the networked system. Peer-to-peer programs continue to work in the absence of servers.

Is this production-ready?

Yes! From researchers in universities all the way to the remote reaches of the amazon rainforst, people are already using the tools you're learning in this workshop. Check out http://hypercore-protocol.org for an up-to-date list of those who use these applications.

OK, I'm ready

Get started

License

CC-BY-SA