The Flock protocol is specified in the two files flock.md
(the actual
specification) and flock_fsm.xml
a finite-state machine representation of
the specification.
Additionally, this folder provides a Makefile to generate
- a flow diagram visualizing the state machine
- a latex-style pdf of the specification
- a C-library implementing the state machine
The following packages are needed to generate the above:
graphviz, pdflatex, gsl
To install gsl
follow the instructions at https://github.com/imatix/gsl
Additionally, to make cross-references work, pandoc-crossref
is needed,
and for bibliography generation, pandoc-citeproc
is needed.
Unfortunately the first is a Haskell script and needs the Haskell platform to work.
However there are plans to include this feature in pandoc itself
(jgm/pandoc#813). Note that installing that filter
will also install pandoc through Haskell. Also note that when using cabal install
,
all programs will be installed locally per-user, so you might want to add
~/.cabal/bin
to your PATH.
Simply run make all-clean
to generate the above or make all
to keep all
intermediate output files (mostly latex related).
To only generate the diagram run make make-image
and to only generate the pdf
(with the diagram) run make make-pdf
.
To only generate the C-library run make make-code
.
The protocol in form of flock.md
and in form of flock_fsm.xml
, and the documents
generated by the Makefile are released under the GPLv3 (or later) license. See LICENSE.
The gsl scripts are released under the MPL 2.0.
The file acm-sig-proceedings.csl
is released under the CC-BY-SA-3.0 license by
the CSL project (https://CitationStyles.org).