  Linear optics with photon counting is a prominent candidate for practical
quantum computing. The protocol by Knill, Laflamme, and Milburn [Nature 409, 46
(2001)] explicitly demonstrates that efficient scalable quantum computing with
single photons, linear optical elements, and projective measurements is
possible. Subsequently, several improvements on this protocol have started to
bridge the gap between theoretical scalability and practical implementation. We
review the original theory and its improvements, and we give a few examples of
experimental two-qubit gates. We discuss the use of realistic components, the
errors they induce in the computation, and how these errors can be corrected.
