#29 RFC: Rewrite "how to be a successful contributor" document
Merged 5 months ago by ankursinha. Opened 6 months ago by ankursinha.

file modified
+1
@@ -7,3 +7,4 @@ 

  build

  cache

  public

+ preview.pid

file modified
+2 -8
@@ -6,14 +6,8 @@ 

  

  NOTE: Please note that if you reference pages from other repositories, those links will be broken in the local preview, as it only builds this repository. If you want to rebuild the whole Fedora Docs site, see the Fedora Docs build repository for instructions.

  

- Both of the below scripts use Podman, so ensure Podman is installed on your system before beginning (see below for Fedora instructions). See below for further instructions.

+ Both of the below scripts use Podman, so ensure [Podman is installed on your system](https://podman.io/docs/installation) before beginning (see below for Fedora instructions). See below for further instructions.

  

  To build and preview the site, run:

  

- `./build.sh && ./preview.sh`

- 

- The preview is hosted at http://localhost:8080.

- Installing Podman on Fedora

- 

- See the Fedora Developer Portal on how to install Podman on Fedora

- 

+ `./builder.sh` 

\ No newline at end of file

file removed
-46
@@ -1,46 +0,0 @@ 

- #!/bin/sh

- 

- image="docker.io/antora/antora"

- cmd="--html-url-extension-style=indexify site.yml"

- 

- if [ "$(uname)" == "Darwin" ]; then

-     # Running on macOS.

-     # Let's assume that the user has the Docker CE installed

-     # which doesn't require a root password.

-     echo ""

-     echo "This build script is using Docker container runtime to run the build in an isolated environment."

-     echo ""

-     docker run --rm -it -v $(pwd):/antora $image $cmd

- 

- elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then

-     # Running on Linux.

-     # Check whether podman is available, else faill back to docker

-     # which requires root.

- 

-     if [ -f /usr/bin/podman ]; then

-         echo ""

-         echo "This build script is using Podman to run the build in an isolated environment."

-         echo ""

- 	podman run --rm -it -v $(pwd):/antora:z $image $cmd

- 

-     elif [ -f /usr/bin/docker ]; then

-         echo ""

-         echo "This build script is using Docker to run the build in an isolated environment."

-         echo ""

- 

-         if groups | grep -wq "docker"; then

- 	    docker run --rm -it -v $(pwd):/antora:z $image $cmd

- 	else

-             echo ""

-             echo "This build script is using $runtime to run the build in an isolated environment. You might be asked for your password."

-             echo "You can avoid this by adding your user to the 'docker' group, but be aware of the security implications. See https://docs.docker.com/install/linux/linux-postinstall/."

-             echo ""

-             sudo docker run --rm -it -v $(pwd):/antora:z $image $cmd

- 	fi

-     else

-         echo ""

- 	echo "Error: Container runtime haven't been found on your system. Fix it by:"

- 	echo "$ sudo dnf install podman"

- 	exit 1

-     fi

- fi

file added
+292
@@ -0,0 +1,292 @@ 

+ #!/bin/bash

+ # script to watch source directory for changes, and re-run build and preview

+ #

+ # License: MIT

+ # https://fedoraproject.org/wiki/Licensing:MIT#Another_Minimal_variant_(found_in_libatomic_ops)

+ #

+ # Copyright (c) Fedora community contributors.

+ #

+ # THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED OR

+ # IMPLIED. ANY USE IS AT YOUR OWN RISK.

+ #

+ # Permission is hereby granted to use or copy this program for any purpose,

+ # provided the above notices are retained on all copies.  Permission to modify

+ # the code and to distribute modified code is granted, provided the above

+ # notices are retained, and a notice that the code was modified is included

+ # with the above copyright notice.

+ 

+ 

+ script_name="docsbuilder.sh"

+ script_source="https://gitlab.com/fedora/docs/templates/fedora-docs-template/-/raw/main/${script_name}"

+ version="1.2.0"

+ image="docker.io/antora/antora"

+ cmd="--html-url-extension-style=indexify site.yml"

+ srcdir="modules"

+ buildir="public"

+ previewpidfile="preview.pid"

+ 

+ # 4913: for vim users, vim creates a temporary file to test it can write to

+ # directory

+ # https://groups.google.com/g/vim_dev/c/sppdpElxY44

+ # .git: so we don't get rebuilds each time git metadata changes

+ inotifyignore="\.git.*|4913"

+ 

+ watch_and_build () {

+     if ! command -v inotifywait > /dev/null

+     then

+         echo "inotifywait command could not be found. Please install inotify-tools."

+         echo "On Fedora, run: sudo dnf install inotify-tools"

+         stop_preview_and_exit

+     else

+         # check for git

+         # required to get ignorelist

+         if ! command -v git > /dev/null

+         then

+             echo "git command could not be found. Please install git."

+             echo "On Fedora, run: sudo dnf install git-core"

+             stop_preview_and_exit

+         else

+             # Get files not being tracked, we don't watch for changes in these.

+             # Could hard code, but people use different editors that may create

+             # temporary files that are updated regularly and so on, so better

+             # to get the list from git. It'll also look at global gitingore

+             # settings and so on.

+             inotifyignore="$(git status -s --ignored | grep '^!!' | sed -e 's/^!! //' | tr '\n' '|')${inotifyignore}"

+         fi

+ 

+         while true

+         do

+             echo "Watching current directory (excluding: ${inotifyignore}) for changes and re-building as required. Use Ctrl C to stop."

+             inotifywait -q --exclude "($inotifyignore)" -e modify,create,delete,move -r . && echo "Change detected, rebuilding.." && build

+         done

+     fi

+ }

+ 

+ build () {

+     if [ "$(uname)" == "Darwin" ]; then

+         # Running on macOS.

+         # Let's assume that the user has the Docker CE installed

+         # which doesn't require a root password.

+         echo ""

+         echo "This build script is using Docker container runtime to run the build in an isolated environment."

+         echo ""

+         docker run --rm -it -v $(pwd):/antora $image $cmd

+ 

+     elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then

+         # Running on Linux.

+         # Check whether podman is available, else faill back to docker

+         # which requires root.

+ 

+         if [ -n "$(command -v podman)" ]; then

+             echo ""

+             echo "This build script is using Podman to run the build in an isolated environment."

+             echo ""

+             podman run --rm -it -v $(pwd):/antora:z $image $cmd --stacktrace

+ 

+         elif [ -n "$(command -v docker)" ]; then

+             echo ""

+             echo "This build script is using Docker to run the build in an isolated environment."

+             echo ""

+ 

+             if groups | grep -wq "docker"; then

+                 docker run --rm -it -v $(pwd):/antora:z $image $cmd

+             else

+                     echo ""

+                     echo "This build script is using $runtime to run the build in an isolated environment. You might be asked for your password."

+                     echo "You can avoid this by adding your user to the 'docker' group, but be aware of the security implications. See https://docs.docker.com/install/linux/linux-postinstall/."

+                     echo ""

+                     sudo docker run --rm -it -v $(pwd):/antora:z $image $cmd

+             fi

+ 

+         else

+             echo ""

+         echo "Error: Container runtime haven't been found on your system. Fix it by:"

+         echo "$ sudo dnf install podman"

+         exit 1

+         fi

+     fi

+ }

+ 

+ start_preview () {

+ 

+     # clean up a preview that may be running

+     stop_preview

+ 

+     # always run an initial build so preview shows latest version

+     build

+ 

+     if [ "$(uname)" == "Darwin" ]; then

+         # Running on macOS.

+         # Let's assume that the user has the Docker CE installed

+         # which doesn't require a root password.

+         echo "The preview will be available at http://localhost:8080/"

+         docker run --rm -v $(pwd):/antora:ro -v $(pwd)/nginx.conf:/etc/nginx/conf.d/default.conf:ro -p 8080:80 nginx

+ 

+     elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then

+         # Running on Linux.

+         # Fedora Workstation has python3 installed as a default, so using that

+         echo ""

+         echo "The preview is available at http://localhost:8080"

+         echo ""

+         pushd "${buildir}"  > /dev/null 2>&1

+             python3 -m http.server 8080 &

+             echo "$!" > ../"${previewpidfile}"

+         popd > /dev/null 2>&1

+     fi

+ }

+ 

+ stop_preview () {

+     if [ -e "${previewpidfile}" ]

+     then

+         PID=$(cat "${previewpidfile}")

+         kill $PID

+         echo "Stopping preview server (running with PID ${PID}).."

+         rm -f "${previewpidfile}"

+     else

+         echo "No running preview server found to stop: no ${previewpidfile} file found."

+     fi

+ }

+ 

+ stop_preview_and_exit ()

+ {

+     # stop and also exit the script

+ 

+     # if stop_preview is trapped, then SIGINT doesn't stop the build loop. So

+     # we need to make sure we also exit the script.

+ 

+     # stop_preview is called before other functions, so we cannot add exit to

+     # it.

+     stop_preview

+     exit 0

+ }

+ 

+ 

+ # https://apple.stackexchange.com/questions/83939/compare-multi-digit-version-numbers-in-bash/123408#123408

+ version () { echo "$@" | awk -F. '{ printf("%d%03d%03d%03d\n", $1,$2,$3,$4);  }';  }

+ 

+ 

+ check_update () {

+     if ! command -v curl > /dev/null

+     then

+         echo "curl command could not be found. Please install curl."

+         echo "On Fedora, run: sudo dnf install curl"

+         exit 0

+     fi

+     script_version="$(grep "^version=" ${script_name} | cut -d '=' -f2 | tr --delete '"')"

+     tempdir="$(mktemp -d)"

+     echo "$tempdir"

+     pushd "$tempdir" > /dev/null 2>&1

+         curl "$script_source" --silent --output "${script_name}"

+         upstream_version="$(grep "^version=" ${script_name} | cut -d '=' -f2 | tr --delete '"')"

+         echo "${upstream_version}"

+         if [ $(version $upstream_version) -gt $(version $script_version)  ]; then

+             echo "Update available"

+             echo "Script version $upstream_version is available at $script_source"

+             echo "This version is $script_version."

+             echo "Please use the '-U' option to update."

+             echo

+         fi

+     popd > /dev/null 2&>1

+ }

+ 

+ install_update () {

+     if ! command -v curl > /dev/null

+     then

+         echo "curl command could not be found. Please install curl."

+         echo "On Fedora, run: sudo dnf install curl"

+         exit 0

+     fi

+     curl "$script_source" --silent --output "${script_name}.new"

+     mv "${script_name}.new" "${script_name}"

+     chmod +x "${script_name}"

+ }

+ 

+ usage() {

+     echo "$0: Build and preview Fedora antora based documentation"

+     echo

+     echo "Usage: $0 [-awbpkh]"

+     echo

+     echo "-a: start preview, start watcher and rebuilder"

+     echo "-w: start watcher and rebuilder"

+     echo "-b: rebuild"

+     echo "-p: start_preview"

+     echo "-k: stop_preview"

+     echo "-h: print this usage text and exit"

+     echo "-u: check builder script update"

+     echo "-U: install builder script from upstream"

+     echo

+     echo "Maintained by the Fedora documentation team."

+     echo "Please contact on our channels: https://docs.fedoraproject.org/en-US/fedora-docs/#find-docs"

+ }

+ 

+ # check if the script is being run in a Fedora docs repository

+ if [ ! -e "site.yml" ]

+ then

+     echo "site.yml not be found."

+     echo "This does not appear to be a Fedora Antora based documentation repository."

+     echo "Exiting."

+     echo

+     usage

+     exit 1

+ fi

+ 

+ 

+ if [ $# -lt 1 ]

+ then

+     echo "No options provided, running preview with watch and build."

+     echo "Run script with '-h' to see all available options."

+     echo

+     echo

+     trap stop_preview_and_exit INT

+     start_preview

+     watch_and_build

+     stop_preview

+ fi

+ 

+ # parse options

+ while getopts "awbpkhuU" OPTION

+ do

+     case $OPTION in

+         a)

+             # handle sig INT to stop the preview

+             trap stop_preview_and_exit INT

+             start_preview

+             watch_and_build

+             stop_preview

+             exit 0

+             ;;

+         w)

