general educational fixes in some files (#40800)
Co-authored-by: Ilenia <nethleen@gmail.com> Co-authored-by: Randell Dawson <5313213+RandellDawson@users.noreply.github.com> Co-authored-by: nhcarrigan <nhcarrigan@gmail.com>
This commit is contained in:
@ -16,7 +16,7 @@
|
||||
"Coding spree!",
|
||||
"Code long and prosper.",
|
||||
"The crowd goes wild!",
|
||||
"One for the guinness book!",
|
||||
"One for the Guinness book!",
|
||||
"Flawless victory!",
|
||||
"Most efficient!",
|
||||
"You've got the touch!",
|
||||
@ -26,7 +26,7 @@
|
||||
"To the Batmobile!",
|
||||
"Pull out all the stops!",
|
||||
"You're a wizard, Harry!",
|
||||
"You're an all star!",
|
||||
"You're an all-star!",
|
||||
"Way to go!",
|
||||
"Outta sight!",
|
||||
"You're crushing it!",
|
||||
@ -95,7 +95,7 @@
|
||||
"They're in another castle.",
|
||||
"Power UP!",
|
||||
"Pikachu chooses you!",
|
||||
"I gotta have more cow bell.",
|
||||
"I gotta have more cowbell.",
|
||||
"Gotta go fast!",
|
||||
"Yipee!",
|
||||
"Cowabunga!",
|
||||
|
@ -22,7 +22,7 @@ To learn how to write Cypress tests, or 'specs', please see Cypress' official [d
|
||||
|
||||
**2. Run the cypress tests**
|
||||
|
||||
To run tests against production builds, replace `dev` with `prd` bellow.
|
||||
To run tests against production builds, replace `dev` with `prd` below.
|
||||
|
||||
- To run all tests in the `./cypress` directory:
|
||||
|
||||
|
@ -81,7 +81,7 @@ Start [using MailHog](#using-mailhog).
|
||||
|
||||
## Using MailHog
|
||||
|
||||
Open a new browser tab or window and navigate to [http://localhost:8025](http://localhost:8025) to open your MailHog inbox when the MailHog installation has completed and MailHog is running. The inbox will appear similar to the screen shot below.
|
||||
Open a new browser tab or window and navigate to [http://localhost:8025](http://localhost:8025) to open your MailHog inbox when the MailHog installation has completed and MailHog is running. The inbox will appear similar to the screenshot below.
|
||||
|
||||

|
||||
|
||||
|
@ -2,11 +2,11 @@
|
||||
|
||||
Video challenges are a new type of challenge in the freeCodeCamp curriculum.
|
||||
|
||||
A video challenge is a small section of a full-length video course on a particular topic. A video challenge page embeds a YouTube video. Each challenge page has a single multiple-choice question related to the video. A user must answer the question correctly before moving on the the next video challenge in the course.
|
||||
A video challenge is a small section of a full-length video course on a particular topic. A video challenge page embeds a YouTube video. Each challenge page has a single multiple-choice question related to the video. A user must answer the question correctly before moving on to the next video challenge in the course.
|
||||
|
||||
The video challenge pages are created by members of the freeCodeCamp team. YouTube videos are also uploaded by members of the freeCodeCamp team. Many of the video challenges do not yet have questions associated with them.
|
||||
|
||||
You can help by creating multiple choice questions related to video sections and adding the questions to the markdown files for the video challenges.
|
||||
You can help by creating multiple-choice questions related to video sections and adding the questions to the markdown files for the video challenges.
|
||||
|
||||
|
||||
## Challenge Template
|
||||
@ -34,7 +34,7 @@ Challenge description text, in markdown
|
||||
|
||||
# --question--
|
||||
|
||||
These fields are currently used for the multiple choice Python challenges.
|
||||
These fields are currently used for the multiple-choice Python challenges.
|
||||
|
||||
## --text--
|
||||
|
||||
@ -71,11 +71,11 @@ You can find the markdown files for video challenges at the following locations
|
||||
|
||||
Pick a challenge markdown file from the options above.
|
||||
|
||||
### Skim through the video associated with the challenge and create a mutiple choice question
|
||||
### Skim through the video associated with the challenge and create a multiple-choice question
|
||||
|
||||
First, find the videoId.
|
||||
|
||||
For example, in the following code from the header of a video challenge markdown file, the videoId is "nVAaxZ34khk". On GitHub, the information should be layed out in a table format.
|
||||
For example, in the following code from the header of a video challenge markdown file, the videoId is "nVAaxZ34khk". On GitHub, the information should be laid out in a table format.
|
||||
```
|
||||
---
|
||||
id: 5e9a093a74c4063ca6f7c14d
|
||||
@ -85,16 +85,16 @@ videoId: nVAaxZ34khk
|
||||
---
|
||||
```
|
||||
|
||||
Next, access the YouTube video with that videoId. The url for the video will be:
|
||||
Next, access the YouTube video with that videoId. The URL for the video will be:
|
||||
https://www.youtube.com/watch?v=[videoId] (add videoId to the URL without square brackets)
|
||||
|
||||
In the example above, the url is https://www.youtube.com/watch?v=nVAaxZ34khk
|
||||
In the example above, the URL is https://www.youtube.com/watch?v=nVAaxZ34khk
|
||||
|
||||
Skim the YouTube video with that videoId and think of a multiple choice question based on the content of the video.
|
||||
Skim the YouTube video with that videoId and think of a multiple-choice question based on the content of the video.
|
||||
|
||||
### Add the question to the markdown file
|
||||
|
||||
You can add the question locally or directly throught the GitHub interface. To add the question locally, you need to [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). You can also find the file on GitHub and click the edit button to add the question right in your browser.
|
||||
You can add the question locally or using the GitHub interface. To add the question locally, you need to [set up freeCodeCamp locally](how-to-setup-freecodecamp-locally.md). You can also find the file on GitHub and click the edit button to add the question right in your browser.
|
||||
|
||||
If a question has not yet been added to a particular video challenge, it will have the following default question:
|
||||
|
||||
@ -122,7 +122,7 @@ More answers
|
||||
1
|
||||
```
|
||||
|
||||
Update the “Question Text” with your question. Update the `Answer 1`, `Answer 2`, and so on with the possible answers. Make sure to update the video-solution number with the correct answer number. You can add more possible answers using the same format. The question and answers can be surrounded with quotation marks.
|
||||
Update the “Question Text” with your question. Update the `Answer 1`, `Answer 2`, and so on with the possible answers. Make sure to update the video-solution number with the correct answer number. You can add more possible answers using the same format. The question and answers can be surrounded by quotation marks.
|
||||
|
||||
### Question examples
|
||||
|
||||
|
@ -12,15 +12,15 @@ We recommend using [conventional title and messages](https://www.conventionalcom
|
||||
>
|
||||
> `fix(learn): tests for the do...while loop challenge`
|
||||
|
||||
When opening a Pull Request(PR), you can use the below to determine the type, scope (optional) and description.
|
||||
When opening a Pull Request(PR), you can use the below to determine the type, scope (optional), and description.
|
||||
|
||||
**Type:**
|
||||
|
||||
| Type | When to select |
|
||||
| :---- | :--------------------------------------------------------------------------- |
|
||||
| fix | Changed or updated/improved functionality, tests, verbiage of a lesson, etc. |
|
||||
| fix | Changed or updated/improved functionality, tests, the verbiage of a lesson, etc. |
|
||||
| feat | Only if you are adding new functionality, tests, etc. |
|
||||
| chore | Changes that are not related to code, tests or verbiage of a lesson. |
|
||||
| chore | Changes that are not related to code, tests, or verbiage of a lesson. |
|
||||
| docs | Changes to `/docs` directory or the contributing guidelines, etc. |
|
||||
|
||||
**Scope:**
|
||||
@ -34,7 +34,7 @@ Keep it short (less than 30 characters) and simple, you can add more information
|
||||
Some examples of good PRs titles would be:
|
||||
|
||||
- `fix(a11y): improved search bar contrast`
|
||||
- `feat: add more tests to html and css challenges`
|
||||
- `feat: add more tests to HTML and CSS challenges`
|
||||
- `fix(api,client): prevent CORS errors on form submission`
|
||||
- `docs(i18n): Chinese translation of local setup`
|
||||
|
||||
|
@ -19,11 +19,11 @@ You should now see the list of available files. Choose your file by selecting th
|
||||
|
||||

|
||||
|
||||
<!--Add proofread/crowdsource button to image-->
|
||||
<!--Add proofread/crowdsource button to the image-->
|
||||
|
||||
Here you will see the list of strings in the selected file, with their related translations. The translation that is displayed here is the translation which has received the highest score (between upvotes and downvotes) from the translation community.
|
||||
Here you will see the list of strings in the selected file, with their related translations. The translation that is displayed here is the translation that has received the highest score (between upvotes and downvotes) from the translation community.
|
||||
|
||||
While you are able to view *all* proposed translations for a given string, the community scores (determined by the upvotes and downvotes) should be taken in to consideration when choosing which translation to approve. The community is able to review proposed translations and recommend which one is most accurate and clear.
|
||||
While you can view *all* proposed translations for a given string, the community scores (determined by the upvotes and downvotes) should be taken into consideration when choosing which translation to approve. The community can review proposed translations and recommend which one is most accurate and clear.
|
||||
|
||||
1. This is the original string (in English).
|
||||
2. This is the matching translated string. The most popular translation proposal, based on upvotes and downvotes, will be displayed here.
|
||||
@ -37,7 +37,7 @@ While you are able to view *all* proposed translations for a given string, the c
|
||||
> [!WARNING]
|
||||
> Approving a string in the proofreading view will mark it as complete and it will be downloaded in our next pull from Crowdin to GitHub.
|
||||
|
||||
No additional actions are required once a file has been proofread. If you have any questions, or are interested in becoming a proofreader, feel free to reach out to us in our [translators chat room](https://chat.freecodecamp.org/translators).
|
||||
No additional actions are required once a file has been proofread. If you have any questions or are interested in becoming a proofreader, feel free to reach out to us in our [translators chat room](https://chat.freecodecamp.org/translators).
|
||||
|
||||
> [!NOTE]
|
||||
> Crowdin will allow you to approve your own translations. In general, it is best to allow another proofreader to review your proposed translations as extra safety to ensure there are no errors.
|
||||
> Crowdin will allow you to approve your translations. In general, it is best to allow another proofreader to review your proposed translations as extra safety to ensure there are no errors.
|
@ -364,9 +364,9 @@ Follow these steps:
|
||||
On branch feat/documentation
|
||||
Your branch is up to date with 'upstream/feat/documentation'.
|
||||
|
||||
Changes not staged for commit:
|
||||
Changes were not staged for commit:
|
||||
(use "git add/rm <file>..." to update what will be committed)
|
||||
(use "git checkout -- <file>..." to discard changes in working directory)
|
||||
(use "git checkout -- <file>..." to discard changes in the working directory)
|
||||
|
||||
modified: CONTRIBUTING.md
|
||||
modified: docs/README.md
|
||||
@ -442,7 +442,7 @@ Follow these steps:
|
||||
|
||||
You can learn more about why you should use conventional commits [here](https://www.conventionalcommits.org/en/v1.0.0-beta.2/#why-use-conventional-commits).
|
||||
|
||||
9. If you realise that you need to edit a file or update the commit message after making a commit you can do so after editing the files with:
|
||||
9. If you realize that you need to edit a file or update the commit message after making a commit you can do so after editing the files with:
|
||||
|
||||
```console
|
||||
git commit --amend
|
||||
@ -483,9 +483,9 @@ A quick reference to the commands that you will need when working locally.
|
||||
|
||||
### Issues with installing the recommended prerequisites
|
||||
|
||||
We regularly develop on the latest or most popular operating systems like macOS 10.15 or later, Ubuntu 18.04 or later and Windows 10 (with WSL2).
|
||||
We regularly develop on the latest or most popular operating systems like macOS 10.15 or later, Ubuntu 18.04 or later, and Windows 10 (with WSL2).
|
||||
|
||||
It is recommended to research your specific issue on resources such as Google, Stack Overflow and Stack Exchange. There is a good chance that someone has faced the same issue and there is already an answer to your specific query.
|
||||
It is recommended to research your specific issue on resources such as Google, Stack Overflow, and Stack Exchange. There is a good chance that someone has faced the same issue and there is already an answer to your specific query.
|
||||
|
||||
If you are on a different OS and/or are still running into issues, see [getting help](#getting-help).
|
||||
|
||||
@ -493,7 +493,7 @@ If you are on a different OS and/or are still running into issues, see [getting
|
||||
>
|
||||
> Please avoid creating GitHub issues for prerequisite issues. They are out of the scope of this project.
|
||||
|
||||
### Issues with the UI, Fonts, build errors etc.
|
||||
### Issues with the UI, Fonts, build errors, etc.
|
||||
|
||||
If you face issues with the UI, Fonts or see builds errors a cleanup can be useful:
|
||||
|
||||
@ -514,7 +514,7 @@ npm run clean-and-develop
|
||||
|
||||
If you continue to face issues with the build, cleaning up the workspace is recommend.
|
||||
|
||||
Use `git clean` in interative mode:
|
||||
Use `git clean` in an interactive mode:
|
||||
|
||||
```
|
||||
git clean -ifdX
|
||||
@ -528,7 +528,7 @@ git clean -ifdX
|
||||
<img src="https://user-images.githubusercontent.com/1884376/94270515-ca579400-ff5d-11ea-8ff1-152cade31654.gif" alt="How to clean git untracked files">
|
||||
</details>
|
||||
|
||||
### Issues with API, Login, Challenge Submissions, etc.
|
||||
### Issues with API, login, Challenge Submissions, etc.
|
||||
|
||||
If you can't sign in, and instead you see a banner with an error message that it will be reported to freeCodeCamp, please double-check that your local port `3000` is not in use by a different program.
|
||||
|
||||
@ -552,7 +552,7 @@ TCP 0.0.0.0:3000 DESKTOP LISTENING
|
||||
|
||||
If you get errors while installing the dependencies, please make sure that you are not in a restricted network or your firewall settings do not prevent you from accessing resources.
|
||||
|
||||
The first time setup can take a while depending on your network bandwidth. Be patient, and if you are still stuck we recommed using GitPod instead of an offline setup.
|
||||
The first time setup can take a while depending on your network bandwidth. Be patient, and if you are still stuck we recommend using GitPod instead of an offline setup.
|
||||
|
||||
## Getting Help
|
||||
|
||||
|
@ -86,7 +86,7 @@ If the replaced tags are something that should be translated (such as `strong` t
|
||||
|
||||
Follow these guidelines to ensure our translations are as accurate as possible:
|
||||
|
||||
- Do not translate content within `<code>` tags. These tags indicate text that is found in code and should be left in English.
|
||||
- Do not translate the content within `<code>` tags. These tags indicate text that is found in code and should be left in English.
|
||||
- Do not add additional content. If you feel a challenge requires changes in the text content or additional information, you should propose the changes through a GitHub issue or a pull request that modifies the English file.
|
||||
- Do not change the order of content.
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
# How to use Docker on Windows Home
|
||||
|
||||
There are a few pitfalls to be avoided when setting up docker on Windows Home. First of all you have to use [Docker Toolbox](https://docs.docker.com/toolbox/toolbox_install_windows/) as Administrator. Unfortunately Windows Home does not support Docker for Windows Desktop, so Toolbox must be used instead. It has to be run as Administrator as the installation uses symlinks, which cannot be created otherwise.
|
||||
There are a few pitfalls to be avoided when setting up Docker on Windows Home. First of all, you have to use [Docker Toolbox](https://docs.docker.com/toolbox/toolbox_install_windows/) as Administrator. Unfortunately Windows Home does not support Docker for Windows Desktop, so Toolbox must be used instead. It has to be run as Administrator as the installation uses symlinks, which cannot be created otherwise.
|
||||
|
||||
Once you've installed the toolbox, run Docker Quickstart Terminal as Administrator. This will create a `default` virtual machine, if it does not already exist. Once that has happened, close the terminal and open VirtualBox (again as Administrator). You should be able to see the `default` machine. The site is quite resource intensive, so stop the virtual machine and raise the settings as much as you can - memory in particular. It has been confirmed to work with 4GB of ram.
|
||||
Once you've installed the toolbox, run Docker Quickstart Terminal as Administrator. This will create a `default` virtual machine if it does not already exist. Once that has happened, close the terminal and open VirtualBox (again as Administrator). You should be able to see the `default` machine. The site is quite resource-intensive, so stop the virtual machine and raise the settings as much as you can - memory in particular. It has been confirmed to work with 4GB of ram.
|
||||
|
||||
Once you're happy that Docker is working, clone the freeCodeCamp repository to a directory inside `C:\Users`. These directories are shared giving Docker access to the local directories, which it needs during installation.
|
||||
|
||||
|
@ -12,9 +12,9 @@ Creating these challenges requires immense creativity and attention to detail. T
|
||||
|
||||
And as always, feel free to ask questions on the ['Contributors' category on our forum](https://forum.freecodecamp.org/c/contributors) or [the contributors chat room](https://chat.freecodecamp.org/contributors).
|
||||
|
||||
With your help we can design an interactive coding curriculum that will help millions of people learn to code for years to come.
|
||||
With your help, we can design an interactive coding curriculum that will help millions of people learn to code for years to come.
|
||||
|
||||
The content for each challenge is stored in its own markdown file. This markdown file is later converted to HTML using our tools to create interactive web pages.
|
||||
The content for each challenge is stored in its markdown file. This markdown file is later converted to HTML using our tools to create interactive web pages.
|
||||
|
||||
You can find all of freeCodeCamp.org's curricular content in the [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/main/curriculum/challenges) directory.
|
||||
|
||||
@ -57,7 +57,7 @@ Challenge instruction text, in markdown
|
||||
|
||||
# --hints--
|
||||
|
||||
Tests to run against user code, in pairs of markdown text and codeblock test code.
|
||||
Tests to run against user code, in pairs of markdown text and code block test code.
|
||||
|
||||
```js
|
||||
Code for test one
|
||||
@ -132,7 +132,7 @@ Solutions are used for the CI tests to ensure that changes to the hints will sti
|
||||
|
||||
# --question--
|
||||
|
||||
These fields are currently used for the multiple choice Python challenges.
|
||||
These fields are currently used for the multiple-choice Python challenges.
|
||||
|
||||
## --text--
|
||||
|
||||
@ -207,7 +207,7 @@ All challenge titles should be explicit and should follow this pattern:
|
||||
Here are some example challenge names:
|
||||
|
||||
- Use Clockwise Notation to Specify the Padding of an Element
|
||||
- Condense arrays with .reduce
|
||||
- Condense arrays with .reduce
|
||||
- Use Bracket Notation to Find the First Character in a String
|
||||
|
||||
## Challenge descriptions/instructions
|
||||
@ -220,7 +220,7 @@ Challenge text should use the second person ("you") to help to give it a convers
|
||||
|
||||
Don't use outbound links. These interrupt the flow. Campers should never have to google anything during these challenges. If there are resources you think campers would benefit from, add them to the challenge's Guide-related article.
|
||||
|
||||
You can add diagrams if absolutely necessary.
|
||||
You can add diagrams if necessary.
|
||||
|
||||
Don't use emojis or emoticons in challenges. freeCodeCamp has a global community, and the cultural meaning of an emoji or emoticon may be different around the world. Also, emojis can render differently on different systems.
|
||||
|
||||
@ -232,7 +232,7 @@ Proper nouns should use correct capitalization when possible. Below is a list of
|
||||
|
||||
### The 2-minute rule
|
||||
|
||||
Each challenge should be solvable within 120 seconds by a native English speaker who has completed the challenges leading up to it. This includes the amount of time it takes to read the directions/instructions understand the seeded code, write their own code and get all the tests to pass.
|
||||
Each challenge should be solvable within 120 seconds by a native English speaker who has completed the challenges leading up to it. This includes the amount of time it takes to read the directions/instructions understand the seeded code, write their code and get all the tests to pass.
|
||||
|
||||
If it takes longer than two minutes to complete the challenge, you have two options:
|
||||
|
||||
@ -256,12 +256,12 @@ Our goal is to have thousands of 2-minute challenges. These can flow together an
|
||||
Here are specific formatting guidelines for challenge text and examples:
|
||||
|
||||
- Language keywords go in `\`` backticks. For example, HTML tag names or CSS property names.
|
||||
- References to code parts (i.e. function, method or variable names) should be wrapped in `\`` backticks. See example below:
|
||||
- References to code parts (i.e. function, method, or variable names) should be wrapped in `\`` backticks. See example below:
|
||||
```md
|
||||
Use `parseInt` to convert the variable `realNumber` into an integer.
|
||||
```
|
||||
- References to file names and path directories (e.g. `package.json`, `src/components`) should be wrapped in `\`` backticks.
|
||||
- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a newline which only has three backticks and **another empty line**. See example below:
|
||||
- Multi-line code blocks **must be preceded by an empty line**. The next line must start with three backticks followed immediately by one of the [supported languages](https://prismjs.com/#supported-languages). To complete the code block, you must start a new line which only has three backticks and **another empty line**. See example below:
|
||||
- Whitespace matters in Markdown, so we recommend that you make it visible in your editor.
|
||||
|
||||
**Note:** If you are going to use an example code in YAML, use `yaml` instead of `yml` for the language to the right of the backticks.
|
||||
@ -302,7 +302,7 @@ Here are specific formatting guidelines for the challenge seed code:
|
||||
|
||||
We have a [comment dictionary](/curriculum/dictionaries/english/comments.js) that contains the only comments that can be used within the seed code. The exact case and spacing of the dictionary comment must be used. The comment dictionary should not be expanded without prior discussion with the dev-team.
|
||||
|
||||
Comments used should have a space between the comment characters and the comment themselves. In general comments should be used sparingly. Always consider rewriting a challenge's description or instructions if it could avoid using a seed code comment.
|
||||
Comments used should have a space between the comment characters and the comment themselves. In general, comments should be used sparingly. Always consider rewriting a challenge's description or instructions if it could avoid using a seed code comment.
|
||||
|
||||
Example of valid single line JavaScript comment:
|
||||
|
||||
@ -362,7 +362,7 @@ class MyComponent extends React.Component {
|
||||
|
||||
### Translation of seed code comments
|
||||
|
||||
There are separate comment dictionaries for each language. The [English vesion of the comment dictionary](/curriculum/dictionaries/english/comments.js) is the basis for the translations found in the corresponding non-English versions of the files. The non-English version of the Chinese comment dictionary would be located at `/curriculum/dictionaries/chinese/comments.js`. Each dictionary consists of an array of objects with a unique `id` property and a `text` property. Only the `text` should be modified to encompass the translation of the corresponding English comment.
|
||||
There are separate comment dictionaries for each language. The [English version of the comment dictionary](/curriculum/dictionaries/english/comments.js) is the basis for the translations found in the corresponding non-English versions of the files. The non-English version of the Chinese comment dictionary would be located at `/curriculum/dictionaries/chinese/comments.js`. Each dictionary consists of an array of objects with a unique `id` property and a `text` property. Only the `text` should be modified to encompass the translation of the corresponding English comment.
|
||||
|
||||
Some comments may contain a word/phrase that should not be translated. For example, variable names or proper library names like "React" should not be translated. See the comment below as an example. The word `myGlobal` should not be translated.
|
||||
|
||||
@ -400,7 +400,7 @@ When proposing a solution for a curriculum challenge related Guide topic, the fu
|
||||
|
||||
## Problem Explanation
|
||||
|
||||
This summarizes what need to be done without just restating the challenge description and/or instructions. This is an optional section
|
||||
This summarizes what needs to be done without just restating the challenge description and/or instructions. This is an optional section
|
||||
|
||||
#### Relevant Links
|
||||
|
||||
|
@ -8,7 +8,7 @@ This will help you moderate different places in our community, including:
|
||||
|
||||
**All freeCodeCamp Moderators are community-wide moderators. That means that we trust you to oversee any of these places.**
|
||||
|
||||
This said, you can serve as a moderator in whichever places are of the most interest to you. Some moderators just help out on GitHub. Others just help out on the forum. Some moderators are active everywhere.
|
||||
This said you can serve as a moderator in whichever places are of the most interest to you. Some moderators just help out on GitHub. Others just help out on the forum. Some moderators are active everywhere.
|
||||
|
||||
The bottom line is that we want you to enjoy being a moderator, and invest your scarce time in places that are of interest to you.
|
||||
|
||||
@ -34,11 +34,11 @@ Moderators have two primary responsibilities regarding GitHub:
|
||||
|
||||
### Moderating Pull Requests
|
||||
|
||||
Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's repository. It's important that we perform Quality Assurance (QA) on pull requests before we decide whether to merge them or close them.
|
||||
Pull Requests (PRs) are how contributors submit changes to freeCodeCamp's repository. We must perform Quality Assurance (QA) on pull requests before we decide whether to merge them or close them.
|
||||
|
||||
#### Types of Pull Requests
|
||||
|
||||
1. **Challenge Instruction Edits** 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. Also, contributors may try to add links to resources to the challenges. You can close these pull requests and reply to them with this:
|
||||
1. **Challenge Instruction Edits** 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. Also, contributors may try to add links to resources to the challenges. You can close these pull requests and reply to them with this:
|
||||
|
||||
```markdown
|
||||
Thank you for your pull request.
|
||||
@ -50,29 +50,29 @@ If you think we're wrong in closing this issue, please request for it to be reop
|
||||
|
||||
2. **Challenge Code Edits** 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 to make sure the challenge tests can still be passed with the current solution, and 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.
|
||||
|
||||
3. **Codebase Changes** These code edits change the functionality of the freeCodeCamp platform itself. Sometimes contributors try to make changes without much explanation, but for code changes we need to make sure there's a genuine need for the change. So these pull requests should reference an existing GitHub issue where the reasons for the change are discussed. Then you can open the pull request on your computer and test them out locally. After you've done so, if the changes look good, don't merge them quite yet. You can comment on the pull request saying "LGTM", then mention @raisedadead so he can take a final look.
|
||||
3. **Codebase Changes** These code edits change the functionality of the freeCodeCamp platform itself. Sometimes contributors try to make changes without much explanation, but for code changes, we need to make sure there's a genuine need for the change. So these pull requests should reference an existing GitHub issue where the reasons for the change are discussed. Then you can open the pull request on your computer and test them out locally. After you've done so, if the changes look good, don't merge them quite yet. You can comment on the pull request saying "LGTM", then mention @raisedadead so he can take a final look.
|
||||
|
||||
#### How to merge or close pull requests
|
||||
|
||||
First of all, when you choose a pull request to QA, you should assign yourself to it. You can do this by clicking the "assign yourself" link below the "assignees" part on the right hand column of GitHub's interface.
|
||||
First of all, when you choose a pull request to QA, you should assign yourself to it. You can do this by clicking the "assign yourself" link below the "assignees" part on the right-hand column of GitHub's interface.
|
||||
|
||||
Depending on the type of pull request it is, follow the corresponding rules listed above.
|
||||
|
||||
Before merging any pull request, make sure that GitHub has green checkmarks for everything. If there are any X's, investigate them first and figure out how to get them turned into green checkmarks first.
|
||||
|
||||
Sometimes there will be a Merge Conflict. This means that another pull request has made a change to that exact 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 judgement. The pull request's changes will be on top, and the Master branch's changes will be on 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.
|
||||
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. The pull request's changes will be on top, and the Master 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.
|
||||
|
||||
If the pull request looks ready to merge (and doesn't require approval from @raisedadead), you can go ahead and merge it. Be sure to use the default "Squash and Merge" functionality on GitHub. This will squash all the pull requests commits down into a single commit, which makes the Git history much easier to read.
|
||||
|
||||
You should then comment on the pull request, thanking the contributor in your own personal way.
|
||||
|
||||
If the author of the pull request 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:
|
||||
If the author of the pull request 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:
|
||||
|
||||

|
||||
|
||||
If the pull request doesn't look ready to merge you can politely reply telling the author what they should do to get it ready. Hopefully they will reply and get their pull request closer to ready.
|
||||
If the pull request doesn't look ready to merge you can politely reply telling the author what they should do to get it ready. Hopefully, they will reply and get their pull request closer to ready.
|
||||
|
||||
Often, a pull request will be obviously low effort. You can often 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 obviously low effort. You can often 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 own website, or include a library they themselves created, or has a frivolous edit that doesn't serve to help anyone but themselves.
|
||||
|
||||
@ -108,8 +108,8 @@ Thank you and happy coding.
|
||||
|
||||
2. **Bug or Clarification issues** Try to reproduce the bug yourself if you can. If not, ask them for the steps to reproduce the bug, and whether they have any screenshots, videos, or additional details that can help you reproduce the issue. Once you can reproduce the issue - or at least confirm it's a legit issue - label it `confirmed`. Then:
|
||||
|
||||
- If it's a simple change to an existing challenge, label as `first timers only`, otherwise label as `help wanted`. Use other labels as appropriate.
|
||||
- If the issue is more significant, flag as `bug`.
|
||||
- If it's a simple change to an existing challenge, label it as `first timers only`, otherwise label it as `help wanted`. Use other labels as appropriate.
|
||||
- If the issue is more significant, flag it as `bug`.
|
||||
|
||||
If there is any ambiguity as to the proper course of action on an issue, feel free to tag @raisedadead on the issue get his opinion on it, then add the `Discussing` label.
|
||||
|
||||
@ -135,11 +135,11 @@ If you think we're wrong in closing this issue, please request for it to be reop
|
||||
|
||||
#### Closing Stale, Outdated, Inactive Issues and Pull Requests
|
||||
|
||||
- Stale Issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves.
|
||||
- Stale issues or PRs are those that have not seen any activity from the OP for 21 days (3 weeks from the last activity), but only after a moderator has requested more information/changes. These can be closed in an automated/bot script or by the moderators themselves.
|
||||
|
||||
- Activity is defined as: Comments requesting an update on the PR and triages like `status: update needed` label etc.
|
||||
|
||||
- If the OP 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 judgement to resolve the outstanding PR's status.
|
||||
- If the OP 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.
|
||||
|
||||
#### Other guidelines for Moderators on GitHub
|
||||
|
||||
@ -164,7 +164,7 @@ These are opportunities for you to welcome them and make them feel extra special
|
||||
Forum moderators have the ability to delete user's 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.
|
||||
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.
|
||||
|
||||
### Dealing with spam
|
||||
@ -212,7 +212,7 @@ Here's how moderators deal with violations of our [Code of Conduct](https://code
|
||||
|
||||
2. **If the camper clearly and intentionally violates the Code of Conduct, the moderator will proceed as follows:**
|
||||
|
||||
- Ban the offending person from the Discord Server. In order to ban someone, right click on their username/profile picture and select "Ban username". You will be given the option to delete their previous messages - select "Don't delete any", as the messages should remain present as a historic record.
|
||||
- Ban the offending person from the Discord Server. In order to ban someone, right-click on their username/profile picture and select "Ban username". You will be given the option to delete their previous messages - select "Don't delete any", as the messages should remain present as a historic record.
|
||||
- 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,7 +229,7 @@ Discord Bans are global - you cannot ban a user from a specific channel, only fr
|
||||
|
||||
There may be situations where you need to address a concern with a camper privately. This should not be done through DMs, as this 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 moderate private @username` command, where `@username` is the *Discord mention* of the user. If you are calling this command from a private channel (such as #mod-chat), you will need to parse the mention manually: Ensure you have Developer Mode turned on in your Discord settings, then right click on the user's avatar and select `Copy ID`. Replace the `@username` parameter with `<@!ID>`, where `ID` is the value you copied earlier. The result should look like: `!fCC moderate private <@!465650873650118659>`.
|
||||
- Call the `!fCC moderate private @username` command, where `@username` is the *Discord mention* of the user. If you are calling this command from a private channel (such as #mod-chat), you will need to parse the mention manually: Ensure you have Developer Mode turned on in your Discord settings, then right-click on the user's avatar and select `Copy ID`. Replace the `@username` parameter with `<@!ID>`, where `ID` is the value you copied earlier. The result should look like: `!fCC moderate private <@!465650873650118659>`.
|
||||
- The bot will create a new channel under the `private` category and add the `@username`-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 moderate close` command *in the private channel* to have the bot close and delete that channel.
|
||||
|
||||
@ -237,9 +237,9 @@ There may be situations where you need to address a concern with a camper privat
|
||||
Moderators have the ability to delete messages on Discord. They should only exercise this ability in four very specific situations:
|
||||
|
||||
- Someone has posted a pornographic or graphically violent image.
|
||||
- Someone has posted a link or code that is malicious in nature, and could harm other campers who click on it.
|
||||
- Someone has posted a link or code that is malicious in nature and could harm other campers who click on it.
|
||||
- Someone has flooded the chat with lots of spam messages to such an extreme extent (usually involving bots) as to render chat completely unusable.
|
||||
- Someone has posted advertisement and / or a self-promoting message / image (social media).
|
||||
- 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 message as these are an important historic record. 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, but for the #activity-log it is sufficient to say the evidence was "removed due to sensitive content". 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.
|
||||
|
||||
@ -247,7 +247,7 @@ In all other situations - even situations where the code of conduct is violated
|
||||
Don’t use @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.
|
||||
|
||||
6. **Don’t threaten to ban** If a camper is breaking the code of conduct, don’t threaten to ban them, 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 - campers can view the summary in the #activity-log channel if they want to keep up on that information. 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:
|
||||
6. **Don’t threaten to ban** If a camper is breaking the code of conduct, don’t threaten to ban them, 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 - campers can view the summary in the #activity-log channel if they want to keep up on that information. 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
|
||||
|
||||
@ -263,7 +263,7 @@ In all other situations - even situations where the code of conduct is violated
|
||||
|
||||
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.
|
||||
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.
|
||||
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 the action of a moderator, talk with them in private or bring it up in the #mod-chat channel. Never override a ban, 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.
|
||||
@ -273,7 +273,7 @@ In all other situations - even situations where the code of conduct is violated
|
||||
We have a room for moderators only. Use it! If you feel uncomfortable with how to handle 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 the input of every team member! Even if you totally disagree with anything in these guidelines or the Code of Conduct!
|
||||
|
||||
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 in the server or not.
|
||||
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.
|
||||
|
||||
## Moderating our Chat Server
|
||||
|
||||
@ -292,7 +292,7 @@ If you are helping people in the community consistently over time, our 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), 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. This is required for us to be able to give you write access on some of our repositories.
|
||||
> [!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. This is required for us to be able to give you write access to some of our repositories.
|
||||
|
||||
## How we retire inactive moderators
|
||||
|
||||
@ -322,7 +322,7 @@ If this happens on Discord: Create a private channel for the user and the mod te
|
||||
- Public chat is no longer disrupted
|
||||
- Other team members can pitch in, should you be uncomfortable dealing with the situation yourself
|
||||
|
||||
If you believe the user is capable of rejoining the community, right click on the private channel and copy the ID. Put the following message in #mod-log:
|
||||
If you believe the user is capable of rejoining the community, right-click on the private channel and copy the ID. Put the following message in #mod-log:
|
||||
|
||||
> Reference medical advice: `<channel ID> <username>`
|
||||
|
||||
|
Reference in New Issue
Block a user