One of the biggest problems with open-source seems to be that there is no 'final product' so to speak, as the software is continuously being improved and modified. This may not be suitable or desireable for many users. And then there is the question of whether you can successfully develop the basic design into a coherent and stable operating system, though Linux is a hugely promising example. Finally, if the developer loses interest in the project, the project dies. When programmers on the Internet can read, redistribute, and modify the source for a piece of software, it evolves.
People improve it, people adapt it, people fix bugs.
And this can happen at a speed that, if one is used to the slow pace of conventional software development, seems astonishing. We in the open-source community have learned that this rapid evolutionary process produces better software than the traditional closed model, in which only a very few programmers can see source and everybody else must blindly use an opaque block of bits. Another advantage, is the tests that software is continuously undergoing. The software is applied in the field, changed, and again applied in the field. This is less likely to result in bugs in the final product of the software.