In August 2018, I had the pleasure of speaking at the Nextcloud Conference held at the Technical University Berlin. It was my first time giving a talk at a conference and I gave a lightning talk (5 minutes) about getting started contributing to Nextcloud. This is a blog post version of the talk I gave and hopefully it motivates you to get started contributing too!
What is Nextcloud?
Nextcloud is a set of technologies that enables file sharing and collaboration. I like to think of it as a self-hosted version of Google Drive or Dropbox. It enables its users to self-host and manage their files on their own servers, and offers lots of collaboration options. It also has apps that add more functionality such as calendar and email management, chat and video conferencing. A great place to learn more about the company is the Nextcloud website.
An interesting thing is that the software that powers all of this is entirely open source. Anyone can contribute to it, and this is where I come in. Contributing to open source software has always been one of my best learning avenues, and so I wanted to help others to get started contributing as well. I started contributing code to Nextcloud around 2 months ago and found that it's a very welcoming community of people that would benefit from having even more contributors joining in.
Now that we know what Nextcloud is and why you would want to join as a contributor, let's get to the actual process!
The core idea I follow when contributing to open source is building trust between myself as a developer and the maintainers of the software. Beyond just contributing code, I find that maintainers appreciate developers who help make their job easier. This involves things like working on the right stuff and proactive communication. This eventually leads to a build-up of trust over time and this process of earning this trust is what I will focus on in this post. I will go over it using practical examples from my experiences contributing to Nextcloud.
Nextcloud has a good first issues label on their issue tracker to identify issues that are best suited for first time contributors. In my experience, this is the best place to get started if you're contributing for the first time. At the time of writing this, there are 76 issues with this label so there's lots of opportunities to contribute 😀
As a contributor, working on good first issues has quite some advantages:
- You're able to set up and run the project on your dev environment
- You get familiar with the contribution process. This info is usually contained in a contributing doc on the repository
- You start to gain the trust of the maintainers, since they see that you care enough to want to contribute
For the maintainers, a new contributor is able to help them in the following ways:
- An issue actually gets fixed. It might be a simple problem to fix, but it's still an impactful issue that makes the project better.
- Identify potential friction points for new contributors e.g. if the contribution docs are unclear, if there's missing docs, etc.
- Building community. A good first contribution experience helps new contributors grow into more active community members and become potential future maintainers.
Use the Software
At this point, you're a new contributor who has worked on a good first issue and hopefully got your contribution merged. To continue finding new opportunities to contribute, you have to actively use the software to get a feel of an end-user's perspective. For example, once I got started using Nextcloud, I noticed it could have better support for keyboard navigation. I reported the issues I found on GitHub and eventually contributed fixes for them.
Once again, this has some benefits for you as the contributor, such as:
- Learning how to file a helpful bug report e.g. what info to include to help reproduce an issue.
- It enables more interaction with the maintainers i.e. you ask questions when stuck and they give you feedback on your contributions.
- It helps build trust. Working through issues together is one of the best avenues to build trust between contributors and maintainers.
For the maintainers, when you use the software, report issues and fix them, it benefits them by:
- Making it easier for them to provide help and guidance when you're stuck
- Helping set expectations on how to approach issues e.g. this comment shows a practical example of this point
- Getting a perspective on what matters to different users
Explore the ecosystem
Most open source software projects usually have an ecosystem around them. In our case, Nextcloud has the concept of apps through which developers can add new functionalities beyond the main purpose of file-sharing and collaboration. Additionally, the officially supported Nextcloud apps are also open source too.
The apps offer a new place to build out a new set of skills by working on more diverse things. I chose to contribute to the Mail app which is an e-mail client built inside Nextcloud.
The advantages of working on the apps in the ecosystem are:
- Smaller surface area. The apps usually have a very specific focus and consequently you can have more of an impact
- There's lots of apps and so there's lots of opportunities to share best practices with the other apps e.g. There's an effort to rewrite the mail app in Vue and we've taken lots of cues from the contacts app on the way to go about it.
Having gone through all these steps above, and applied them while contributing to Nextcloud, here's some of the things I've learnt:
- The Nextcloud team is extremely welcoming to new contributors and very supportive in helping them grow. You should join to see for yourself 😃
- Working with a fully open source team like Nextcloud is a great experience and I guarantee that you'll learn a lot
- Assume good intentions. Be nice when interacting with others online.
- Take ownership of issues you pick up. Take the work seriously and take it to completion. Again, this helps build trust.
- Things are not always perfect e.g. your contributions may take some time to be reviewed/merged, etc. Be patient and remember to be nice.
If you've ever wanted to get started contributing to open source, and not sure on how to get started, I hope these pointers help. Everyone started somewhere.
Finally, I'd love to give a shout-out the Nextcloud team for their Contributor Travel Support Program, which enabled me to attend the conference this year 😀
The video of the talk is now available. You can watch it on YouTube