It basically takes strong leadership, preferably from one person or a (very) small group of people.
Look at GNOME these days. They are rudderless and mostly because they have absolutely NO leadership either from community people or RedHat (GNOME is basically RedHat). They are dying slowly.
Look at the Kernel, though. Linus controls it, sets the tone (often harsh!) and it hums along.
Look at Ubuntu. People may hate the direction, but Mark runs that show and they people know what they are doing and where they are going.
IMO, the idea that the community will govern itself has never held up. Communities are formed around ideas or interests, but are led by people (leaders).