Easy Tasks First
Intent: Start working on easy tasks that provide instant gratification and help you to overcome entry barriers.
Motivation
Start contributing to a FLOSS project can be daunting, and prospective contributors may face challenges to entry into the FLOSS world. You may be a novice programmer, that is used to develop small programs by yourself. Or it may be the case that you have some experience with traditional software development, where tasks are previously assigned to developers, testers, and so on, but not with self-assigned tasks in a community of volunteers. You may even have no programming knowledge at all, but still want to contribute to a FLOSS project. In any situation, it important that prospective contributors manage to overcome entry barriers and keep interested in contributing.
Problem
How can you start to contribute to a FLOSS project and yet keep interested?
Forces
Many forces are involved when you are preparing yourself to make your first contributions:
- Analysis paralysis. New contributors may be tempted to first understand everything and only then start to contribute. However, by the time a new contributor understands everything about a project – even if that could be possible – she might have already lost interest on it.
- Shooting a moving target. Software is continuously in process of change. If your contribution takes too long, it may be irrelevant by the time it is finished. For example, when you finish modifying a piece of code you realize that it has been replaced or removed in the latest version of the software.
- Learning by doing. Contributors can build their understanding of the system incrementally while they contribute.
- Instant gratification. Every contribution is important. When successfully accomplished, you feel like you’re adding value to the FLOSS project, even if it is something trivial.
Solution
Look for easy tasks that need to be performed and start working on them. You will probably complete them in a reasonable amount of time and feel instant gratification. Easy tasks include working on bugs that have trivial fixes, adjusting the style of the source code to match the project coding style, or other housekeeping tasks.
Suggestions for easy tasks can be found in different places, but it is desirable that you try to find them by observing and interacting with the development ecosystem.
First, you can Look for TODO lists and try to find easy tasks to work with.
Blogs, wikis and websites may also provide clues on easy tasks for newcomers to start contributing.
Mailing lists may be used to announce or discuss issues about the development of the project. Easy tasks can be identified there if other contributors that join these lists are willing to help, by providing suggestions for newcomers.
Finally, IRC channels can be used to be in contact with other contributors and developers and easy tasks can be identified.
Trade-Offs
Pros:
Working on easy tasks allows a contributor to gain knowledge about the software and the community incrementally, and at the same, provide contributions to the project.
Dealing with easy tasks allows new contributors to focus on the process and not only on the tasks.
Working on easy tasks provides instant gratification.
Cons:
The contributor might feel that the easy tasks are not important enough because nobody did them before. However, it is useful to consider that dealing with the hard stuff may leave no room for thinking about the easy ones; also, easy tasks can involve changes that have positive impacts on the project and on its users.
Lists of easy tasks are not always actively maintained. If this is the case, you may find tasks that made sense in the past but are not applicable in the current state of the project. Be sure to signal your intent to solve a task to get updated information from developers.
Rationale
Humans are mostly short term and oriented towards instant gratification, seeking for immediate results. By performing manageable tasks in FLOSS projects, contributors can build their understanding of the system incrementally while they contribute, and keep their interest and motivation to contribute.
Besides knowing the code, there is also a lot of other aspects of a free software project that a developer can get used to by working first on “trivial” tasks: getting used to the procedure for submitting contributions and having them reviewed by more experienced project members, interacting with the project infrastructure (bug tracking systems, communication channels, etc) and others. By the time the new contributor has acquired the expertise to work on more difficult tasks, the supporting infrastructure may not be an issue anymore.
Known uses
When the LibreOffice project started, the initial team wanted to attract new contributors. They created an initiative called Easy Hacks, that provides guidance for new contributors and lists of tasks considered easy for newcomers to accomplish.
GNOME has a similar initiative called GNOME Love, which is “the place to learn how to start contributing to GNOME”. Besides providing guidance on the topics contributors need to learn, GNOME Love also includes marking bugs that should be easy for new contributors to solve.
Noosfero has a list of tasks marked as Easy to Solve where prospective developers can find bite-sized bugs to fix or enhancements to make.
Related Patterns
You might want to Look for TODO Lists that already contain tasks categorized by difficulty level.
In general, you are dealing with easy tasks when you Write Documentation or Translate To Your Language important parts of the documentation.
What Next
After selecting easy tasks to start with, you might want to look at some . Having the Right Version for the Task is crucial, and make sure you Review Your Changes before submitting them.