14 Ways to Contribute to Open Source without Being a Programming Genius or a Rock Star

Plenty of people want to get involved in open source, but don’t know where to start. Here are several ways to help out even if you lack confidence in your technical chops.

open source ways to contributeOpen source software has changed computing and the world, and many of you would love to contribute. Unfortunately, many people are daunted by what they imagine is a high barrier to entry into a project. I commonly hear people say that they’d love to contribute but can’t because of three reasons:

  • “I’m not a very good programmer.”
  • “I don’t have much time to put into it.”
  • “I don’t know what project to work on.”

There are three core principles to remember as you look for opportunities to contribute:

  • Projects need contributions from everyone of all skills and levels of expertise.
  • The smallest of contributions is still more than none.
  • The best project to start working on is one that you use already.

The most damaging idea that I’ve observed among open source newbies is that to contribute to open source, you have to be some sort of genius programmer. This is not true. Certainly, there are those in the open source world who are seen as rock stars, and they may certainly be genius programmers. However, the vast majority of us are not. We’re just people who get stuff done. Sometimes we do a little, and sometimes we do a lot. Sometimes it’s programming, and sometimes it’s not.

Most of what makes open source work is actual work, time spent making things happen for the project. Most of these things don’t require the brains or vision of a Larry Wall, creator of Perl, or a David Heinemeier Hansson, creator of Rails. Designing a new language or a web framework may take inspiration, but the rest of what makes projects like Perl and Rails successful is perspiration. This work may not get all the glory, but it’s still necessary, and after a while, your contributions will get noticed.

Start listening

Everything in open source involves other people. You’re looking to join a team, and that means understanding the community and how it works. Walking in to a project and saying “Hi, here’s what I think this project should be doing” is usually not taken as a good thing. Some projects may welcome that sort of approach, but if the project has been running a while, the chances of that attitude being embraced are small. Listening is the best way to know what the project needs.

1. Join a mailing list: For many projects, the mailing list is the main conduit of communication about the development of the project. On large projects, there are many mailing lists to choose from. For example, the PostgreSQL project has no fewer than 12 user-oriented lists and six developer lists on its mailing list page. I suggest you follow the main user-oriented list and the core developer list in which to start listening.

2. Follow a blog: Blogs maintained by core developers often give information about what’s coming up in future releases, and what it’s taken to get there. A planet site aggregates news and blog entries from many sources related to the project. If there is a planet site, like planet.gnome.org or planet.mysql.com, start there. Just search Google for “planet <projectname>.”

3. Join an IRC channel: Many open source projects have dedicated Internet relay chat (IRC) channels where developers and users hang out to discuss problems and development. Check the project’s website for the details of what the channel is called and what IRC network it’s found on.

Work with Tickets

Code is the heart of any open source project, but don’t think that writing code is the only way to contribute. Maintenance of code and the systems surrounding the code often are neglected in the rush to create new features and to fix bugs. Look to these areas as an easy way to get your foot into a project.

Most projects have a publicly visible trouble ticket system, linked from the front page of the project’s website and included in the documentation. It’s the primary conduit of communication between the users and the developers. Keeping it current is a great way to help the project. You may need to get special permissions in the ticketing system, which most project leaders will be glad to give you when you say you want to help clean up the tickets.

4. Diagnose a bug: Bugs are often poorly reported. Diagnosing and triaging a bug can help save the developers save time with the legwork of figuring out the specifics of the problem. If a user reported, “The software doesn’t work when I do X,” spend some time to figure out the specifics of what goes into that problem. Is it repeatable? Can you create a set of steps to cause the problem repeatedly? Can you narrow down the problem, such as only happening on one browser but not another, or one distro but not another?

Even if you don’t know what causes the problem, the effort you put into narrowing down the circumstances makes it easier for someone else to fix it. Whatever you discover, add it to the ticket in the bug system for all to see.

5. Close fixed bugs: Often bugs are fixed in the codebase but tickets reported about them don’t get updated in the ticketing system. Cleaning up this cruft can be time-consuming, but it’s valuable to the whole project.

