My father David, a retired engineer, recently asked me the following question:
OSS seems to invite it's devotes to do their own thing and often that is a recipe for disaster
At first blush this would seem to be a potentially huge problem, however in practice this is not the case. The potential for such splintering comes from two possible sources
  1. Members of the development project. In the first instance they can fork the whole project and take it in a completely different direction. In the second instance they can make changes and distribute them outside of project release mechanism. Karl Fogel discusses project forking in his excellent book Producing Open Source Software and shows how it's a moderating power for good because it forces a consensual style of management. Similarly there is usually little motivation for developers to release patches from outside the project as it much harder to get users to accept them or receive the recognition for the contribution from the user and developer community (the release of experimental patches is a recognised exception to this of course and it widely used in the Linux kernel). Developers who which to work outside the project mechanism for obvious reasons of vanity and ego are usually felt to have little to offer anyway and so get ignored.
  2. Customers using OSS products can make modifications and customisations as they see fit. This of course is one of OSS' major selling points -- you can make whatever changes you need to and are mistress of your own destiny. However any organisation that offers OSS support contracts will have caveats about not supporting unknown customisations. Is is not usually in customers interests anyway to stray too far from the core project as it makes taking new features and fixes from the original team much harder.
So basically it works because it is in everyone's self-interest and the trouble makers get ignored. Does that answer your question Dad?