Spectrum sharing arises whenever multiple wireless systems operate in the same frequency band. Due to mutual interference, the performance of the systems is coupled and tradeoff occurs between the rates that can be simultaneously achieved. The fundamental characterization of this tradeoff is given by the capacity region of the interference channel, whose determination is an open problem in information theory. For the case of the two-system Gaussian interference channel we provide a characterization of this capacity region to within a single bit/s/Hz. This characterization is obtained by deriving new outer bounds, and by using simple communication schemes that are special cases of the ones introduced by Han and Kobayashi. In addition, we consider the problem of incentives in spectrum sharing. Systems are often independent and selfish. We investigate whether efficiency and fairness can be obtained with self-enforcing spectrum sharing rules that do not require cooperation among the systems. Any self-enforcing protocol must correspond to an equilibrium of a game. We first analyze the possible outcomes of a one shot game, and notice many inefficient solutions. However, since systems often coexist for long periods, a repeated game is more appropriate to model their interaction. In the repeated game, the possibility of building reputations and applying punishments enables a larger set of self-enforcing outcomes. When this set includes the optimal operating point, efficient, fair, and incentive compatible spectrum sharing becomes possible. We prove that our results are tight and quantify the best achievable performance in non-cooperative scenarios.