Start by querying the ticket system for tickets older than a year and see if the bug still exists. Check the project’s release change log to see if the bug was fixed and can be closed. If it’s known to be fixed, note the version number in the ticket and close it.

Try to recreate the bug with the latest version of the software. If it can’t be recreated with the latest version, note that in the ticket and close it. If it still exists, note that in the ticket as well and leave it open.

Working with Code

Programmers of all experience levels can help with the code in the project. Don’t think that you have to be a coding genius to make real contributions to your favorite project.

If your work involves modification to the code, investigate the method that the project uses for getting code from contributors. Each project has its own workflow, so ask about how to do it before you set out to submit code.

For example, the PostgreSQL project is very rigorous in its process: Code modifications are sent in patch form to a mailing list where core developers scrutinize every aspect of the change. On the other end is a project like Parrot where it’s easy to get commit privileges to the codebase. If the project uses GitHub, there may be a workflow that uses the pull request feature of GitHub. No two projects are the same.

Whenever you modify code, make sure that you act as a responsible member of the community and keep your code style to match the rest of the codebase. The code you add or modify should look like the rest. You might not like the bracing style or the handling of spaces for indentation, but it’s rude to submit a code change that doesn’t match the existing standards. It’s the same as saying “I don’t like your style, and I think mine is better, so you should do it my way.”

6. Test a beta or release candidate: Any project that’s designed to run on multiple platforms can have all sorts of portability problems. When a release approaches and a beta or release candidate is published, the project leader hopes that it will be tested by many different people on many different platforms. You can be one of those people and help ensure that the package works on your platform.

Typically you only need to download, build, and test the software, but the value to the project can be huge if you’re on an uncommon distribution or hardware. Just reporting back that the build and test works helps the project leaders know that the impending release is solid.

7. Fix a bug: This is usually where contributors wanting to get working on code start. It’s simple: Find an interesting-sounding bug in the ticket system and try to fix it in the code. Document the fix in the code if it’s appropriate.

It’s a good idea to add a test to the test suite to test the spot of code you fixed; some projects require bug fixes to include tests. Keep notes as you poke around this unfamiliar codebase. Even if you aren’t able to fix the bug, document in the ticket what you discovered as part of the fix attempt. What you find helps those who come after you.

8. Write a test: Most projects have a test suite that tests the code, but it’s hard to imagine a test suite that couldn’t have more tests added to it. Use a test coverage tool like gcov for C, or Devel::Cover for Perl to identify areas in the source code that aren’t tested by the test suite. Then, add a test to the suite to cover it.

9. Silence a compiler warning: The build process for many C-based projects often spew the odd compiler warning flag to the screen. These warnings are usually not indicators of a problem, but they can look like it. Having too many warnings can make the compiler sound like it’s crying wolf.

Check to see if the code could actually be hiding a bug. If not, modifying the source to silence helps to hide these false positives.

10. Add a comment: When you’re digging through the code, you may find some spots that are confusing. Chances are if you were confused, others will be  as well. Document them in the code and submit a patch.

Work with Documentation

Documentation is typically the part of a project that gets short shrift. It also can suffer from having been written from the point of view of those who are familiar with the project, rather than through the eyes of someone just getting into it. If you’ve ever read docs for a project where you think, “It’s as though this manual expects that I already know how to use the package,” you know what I’m talking about. Often a set of fresh eyes can point out deficiencies in the documentation that those close to the project don’t notice.

11. Create an example: There is no project that has too many how-to examples. Whether it’s a web API, a library of routines, a GUI app like Gimp or a command line tool, a good example of proper usage can more clearly and quickly explain proper usage of software than pages of documentation.

For an API or library, create an example program that uses the tool. This could even be extracted from code you’ve written, trimmed down to the bare necessities. For a tool, show real-world examples of how you’ve used it in your daily life. If you’re visually oriented, consider creating a screen-capture of an important process, such as how to install the application.

Work with Community

Open source is only partly about code. Community makes open source work. Here are ways you can help build it up.

