Being a part of an open source community is a very rewarding experience and one that we, at X-Team, believe everyone should get the pleasure of experiencing. X-Team and X-Labs are big supporters of open source because it is this kind of mutual collaboration, of individuals banding together with common needs, that one rarely gets to see in the world.
However, we also understand that jumping into an open source community, or starting an open source project, may be a scary task for some.
Thus, we turned to our superheroes at X-Team who have had success interacting and contributing in the open source community, and they happily shared some insights for those looking to start. And as you’ll see, becoming part of an open source community was a defining experience for them.
Below you’ll find all the ways to get started contributing to existing open source projects, or your own.
Contribute to an existing project
- To find existing projects to contribute to, first ask yourself what your own needs or interests are. You’ll make the best contributions if it’s coming from your own vested interest or passion to see something succeed. Don’t just trawl Github repos looking for a project — start the search within the realm of your own needs and interests. – Josh Johnston
- If you feel adventurous, look for small projects with one to two committers. Be sure to check that the project is not dead, unless you want to fork it and pull the whole thing yourself. Otherwise, I would suggest looking for medium, established projects like mailpile. More often than not, there is a project that does what you want to do, and is eagerly waiting for your commits. – Michal Kawalec
- Look at the people, the code is secondary. The code is important obviously, but if you are coming to a project maintained by somebody else, look for hallmarks of a good project. An up to date list of issues and a wiki will help you a lot, and mean that someone takes care of the committers. – Michal Kawalec
- Talk to the people on a project. Tell them what you know, they will suggest something that may be of interest to you. If not, take a look at a different project. – Michal Kawalec
- Even small contributions are great, don’t feel like you need to produce a masterpiece before sharing it. If you are adding value for someone (even better if that someone is you), the owner will usually be very happy to receive it because it makes their product more valuable to other people. So don’t offer to fix their missing semicolons or correct grammatical errors in comments. Explain your use-case and show how your pull-request resolves that. – Josh Johnston
X-Teamer stories about contributing to an existing project
My first great experience of open source was making a contribution to an emacs plugin. I had an idea of what I wanted to do (expand and contract the current selection, based on semantic object. Eg. select the entire string, then select the entire function, etc). Along the way I found a great plugin someone had written that did just this: https://github.com/magnars/expand-region.el
Except there was one thing missing: it only did expansion, not contraction! So I thought I would give it a go. Never having done any serious lisp coding before I immediately felt out of my depth. But I wrote an email to Magnar and explained what I was wanting to do. He agreed it would be useful, and gave me some tips on how he would go about it.
Note: I often reflect that it would have been so easy for him to have just written it himself, instead of spending time encouraging a noob! This really stood out to me and I was hugely encouraged from his patience and helping me level-up, suggesting revisions along the way as I fumbled through the process. And he inspired me to treat others the same.
At the end we got the new functionality implemented and PR merged. It was incredibly satisfying to see it published and start using it in my every-day text editing. A little while later I got an email saying the expand-region plugin was going to be included as a core plugin for the next emacs release, and as a significant contributor I needed to sign some legal documents from the FSF. Overall it was a defining experience and reminded me that the goal of open source is not just to make stuff that costs no money to use, but to encourage freedom by empowering the people who use and build it.
How did I begin working on Ampersand.js? I started really small by reading through all the documentations and by sending pull requests with just doc updates. I then moved on to fixing and updating the test cases. Finally, I began working directly on the code. As a result, I got the exciting opportunity to interact with the core team a lot and eventually worked on a Twitter campaign with them to help advertise our solution.
Throughout the years, most of the open source code I’ve written has been for my own personal use. I wanted to test an idea, compute something or just play, so I created a project, got the results, and then left the code. This is actually something I would advise everyone who wants to help open source projects to try. It’s a lot of fun, and if you can make your friends help you, the fun multiplies:)
Create your own open source project
- Solve your own challenges.
Work on something that makes a personal difference to you. Don’t worry about making something just because you think other people will like it. Take the time to understand what your own needs / pain-points are and address that use-case. – Josh Johnston
- Have a goal: In everything you do you should have a goal. Your goal will serve as your blueprint to build your dream. Create a pet project that is not really common or something you feel is lacking in the currently available technologies or you could improve existing ones. A good place to host your project is GitHub where everyone can access and fork it. – Gerald Villorente
- Don’t make excuses: If you’ve ever worked on something, wrote something, or updated something, then share it. Just like that. Put it on Github, link it in a few places, publish it on npm, or tweet about it and that’s all you have to do! Who knows? Maybe one day someone will make use of your small piece of code. And trust me, even one happy user is enough to be able to say that it was worth it. – Kamil Ogorek
- Think of the benefits. There’s a lot of benefits of sharing your library with others: you will get input and feedback from other developers facing the same situation as you, you will shape your skills being a main developer of a library, you will learn how to deal with feature requests, how to talk with others, and how to drive a tech discussion. Those qualities are invaluable. – Rubens Mariuzzo
- Learn source control (aka Git). The two most used code repo hostings are Github and Bitbucket, both support Git. Apart from adding value to your resume, learning Git will make you a better developer, a better team member, and will let you share your code across the Open Source community. – Rubens Mariuzzo
- Reach out for help. Don’t be shy about asking for advice from other authors. Usually you’ll be surprised at how willing they are to help. – Josh Johnston
X-Teamer story about creating your own open source project
As I designed the new look of that ERP using Adobe Fireworks, I had used a lot of color blending functions and that feature in LESS was non-existent. So I started to contribute to LESS adding 9 color blending functions that includes: multiply, screen, overlay, hardlight, softlight, difference, exclusion, average, and negation. Plus, I created the tests and I wrote the documentation for those color blending functions. And now, it is part of the core of LESS. That year, I was the 7th top contributor to LESS and the 3rd top contributor to their docs. That was an amazing experience!
Contributing goes well beyond just coding
- Open source is not only about code.
You don’t have to be a great developer or an expert in a field to update the documentation, write new issues, comment a pull request, or point out a bug or a possible improvement. Maybe you’re a native speaker in some less popular language? Maybe you can possibly host an event? Or maybe you just have a few seconds to tweet and spread the word. It doesn’t really matter. As long as you want to help the community, you’ll find a way, so stop looking for excuses. – Kamil Ogorek
- No need to be shy.
Just post on forums, StackExchange, community sites, Tumblr, etc. about ideas you have, or bugs you’ve found, etc. Trust me, the community will be really happy about it and it will make you happy too. – Pratomo Ardianto
- Do a research project.
A research project is a great way to get involved. Take an existing project and follow your curiosity. Try using it to solve a common problem in a new way, take a deep look into performance, or simply ask how you could make it easier for other people to use this. These are the activities that lead towards a thriving ecosystem. – Josh Johnston
- You’re building reputation as well.
Get out of your head once and for all that it’s charity work. It’s not! You must understand that it’s not only about code. What you’re doing here is spending your own time in exchange for your good name, reputation, and recognizability. If you ever said to yourself, “I don’t have enough spare time to spend on other people’s projects”, then you’re probably one of those people that doesn’t understand that our community, industry, and the whole IT world is not all about only being good at something, but also being trustworthy, recognizable, and being an icon. A guru. An expert. A hero. – Kamil Ogorek
X-Teamer stories about other ways to contribute
In 2010, I was hired by a company that uses Drupal for building web applications. In the beginning, Drupal seemed to be very difficult for a Joomla developer. Then, I realized that I needed to be active in the Drupal community if I wanted to expedite my learning.
In order to contribute back to the Drupal community, I joined the forums where I usually answered questions. I’m an active contributor on the Drupal documentation page, as well, where I write mostly on topics related to automation, deployment tools, and data
My contribution did not end just on joining forums and creating Drupal modules but also included helping the Drupal community on its goal of spreading the good news of Drupal technology, and ultimately, getting people involved in this readily accessible tool that has so much power and potential in building even enterprise-level applications.
Currently, I am one of the core mentors of Drupal Pilipinas Inc. which is also a leading Drupal advocate here in the Philippines. We hold a Drupal meetup regularly to help others save time and effort in learning Drupal.
It all began in Singapore. I was a frequent attendee of all of the Drupal Meetups. One day there was someone from the group that initiated the movement to have an official Drupal Community in Singapore.
I offered myself as one of the core members to make it happen, and after that the official Singapore-registered Drupal Community has been built ever since.
I also felt proud that I was one of the members who organized the first ever Drupal Camp in Singapore back in 2012.
I’m not only active in the local Drupal Community, but I’m also active in the Drupal.org community. There have been many posts that I have done, like asking for help from other developers when I have a problem, and vice versa.
But one of the most memorable posts I ever did was when I discovered a bug on the *User import *modulefor Drupal 5, and suggested the correct code for it, which eventually someone made as a patch and merged it with the current branch.
Even though it seems like a small thing, when you find out that your piece of code is being implemented in one of the modules that are being used by other developers, you have a profound feeling about it.
Bonus idea: Give a talk at an open source event
- The best way to improve yourself is by hanging out with people who share the same interests as yours. Be active at events like meetups, barcamps, trainings, and conferences. Join technical Q&A sites like Stack Exchange. You can also challenge yourself by giving a talk to a group of people, which you later might be surprised by its domino effect in other people or impact in the long run. – Gerald Villorente
- Try to give a talk at some local tech-event, especially on a topic that revolves around what you currently do, or are interested in doing in the future. That way you will boost your confidence even more. Don’t worry if you feel like a newbie about the topic, the audience will give you more appreciation for being daring enough to stand up and share your knowledge with them. – Pratomo Ardianto
Bonus resource: Learn here how to write posts & talks to contribute to open source communities.