+@node Jobserver
+@unnumbered Jobserver
+
+Parallel builds are made by utilizing the jobserver protocol. Each job
+have to take so called token and return it when it finishes. Jobserver
+creates the pipe, consisting of read and write files, that are passed
+to each @command{goredo} instance. Job takes the token by reading the
+single byte from that pipe, writing it back for returning. Pipe is
+pre-filled with required number of tokens.
+
+@command{goredo} can be integrated with
+@url{http://www.crufty.net/help/sjg/bmake.htm, bmake} and
+@url{https://www.gnu.org/software/make/, GNU Make} (@command{gmake})
+jobserver protocol. All three of them use the same principle of
+jobserver, but different ways of passing pipe's file descriptors
+numbers to child process.
+
+@env{$REDO_MAKE} environment variable controls the compatibility behaviour:
+
+@table @command
+@item bmake
+Pass @code{-j 1 -J X,Y} arguments through @env{MAKEFLAGS} variable.
+@item gmake
+Pass @code{--jobserver-auth=X,Y} arguments through @env{MAKEFLAGS} variable.
+@item none
+Pass @code{X,Y} arguments through @env{REDO_JS_FD} variable.
+Used by default, if @env{$REDO_MAKE} is not set.
+@end table