36

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.

  • 3
    Meta question about if this should be closed as Too Broad or not (please weigh in to help shape the community): meta.opensource.stackexchange.com/questions/37/… – Canadian Luke REINSTATE MONICA Jun 23 '15 at 20:13
  • 4
    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. – derobert Jun 25 '15 at 21:19
31

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.

16

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.

Now, the next thing the user sees is the readme file. Write a good README.your_favorite_markup (e.g. README.md, for markdown).

From my experience I saw that making a nice heading image attracts the people.

Typpy -- nothing new: just a tiny library to get the type of a value in JavaScript. In this moment it has 10 stars on GitHub. That means that people liked it.

Create your own documentation format to write apps

I recently wrote an article on my blog about how to increase the productivity by using Blah -- a tool I have written. Blah generates documentation based on templates and project files.

Make the contributing steps clear

Here, Blah helps you again. You can write your user-level template for CONTRIBUTING.md and using blah -c you generate the CONTRIBUTING.md file.

Tell the world what you did

Share your work on websites like Twitter, Hacker News, Reddit etc. It really helps. Got retweeted by a bot? Cool. Don't worry. Real persons will find your tweet anyway.


These are some tips I observed developing projects and publishing them on GitHub. These tips are not primary-focused on the project quality but on how people will see it.

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!

13

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.

9
  • Attract a community of users
  • Insert some bugs
  • Wait for the pull requests

The above is only partly in jest - the second step will happen by accident without you planning for it.

You need to find a way to build a community and get people using the product, just as for any piece of commercial software.

  • Visit forums where likely users hang out, and sell it a little
  • Develop some whizbang app based on your library which will attract people
  • Blog about it

Even if you don't expect to make money, you still need to sell it.

  • 4
    'Insert some bugs' -> this sounds stupid, but it might actually give the incentive to some people to contribute to your project. – Mnementh Jun 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 – kdopen Jun 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). – ideasman42 Nov 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 :) – kdopen Nov 7 '15 at 21:45
8

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.

1

I want to add couple of points

  • Make a "How to contribute" page.
  • Nurture the community right from the beginning. You start attracting even when the project is WIP.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.