12. Answer a question: The best way to help build the community is by helping others. Answering a question, especially from someone who is just getting his feet wet, is crucial to helping the project grow and thrive. The time you take to help a n00b, even if he’s asking a question where you could easily throw back a quick “RTFM,” pays off down the road in getting another active member of the community. Everyone starts out somewhere, and projects need a constant inflow of people if they’re to stay vital.

13. Write a blog post: If you’ve got a blog, write about your experiences with the project that you’re using. Tell about a problem you faced using the software and what you did to solve it. You’ll be helping in two ways, both by helping keep the project on the minds of others around you, and by creating a record for anyone else who has your problem in the future  and searches the web for the answer. (A blog of your technical adventures is also an excellent way to show real-world experience with the software in question next time you go hunting for a job using it.)

14. Improve a website: Most programmers are pretty crappy graphic designers, and it’s a rare project website that couldn’t use some help in the design department. If you’ve got skills in web design and can help improve the website, and thus the public-facing image of the project, that’s time well spent. Perhaps the project could use a graphic overhaul, or a logo to identify the project. These may be skills lacking in the community. I know I’d love it if I could get some graphic design help on my projects’ websites.

Most of all, listen to what people around you discuss. See if you can recognize a pressing need. For instance, recently on the Parrot developers’ mailing list, it was decided to use GitHub as the trouble ticket system, abandoning the old Trac installation they had. Some people were against the move because there was no way to convert the tickets to GitHub’s system. After a day of back and forth arguing, I piped up and said “How about if I write a converter?” People were thrilled at the idea. I spent the time to write a conversion program for the 450+ tickets, so we lost none of our ticket history. It was a great success.  I got to pitch in, and the core developers stayed focused on the business of working on Parrot.

There are so many ways to contribute to open source if we look past the obvious steps of writing a new product feature. Everyone who uses open source can bring their skills to the community and help keep open source a vital part of computing.

See also:

