How to be a successful contributor

Ankur Sinha Version 2023-10-30: Updated content Last review: rewritten various sections.

Everyone starts as a new member of the community. This page aims to provide some tips and tricks of how to go about being a successful community member. It notes what members of the community expect from one another.

In the Fedora community, students, professionals and hobbyists all come together to promote Free/Open Source Software. We do this by packaging software to produce a well integrated operating system (a "Linux distribution").

But, that is not all we do! We also do lots of design work, promotion work, marketing, create cool artwork, videos, and podcasts, write both technical and non-technical (like this one) documentation, outreach, training, and more. In fact, non-code contributions are a critical component of the Fedora community, and the community could not exist without them. Just hanging out in the channels and participating in discussion is also contributing.

Take a look at the Fedora organization chart here. It’ll give you an idea of the vastness of the community.

Things to think about before you join

So you think that you would enjoy being a Fedora community member? Great!! You are most welcome.

Everyone that joins a Free/Open source software project does so with the best intentions of staying. However, the realities of life mean that volunteering requires us to take time out of our lives, time that could be spent elsewhere: on jobs to earn a salary, life and family and friends, or other hobbies and projects. The biggest difference between those that are able to stay and remain long term contributors and those that are not is "commitment and time".

Rewards from volunteering

An important question is: what does one get out of volunteering?

Volunteering anywhere in projects that interest you can be very rewarding. With Fedora, for example, introducing someone new to Free/Open Source software is extremely satisfying.

However, personal satisfaction for doing something we believe in is not all we get in return for our participation. By working together and openly, we members of the community share perspectives, experiences, knowledge, skills, and resources with each other. Most of us learn and improve a variety of different skills while contributing to the community. We also learn about other cultures and experiences from our fellow community members.

All of this can also be very beneficial in a professional context, since it helps to demonstrate skills that are highly sought in industry: collaboration, technical skills, real world and management experience, and more.

Note that none of this acts as a replacement for a salary or an income. While the community does sponsor community members to organize and attend community events, there is no financial return for participation. So, managing time to ensure that work and other aspects of life do not suffer is paramount. More about that in the next section.

Managing work and life

Make sure you look after your personal and professional commitments before making time to volunteer.

A work-life balance is most important. In most cases, it is your free time after work, time that you can spend on yourself and your friends and family, that you reduce to volunteer. So, let your friends and family know that you are volunteering, and make sure you continue to make time for them.

Confirm with your employer before volunteering during work hours.

If you plan to contribute during your working hours, you should speak with your employer to confirm that you are able to do so, even if that is just a couple hours on a Friday afternoon. Most jobs encourage community contributions, especially if it’s closely linked to work related skills and projects. However, this may not always be the case.

Volunteering needs to be beneficial to all affected parties, so being clear about the requirements and benefits of volunteering is important.

Managing time commitment

How much ever time you can put aside for volunteering is fine. There’s no right amount, and the amount should change depending on your circumstances.

A commitment requires putting aside some time to work on things. Some volunteers may spend four hours a week, while others may spend more than fifteen hours a week contributing. There’s really no right amount. We don’t compete with each other to do more, nor do we feel bad if we cannot put in as much time as a fellow community member. For most volunteers with jobs, volunteering ten or more hours a week is very difficult to maintain. So, whatever you do, how much ever you can manage is fine.

Avoid over-committing: underestimate the time you have, and overestimate the time a task will take.

The general rule is to start small, to underestimate how much time you have, and to overestimate how much time it’ll take you to do a particular task. So, maybe start with a few hours a week, and depending on your circumstances, you may find that you can commit more time later. But, maybe in the future you are busier and have to reduce your commitment. This is also perfectly OK. Just because you are able to do a certain amount of hours now does not mean you will also be able to do it next month.

Joining

Get to know the community members, teams, and how they work before jumping into "doing tasks".

A common mistake most new contributors make is showing up "just wanting to contribute." That’s not how communities work. Unlike jobs, there are no managers here. We don’t assign tasks to each other. Yes, there are people who have been around longer and may know more, but we’re still all friends and equals.

So, before jumping in to tasks, it is important to get to know the people.

  • Take time to observe how teams work (refer to the section below).

  • See how their work aligns with your own skills and personality.

It takes time for people to get to know each other, and trust each other to be able to share duties.

Understand that even highly skilled folks have to take the time learn how teams and pipelines/environments are structured before they can do any work. Some teams have formal sponsorship requirements that must be met before the necessary access is granted to new members. Others do not, and rely on team members knowing each other and each others' strengths and weaknesses to distribute tasks.

In general, it is a question of trust. Would you give someone you’ve only known for a day access to your computer, your database, your work? No? The community wouldn’t either, especially for security sensitive resources like our infrastructure.

The good news is that building trust in the Fedora community is easy. Talk to people, participate in discussions and work, and before you know it, you will be a trusted community member.

The Welcome to Fedora process that the Join SIG has in place is based on this line of thought. We don’t want you to jump into tasks. We want you to get to know the people first, and then gradually start working on tasks.

