  Storage codes are used to ensure reliable storage of data in distributed
systems. Here we consider functional repair codes, where individual storage
nodes that fail may be repaired efficiently and the ability to recover original
data and to further repair failed nodes is preserved. There are two predominant
approaches to repair codes: a coding theoretic approach and a vector space
approach. We explore the relationship between the two and frame the later in
terms of projective geometry. We find that many of the constructions proposed
in the literature can be seen to arise from natural and well-studied geometric
objects, and that this perspective gives a framework that provides
opportunities for generalisations and new constructions that can lead to
greater flexibility in trade-offs between various desirable properties. We also
frame the cut-set bound obtained from network coding in terms of projective
geometry. We explore the notion of strictly functional repair codes, for which
there exist nodes that cannot be replaced exactly. Currently only one known
example is given in the literature, due to Hollmann and Poh. We examine this
phenomenon from a projective geometry point of view, and discuss how strict
functionality can arise. Finally, we consider the issue that the view of a
repair code as a collection of sets of vector/projective subspaces is recursive
in nature and makes it hard to visualise what a collection of nodes looks like
and how one might approach a construction. Here we provide another view of
using directed graphs that gives us non-recursive criteria for determining
whether a family of collections of subspaces constitutes a function, exact, or
strictly functional repair code, which may be of use in searching for new codes
with desirable properties.