Photo credit: opensourceway


  1. Dreamer says:

    Andy, it is very informative post and it’s been featured on Habrahabr, russian IT crowd blog. 
    People (including me) have been looking for this kind of tutorial, and finally it’s here! Thanks a lot =) 
    (and pardon my english)

    • Will Worthington says:

      It was very nice of you but I hereby granted you permission to NOT having to apologize for your English anymore. Heck, it’s better than a lot of “native” speakers over here. 🙂

  2. Me gusta escuchar muchi~simo todas las lenguas del mundo, y tambien~ la gente. Histo

  3. Uma mahesh Varma says:

    Thank you for the useful information. 

  4. How would I go about if I want to re-design a project’s website?

  5. how many programmer , who uses open source code or library give back to community ? any figure ?

  6. Nice post…Also informative…

  7. Good post

  8. Shahar Galukman says:

    Good post. 
    Gave me a first insight of how I can join to open source projects as a rookie developer.

  9. Nice article! 😀 The ironic part about this article is that, technically speaking, it doesn’t fit into any of the “contributing to open source projects” categories you listed, but it’s so very powerful and useful to the open source community. 
    Kudo’s for using all the many skill set’s you posses to do something that you believe in! (Writing, programming, etc…) ^//~

  10. One of the easiest, most helpful things that you can do is run a compatibility test suite against your hardware to see if everything works. Ubuntu has a suite called ‘System Testing’. Alternatively, there is the phoronix test suite. These send compatibility reports to Ubuntu Friendly and openbenchmarking.org respectively.

  11. Christopher Moura says:

    Hi Andy! 
    This is the most complete and insightful set of advices related to contributing to open source projects.  
    It’ll definitely help me start contributing with the projects I use and was trying to figure it out how to help them.  
    Thank you very much!

  12. You are right on target! Open source has supernumerary ways to contribute and I’m glad to see you are bringing them to light. So often people new to FOSS forget about all these wonderful ways to get involved.

  13. Another great way to collaborate is localization: translating software to another language.

  14. @Zhou – Thanks for your sentiments, Mr. T! While we are not averse to the use of criticism on the blog – your comment does not add to the conversation, unless you elaborate on why you feel that way about Open Source. 
    How about a rebuttal blog post (or comment) that *explains* your POV? 
    Thanks in advance, 
    /Prashant aka @bloggerbear

  15. A very useful & motivating Article on contributing to open source projects.  
    Thanks a ton ..

  16. Another task which is hugely important for non-english speaking countries is to localize software and it requires virtually no programming skills.

  17. Zhou Feng says:

    Only a fool would want to work with the incompetent people who form the backbone of most open sewer (source) project.

  18. Well done everyone for you input and thankyou Andy, for allowing all on-lookers in getting a better insight into ways to contribute. With these packages i am an end user, and often see ways in which they could be bettered from that point of view. Especially if we can push these packages into schools, or areas where government or personal funding is limited. I do not use MS products since testing software in Vilnius on Ubuntu OS in 2011. I use MS OS for music production and internet, and everything else is open source so you have me hooked. I have used all your social media like tabs to help spread the word. If ever you need help with communication, please feel to get in touch. I am going to join the community and see if there are subjects in which i can input. Regards. Mr Matthew J Mellor

  19. Very informative and motivating. Thanks a lot.

  20. Very informative and motivating. Thanks a lot.

  21. Thanks a lot, this is very encouraging. This is the type of “getting started” advice that is lacking in many areas of life. Whether it’s open source software or mountain biking, we all need to start somewhere and it helps to have ideas.

  22. 15. Join the i18n (translation) team.

  23. great work i like your given idea’s, programing very difficult task so programmer should careful during programing.

  24. Great work, keep it on.

  25. Very informative. Thanks.

  26. Thanks for this great post. You’ve summed up the points so many of us in Open Source tell people daily about how to get involved.  
    Bookmarking your article and site to add to my reference list. 
    Thanks for encouraging more partication in Open Source! 
    Looking forward to reading more of your posts. 

  27. Great informative post, it’s very useful information. 
    Thank you for your advice.

  28. What a post, this inspires me to contribute more on Open source. I had that intention from long time, but as mentioned, stuck with some of those reasons mentioned. I like the idea about best project is the one you use, because you know quite a lot about that, to contribute and improve.

  29. for a new comer it is a great blog for knowledge and understanding the basics of a community. 

  30. Great post and very informative.

  31. Tanveer Abbas says:

    dear sir , I m a beginner on this site , can u send me a brief description of so much long briefing. I could not under stand the basic purpose and benefit of testcomplete

  32. Fantastic coding guide lines, development is a very technology field, its completely depends on tricks. 

  33. optikfluffel says:

    If you’re a designer who wants to help the open source community head over to http://open-karma.com ^^

  34. 2 questions:

    – Is IRC still relevant? I don’t know anyone who’s using it, developer or not.
    – OpenSource projects demand that contributions to the core are done by extremely smart programmers. Do you think sloppy programmers really have a chance to get their changes/bug fixes approved?

    I think the best chance for average programmers to contribute to open source is by developing 3rd party extensions/modules that can be installed on a product. They will most likely get their extensions approved and this will help the product.

  35. Nice shot! thanks, Andy!

  36. Tony Singh says:

    If any one need help regarding software Testing manual /automation /performance.
    please send me mail at akhurath03@gmail.com

  37. Vijay Ram says:

    excellent post

  38. Thanks for the tips. I’m starting a near-shore company so I’ll surely implement your ideas.

  39. This article was awesome! I have always been too intimated to join the open source community but now I can’t wait to get started

  40. Tristan Rhodes says:

    Great post, it is very similar to what I wrote:

    “The 10 roles in an open source community”


  41. I contributed by blogging about the actual accounts of new developers starting on their first projects to encourage others to do the same. Their testimonies revealed a lot of information that might usually be overlooked or taken for granted in guides. http://bit.ly/1zIIdN3

  42. Nearly every one of the leading card firms offers a minimum of one designed specifically for young students.

  43. I visit everyday a few websites and information sites
    to read articles, except this web site offers quality based writing.

  44. This article is actually a pleasant one it assists new
    web people, who are wishing in favor of blogging.

  45. Hi, i believe that i noticed you visited my website thus i came to go back the choose?.I
    am attempting to in finding issues to improve my website!I assume its adequate to make use
    of a few of your concepts!!

  46. The Iphone-4 is a brilliant multi-touch display smart-phone created by by Apple.
    Owing to its amazing design and operation, iPhone 4 remains the top-selling
    smart phone “by far” at both ATandT and Verizon. Iphone-4 has lots of functions, from worldwide texting,
    e-mail, to visual voice mail, web browsing, Wi-Fi connection, etc.
    And many important, it’s a smart mobile handset that helps music, audio-book, podcast, video-calling (FaceTime), eBooks, periodicals,
    movies, games and programs. Whenever get an iPhone 4 in your fingers, enjoyment is always
    with you. It is truly a stunner and how to transfer photos from iphone to pc.

  47. Assembly Language:

    Special shortly symbols such as (ADD, SUB, MUL, DIV, LOAD, MOV, MVI, JMP, JNZ, INC etc) using to write-in that programming Language it is also be called Assembly Language.

  48. Eric Campbell says:

    I’ve read your post.It is very informative.The people who do’nt know about programming they may help from r programming help.Thanks for share it.

  49. A well balanced syllabus mixes facets of innovation and management to develop an one-of-a-kind capability, which is much searched for in market.
    You will certainly learn how you can analyze complex technological issues as well as challenges encountered by several real-world design business of various sizes.

  50. Try playing the game for some time before you obtain cheat

  51. Only a fool would want to work with the incompetent people who form the backbone of most open sewer (source) project.

  52. Thanks for the post and great tips..even I also think that hard work is the most important aspect of getting success

  53. A well balanced syllabus mixes facets of innovation and management to develop an one-of-a-kind capability, which is much searched for in market.
    You will certainly learn how you can analyze complex technological issues as well as challenges encountered by several real-world design business of various sizes.Kioscos Bogota

  54. Thanks for the post and great tips..even I also think that hard work is the most important aspect of getting success.Kioscos Bogota

  55. nly a fool would want to work with the incompetent people who form the backbone of most open sewer (source) project.Servicio de Mudanzas Bogota

  56. Thanks for the post and great tips..even I also think that hard work is the most important aspect of getting success,. Trasteos bogota

  57. Open source has supernumerary ways to contribute and I’m glad to see you are bringing them to light. So often people new to FOSS forget about all these wonderful ways to get involved. Salvation Diet PDF

  58. nly a fool would want to work with the incompetent people who form the backbone of most open sewer (source) project. solgar

  59. This is the initial instance I stopover this blog. Really this is grand employment with the blog. It is incredibly happiness to acquire it as I got gigantic helps right here. I exceedingly be pleased about the bloggers workings and will kill time for more post from the admin.
    Outsourced IT Fort Lauderdale

  60. Different codes have different work like html, xml and php.

  61. NZ’s leading Direct Response Marketing and Advertising Agency, since 1997. Media buying and advertising campaigns for infomercials, DR TV and radio adverts.

  62. Very good information. Lucky me I found your site by chance (stumbleupon).
    I have bookmarked it for later!

  63. The settlement quantity does not include home owner’s insurance policy or property
    taxes which have to be paid in addition to your lending repayment.

  64. Very good information. Lucky me I found your site by chance (stumbleupon).
    I have bookmarked it for later!New Development Condos Toronto

  65. It doesn’t matter what programming assignment you need to do.If you don’t know how to do it,you can know from assignment.net.You can know about it from it.

  66. Very good information. Lucky me I found your site by chance (stumbleupon).
    I have bookmarked it for later. SEO for Toronto New Condos

  67. Una vez el pan haya subido lo suficiente, haz una incisión poco profunda
    en la superficie, con una hoja de rasurar cuchillo muy afilado, a fin de
    que desarrolle más corteza.

  68. Nice advice. You’re right people can help develop the right and best open source tool that will address a specific requirements. Developers need to know what needs to be done thru other people’s feedback and needs.

  69. Very informative blog. Keep publishing…

  70. Greetings! I’ve been following your blog for some time now and finally got the courage to go
    ahead and give you a shout out from Kingwood Tx!
    Just wanted to say keep up the good work!

  71. Interesting one. I think i am going to follow. Thank for sharing.

  72. Very useful, after 11 years of experience, i learned from you about dynamics behind OSS

  73. Some great tips there, Andy.

    I found this post really useful – as Open Source tools grow in popularity and use, the contributors start playing an important role in keeping the software in check from all angles – not only code-wise.

    Your post opens some very unique ways of contributing the community. I have a blog and I will start contributing to it the best way I can 🙂


  74. hello!,I like your writing very much! share we be in contact more approximately your article on AOL?

    I require an expert on this area to resolve my problem.
    Maybe that is you! Looking ahead to peer you.

  75. That such a great new i definitely use this.

  76. First of all thanks for the post. Really it is awesome post. I do like your hard workings and appreciate your concept. I can refer you another site where one can get huge assistances concerning education. To learn moiré, please click here. Thanks……

  77. A student has sufficient time to think precisely what they’re going to carry out sometime soon. Presently shortage inside work can be larger than exactly what they will believe.Ex Factor Guide,The Ex Factor Guide Reviews,Ex Factor Guide Reviews,Ex Factor Guide Review,Ex Factor Guide Free

  78. Thanks for the post and great tips..even I also think that hard work is the most important aspect of getting success.cpa masters academy

  79. Thanks for the post and great tips..even I also think that hard work is the most important aspect of getting success.

  80. Thanks for the post and great tips..even I also think that hard work is the most important aspect of getting success.
    discoteche versilia

  81. Exploring the city of Versilia is incomplete without having local delicacies and experiencing its vibrant nightlife. Now, there is Discoteche inVersilia, a portal that gives all information regarding bookings as well as the available menu and the kind of styling that should be done in Versilia to have a fabulous vacation.capodanno versilia

  82. I’ve got not long ago started off some sort of blog site, the internet people produce here possesses served everyone enormously. Appreciate it intended for all of your current time period & do the job.capannina di franceschi

  83. Thanks for a marvelous posting! I quite enjoyed reading it, you can be a great author.I will ensure that I bookmark your
    blog and will eventually come back at some point. I want to
    encourage you to definitely continue your great posts, have a nice weekend!

  84. Thank you for such an informative post. I’m going to start my journey in ‘Open Source Development’ and this post has by far been the best that I’ve come across in this niche.

  85. open source recruiting software says:

    Thanks for sharing the best posts they very useful to us and giving us such a great information about this post. You made this site is awesome and it’s amazing

  86. Valuable piece of information.

  87. “The best project to start working on is one that you use already” – these are golden words.

    In most cases you start the using some tool. Then you find some problem or the MUST DO (as you think) feature that should be implemented.
    Then you just forget about it or maximum you create a bug or feature request in repository system (GitHub).

    So why not to try to fix the bug or implement the feature by yourself?

  88. I’m going to describe something a frind of mine inscribed that I think is brilliant. First, let’s talk data structures Programming Genius” . A common, highly useful data structure is called a Map, Hsh Map, or Dictionary. This data structure lets you map keys to values. Open “source software” has different computing and the world, and several of you would love to contribute. Unluckily, many people are daunted by what they imagine is a high barrier to entry into a project. I commonly hear people say that they’d love to contribute but can’t because of three reasons:

  89. Really nice post. Quite Informative. Need Programming Assignment Help, Do my Programming Homework Help

  90. Great Post..Thank you for sharing this valuable post..I used this method for my website..

  91. Really it is awesome post. Thank you for such an informative post.

  92. Great tips for the beginner who just want to start contributing Open Source Projects.
    Need any JavaScript Assistant.

  93. That’s pretty useful article for me I was searching some design option ideas so your post really going to help me in that

  94. Really nice post.
    I love to share with my client.
    Just start following your blog.

  95. Excellent way of explaining, and nice paragraph to take information on the topic of my presentation subject matter,
    which i am going to present in academy.

  96. it’s really an amazing article and it would be useful for the beginners especially.You’ve made this site awesome and interesting and it’s just amazing.

  97. Excellent article. It is really an inspiration and informative who loves to start career with programming.

Speak Your Mind