  The projective space of order $n$ over the finite field $\Fq$, denoted here
as $\Ps$, is the set of all subspaces of the vector space $\Fqn$. The
projective space can be endowed with distance function $d_S(X,Y) = \dim(X) +
\dim(Y) - 2\dim(X\cap Y)$ which turns $\Ps$ into a metric space. With this,
\emph{an $(n,M,d)$ code $\C$ in projective space} is a subset of $\Ps$ of size
$M$ such that the distance between any two codewords (subspaces) is at least
$d$. Koetter and Kschischang recently showed that codes in projective space are
precisely what is needed for error-correction in networks: an $(n,M,d)$ code
can correct $t$ packet errors and $\rho$ packet erasures introduced
(adversarially) anywhere in the network as long as $2t + 2\rho < d$. This
motivates new interest in such codes.
  In this paper, we examine the two fundamental concepts of
\myemph{complements} and \myemph{linear codes} in the context of $\Ps$. These
turn out to be considerably more involved than their classical counterparts.
These concepts are examined from two different points of view, coding theory
and lattice theory. Our discussion reveals some surprised phenomena of these
concepts in $\Ps$ and leaves some interesting problems for further research.