+             watch_and_build

+             exit 0

+             ;;

+         b)

+             build

+             exit 0

+             ;;

+         p)

+             start_preview

+             echo "Please run ./${script_name} -k to stop the preview server"

+             exit 0

+             ;;

+         k)

+             stop_preview

+             exit 0

+             ;;

+         h)

+             usage

+             exit 0

+             ;;

+         u)

+             check_update

+             exit 0

+             ;;

+         U)

+             install_update

+             exit 0

+             ;;

+         ?)

+             usage

+             exit 1

+             ;;

+     esac

+ done

@@ -2,6 +2,6 @@ 

  :FEDMSG: http://www.fedmsg.com/

  :FWIKI: https://fedoraproject.org/wiki

  :YOUTUBE: https://www.youtube.com/channel/UCnIfca4LPFVn8-FjpPVc1ow

- :DISCOURSE_CLASSROOM: https://discussion.fedoraproject.org/c/friends/classroom

+ :DISCOURSE_CLASSROOM: https://discussion.fedoraproject.org/c/workflows/classroom/

  :PAGURE: https://pagure.io/fedora-join/Fedora-Join

  :YEAR: 2019

@@ -1,176 +1,244 @@ 

  include::ROOT:partial$attributes.adoc[]

  

  = How to be a successful contributor

