Deciding to make someone a co-founder is a huge decision. You are starting a business with this person, and I suggest you really get to know someone before starting a business with them. Its easy to start a business, but its very difficult to see one through to success. The path is not easy, and although you can use something like the Github search to find candidates, I suggest you spend time working with someone before you go and start a business with them.
I'm seriously working on the co-founder matching problem (have been for several years now). I believe in a mix of offline (google "co-founders meetup" for a location near you), and online (my startup, http://foundrs.com will introduce another really new and innovative feature for co-founder matching hopefully soon - contact me if you want to be a guinea pig).
The other day I was thinking it could be fun to mine Github for developer personality traits. It could pull down their info and plot them along various axes, such as
* how much they follow through with projects
* how much they contribute to other people's projects and how much other
people contribute to theirs
* frequency of swear words in their commits
* How long they take to fix bugs
* What ratio of their pull requests are
actually pulled
* What's the average size/number of files
touched by each commit?
You might even be able to guess at development methodology by looking at whether branches are short-lived (feature branches), how often they merge, etc.
Oops/fixed. This was more a "hey @shazow, I was spiking out something similar a while back dusts off half-baked repo" thing than a "humans will actually see this" thing.
Github has always been a great place to find engineers to work for your project. I'm not sure about finding co-founders.
One of the benefits of meeting co-founders in the community/startup events/etc is that they are already putting themselves out there as entrepreneurial and co-founder material. They've already jumped through many hoops in their mind and (hopefully) have their domestic and personal situation suited to it.
I would hate to have this happen: I discover an amazing developer who is working on an open source project in my problem space, but has a full time job. I convince him to work on the startup with me and he quits his job. It later turns out he's not really cut out for startup life and he hadn't really considered it before until I tempted him with an offer. He went blindly into it and now it's all f'd up.
Now we have to part ways and his old job has already replaced him so he's screwed.
Eh, it's a good market to take those kinds of risks right now. Everyone is hiring, no one wants to be hired as they're doing their own startup, it's ridiculously easy to get a job—especially at startups.
I'd suggest going to local programmer meetups. This should be pretty obvious, but let me clarify that.
Most meetups are centered around a certain technology or language and this tends to discourage people who are working with different technologies from attending.
My advice : go anyway. Hackers are generally happy to meet other hackers, regardless of whatever they might be hacking on.
For talking with people it helps to do a bit of research into whatever the meetup is centered around and finding some common ground.
For example, say you're a Ruby coder doing web stuff and you can't find any group in your region that's doing Ruby. Find a Python, PHP or Perl group. There's a good chance that these people will be doing some web stuff too. That's a HUGE problem domain that you share. You can start on sharing experiences with session/state storage, databases, ORM performance and restrictions, test suites, logging, auditing, load-balancing, scalability issues, runtime bottlenecks, etc, etc. The list goes on and on.
Not everybody attending a meetup is a code freak. There are plenty of people who show up for, well, who knows why they show up. The beer and an excuse to leave the house maybe? Others might be recruiters scouting for talent. Some people are just there because they got dragged along with someone else. Talk to them, be polite and move on.
What you're looking for is fellow hackers. You'll know them when you find them.
I think Andrey's protip is one example of a good general strategy: Talk to people, even if you don't know them (yet). Most people are happy to help and even if they themselves aren't who you're looking for, they might be able to introduce you to someone else who is a good fit.
As an example, I'm happy to help any founders I can (particularly those in NYC). Email in profile.