1) Someone has a "notion" (eg. Web Sockets)
2) Look to see if there is already a project similar ... if yes ... end and join that project
3) The moment you start to write a line of code ... create a Github project and post a 5 minute story on your notion as a new thread in the "in-flights project" forum. Now anyone who has a similar notion can find you.
4) As time passes you may find additional collaborators.
5) If you decide that your project is not going anywhere, you hand it off to someone else or post back to the forum that you are abandoning any further work.
This seems like no commitments on anyones part but yet still achieves visibility of any work started (no matter how small and light or big and meaningful). Where conflict will arise is when there are two visions for a design of a notion ... and then there will already be a thread in which the competing visions can be brought to the community ... a case for each made and the community can decide. Ideally, everyone will be "sensible" about the outcome and no-one will take their toys and go home. Where there are multiple visions that differ so dramatically, then the differences should be so pronounced that there may well be room for two distinct implementations ... perhaps even continuing to share common aspects .... for example if I have a "notion" for a C compiler and you have a notion for a C compiler we might both end up implementing different C compilers but agree to collaborate on the C preprocessor.
It never has to be all or nothing.
Neil