+ Ankur Sinha

+ 2023-10-30: Updated content, rewritten various sections.

  

- Audience for this document

- --------------------------

- This document is targeted at people interested in contributing to the Fedora Project.

- In the Fedora Project, students, professionals and hobbyists all come together to produce software, marketing materials, art, documentation, etc.

- We all started as new volunteers at some point.

- The items below are designed to help you through the process of joining a team.

- It helps you know what we expect of you and what you can expect of us.

- 

- Things to know before you join

- ------------------------------

- So you think that you would enjoy being a successful contributor to Fedora.

+ 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.

+ 

+ // TODO: check ref to council documentation

+ TIP: Take a look at the Fedora organization chart xref:project::orgchart.adoc[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.

- Here are some thoughts to consider.

- Everyone who joins a free software project does so with the best intentions of staying.

- A few stay to become regular contributors, and fewer still become leaders within the project, and others lose interest.

- The biggest difference between those that stay and those that leave is "commitment and time".

- 

- Time commitment

- ---------------

- A commitment requires reserving some time.

- If you strongly believe you will enjoy what you are doing, consider your dedication of time.

- Time commitment is as little as 4 hours per week.

- Some volunteers may spend 15-30 hours per week contributing.

- Doing that level of commitment while holding down a proper day job is a difficult time management skill.

- As a volunteer, you should ask yourself whether you can devote 2-4 hours per week, even though it's less than an hour per day.

- Four hours a week for most people is an entire afternoon one day.

- That's a significant chunk of time.

- 

- Get permission from work and family

- -----------------------------------

- Volunteering has great rewards in many ways.

- The two most prominent ones are your success at introducing a person to Fedora, another is your own ego.

- A third benefit is with your job.

- 

- There is a mutually beneficial relationship between working for a living and volunteering.

- Many contributors will find their skill sets at work increase dramatically just by having access to and learning from another environment.

- This volunteering benefits employer and worker.

- It is completely worthwhile to sit down with your employer and ask for permission to contribute during work hours, even if it's only a couple of hours on a Friday afternoon.

- If you are married, make sure your family agrees to your being busy for this time commitment.

- Your volunteering must be a win-win-win for the company, your family and you.

- Explain the benefits to you, to the business, and your family.

- Family is the important people in your social life.

- (spouse, friends, parents, others).

- 

- If work says no, then you will have to volunteer in your own time.

- Your family may be enthusiastic to help you.

- Volunteering is very rewarding.

- 

- Joining

- -------

- 

- The single biggest mistake most new contributors make is showing up "just wanting to contribute."  It's important to take the time to observe the team (refer to the section below) and see how their work aligns with your own skills and personality.

- Know that getting work to do on day one is very rare, and those who are highly skilled in a specific technology  will still have to take the time to get to know an environment before access is granted.

- 

- For example, if you're a database expert it is very unlikely you'll be given access to databases (where personal info, passwords, etc are stored) within your first several weeks of volunteering.

- If you're looking to become an ambassador, it is unlikely you'll get marketing materials shipped to you in your first week.

- This may seem unfortunate, but it's necessary to keep the project members working well together.

- The same can be said about any major changes, like a complete redesign of a system or a new look and feel for a website.

- Don't get discouraged.

- Show up as often as you can, and get to know the team.

- 

- Observation

- -----------

+ 

+ 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

+ 

+ TIP: 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.

+ 

+ TIP: 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 area 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

+ 

+ [TIP]

+ =====

+ 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.

+ 

+ TIP: 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.

+ 

+ TIP: Read link:https://www.redhat.com/en/blog/dont-lick-cookie[this very useful post on "cookie-licking"].

+ 

+ == Joining

+ 

+ TIP: 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.

+ 

+ // TODO: can this be worded better, in a more positive way?

+ TIP: 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 link:https://pagure.io/fedora-join/Welcome-to-Fedora[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

+ 

+ TIP: 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.

- It is extremely unlikely you will be able to actually contribute from day one.

- In organizations with hundreds or thousands of people working together, understanding how things work is critical.

+ 

+ TIP: 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 to spend several days or even weeks attending meetings, emailing on mailing lists and hanging out on IRC before you get to do any actual work.

- Offer suggestions on topics being discussed, and share any experiences (good or bad) you've had that is relevant to the discussion.

+ 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.

  

- 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.''

+ TIP: Be positive, even when critiquing. Always be excellent to others and follow the xref:project::code-of-conduct.adoc[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.

  

- Pick what you want to work on

- -----------------------------

+ 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.

  

- It's your job to decide what you want to work on.

+ 

+ === Pick what you want to work on

+ 

+ TIP: 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.

- You'll see this advice repeated several times in this document:  Don't just show up looking to have work assigned to you.

- Get to know the teams and procedures they have in place.

- Ask questions and really get to know what you're going to be working on _before_ trying to work on it.

+ Also, ask questions and understand what you're taking on before volunteering to do it.

  

- Don't jump into the deep end

- ----------------------------

+ 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

+ 

+ TIP: 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.

- Start small.

- 

- First contact

- -------------

- After you've decided what you're looking to do and what team you are looking to do it with, it's time to send an introduction to the list.

- When sending an introduction (usually by mail list), include the following information:

- 

- * Name

- * Time Zone / Country

- * Basic skills and experiences

- * Why you're joining

- * What you're looking to do (be specific)

- * How much time you can contribute (usually hours per week)

- 

- 

- If any of the above questions are not clearly answered, don't send the email yet.

- You're not ready.

- Remember, be specific about what type of work you're looking to do.

- Saying "Whatever needs to get done" isn't helping anyone.

- Saying "I'd like to help document system A," "I'd like to translate software for my native language," or "I noticed this webapp is particularly slow sometimes and I'd like to help fix that" is perfect.

- 

- Find a mentor or sponsor

- ------------------------

- This step is both incredibly difficult and important.  Finding a proper sponsor will increase your chances of being a successful contributor significantly.

- Sometimes it's absolutely required.

- A sponsor will help with training, introductions and teaching new contributors how a team works.

- 

- Most teams have mailing lists.

- Email the list, say you're looking for a sponsor, and explain what you are wanting to do.

- If you haven't heard back in a few days, reply saying that you are still looking.

- ''Keep doing this.''

- Most sponsors are people that have been in the project for a long time, and are often very busy.

- 

- They don't mean to be rude and don't want to send the impression they don't want new contributors.

- It's just that at the moment, some people will assume other people will take care of you and so for the moment, no one does.

- This is a common problem -- in real life as well as in online communities -- and a difficult one to fix.

- But sticking to it and continuing to ask for help without being annoying will show that you are serious and ready to contribute.

- Don't send this kind of message more than once every couple of days, but be positive, and persistent if needed.

- 

- Contributing

- ------------

- Once you've got something to work on, it's time to actually do work.

- The first several tasks you will work on will likely be small or maybe mundane.

- Do them consistently, conscientiously and well.

- This will raise the level of trust you have from the other team members.

- 

- As with other volunteer organizations, there are high turnover rates in the free software universe.

- Training volunteers is time consuming, especially for more complex tasks, and requires a commitment from currently busy volunteers.

- Spending days or weeks training someone only for them to vanish can be disheartening for mentors and sponsors.

- By giving out small tasks that have been hanging around, a sponsor can help you take small but vital steps, and learn whether or not the work you're going to be doing is really for you.

- 

- Look for work

- -------------

- If you have access to a repository, system, or content, consider yourself a partial owner.

- This doesn't mean you should immediately re-design everything.

- Remember that other owners have time and effort invested in the current material as well.

- It does mean, though, that you should take pride in the work you are doing.

- If you see something not quite right, do research on it and notify the list.

- Seek work out, keep yourself busy and help others.

- 

- Quitting

- --------

- 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.

+ Don't join with the immediate goal of becoming the next leader of the project :).

+ 

+ === Default to open

+ 

+ TIP: 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 link:https://www.scrye.com/wordpress/nirik/2013/02/12/default-to-open-please/[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.

+ 

+ TIP: 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

+ 

+ TIP: 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.

+ 

+ TIP: 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

+ 

+ TIP: 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.

  

- First and foremost, though, don't just vanish.

- When a contributor or potential contributor agrees to do work, can't follow through for a valid reason, and vanishes, the team may not know the work can be reassigned.

- In some cases, people in the team may even worry about the contributor's health or well being.

+ TIP: 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.

  

- When you've decided it's time for you to go or take a break, let your sponsor or the list know and let them know what you were working on.

- Having people think you are working on something when you aren't slows the team down, and ultimately doesn't benefit you or the team.

+ If/when you're able to return, let people know too.

+ We're always happy for people to take breaks and return to us.

file modified
+25 -11
@@ -33,6 +33,9 @@ 

  We have a xref:welcome/welcome.adoc[Welcome to Fedora] process for new comers.

  If you can please get in touch with us on any of our <<communication,communication channels>>, we'll get you started.

  

+ NOTE: *Please be patient as this could take a day or two for one of us to get back with you for onboarding*

+ 

+ 

  == Mission

  

  Different teams already have different, mostly well documented, SOPs (Standard Operating Procedures) for
@@ -64,15 +67,26 @@ 

  [[communication]]

  == Communication

  

- * mailing list: https://lists.fedoraproject.org/admin/lists/fedora-join@lists.fedoraproject.org/[fedora-join]

- * Internet Relay Chat (https://fedoraproject.org/wiki/IRC[IRC]): https://web.libera.chat/?channels=#fedora-join[#fedora-join] on libera.chat

- * Telegram: https://t.me/joinfedora[@joinfedora] (this is bridged to the IRC channel)

+ We prefer Matrix/Element for synchronous communication.

+ Element provides a web-based application that you can use in your web browser.

+ It also provides desktop and mobile phone applications if you prefer.

+ 

  * Matrix: https://matrix.to/#/#join:fedoraproject.org[#join:fedoraproject.org]

- * Discord: https://discordapp.com/invite/fedora

  

- First time using IRC?

- Look into https://opensource.com/article/17/5/introducing-riot-IRC[Riot], a free and open source client that connects to various IRC networks.

- Riot also keeps you connected to IRC even when you're not connected to the Internet.

+ The Fedora community has its own Matrix/Element homeserver that one can login to using their Fedora Account.

+ However, you can also access the channel using the default Matrix/Element homeserver where a Fedora Account is not required.

+ 

+ Additionally, we also use the mailing list/and or Fedora Discussion for asynchronous discussion:

+ 

+ * Mailing List: https://lists.fedoraproject.org/admin/lists/fedora-join@lists.fedoraproject.org/[fedora-join]

+ * Fedora discussion: https://discussion.fedoraproject.org/tag/join-sig

+ 

+ //We also have:

+ //* a Internet Relay Chat (https://fedoraproject.org/wiki/IRC[IRC]) channel: https://web.libera.chat/?channels=#fedora-join[#fedora-join] on libera.chat

+ //* Telegram: https://t.me/joinfedora[@joinfedora]

+ //We suggest using Matrix or Telegram as they are more accessible in general than IRC.

+ // If you are using IRC for the first time, please take a look at https://opensource.com/article/17/5/introducing-riot-IRC[Riot], a free and open source client that connects to various IRC networks.

+ // Riot also keeps you connected to IRC even when you're not connected to the Internet.

  

  == Membership

  
@@ -101,13 +115,13 @@ 

  

  == Meetings

  

- The Fedora Join team hosts meetings, sometime.

+ Occassionally, the Fedora Join team hosts meetings.

  

- You can have information when the meetings are held via the following application -> https://apps.fedoraproject.org/calendar/[Fedora App Calendar]

+ You can find information about when the meetings are held via the https://apps.fedoraproject.org/calendar/[Fedora App Calendar]. 

  

  Go there and sign in with your _FAS_ Account.

  

- The Process is very Simple:

+ The process is very simple:

  

  === Agenda for Next Meeting

  
@@ -119,7 +133,7 @@ 

  ** Pagure tickets, marked for discussion in a future meeting {PAGURE}/issues?status=Open&tags=S%3A+Future-meeting[issues]

  ** Lots of tasks, please refer to the past logs

  * New items

- ** whatever is needed at that moment

+ ** Whatever is needed at that moment

  * Open Floor

  

  === Hosting a meeting

@@ -8,6 +8,9 @@ 

  

  This page introduces a few Fedora Badges that you can earn when you start your Fedora journey.

  

+ NOTE: The badges infrastructure is being overhauled to improve performance.

+ So there's usually a lag between an activity and badges being awarded.

+ Please inform the Fedora Badges team on link:https://discussion.fedoraproject.org/tag/badges-team[their space on Fedora Discussion] if you do not receive your badge in a few days.

  

  [[involvement]]

  == Involvement

@@ -32,7 +32,7 @@ 

    * If we do not hear from Jane in sometime, such as two weeks, we do a second progress check and set the link:https://pagure.io/fedora-join/Welcome-to-Fedora/issues?tags=C%3A+Progress+check+2[C: Progress check 2] tag.

    * If we do not hear from Jane again, say for another two weeks, we do a third and final progress check. We set the link:https://pagure.io/fedora-join/Welcome-to-Fedora/issues?tags=C%3A+Progress+check+3+-+Final[C: Progress check 3 - Final] tag.

    ** If we don't get a response in the next 7 days, We would tell her that we've not seen activity and we'll have no choice to close the ticket.

-   ** Closing the ticket is only a formal and operational to ask, then if Jane like, they can get in touch again with us using the various communication channels, Provide in this SOP.

+   ** Closing the ticket is only a formal and operational task, then if Jane likes, they can get in touch with us again using the xref:project::communications.adoc[various communication channels].

    * If we do not hear from Jane here also (so, in total for about 6 weeks), we assume that Jane is inactive and close the ticket with the link:https://pagure.io/fedora-join/Welcome-to-Fedora/issues?tags=S%3A+User+unresponsive[S: User unresponsive] tag.

  - Some infrastructure in Fedora requires Jane to be part of a team or group on the Fedora Account System. We will give her temporary membership to the link:https://admin.fedoraproject.org/accounts/group/view/fedora-join[fedora-join FAS group] if required. This can be requested by setting the link:https://pagure.io/fedora-join/Welcome-to-Fedora/issues?tags=C%3A+Temporary+membership+needed[C: Temporary membership needed] tag to the ticket. After discussing the situation, if temporary membership to the FAS group is given, we will mark the ticket with the link:https://pagure.io/fedora-join/Welcome-to-Fedora/issues?tags=C%3A+Temporary+membership+approved[C: Temporary membership approved] tag.

  - As Jane learns about the community, she will hopefully find tasks and teams that interest her. When she has joined a team, she has become a contributing Fedora community member! We mark the ticket as link:https://pagure.io/fedora-join/Welcome-to-Fedora/issues?tags=S%3A+I+am+Fedora[S: I am Fedora] to celebrate this.

file removed
-18
@@ -1,18 +0,0 @@ 

- #!/bin/sh

- 

- if [ "$(uname)" == "Darwin" ]; then

-     # Running on macOS.

-     # Let's assume that the user has the Docker CE installed

-     # which doesn't require a root password.

-     echo "The preview will be available at http://localhost:8080/"

-     docker run --rm -v $(pwd):/antora:ro -v $(pwd)/nginx.conf:/etc/nginx/conf.d/default.conf:ro -p 8080:80 nginx

- 

- elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then

-     # Running on Linux.

-     # Fedora Workstation has python3 installed as a default, so using that

-     echo ""

-     echo "The preview is available at http://localhost:8080"

-     echo ""

-     cd ./public

-     python3 -m http.server 8080

- fi

I've updated the whole thing, added tips, new sections, new materials.

Please review folks:

@mkittermantgd @hhlp @alciregi (and all of the join-sig in general)

1 new commit added

  • feat(successful-contributor): remind to follow CoC
6 months ago

I like this! The change I would make is to let people know about the fedora.im homeserver for using FAS in matrix

We could link to this page, which is where info on communicating lives?

https://docs.fedoraproject.org/en-US/project/communications/

That links to chat.fp.o, and then maybe we can add some info there on using FAS to login to it?

We could link to this page, which is where info on communicating lives?

https://docs.fedoraproject.org/en-US/project/communications/

That links to chat.fp.o, and then maybe we can add some info there on using FAS to login to it?

That's a great idea! Two thumbs up here.

Metadata Update from @jflory7:
- Pull-request tagged with: needs feedback, type - dev tools, type - existing docs

6 months ago

From the fedora-join mailing list:

Some of the text there needs to be updated to clarify how the
many-to-many mentoring in the community works. At the moment, it does
seem to indicate one-to-one mentoring, and that's because some teams do
require sponsors, for example the package maintainers team:
https://docs.fedoraproject.org/en-US/package-maintainers/Joining_the_Package_Maintainers/#_understand_the_sponsorship_model

Would it be beneficial to add this clarification to the successful contributor guide as well? As someone interested in being a maintainer, I only found out that I need a sponsor because I happened to meet one at a conference. It would be nice if there’s a vector to know that through the guide!

Would it be beneficial to add this clarification to the successful contributor guide as well? As someone interested in being a maintainer, I only found out that I need a sponsor because I happened to meet one at a conference. It would be nice if there’s a vector to know that through the guide!

Hrm, so the "successful contributor" page is generic, and should apply to all of Fedora. I'm only actually aware of 2 teams that have a formal sponsorship model because they require infra access---the package maintainers and the infrastructure team.

At the moment, I only have this line in here:

https://pagure.io/fedora-join/fedora-join-docs/blob/update-successful-contributor/f/modules/ROOT/pages/contribute/successful-contributor.adoc#_203

Some teams may have sponsorship models in place where another community member may be responsible for another's initial contributions.

Your starting point for package maintenance should have been the package maintenance guide here:
https://docs.fedoraproject.org/en-US/package-maintainers/Joining_the_Package_Maintainers/

So maybe the visibility of the package maintainers documentation is the issue here? Were you pointed to this page, or just the package maintainers guide by someone (other than the mail that you've linked to?)

Your starting point for package maintenance should have been the package maintenance guide here:
https://docs.fedoraproject.org/en-US/package-maintainers/Joining_the_Package_Maintainers/

So maybe the visibility of the package maintainers documentation is the issue here? Were you pointed to this page, or just the package maintainers guide by someone (other than the mail that you've linked to?)

Good point. Yes, it might be a visibility issue. Or, rather, a reachability maybe? Looking back at https://fedoraproject.org -> Contributors -> New Contributors, it is not clear to me how to become a new contributor via becoming a new maintainer.

The issue I personally had, which may or may not be common, was that I didn't know the barrier of entry (or lack thereof) of being a maintainer. Like, I didn't know that was something I might have what it takes to do.

I assumed that "New Contributors" should be my starting point, which is probably true, as I am now more comfortable taking a shot at making rpm's after submitting a few tweaks here and there.

Perhaps the structure is fine as-is and I could just https://www.google.com/search?q=fedora+new+maintainer& ?

I also just discovered that I could arrive at the page linked above via:
https://fedoraproject.org
-> Contributors
-> Contributor Guides
-> Packaging Guidelines
-> Join the Package Maintainers

It was not obvious to me at first that all sections apply to new contributors, not just the "New Contributors" so for example I assumed "Contributor Guides" is something to look into for existing contributors. But I don't have any ideas better than the current structure as-is.

Is there a place in there that lists some of the things like package maintenance or docs?
That could give folks a launch point if they are in that, "I'll do whatever it takes" going on.

Is there a place in there that lists some of the things like package maintenance or docs?
That could give folks a launch point if they are in that, "I'll do whatever it takes" going on.

the organization chart should indicate what teams there are in the community, which should give an idea of what tasks are being done:

https://docs.fedoraproject.org/en-US/project/orgchart/

(This is included in the links the welcome-to-fedora tickets have)

My tab completion would like it if we dropped this file altogether from the file tree. :)

@mattdm FYI, for our ongoing conversation about "how to measure contributions in Fedora." :)

It would be nice to mention something here about gaining new skills and building a portfolio in early career or after a career pivot. Personal satisfaction is a thing, but line 108 also captures well the benefits in a professional context too. It would be nice to expand that more.

I could also write some of this text too, but I am wondering what the best format for proposing changes would be? Do you want me to add commits to this branch, address them in a comment, or make a subsequent PR?

I propose removing the script file altogether.

s/various communication channels, provided in this SOP./xref:project::communications.adoc[various communication channels]./

Is this still working, or is it very active? Is there a strong reason to not encourage people to use Matrix instead? I think it would be easier for a newcomer to explore other Fedora rooms and teams through Matrix instead of Telegram. I say this knowing very well that I was likely the person who set up the bridge in the first place. :P

How active is the IRC room after the bridge downtime? Is anyone keeping an eye on things over there?

Maybe omit this, since Matrix is having a hard time connecting over to IRC? Or comment it out in case we ever get it back? I am giving permission to not link out to an article I wrote. :P

Does the Join SIG have any presence on Fedora Discussion?

I suggest one-sentence-per-line here:

[TIP]
====
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.
====

s/quit/step back/ ?

Quitting sounds serious and permanent, but stepping back feels less intimidating (to me).

These lines look like they were accidentally duplicated?

@ankursinha Thank you for tackling this one, this page is important. Going through it, I realized how old some of the content here is. I appreciate your go at modernizing it!

I left feedback in-line. Most of my feedback is small, but I was wondering about the chat platforms part. I was not sure if Telegram is still actively used by the team or if a lot of people come through there still. I am thinking it might be more wise to funnel people into Matrix so they can connect with the entire Fedora community from one place. It is hard to discover other teams and groups from Telegram, and there are also some unscrupulous Telegram groups positing to be "official" Fedora when they are not. So, I would like to discourage that if at all possible, to avoid people getting funneled in somewhere that does not follow the Fedora Code of Conduct.

That is my biggest piece of feedback, but happy to chat more about my suggestions too. I might take a go on this doc with some of my ideas too, after this PR is merged.

3 new commits added

  • feat: quit -> step back
  • chore: split tip into a sentence per line
  • chore: remove deprecated build scripts
5 months ago

3 new commits added

  • chore: add link to communications page
  • feat: prefer matrix
  • chore: remove duplicate line
5 months ago

1 new commit added

  • feat: comment out irc/telegram, let's funnel folks to matrix
5 months ago

Hi @jflory7 , thanks very much for your feedback. I've made all the necessary changes (I think).

I agree---I've completely removed IRC and Telegram from the pages for the moment. Let's funnel people into the matrix channel instead.

Please feel free to push to this branch if that's the easiest thing to do. We can merge it in once we're ready.

I'm going to merge this now, and we can continue to improve it as we go.

Pull-Request has been merged by ankursinha

5 months ago