This paper considers a dynamic model of the evolution of open source software projects, focusing on the evolution of quality, contributing programmers, and users who contribute customer support to other users. Programmers who have used open source software are motivated by reciprocal altruism to publish their own improvements. The evolution of the open-source project depends on the form of the altruistic benefits: in a base case the project grows to a steady-state size from any initial condition; whereas adding a need for customer support makes zero-quality a locally absorbing state. We also analyze competition by commercial firms with OSS projects. Optimal pricing policies again vary: in some cases the commercial firm will set low prices when the open-source project is small; in other cases it mostly waits until the open-source project has matured.