README.md 2.53 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
# netfarm: a distributed signed object store

This is Netfarm, a...distributed signed object store. Why did I write that?
It's just in the header. Anyways.

Netfarm is an alternate system which we believe is the "right thing".
Here's why we think it's right:

- it doesn't use nasty proof-of-work or -stake, which burn energy and
  imply bandwidth and storage are scarce resources. These centralise systems
  further, since the least people will hold the most tokens or hardware.
- it's actually distributed. Federation isn't much better than centralization;
  if your server goes down, you need to have another account to keep using the
  fediverse. Distribution has much greater fault tolerance.
- data is cryptographically signed. This allows for a proof that someone did
  write something without needing a central authority to identify them for the
  most part.
- data is represented as objects, instead of just values. This allows programs
  to perform type-checking, and data can be strictly validated. Additionally,
  "schemas", similar but not as powerful as classes, can be used to provide
  semantic meaning for machines to parse.
  
It's not too hard to install, let's give that a go.

1. **Install Quicklisp.** Netfarm requires a decent amount of libraries, and
   chasing them yourself isn't very fun or doable without a system manager
   (asdf) and system source (Quicklisp). You can download
   [the setup file](https://beta.quicklisp.org/quicklisp.lisp) and follow
   [the instructions for installation](https://www.quicklisp.org/beta/). It's
   very simple to install (just type some commands in a REPL)
   and requires no configuration.
2. **Download cl-decentralise.** Netfarm doesn't handle synchronisation itself,
   it uses a sibling library called `cl-decentralise`. You need to download this
   as well, perhaps [from here](https://gitlab.com/netfarm.gq/cl-decentralise).
   A nice trick is to clone it somewhere in `~/quicklisp/local-projects` so
   Quicklisp will find it, or you can symlink it in.
3. **Download Netfarm.** Similarly, you need to put Netfarm somewhere Quicklisp
   looks. You shouldn't need the URL since either you're looking at the README
   there, or you've already downloaded it, but it's obtainable
   [here](https://gitlab.com/netfarm.gq/netfarm).
4. **Boot up Netfarm.** Evaluate `(ql:quickload :netfarm)` in a REPL. If it
   didn't work, check you've done all the previous steps. If you have, it'd be
   great if you [created an issue](https://gitlab.com/netfarm.gq/netfarm/issues)
   detailing what went wrong.
   
Cool, what can you do now?