Flow is a tool that allows you to connect to a Peer-to-peer network of people who are willing to donate spare CPU time, for you to execute expensive computations that you could not afford by yourself. Because we believe in equality, when you connect to Flow, you donate you spare CPU time so other people in the network can use it as well.
The main inspiration for developing Flow are projects like World Community Grid or BOINC. In scientific computing, platforms like these allow you to compete with projects that need to be run in supercomputers.
At this early stage, Flow is not able to compete with those projects, but if you are sitting in Starbucks with your friends, it would be fun to be able to distribute your computations.
We suggest using the gb
tool:
gb vendor restore
gb build
To run Flow, you use bin/flow
.
The Flow interface looks like this:
Flow v0.1.0
Press Ctrl+C twice to exit
flow>
You have the following commands:
inspect
: Gives you the peers Flow has detected automatically. Seeeval
.usage
: Returns your current CPU use (as a percentage).eval [filename]
: Evaluates your code in an available machine in the network.eval
automatically detects peers and chooses one for you.
Currently, we are using a Lisp implementation that is native to Go, zygomys, as the language you can run using Flow. In almost every aspect it's normal Lisp code. Please refer to the language for the subtle changes.
For example, you would have
; mycode.zy
(+ 40 2) ; Or the answer to life the universe and everything
inside you file, and would run:
flow> eval mycode.zy
42 # the answer to my computation
Press Enter to continue...
Other people using Flow send you a "usage"
request to know what your CPU usage
is. If it's lower a fixed threshold, then Flow can pick you to execute their
code. It runs in the background and you would never notice it.