I usually just build something I want to make, then extract the reusable parts into open-source projects. Or if I end up using an open-source library, I send them bugfixes or features that I need.
edit which is not to say there's something wrong with joining an existing project, this is just another way.