From 70128b9d9559d07a2cc5a95912829f236da89efa Mon Sep 17 00:00:00 2001 From: joonkyu <97711937+joonkyu@users.noreply.github.com> Date: Sun, 14 Aug 2022 14:17:51 -0400 Subject: [PATCH] docs: typos & other grammar updates to moderator-handbook (#47039) Co-authored-by: Ilenia Co-authored-by: Naomi Carrigan --- docs/images/github/xkcd-free-speech.png | Bin 0 -> 53378 bytes docs/moderator-handbook.md | 194 ++++++++++++------------ 2 files changed, 97 insertions(+), 97 deletions(-) create mode 100644 docs/images/github/xkcd-free-speech.png diff --git a/docs/images/github/xkcd-free-speech.png b/docs/images/github/xkcd-free-speech.png new file mode 100644 index 0000000000000000000000000000000000000000..ac8b0e65eb2520095d48af52858b107ab28d0e73 GIT binary patch literal 53378 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

y`= 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 O0000 [!NOTE] -> All freeCodeCamp moderators are community-wide moderators. That is we trust you to oversee any of these places. +> All freeCodeCamp moderators are community-wide moderators. That means we trust you to oversee any of these places. You can serve as a moderator on any of the platforms that are of the most interest to you. Some moderators just help out on GitHub, while others just help out on the forum. Some moderators are active everywhere. @@ -13,25 +13,25 @@ The bottom line is that we want you to enjoy being a moderator, and invest your As a moderator, temperament is more important than technical skill. -Listen. Be Helpful. Don't abuse your power. +Listen. Be helpful. Don't abuse your power. freeCodeCamp is an inclusive community, and we need to keep it that way. -We have a single code of conduct that governs our entire community. The fewer the rules, the easier they are to remember. You can read those rules and commit them to memory [here](https://code-of-conduct.freecodecamp.org). +We have a single [Code of Conduct](https://code-of-conduct.freecodecamp.org) that governs our entire community. The fewer the rules, the easier they are to remember. You can read those rules and commit them to memory [here](https://code-of-conduct.freecodecamp.org). > [!NOTE] -> As a moderator we would add you to one or more teams on GitHub, our community forum(s) & chat servers. If you are missing access on a platform that you would like to moderate please [reach out to a staff member](FAQ.md#additional-assistance). +> As a moderator we would add you to one or more teams on GitHub, our community forums & chat servers. If you are missing access on a platform that you would like to moderate, please [reach out to a staff member](FAQ.md#additional-assistance). ## Moderating GitHub Moderators have two primary responsibilities on GitHub: -1. Triaging and responding to issues -2. Reviewing and merging pull requests (a.k.a QA). +1. Triaging and responding to issues. +2. Reviewing and merging pull requests (aka QA). ### Moderating GitHub Issues -We use our main [`freeCodeCamp/freeCodeCamp`](https://github.com/freeCodeCamp/freeCodeCamp/issues) repo as a common issue tracker for all of our repositories. We get new issues every day, all of which need to be triaged, labeled and addressed. This is also a great place to start helping with open-source codebase contributions. +We use our main [`freeCodeCamp/freeCodeCamp`](https://github.com/freeCodeCamp/freeCodeCamp/issues) repository as a common issue tracker for all of our repositories. We get new issues every day, all of which need to be triaged, labeled, and addressed. This is also a great place to start helping with open-source codebase contributions. #### Issue Triage @@ -41,13 +41,13 @@ You can help us organize and triage the issue reports by applying labels from [t Please pay special attention to the labels `"help wanted"` and `"first timers only"`. These are to be added to threads that you think can be opened up to potential contributors for making a pull request. -A `"first timer only"` label should be applied to a trivial issue (ex. a typo fix) and should include additional information. You can use this [reply template](moderator-handbook.md#first-timer-only-issues) for triage. +A `"first timers only"` label should be applied to a trivial issue (ie a typo fix) and should include additional information. You can use this [reply template](moderator-handbook.md#first-timer-only-issues) for triage. #### Closing Stale, Outdated, Inactive Issues and Pull Requests - Stale issues or PRs are those that have not seen any activity from the author for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. -- Activity is defined as: Comments requesting an update on the PR and triages like `status: update needed` label etc. +- Activity is defined as: Comments requesting an update on the PR and triages like `status: update needed` label, etc. - If the contributor asks for additional assistance or even time, the above can be relaxed and revisited after a response is given. In any case, the mods should use their best judgment to resolve the outstanding PR's status. @@ -60,29 +60,29 @@ Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's reposi #### Types of Pull Requests -1. **Challenge Instruction Edits** +1. **Challenge instruction edits** - These are changes to the text of challenges - the Description, Instructions, or Test Text. + These are changes to the text of challenges - the description, instructions, or test text. You can also review these right on GitHub and decide whether to merge them. We need to be a bit more careful about these because millions of people will encounter this text as they work through the freeCodeCamp curriculum. Does the pull request make the text more clear without making it much longer? Are the edits relevant and not overly pedantic? Remember that our goal is for challenges to be as clear and as short as possible. They aren't the place for obscure details. Contributors may try to add links to resources to the challenges. You can close invalid pull requests and reply to them with these [reply templates](moderator-handbook.md#closing-invalid-pull-requests). - If the change looks good, please ensure to leave an approval with a "LGTM" comment. Once a pull request gets at least two approvals (including yours) from the moderators or the dev-team, you can go ahead and merge it. + If the changes look good, please ensure to leave an approval with a "LGTM" (Looks Good To Me) comment. Once a pull request gets at least two approvals (including yours) from the moderators or the dev-team, you can go ahead and merge it. -2. **Challenge Code Edits** +2. **Challenge code edits** - These are changes to the code in a challenge - the Challenge Seed, Challenge Solution, and Test Strings. + These are changes to the code in a challenge - the challenge seed, challenge solution, and test strings. - These pull requests need to be pulled down from GitHub and tested on your local computer or Gitpod to make sure the challenge tests can still be passed with the current solution, and the new code doesn't introduce any errors. + These pull requests need to be pulled down from GitHub and tested on your local computer or Gitpod to make sure the challenge tests can still be passed with the current solution and to make sure the new code doesn't introduce any errors. Some contributors may try to add additional tests to cover pedantic corner-cases. We need to be careful to not make the challenge too complicated. These challenges and their tests should be as simple and intuitive as possible. Aside from the algorithm challenges and interview prep section, learners should be able to solve each challenge within about 2 minutes. You can close invalid pull requests and reply to them with these [reply templates](moderator-handbook.md#closing-invalid-pull-requests). - If the change looks good, please ensure to leave an approval with a "LGTM" comment. Once a pull request gets at least two approvals (including yours) from the moderators or the dev-team, you can go ahead and merge it. + If the changes look good, please ensure to leave an approval with a "LGTM" comment. Once a pull request gets at least two approvals (including yours) from the moderators or the dev-team, you can go ahead and merge it. -3. **Platform Changes** +3. **Platform changes** These code edits change the functionality of the freeCodeCamp platform itself. @@ -109,11 +109,11 @@ Before merging any pull request, make sure that GitHub is reporting all checks t > [!WARNING] > Merging a PR that fails CI/CD checks can cause difficulties for all stakeholders, including the dev-team and contributors. -##### Handling merge conflicts: +##### Handling Merge Conflicts: -Sometimes there will be a Merge Conflict. +Sometimes there will be a merge conflict. -This means that another pull request has made a change to that same part of that same file. GitHub has a tool for addressing these merge conflicts right on GitHub. You can try to address these conflicts. Just use your best judgment. +This means that another pull request has made a change to that same part of that same file. GitHub has a tool for addressing these merge conflicts right on GitHub. You can try to address these conflicts. Use your best judgment. The pull request's changes will be on top, and the main branch's changes will be on the bottom. Sometimes there will be redundant information in there that can be deleted. Before you finish, be sure to delete the `<<<<<<`, `======`, and `>>>>>>` that Git adds to indicate areas of conflict. @@ -123,13 +123,13 @@ If you are uncertain, please ask one of the fellow moderators or the dev-team fo If the pull request looks ready to merge (and doesn't require additional approvals - remember we require at least two), you can go ahead and merge it. Be sure to use the default **"Squash and Merge"** option. This will squash all the pull requests commits down into a single commit, making the Git history much easier to read. -> You should then comment on the pull request, thanking the contributor in your own personal way. +> You should then comment on the pull request, thanking the contributor in your own personal way! If the pull request author is a "first-time contributor" you should also congratulate them on their first merged pull request to the repository. You can look at the upper right-hand corner of the PR's body to determine a first-time contributor. It will show `First-time contributor` as shown below:

- First time contributor badge on pull requests (screenshot) + First-time contributor badge on pull requests (screenshot)
First time contributor badge on pull requests @@ -139,25 +139,25 @@ If the pull request doesn't look ready to merge, you can politely reply telling If you need a second opinion on a pull request, go ahead and leave your comments on the pull request, then add the "discussing" label to the pull request. -##### Closing an invalid pull request: +##### Closing an Invalid Pull Request: -Often, a pull request will be low effort. You can usually tell this immediately when the contributor didn't bother checking the checkboxes in the Pull Request Template or used a generic pull request title like "made changes" or "Update index.md". +Often, a pull request will be low effort. You can usually tell this immediately when the contributor didn't bother checking the checkboxes in the Pull Request Template or used a generic pull request title like "Made changes" or "Update index.md". There are also situations where the contributor is trying to add a link to their website, include a library they created, or have a frivolous edit that doesn't help anyone but themselves. -You can close invalid pull requests and reply to them with these [reply templates](moderator-handbook.md#closing-invalid-pull-requests). +You can close these invalid pull requests and reply to them with these [reply templates](moderator-handbook.md#closing-invalid-pull-requests). -#### Other guidelines for Moderators on GitHub +#### Other Guidelines for Moderators on GitHub Though you will have write access to freeCodeCamp's repository, **you should never push code directly to freeCodeCamp repositories**. All code should enter freeCodeCamp's codebase in the form of a pull request from a fork of the repository. Also, you should never accept your own PRs. They must be reviewed by another moderator, just like any other PR. -If you notice anyone breaking the [code of conduct](https://code-of-conduct.freecodecamp.org) on GitHub issues, or opening pull requests with malicious content or code, email `support[at]freecodecamp.org` with a link to the offending pull request, and we can consider banning them from freeCodeCamp's GitHub organization entirely. +If you notice anyone breaking the [Code of Conduct](https://code-of-conduct.freecodecamp.org) on GitHub issues, or opening pull requests with malicious content or code, email `support[at]freecodecamp.org` with a link to the offending pull request, and we can consider banning them from freeCodeCamp's GitHub organization entirely. ## Moderating the Forum -As a Moderator, you help keep our community an enjoyable place for anyone to learn and get help. You will deal with flagged posts and handle spam, off-topic, and other inappropriate conversations. +As a moderator, you help keep our community an enjoyable place for anyone to learn and get help. You will deal with flagged posts and handle spam, off-topic, and other inappropriate conversations. Note that once you are a moderator on the forum, you will start to see blue moderator hints about forum members, like "this is the first time [person] has posted - let's welcome them to the community!" or "[person] hasn't posted in a long time - let's welcome them back." @@ -165,38 +165,38 @@ Note that once you are a moderator on the forum, you will start to see blue mode These are opportunities for you to welcome them and make them feel extra special. You never know which person who's marginally involved may become our next super-helper, helping many other people in their coding journey. Even the slightest kindness may trigger a cascade of good deeds. -### Deleting forum posts +### Deleting Forum Posts -Forum moderators can delete user's posts. You should only do this for the following instances: +Forum moderators can delete users' posts. You should only do this for the following instances: 1. Someone has posted a pornographic or graphically violent image. 2. Someone has posted a link or code that is malicious in nature and could harm other campers who click on it. -3. Someone has flooded a thread with lots of spam messages. +3. Someone has flooded a thread with a lot of spam messages. -### Dealing with spam +### Dealing with Spam -For the first spam post of a user, send them a message explaining the problem, and remove the link or post as appropriate. Leave a note on the user's profile explaining the action you have taken. If the problem persists, then quietly block the user from posting (using the silence option on the User Admin panel). Send the user a warning with the Code of Conduct. Check the box in the private message indicating that your message is a "formal warning." +For the first spam post of a user, send them a message explaining the problem, and remove the link or post as appropriate. Leave a note on the user's profile explaining the action you have taken. If the problem persists, then quietly block the user from posting (using the silence option on the User Admin panel). Send the user a warning with the [Code of Conduct](https://code-of-conduct.freecodecamp.org). Check the box in the private message indicating that your message is a "formal warning." -As a moderator, you can ask questions and report incidents in the [staff forum section](https://forum.freecodecamp.org/c/mod-team/4). +As a moderator, you can ask questions and report incidents in the [mod-team forum section](https://forum.freecodecamp.org/c/mod-team/4). -### Dealing with off-topic conversations +### Dealing with Off-Topic Conversations -Posts or topics that seem to be in the wrong place can be re-categorized or renamed to whatever would be appropriate. +Posts or topics that seem to be in the wrong place can be recategorized or renamed to whatever would be appropriate. In exceptional circumstances, it may be appropriate for a moderator to fork a discussion into multiple threads. -Again, if you have any problems or questions, make a post with your actions in the Staff category, and tag another moderator if you want them to review your moderating actions. +Again, if you have any problems or questions, make a post with your actions in the `"Staff"` category, and tag another moderator if you want them to review your moderating actions. ### Underage Users -Our [Terms of Service](https://www.freecodecamp.org/terms) require that freeCodeCamp users be at least 13 years of age. If a user reveals that they are under the age of 13, send them the below message and delete their forum account (if deletion is not available, suspending the account is sufficient). +Our [Terms of Service](https://freecodecamp.org/terms) require that freeCodeCamp users be at least 13 years of age. If a user reveals that they are under the age of 13, send them the below message and delete their forum account (if deletion is not available, suspending the account is sufficient). **Email `support[at]freecodecamp.org` to delete the user's freeCodeCamp account as well.** ```markdown -SUBJECT: Users under 13 are not allowed to use the forum per Terms of Service +SUBJECT: Users under 13 are not allowed to use the forum per our Terms of Service. -It has come to our attention that you are under 13 years of age. Per the [freeCodeCamp terms of service](https://www.freecodecamp.org/news/terms-of-service), you must be at least 13 years old to use the site or the forum. We will be deleting both your freeCodeCamp account and your forum account. This restriction keeps us in compliance with United States laws. +It has come to our attention that you are under 13 years of age. Per the [freeCodeCamp Terms of Service](https://freecodecamp.org/terms), you must be at least 13 years old to use the site or the forum. We will be deleting both your freeCodeCamp account and your forum account. This restriction keeps us in compliance with United States laws. Please rejoin once you have reached at least 13 years of age. @@ -215,11 +215,11 @@ But if it is an egregious offense that can't reasonably be attributed to a cultu Here's how moderators deal with violations of our [Code of Conduct](https://code-of-conduct.freecodecamp.org/) on our chat server: -1. **Make sure the user intended to violate the Code of Conduct.** +1. **Make sure the user intended to violate the [Code of Conduct](https://code-of-conduct.freecodecamp.org).** - Not all violations of the CoC were intended as such. A new camper might post a large amount of code for help, unaware that this can be considered spamming. In these cases, you can just ask them to paste their code with services like CodePen or Pastebin. + Not all violations of the [Code of Conduct](https://code-of-conduct.freecodecamp.org) were intended as such. A new camper might post a large amount of code for help, unaware that this can be considered spamming. In these cases, you can just ask them to paste their code with services like CodePen or Pastebin. -2. **If the camper clearly and intentionally violates the Code of Conduct, the moderator will proceed as follows:** +2. **If the camper clearly and intentionally violates the [Code of Conduct](https://code-of-conduct.freecodecamp.org), the moderator will proceed as follows:** Kick or mute the offending person from the chat room. To kick or mute someone, left-click on their profile picture, select the three dots, and select "Remove from room" to kick or "Mute user" to prevent them from sending messages. Then report a short summary of the event in the #mod-log channel. Here's an example of what such a summary might look like: @@ -229,15 +229,15 @@ Here's how moderators deal with violations of our [Code of Conduct](https://code Evidence: _One or more links to the offending message(s)_ ``` -3. **Creating a Private Discussion** +3. **Creating a private discussion** There may be situations where you need to address a concern with a camper privately. This should not be done through DMs, which can lead to situations where you claim one thing and the camper claims another. Instead, use the bot's functionality to create a private discussion: - - Call the `!fCC private username` command, where `username` is the camper's chat username. + - Call the `!fcc private username` command, where `username` is the camper's chat username. - The bot will create a new channel, and add the mentioned camper and all moderators with the `Your Friendly Moderator` role. While all moderators are added to the channel for transparency, the moderator who calls this command should be the only one to interact with the camper unless they request assistance. - - When the conversation is complete, call the `!fCC close` command _in the private channel_ to have the bot close and delete that channel. + - When the conversation is complete, click the `❌ Close` button _on the first message in the private channel_ to have the bot close and delete that channel. -4. **Deleting Messages** +4. **Deleting messages** Moderators can delete messages on our chat server. They should only exercise this ability in four very specific situations: @@ -249,122 +249,122 @@ Here's how moderators deal with violations of our [Code of Conduct](https://code - Someone has posted an advertisement and/or a self-promoting message/image (social media). - In all other situations - even situations where the code of conduct is violated - moderators should not delete the messages as they are important historic records. When you do delete a message, make sure you take a screenshot of it first! The screenshot can be logged in the #mod-log channel. + In all other situations - even situations where the [Code of Conduct](https://code-of-conduct.freecodecamp.org) is violated - moderators should not delete the messages as they are important historic records. When you do delete a message, make sure you take a screenshot of it first! The screenshot can be logged in the #mod-log channel. > [!NOTE] - > If the message contains material that would be illegal to take a screenshot of, copy the message link instead - provide that message link to @raisedadead to forward to Discord's Trust and Safety team. + > If the message contains material that would be illegal to take a screenshot of, copy the message link instead - provide that message link to **@raisedadead** to forward to Discord's Trust and Safety team. -5. **Don’t use @all or @here** +5. **Don’t use @all, @everyone, or @here** - Don’t use @all or @here under any circumstances! Every single person in that chat room will get a notification. In some cases, tens of - thousands of people. + Don’t use **@all**, **@everyone**, or **@here** under any circumstances! Every single person in that chat room will get a notification. In some cases, tens of thousands of people. - Instead, if you want people to see an announcement, you can pin it to the channel to allow everyone to read it. + Instead, if you want people to see an announcement, you can pin it to the channel to allow everyone to read it over time. 6. **Don’t threaten to take action** - If a camper breaks the code of conduct, don’t threaten to take moderator action, and never warn them in public. Instead, talk to them privately using the bot's `private` command. No one else in that channel needs to know that you banned/suspended the person. If a violation was clearly unintended and doesn't warrant a suspension or private conversation, make the offending camper aware of his / her actions without making it come across as a warning. For example: + If a camper breaks the [Code of Conduct](https://code-of-conduct.freecodecamp.org), don’t threaten to take moderator action, and never warn them in public. Instead, talk to them privately using the bot's `private` command. No one else in that channel needs to know that you banned/suspended the person. If a violation was clearly unintended and doesn't warrant a suspension or private conversation, make the offending camper aware of his / her actions without making it come across as a warning. + For example: - Camper posts a wall of code to request help: - Moderator: @username Please use CodePen or Pastebin when posting large amounts of code. + Moderator: **@username** Please use CodePen or Pastebin when posting large amounts of code. - Or if you really have to explain why: - Moderator: @username Please use CodePen or Pastebin when posting large amounts of code, because it disrupts the chat for everyone and could be considered spamming according to our Code of Conduct. + Moderator: **@username** Please use CodePen or Pastebin when posting large amounts of code, because it disrupts the chat for everyone and could be considered spamming according to our [Code of Conduct](https://code-of-conduct.freecodecamp.org). - - For mild and unintentional violations of the code of conduct: + - For mild and unintentional violations of the [Code of Conduct](https://code-of-conduct.freecodecamp.org): - Moderator: This is a friendly reminder for everyone to follow the code of conduct: https://code-of-conduct.freecodecamp.org/ + Moderator: This is a friendly reminder for everyone to follow the [Code of Conduct](https://code-of-conduct.freecodecamp.org): https://code-of-conduct.freecodecamp.org/ 7. **Don’t brag about being a moderator** - Do not see yourself as above the community. You are the community. And the community has trusted you to help protect something rare that we all share - a _welcoming_ place for new developers. + Do not see yourself as above the community. **You are the community.** And the community has trusted you to help protect something rare that we all share - a _welcoming_ place for new developers. If you brag about being a moderator, people may feel uneasy around you, in the same way that people may feel uneasy around a police officer, even if they’re doing nothing wrong. This is just human nature. 8. **Don’t contradict other moderators** - If you disagree with a moderator's action, talk with them in private or bring it up in the #mod-chat channel. Never override a moderator's action, and never contradict the other moderator(s) publicly. Instead, have a cool-headed discussion in `#mod-chat` and convince the moderator that they themselves should reverse their ban or change their point of view. + If you disagree with a moderator's action, talk with them in private or bring it up in the #mod-chat channel. Never override a moderator's action, and never contradict the other moderator(s) publicly. Instead, have a cool-headed discussion in `#mod-chat` and convince the moderator that they themselves should reverse their ban or change their PoV (Point of View). - Remember: we’re all on the same team. We want to dignify the role of moderators and present a unified front. + _Remember: We’re all on the same team. We want to dignify the role of moderators and present a unified front._ 9. **Talk with other moderators** - We have a room for moderators only. Use it! If you feel uncomfortable with handling a certain situation, ask other moderators for help. If you think something should be discussed, do it. You're part of the team, and we value every team member's input! Even if you totally disagree with anything in these guidelines or the Code of Conduct! + We have a room for moderators only. Use it! If you feel uncomfortable with handling a certain situation, ask other moderators for help. If you think something should be discussed, do it. You're part of the team, and we value every team member's input! Even if you totally disagree with anything in these guidelines or the [Code of Conduct](https://code-of-conduct.freecodecamp.org)! 10. **Temporarily inactive** If you're not going to be active as a Moderator for a while due to vacation, illness, or any other reason, make sure to let the others know in the `#mod-chat` channel. This is so we know if we can count on you to be regularly active on the server or not. -## How to become a moderator +## How to Become a Moderator -Suppose you are helping people in the community consistently over time. In that case, our Moderator Team will eventually take notice, and one of them will mention you as a possible moderator to [our staff](https://forum.freecodecamp.org/g/Team). There are no shortcuts to becoming a moderator. +Suppose you are helping people in the community consistently over time. In that case, our moderator team will eventually take notice, and one of them will mention you as a possible moderator to [our staff](https://forum.freecodecamp.org/g/Team). There are no shortcuts to becoming a moderator. -If you are approved, we will add you to our Moderator Teams on [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators), and chat etc. +If you are approved, we will add you to our moderator teams on [GitHub](https://github.com/orgs/freeCodeCamp/teams/moderators), [forum](https://forum.freecodecamp.org/g/moderators), chat, etc. > [!NOTE] -> For GitHub: After you've been accepted as a moderator, you will receive a Github repository invitation. You'll need to head over towards [freeCodeCamp GitHub Organisation Invitation](https://github.com/orgs/freeCodeCamp/invitation) to be able to accept the invitation. +> For GitHub: After you've been accepted as a moderator, you will receive a Github repository invitation. You'll need to head over towards [freeCodeCamp GitHub Organization Invitation](https://github.com/orgs/freeCodeCamp/invitation) to be able to accept the invitation. > > This is required for us to be able to give you write access to some of our repositories. -## How we retire inactive moderators +## How We Retire Inactive Moderators -Please note that we will frequently remove mods whom we think are inactive. When we do this, we will send the following message: +Please note that we will frequently remove moderators whom we think are inactive. When we do this, we will send the following message: ```markdown -This is a standard message notifying you that, since you don't seem to have been an active moderator recently, we're removing you from our Moderator team. We deeply appreciate your help in the past. +This is a standard message notifying you that, since you don't seem to have been an active moderator recently, we're removing you from our moderator team. We deeply appreciate your help in the past. -If you think we did this in error, or once you're ready to come back and contribute more, just reply to this message letting me know. +If you think we did this in error, or once you're ready to come back and contribute more, just reply to this message letting us know. ``` -## How our Contributors room works +## How Our Contributors Room Works -Anyone is welcome in the [Contributors room on our chat server](https://discord.gg/PRyKn3Vbay). It is the designated chat room for moderators and other campers who contribute to our community in any number of ways, including through study groups. +Anyone is welcome in the [contributors room on our chat server](https://discord.gg/PRyKn3Vbay). It is the designated chat room for moderators and other campers who contribute to our community in any number of ways, including through study groups. -We assume contributors will read anything in this room that directly mentions them with an `@username`. Everything else is optional, but feel free to read anything anyone posts in there and interact. +We assume contributors will read anything in this room that directly mentions them with an **@username**. Everything else is optional, but feel free to read anything anyone posts in there and interact. -## Dealing with solicitors +## Dealing with Solicitors You may be approached by organizations who want to partner or co-brand with freeCodeCamp somehow. Once you realize that this is what they're after, **please stop talking to them** and tell them to email `team[at]freecodecamp.org`. We get proposals like this all the time, and the staff are in the best position to judge whether such a relationship will be worth it for our community (and it rarely is). -## Dealing with (mental) health inquiries +## Dealing with (Mental) Health Inquiries You may come across situations where users seek medical advice or are dealing with mental health issues and are looking for support. As a matter of policy, you should avoid talking privately about these matters. Should the situation reflect back to freeCodeCamp, we want to have the conversation(s) on record. Make it clear that we are not medical professionals and that you encourage the user to find professional help. -As difficult as it sometimes can be, avoid giving any tips or advice other than pointing the user in the direction of professional help! +As difficult as it sometimes can be, avoid giving any tips or advice and rather point the user in the direction of seeking professional help! -If this happens on our chat server: Create a private channel for the user and the mod team. This can be done with the bot's `private` command. +If this happens on our chat server: Create a private channel for the user and the moderator team. This can be done with the bot's `private` command. -- The user is guaranteed some privacy -- Public chat is no longer disrupted -- Other team members can pitch in, should you be uncomfortable dealing with the situation yourself +- The user is guaranteed some privacy. +- Public chat is no longer disrupted. +- Other team members can pitch in, should you feel uncomfortable dealing with the situation yourself. Helpful URLs: -http://www.suicide.org/international-suicide-hotlines.html +http://suicide.org/international-suicide-hotlines.html -## A note on free speech +## A Note on Free Speech Sometimes people will defend something offensive or incendiary that they said as "free speech." -This XKCD comic summarizes perfectly most communities' thoughts on free speech. So if someone defends something in the name of "free speech", feel free to send it to them. +This XKCD comic summarizes perfectly most communities' thoughts on free speech. -
+
Thanks for reading this, and thanks for helping the developer community! ## Reply Templates -These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues and pull requests. +These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues/pull requests. -> You can make your own with GitHub's built-in [**Saved replies**](https://github.com/settings/replies/) feature or use the ones below. +> You can make your own saved replies with GitHub's built-in [saved replies](https://github.com/settings/replies/) feature or use the ones below. -### Thank you +### Thank You ```markdown Thank you for your contribution to the page! 👍 @@ -423,7 +423,7 @@ Once you sync your fork and pass the build, we will be able to review your PR an --- -Feel free to reference the [Syncing a Fork](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄 +Feel free to reference the ["Syncing a fork"](https://help.github.com/articles/syncing-a-fork/) article on GitHub for more insight on how to keep your fork up-to-date with the upstream repository. 🔄 ```` ### Merge Conflicts @@ -461,10 +461,10 @@ Thanks again! 😊 --- -If you have any questions, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [the contributors chat room](https://discord.gg/PRyKn3Vbay). +If you have any questions, feel free to ask questions on the ["Contributors" category on our forum](https://forum.freecodecamp.org/c/contributors) or [the contributors chat room](https://discord.gg/PRyKn3Vbay). ``` -### Closing invalid pull requests +### Closing Invalid Pull Requests > When PR is invalid. @@ -485,7 +485,7 @@ Thank you for your pull request. We are closing this pull request. Please suggest links and other details to add the challenge's corresponding guide post through [a forum topic](https://forum.freecodecamp.org/new-topic?category=Contributors&title=&body=**What%20is%20your%20hint%20or%20solution%20suggestion%3F**%0A%0A%0A%0A%0A**Challenge%3A**%0A%0A%0A**Link%20to%20the%20challenge%3A**) instead. -If you think we're wrong in closing this issue, please request for it to be reopened and add further clarification. Thank you, and happy coding. +If you think we're wrong in closing this issue, please request for it to be reopened and add further clarification. Thank you and happy coding. ``` ### Closing Invalid Issues @@ -502,7 +502,7 @@ If the forum members determine there is nothing wrong with your code, you can re Thank you and happy coding. ``` -> When an issue is duplicate of an earlier issue +> When an issue is duplicate of an earlier issue. ```markdown Thank you for reporting this issue. @@ -522,14 +522,14 @@ This is a standard message notifying you that the problem you mentioned here is If you think we're wrong in closing this issue, please request for it to be reopened and add further clarification. Thank you and happy coding. ``` -### First Timer Only Issues +### `first timer only` Issues -> When an issue is deemed to be eligible for first time code contributors. +> When an issue is deemed to be eligible for first-time code contributors. ```markdown Thanks for opening this issue. -This looks like something that can be fixed by "first time" code contributors to this repository. Here are the files that you should be looking at to work on a fix: +This looks like something that can be fixed by "first-time" code contributors to this repository. Here are the files that you should be looking at to work on a fix: List of files: @@ -537,7 +537,7 @@ List of files: 2. ... 3. ... -Please make sure you read [our guidelines for contributing](https://contribute.freecodecamp.org/#/), we prioritize contributors following the instructions in our guides. Join us in [our chat room](https://discord.gg/PRyKn3Vbay) or [the forum](https://forum.freecodecamp.org/c/contributors/3) if you need help contributing, our moderators will guide you through this. +Please make sure you read our [guidelines for contributing](https://contribute.freecodecamp.org/#/), we prioritize contributors following the instructions in our guides. Join us in our [chat room](https://discord.gg/PRyKn3Vbay) or our [forum](https://forum.freecodecamp.org/c/contributors/3) if you need help contributing; our moderators will guide you through this. Sometimes we may get more than one pull request. We typically accept the most quality contribution followed by the one that is made first.