First of all, people have to understand why successful projects are started and what kind of person tries to start a project. Doesn't it seem easier to work on something that is already being started? If you actually have some skill, then yes, because people want you to volunteer to work on their project. Most open source coders are very happy to have bugs fixed. If however, you are incompetent, and your code looks like something a junior high school student would write, spaghetti code with memory leaks, then you will not be able to get on an open source project that is already highly successful. The better coders will tell you to read the fine manual or other less friendly terms.
As a result of this, the incompetent coder does not get his or her stuff in the project that is already successful. Where they go from there, however is another matter. Many just decide “hey I suck” and go work for Microsoft, play proprietary games, or “volunteer” for proprietary projects, such as being a windows beta tester or volunteering to write a manual for a proprietary game manual and giving the copyrights to the company.
A small minority of the people who end up being told that their code (or artwork or music) sucks, decides that they are right, and everyone else is wrong. They then proceed to ignore or fork the project, and start a totally new and “better” project knowing that eventually, everyone will see how great they are. Most of the time, they suck too much to pull this off. Either they lose interest, or they are just too stupid to learn. The dead project sits around sourceforge taking up space, and no one uses it because it is in pre-alpha, the code doesn't work, and the developer hasn't updated it in years.
Occasionally, however, the monkey pounding at the keyboard produces the open-source equivalent of hamlet. Whether this is from sheer ego and stubbornness, or actually having enough skill to make software that is actually usable I am uncertain. Perhaps due to the stubbornness, they eventually create something worthwhile. The successful projects sooner or later attract other developers, who come to the egotistical keyboard monkey and say “Hey, I can do this better than you.” Now the monkey has a choice, either the monkey can keep an empire of one (or two, or however many idiots the project started out with) or have a better project. The successful projects chose the later route.
The next developers that join the project tend not to be very good, although they have to, by definition, be better than the original monkeys that started the project. They too have big ego and lack skill, but fortunately for us not as much as the original founders. These people, in turn, attract new developers who say “I can do better than these slightly talented monkeys. Now the second layer of monkeys have a decision to make. Either they can let these new, better developers on the project, or they can shoo them away. Now, this is a harder decision, the new monkeys will never let someone who they think is worse then them on the project. The simple reason is this, the original boss monkeys left them in charge of part of the project, it has to get better, not worse, so they only have people working under them who are better than this second later set of monkeys.
This continues down the layers of management depending on how large a project gets, it could stop here, or it could potentially go down hundreds, even thousands of layers. And this explains essentially why it is always mean, egotistical incompetent people who lead these open source projects. It wont' change, because it is hardwired in the fundamental human nature.