We are utilizing a lot of Open Source products in our life daily. Sometimes we pay some money for them, in one way or another, but quite often we are just their users. To keep these awesome projects alive, we should at least sometimes try to contribute, give something back to the project.
There are many ways to give back to OSS (open-source software) projects. I’ll be writing about a couple of them in the upcoming weeks. Code contributions are probably the most valuable for many OSS projects, but those are also the most demanding ones. It is by no means the way I suggest to start, but I start my series with it, as it is also the most interesting one.
So why is it so hard to start contributing code? We are developers - we can code! Especially in library projects (like most Vaadin OSS projects), the code quality is expected to be high, and we also demand certain style and formatting. All existing tests need to be passed, and probably new tests need to be written. And the problems to solve are often (but not always) really hard.
Enough with the warnings, so why to contribute code then? The impact of your bugfix or feature may be huge. You can solve a critical issue in your own software and also help thousands of other developers. Addressing these issues or creating handy enhancements will also give you the greatest pleasure. Code contributions also look super good in your CV.
How and where to start your code contributions?
The most common way to start is to fix an issue found in your project. You may be debugging some problem in your app, jumping on the framework side of the code and you spot a place that should work slightly differently. Or you are missing a feature in framework code, write a helper to your app, and realize that it could be a generic feature that helps others too. This is typically a natural place to jump into the library development: create an issue, write a fix and create a pull-request to start the review cycle. If the feature or fix is big, it is probably a good idea to discuss about it with other contributors in the issue or in Gitter before spending your precious time on actual coding. If all goes well, you’ll have less code to maintain.
An another way to start is to browse the issue tracker for a suitable issue to begin with. Then look at the code, familiarize yourself with how the system works, and try to come up with a good solution. The problem in this approach is that many of the issues are not easy to solve. To help you choose a good issue to start with, we have tagged some issues with Good first issue and Help wanted tags. Naturally, when you gain some more experience with the project, it will be easier to find the inspiring problems to attack and to choose any issue at all.
All Vaadin projects also have a CONTRIBUTING.md file in their source code repository that contains project specific instructions and tips to get started.
Earn some money by writing code
To emphasize how much we value contributions, we have recently started to use some bounties for certain bugs and enhancements. We don’t expect this to become the primary way to drive the development of our OSS products. Voluntary work and the product development team in Vaadin will still do most of the work, but we hope to inspire some developers to participate more actively in the development of Vaadin OSS projects.
We are now using a service called BountySource to handle the bounties. Using it, anybody can be a contributor, a bounty hunter or both. All you need is a GitHub account and you can start supporting the Vaadin project, either by providing bounties to issues you think are not getting enough attention, or by fixing issues in your favorite OSS projects and earning some money at the same time. When you have provided a fix via GitHub, you claim the bounty to yourself, and you can then cash it out (10% commission to BountySource) or donate it back to the project.
We have put bounties on different kinds of issues, also to ones that should be relatively easy to approach, so looking at those issues could also be your first ever Vaadin code contribution. Visit the Vaadin team page on BountySource to see issues that currently have bounties.
Feel free to propose which issues should be sponsored with bounties via the comment section, twitter or email!