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 (OSS) 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.