I am working on a project, currently by myself. It's a side project, I'm not expecting to make money on it. It's posted on GitHub, and I'm going to be building a project page for it.

Once it's built, how do I get other programmers to want to contribute? I am checking in code constantly, but no other contributors makes it hard to continue on my own. The whole purpose of me releasing it as Open Source was to get other contributors who know more about programming than I do.

I've voted to reopen this because after some time on the site, it seems many of our questions are of similar scope and are getting answered well. It seems we can tolerate a higher level of broadness than many other sites.
– ArtOfCode♦Jun 25 '15 at 16:17

2

@ArtOfCode suggest you put that on meta then as currently the answer there (currently +10) is to close it.
– derobertJun 25 '15 at 21:19

6 Answers
6

There are a lot of things that you can do to get other programmers contributing to your open source project.

Make the project useful for others

I think most programmers would like to contribute to and improve a project that involves something that is useful to them. It doesn't have to be something for only programmers, but if the project is something that would only be useful to a few people, then other programmers who it isn't useful to probably won't want to contribute to it.

Write good, well-structured code

Messy code might deter programmers away from contributing. They can probably understand most of it pretty quickly, but actually adding to and improving it is a lot harder. Of course, this is something you should always do, but I think it is especially important if you are trying to work with others.

Ask others to contribute

It can never hurt to ask specific people you might know to contribute. There has been a number of times when I've asked someone here on Stack Exchange (usually Stack Overflow) if they want to work with me on a project. Many times, a project will catch fire as more and more programmers start contributing. You can start that with just asking one or two people to help.

Advertise your project

There are many ways that you can advertise your project to try to get others interested in it. This can be done many different ways. If you have a blog, blog about it. Post it on Google+ or Twitter or some other type of social media platform. Talk about it on websites like SE or sites similar to it.

Build a community

Eventually, you're gonna want to have your open source project become a community. As mentioned in other answers and in the comments, Community Building SE is a great place for questions on how to build a community. As the first programmers start to contribute to your project, you'll probably need to be the leader of your community (improve the project, fix bugs, etc.), but as more and more contributors come along, the community will start to build itself. You can also use the project page you mentioned as a forum for the community. I would also suggest possibly doing a chat room. Who knows, maybe if the community is big enough, it will build those stuff itself.

Supposing your app is nice and could be some day a popular one, I recommend the followings:

Choose a nice name and description

Choose a name which has not been taken by anyone else before. The shorter it is, easier to remember. Also, it should describe somehow what your app does. Same goes for description: short, good, easy to remember and describe what the project does.

Write a nice README file

The user saw your project somewhere and the name was interesting for him/her.

Sure, if you want to get popular, build something great. Something that didn't exist before. Build tools you need. Do you need an artificial intelligence to do some stuff? Cool. Probably others need that too. Do it. Publish it. Share it.

You will get stars, you will get issues, pull requests, contributions!

This works in much the same way that attracting users/a community for other things does.

You might want to look at, as suggested in the comments, Community Building, which has some advice about drawing and keeping communities.

The essential part is to be seen to be engaged: if you're not interested in your own project, why should anyone else be? Keep contributing your own commits and new features to your codebase, and others will see that it's active.

You should also promote it wherever possible: if you can, use social media to reach other people. There are groups for programming related topics on many platforms, including Google+ and Reddit. Always be mindful of their community rules though - if they don't want you recruiting, don't do it.

'Insert some bugs' -> this sounds stupid, but it might actually give the incentive to some people to contribute to your project.
– MnementhJun 23 '15 at 18:58

2

And it happens eventually, by accident. That's how I ended up a committer on at least one OSP - I needed the bug fixed
– kdopenJun 23 '15 at 19:00

Inserting bugs can also detract, sometimes if a project has low code quality it makes it less appealing to become involved. Instead you could have experimental features, or include areas that need work - so others have a place to start (without making the existing developers look incompetent and breaking the software for users).
– ideasman42Nov 7 '15 at 4:54

IT's amazing how many people have commented on the "Insert some bugs" line, without noticing the "in jest" disclaimer :)
– kdopenNov 7 '15 at 21:45

You should have proper comments in source code and documentation for internals. Absence of such sucks the fun out of contributing. Yes, most professional developers are fine reading other's source code. But if there is a "what's going on inside" page somewhere, contributing gets a lot easier. The topics that could be covered there are

How to setup development environment?

What's responsibility of your software, exactly?

What's the folder structure of your project?

What are internal APIs?

When do you think a new source file should be created?

Why have you chosen to implement APIs in the way you did it?

Which ways to extend your software are most popular? Templates, please!

Is there any other projects that do the same thing?

Let the potential contributor understand that you're interested in it. Make him think about the project like you do. Think of it like an author of online game. Count the people on the steps from opening the page of your project first time to contributing. Unless you decide to track with some analytics software, you can compute the numbers roughly.

How many people know that your project exists?

Will anyone know you have documentation for developers?

Will everyone understand how to compile your project from sources?

Will (s)he find the required place in the code?

How long will contributor wait until you answer his questions?

Will the change be useful for other users enough, so that you'll accept a PR?

Will the contributor be sure that his change didn't break the code?

Headhunting maintainers is a perfectly predictable process. More people in, less people out, here you are: a contributor.