Observation

Monitor and participate in meetings and general team communication to learn what/how/where/who/what/when they do things.

It is important to get to know the organization and teams you are looking to work with before you try to join them. Learn what they do and how they do it, and try to get to know the people involved.

Be patient. It can take a few weeks to understand how things work.

Don’t be shy about asking questions and getting to know people. Plan on spending some time attending meetings, participating in the discussion forums/mailing lists and hanging out on the Matrix channels before taking on tasks. This could take a few weeks, so be patient.

Be positive, even when critiquing. Always be excellent to others and follow the Code of Conduct.

Offer suggestions on topics being discussed, and share any experiences (good or bad) you’ve had that is relevant to the discussion. But do note that part of observing and making constructive suggestions may require withholding judgment. When making suggestions, don’t assume you come with all of the answers or that the Fedora Project is "doing it all wrong". There is a good chance we can improve the way we are doing things, however most of our current practices were developed over long periods of time after lengthy discussion. Your criticism may be better received once you have established yourself in the community and are perceived as understanding our culture.

A good way of providing feedback is to use "plussing". The fundamental idea is to not just provide a critique or feedback for an idea, but to also offer suggestions or alternative solutions with that feedback.

Pick what you want to work on

In Fedora, you must decide what you want to work on yourself.

In Fedora, you decide what you want to work on. We do not assign each other tasks and duties.

Teams usually have lists of tasks to do. As you get to know a team better, you will be aware of what needs to be done. Pick something that’s important to you and something you have passion for. Also, ask questions and understand what you’re taking on before volunteering to do it.

There’s always something to be done. If you see something not quite right, something that can be improved, do your research and present a proposal to the team. Seek work out, take the initiative, keep yourself busy and help others.

Don’t jump into the deep end

Start small. The key is slow, steady, sustainable growth.

When picking something to work on, don’t be the sole person to take on a huge task as your first contribution. Picking a task that’s too large significantly raises the chances of failure. Also don’t pick several things on several teams to work on. Start small, picking at most one or two things, and grow from there. The key is slow, steady, and sustainable growth. Don’t join with the immediate goal of becoming the next leader of the project :).

Default to open

Use public communication channels unless it is absolutely necessary to use private communication.

As a rule, unless personal information is involved, always always use public communication channels. As noted in this informative post, this has many advantages:

  • You can get an answer faster from a group of people than just one person.

  • You can get peer review of that answer from the group, where you wouldn’t by just talking to one person.

  • You can increase the knowledge of the community, instead of hiding it away. Perhaps 5 other people had the same question you just asked and got answered.

  • You can start discussions and end up with a much better solution than the one person you were trying to talk to would have given you.

  • Your question or comment could lead others in related questions or comments.

Open communication is key in the Fedora community.

So, for example:

  • Default to sending to a list when you are replying to something asked there.

  • Default to asking in a public channel (Matrix/IRC) instead of sending someone a private message

  • Default to filing a ticket when you wish something done instead of sending private email.

  • Default to replying on a Bugzilla bug instead of sending private emails.

We are all mentors

Knowledge is maintained by the whole community, not individuals.

In a volunteer based community like Fedora, knowledge is shared and maintained collectively by the whole community. We rarely mentor each other on a one to one basis. Some teams may have sponsorship models in place where another community member may be responsible for another’s initial contributions. In general though, we all mentor each other. That way, there is no single point of contact/failure. So, if you see someone doing something you’d like to learn, go ahead and ask them to help you learn it. On the other hand, if you know there’s a better/easier way of doing something, document it somewhere and share it with the community.

Reading documentation is an important skill.

Another thing to keep in mind is that learning in volunteer communities usually happens by self-teaching. People will always be happy to provide others with links and resources. However, since we’re all volunteers, it is difficult to make time to explicitly teach others. So, a good habit is to ask people for documentation and references so you can learn yourself. Reading documentation (and so maintaining up to date documentation) is an important skill. Of course, if you have queries, ask and people will answer.

Take breaks, step back if you need to

It’s OK to say that you cannot do something you had taken up.

If you’ve found you’ve over-committed or decide volunteering isn’t for you, that’s OK. You don’t need to be embarrassed that you can’t contribute further. Contributors will not make you feel bad about it either. Realize that lots of contributors come and go every day. Being busy with your day job or not having enough free time is a perfectly valid reason for not being able to contribute. It’s even possible that you might not feel a good fit with the team or organization. You’re entitled to offer help as a volunteer how you want and when you want.

Let the community know that you are taking a break or leaving.

However, if at all possible, please don’t just vanish without informing the community. As friends, people in the community worry about each other, about our health and well being. Additionally, when a contributor or potential contributor agrees to do certain work, is unable to follow through for any reason, and quietly vanishes, the community will not know that the work can be reassigned.

When you’ve decided it’s time for you to go or take a break, let the community know. Inform them of what tasks you had taken up and that they are now free for others to work on.

If/when you’re able to return, let people know too. We’re always happy for people to take breaks and return to us.