In this model, multiple entities come together to develop a software product. Generally the initial development is done by a single entity as in the in-house and contract development paradigm, and the software is released to the public as soon as it is useful to others, generally before it would be considered a finished product and thus much earlier than a retail product would be released. Once the software is useful, other entities make use of it. Only when the software becomes useful to others does the open source paradigm work fully, because only then will other parties have an incentive to use the software. Once they are using the software, these other parties will have an incentive to extend the software to implement additional features that are of interest to them. This extension is performed by the customer's own employees or contractors under the customer's control.
The incremental cost of adding a feature is much smaller than the cost of the entire development. Parties that create modifications have an incentive to write them in such a way that they will be accepted by the other developers on the project and will be merged into the main body of source code that is shared by all developers. Thus, open source tends to foster a community of developers who make contributions to a useful product. The cost and risk of developing the product is distributed among these developers, and any combination of them can carry on the project if others leave. Distribution of cost and risk begins as soon as the project is mature enough to build a community outside of its initial developer.
Open source is developed directly by its end-users. For example, Apache web server features are added by the companies that need those features to operate their own web sites, or sometimes by contractors working for those companies.