diff --git a/docs/i18n/chinese/FAQ.md b/docs/i18n/chinese/FAQ.md
index eed0f3cbe4..da993a6378 100644
--- a/docs/i18n/chinese/FAQ.md
+++ b/docs/i18n/chinese/FAQ.md
@@ -4,13 +4,9 @@ Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeC
### Can I translate freeCodeCamp's curriculum?
-Yes - Read [this guide](/how-to-translate-files) if you are interested in contributing to translation.
+Yes - Read [this guide](/how-to-translate-files) if you are interested in contributing to translations.
-Currently we have the user contributed translations being done in Chinese and Español.
-
-At this time we are building our experience hosting the curriculum in the aforementioned languages. Eventually, we intend to localize freeCodeCamp into several major world languages, like: Arabic, Hindi, Portuguese, Russian and more.
-
-We thank you for your patience while we iron out the workflow.
+Currently we have the user contributed translations being done in Chinese and Español. We intend to localize freeCodeCamp into several major world languages. You can read all about this in our [announcement here](https://www.freecodecamp.org/news/world-language-translation-effort).
### How can I report a new bug?
@@ -70,17 +66,20 @@ We are excited to help you contribute to any of the topics that you would like t
Thanks in advance for being polite and patient. Remember – this community is run mainly by volunteers.
-**Additional Assistance:**
+### Additional Assistance
-If you have queries about the stack, architecture of the codebase, feel free to reach out to our staff dev team:
+If you have queries about the stack, architecture of the codebase, translations, or anything else feel free to reach out to our staff.
| Staff | Send message on Forum |
|:--------------------- |:---------------------------------------------------------------------------- |
-| Mrugesh Mohapatra | [@raisedadead](https://forum.freecodecamp.org/u/raisedadead) |
| Ahmad Abdolsaheb | [@abdolsa](https://forum.freecodecamp.org/u/abdolsa) |
| Kristofer Koishigawa | [@scissorsneedfoodtoo](https://forum.freecodecamp.org/u/scissorsneedfoodtoo) |
-| Tom Mondloc | [@moT01](https://forum.freecodecamp.org/u/moT01) |
+| Miya Liu | [@miyaliu](https://chinese.freecodecamp.org/forum/u/miyaliu) |
+| Mrugesh Mohapatra | [@raisedadead](https://forum.freecodecamp.org/u/raisedadead) |
+| Nicholas Carrigan | [@nhcarrigan](https://forum.freecodecamp.org/u/nhcarrigan) |
| Oliver Eyton-Williams | [@ojeytonwilliams](https://forum.freecodecamp.org/u/ojeytonwilliams) |
+| Rafael D Hernandez | [@RafaelHernandez](https://forum.freecodecamp.org/u/rafaelhernandez) |
| Randell Dawson | [@RandellDawson](https://forum.freecodecamp.org/u/randelldawson) |
+| Tom Mondloc | [@moT01](https://forum.freecodecamp.org/u/moT01) |
**You can email our developer staff at: `dev[at]freecodecamp.org`**
diff --git a/docs/i18n/chinese/devops.md b/docs/i18n/chinese/devops.md
index 4761aa3314..d60878b09b 100644
--- a/docs/i18n/chinese/devops.md
+++ b/docs/i18n/chinese/devops.md
@@ -69,7 +69,7 @@ Currently, only members on the developer team can push to the production branche
upstream git@github.com:freeCodeCamp/freeCodeCamp.git (push)
```
-2. Make sure your `maim` branch is pristine and in sync with the upstream.
+2. Make sure your `main` branch is pristine and in sync with the upstream.
```sh
git checkout main
@@ -557,14 +557,14 @@ Provisioning VMs with the Code
7. Build the server
```console
- npm run ensure-env && npm run build:server
+ npm run ensure-env && npm run build:curriculum && npm run build:server
```
8. Start Instances
```console
cd api-server
- pm2 start production-start.js -i max --max-memory-restart 600M --name org
+ pm2 start ./lib/production-start.js -i max --max-memory-restart 600M --name org
```
### Logging and Monitoring
@@ -600,7 +600,7 @@ npm ci
3. Build the server
```console
-npm run ensure-env && npm run build:server
+npm run ensure-env && npm run build:curriculum && npm run build:server
```
4. Start Instances
diff --git a/docs/i18n/chinese/how-to-proofread-files.md b/docs/i18n/chinese/how-to-proofread-files.md
index af2054c3c6..bcc67b8f1a 100644
--- a/docs/i18n/chinese/how-to-proofread-files.md
+++ b/docs/i18n/chinese/how-to-proofread-files.md
@@ -35,6 +35,6 @@
> [!WARNING] 校对确认之后的字符串会被标注为已完成。我们将在下一次从 Crowdin 拉取内容时下载这些字符串。
-当文件被校对确认完毕,你不需要采取其他任何行动。 如果你有任何问题,或者感兴趣成为一名校对贡献者,请随时在[译者交流群](https://chat.freecodecamp.org/channel/translators)联系我们。
+当文件被校对确认完毕,你不需要采取其他任何行动。 如果你有任何问题,或者感兴趣成为一名校对贡献者,请随时在[译者交流群](https://chat.freecodecamp.org/channel/translators)联系我们。 If you are already a proofreader and are interested in having a dedicated channel for a specific language, [fill out our form](https://forms.gle/XU5CyutrYCgDYaVZA).
> [!NOTE] Crowdin 会允许你校对你自己的译文。 一般来说,最好是让另一位校对者审核你的译文,以确保最终内容的准确性。
diff --git a/docs/i18n/chinese/how-to-translate-the-website.md b/docs/i18n/chinese/how-to-translate-the-website.md
index 6ea2b7732b..a783a75cd8 100644
--- a/docs/i18n/chinese/how-to-translate-the-website.md
+++ b/docs/i18n/chinese/how-to-translate-the-website.md
@@ -20,7 +20,7 @@ The `meta-tags.json` file contains the information for our website's meta tag in
To add a new language, create a folder with the language name as the title next to the other languages and copy the JSON files from another language into your new folder.
-In the `allLangs.js` file, add the language to the `client` array in the first variable. Then, follow the instructions in the comments to add the rest of the necessary variables.
+In the `all-langs.js` file, add the language to the `client` array in the first variable. Then, follow the instructions in the comments to add the rest of the necessary variables.
## How to Translate
@@ -32,7 +32,7 @@ Modifications to the `trending.json`, `meta-tags.json`, and `motivation.json` fi
Set the `CLIENT_LOCALE` variable in your `.env` file to the locale you want to build.
-> [!NOTE] The value needs to be one of the client languages available in `client/i18n/allLangs.js`
+> [!NOTE] The value needs to be one of the client languages available in `config/i18n/all-langs.js`
## How to Structure Components
diff --git a/docs/i18n/chinese/index.md b/docs/i18n/chinese/index.md
index 0bbeda1b34..799e36a7dd 100644
--- a/docs/i18n/chinese/index.md
+++ b/docs/i18n/chinese/index.md
@@ -22,9 +22,11 @@ You can help expand and improve the curriculum. You can also update project user
## Translations
-We are localizing freeCodeCamp.org to world languages starting with Chinese and Espanol. We will be expanding the translations to more languages. It's our dream to provide you with resources to learn, no matter the world language you speak.
+We are localizing freeCodeCamp.org to world languages starting with Chinese and Español. We will be expanding the translations to more languages.
-To help us with this massive effort, we have integrated our open-source code-base & curriculum with [Crowdin](https://crowdin.com/).
+To help us with this massive effort, we have integrated our open-source code-base & curriculum with [Crowdin](https://crowdin.com/). You can read all about this in our [announcement here](https://www.freecodecamp.org/news/world-language-translation-effort). We encourage you to read the announcement and share it your friends to get them excited about this.
+
+It's our dream to provide you with the resources to learn, no matter the world language you speak.
**If you're interested in translating, here are the guides to translate our [curriculum](how-to-translate-files.md), the [learning platform](how-to-translate-the-website.md) and our [Contributing guidelines](https://translate.freecodecamp.org/contributing-docs).**
diff --git a/docs/i18n/chinese/moderator-handbook.md b/docs/i18n/chinese/moderator-handbook.md
index d2396c25f2..39d08facc7 100644
--- a/docs/i18n/chinese/moderator-handbook.md
+++ b/docs/i18n/chinese/moderator-handbook.md
@@ -1,18 +1,14 @@
# The official freeCodeCamp Moderator Handbook.
-This will help you moderate different places in our community, including:
+This handbook will help you moderate different places in our community. This covers conversations and interactions in issues & pull request threads on GitHub, the community forum, the chat rooms and other official communities that we foster.
-- GitHub issues & pull requests
-- The forum, chat rooms, Facebook groups, and other online meeting places
-- In-person events like study groups, hackathons, and conferences
+> [!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 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.
+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. Others just help out on the forum. Some 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.
-> [!NOTE] "With great power comes great responsibility." - Uncle Ben
+> "With great power comes great responsibility." - Uncle Ben
As a moderator, temperament is more important than technical skill.
@@ -22,129 +18,139 @@ 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).
+> [!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 on a platform that you would like to moderate please [reach out to a staff member](/FAQ?id=additional-assistance).
+
## Moderating GitHub
-Moderators have the ability to close issues and accept or close pull requests.
+Moderators have two primary responsibilities on GitHub:
-Moderators have two primary responsibilities regarding GitHub:
+1. Triaging and responding to issues
+2. Reviewing and merging pull requests (a.k.a QA).
-1. QA'ing and merging pull requests
-2. Evaluating and responding to issues
+### 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.
+
+#### Issue Triage
+
+[Triaging](https://en.wikipedia.org/wiki/Triage) is a process of prioritizing attention to each new issue report. We have a extensive list of labels that we use to mark the priority, category, status and scope of each issue.
+
+You can help us moderate the the issue reports by helping us organize and triage these by applying labels from [this list](https://github.com/freeCodeCamp/freeCodeCamp/labels). Usually a description is available alongside the label explaining its meaning.
+
+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?id=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.
+
+- 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.
+
+> [!TIP] We recommend you use this list of standard [reply templates](https://contribute.freecodecamp.org/#/moderator-handbook?id=reply-templates) while triaging issues.
### Moderating Pull Requests
-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.
+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, request changes, 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**
-```markdown
-Thank you for your pull request.
+ These are changes to the text of challenges - the Description, Instructions, or Test Text.
-We are closing this pull request. Please add links and other details to the challenge's corresponding guide article instead.
+ 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.
-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.
-```
+ You can close invalid pull requests and reply to them with these [reply templates](https://contribute.freecodecamp.org/#/moderator-handbook?id=closing-invalid-pull-requests).
-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.
+ 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.
-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.
+2. **Challenge Code Edits**
-#### How to merge or close pull requests
+ These are changes to the code in a challenge - the Challenge Seed, Challenge Solution, and Test Strings.
-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.
+ 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.
-Depending on the type of pull request it is, follow the corresponding rules listed above.
+ 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.
-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.
+ You can close invalid pull requests and reply to them with these [reply templates](https://contribute.freecodecamp.org/#/moderator-handbook?id=closing-invalid-pull-requests).
-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 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 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.
+3. **Platform Changes**
-You should then comment on the pull request, thanking the contributor in your own personal way.
+ 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 **"@freeCodeCamp/dev-team"** so they can take a final look.
+
+4. **Automated PRs (Dependabot)**
+
+ Some PRs are automated dependency updates made via an integration. You should not merge or approve these PRs. One of the members of the dev-team will take care of reviewing and merging such automated PRs.
+
+#### How to review, merge or close pull requests
+
+##### Assign yourself to a pull request:
+
+First of all, when you choose a pull request to review, 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 previously.
+
+##### Ensure the CI checks are passing:
+
+Before merging any pull request, make sure that GitHub is reporting all checks to be passing (green check marks) on the pull-requests. If you see any of the checks failing, please investigate and get some clarification on the root cause. Is the change being made breaking our tests? Will the site build correctly if the the PR is merged? These checks are critical for the stability of the platform.
+
+> [!WARNING] Merging a PR that is failing CI/CD checks can cause difficulties for all stakeholders, including the dev-team and contributors.
+
+##### Handling merge conflicts:
+
+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 you are uncertain, please ask one of the fellow moderators or the dev-team for assistance.
+
+##### Merging a valid pull request:
+
+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, 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:
-
+
+
+ First time contributor badge on pull requests (screenshot)
+
+
+
+
+
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 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:
+
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.
-In both of these situations, you should go ahead and close their pull request and reply with this standard message:
-
-```markdown
-Thank you for opening this pull request.
-
-This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you.
-
-Thank you and happy coding.
-```
-
-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.
-
-### Moderating GitHub Issues
-
-freeCodeCamp is an active open source project. We get new issues every day, all of which need to be triaged and labeled.
-
-#### Types of GitHub Issues
-
-1. **Code Help Requests**, which people have mistakenly created GitHub issues for. If someone is asking for help, paste the following message, then close the issue.
-
-```markdown
-Thank you for reporting this issue.
-
-This is a standard message notifying you that this issue seems to be a request for help. Instead of asking for help here, please click the **"Help"** button on the challenge on freeCodeCamp, which will help you create a question in the right part of the forum. Volunteers on the forum usually respond to questions within a few hours and can help determine if there is an issue with your code or the challenge's tests.
-
-If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened.
-
-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 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.
-
-3. **Duplicate Issues** If an issue is the same as another reported issue, the prior reported issue should take precedence. Flag as `Duplicate`, paste the following message replacing `#XXXXX` with the issue number, then close the issue.
-
-```markdown
-Thank you for reporting this issue.
-
-This is a standard message notifying you that this issue appears to be very similar to issue #XXXXX, so we are closing it as a duplicate.
-
-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.
-```
-
-4. **Fixed in staging** Some problems may have already been fixed in staging, but don't have a GitHub issue associated with them. If this is the case, you can paste the following message, close the issue, and add a `status: resolved/shipping` label:
-
-```markdown
-Thank you for reporting this issue.
-
-This is a standard message notifying you that the problem you mentioned here is present in production, but that it has already been fixed in staging. This means that the next time we push our staging branch to production, this problem should be fixed. Because of this, we're closing this issue.
-
-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 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.
-
-- 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 judgment to resolve the outstanding PR's status.
+You can close invalid pull requests and reply to them with these [reply templates](https://contribute.freecodecamp.org/#/moderator-handbook?id=closing-invalid-pull-requests).
#### 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 QA'd by another moderator, just like with any other PR.
+Also, you should never accept your own PRs. They must be reviewed by another moderator, just like with 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 dev@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
@@ -180,7 +186,9 @@ Again, if you have any problems or questions, make a post with your actions in t
### Underage Users
-Our Terms of Service require that freeCodeCamp users be at least 13 years of age. In the event that 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). Then email [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) or [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) to delete the user's freeCodeCamp account as well.
+Our [Terms of Service](https://www.freecodecamp.org/terms) require that freeCodeCamp users be at least 13 years of age. In the event that 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
@@ -204,72 +212,105 @@ 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 it was intended to violate the Code of Conduct.** 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.
+1. **Make sure it was intended to violate the Code of Conduct.**
-2. **If the camper clearly and intentionally violates the Code of Conduct, the moderator will proceed as follows:** Kick or mute the offending person from the chat room. In order 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:
+ 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.
-```
-Kicked: _@username_
-Reason(s): _Spamming, trolling_
-Evidence: _One or more links to the offending message(s)_
-```
+2. **If the camper clearly and intentionally violates the Code of Conduct, the moderator will proceed as follows:**
-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, 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:
+ Kick or mute the offending person from the chat room. In order 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:
-- Call the `!fCC private username` command, where `username` is the camper's chat user name.
-- 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.
+ ```
+ Kicked: _@username_
+ Reason(s): _Spamming, trolling_
+ Evidence: _One or more links to the offending message(s)_
+ ```
-4. **Deleting messages** Moderators can delete messages on our chat server. They should only exercise this ability in four very specific situations:
+3. **Creating a Private Discussion**
-- 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 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 an advertisement and/or a self-promoting message/image (social media).
+ 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:
-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.
+ - Call the `!fCC private username` command, where `username` is the camper's chat user name.
+ - 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.
-> [!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.
+4. **Deleting messages**
-5. **Don’t use @all 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. Instead, if you want people to see an announcement, you can pin it to the channel to allow everyone to read it.
+ Moderators can delete messages on our chat server. They should only exercise this ability in four very specific situations:
-6. **Don’t threaten to take action** If a camper is breaking 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:
+ - Someone has posted a pornographic or graphically violent image.
-- Camper posts a wall of code to request help:
+ - Someone has posted a link or code that is malicious in nature and could harm other campers who click on it.
- Moderator: @username Please use Codepen or Pastebin when posting large amounts of code.
+ - Someone has flooded the chat with lots of spam messages to such an extreme extent (usually involving bots) as to render chat completely unusable.
-- Or if you really have to explain why:
+ - Someone has posted an advertisement and/or a self-promoting message/image (social media).
- 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.
+ 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.
-- For mild and unintentional violations of the code of conduct:
+ > [!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.
- Moderator: This is a friendly reminder for everyone to follow the code of conduct: https://code-of-conduct.freecodecamp.org/
+5. **Don’t use @all or @here**
-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.
+ 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.
-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 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. Remember: we’re all on the same team. We want to dignify the role of moderators and present a unified front.
+ Instead, if you want people to see an announcement, you can pin it to the channel to allow everyone to read it.
-9. **Talk with other moderators** 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!
+6. **Don’t threaten to take action**
-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.
+ If a camper is breaking 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:
+
+ - Camper posts a wall of code to request help:
+
+ 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.
+
+ - For mild and unintentional violations of the code of conduct:
+
+ Moderator: This is a friendly reminder for everyone to follow the code of conduct: 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.
+
+ 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 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.
+
+ 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 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 on the server or not.
## How to become a moderator
If you are helping people in the community consistently over time, 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), 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), and 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. This is required for us to be able to give you write access to 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
Please note that we will frequently remove mods whom we think are inactive. When we do this we will send the following message:
-> 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.
+```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.
-> 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 me know.
+```
## How our Contributors room works
@@ -279,11 +320,17 @@ Our assumption is that contributors will read anything in this room that directl
## Dealing with solicitors
-You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. Once you realize that this is what they're after, please stop talking to them and tell them to email quincy@freecodecamp.org. He gets proposals like this all the time and is in the best position to judge whether such a relationship will be worth it for our community (and it rarely is).
+You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. 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 proposals like this all the time and is 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
-You may come across situations where users are seeking 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 at some point reflect back to fCC, 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!
+You may come across situations where users are seeking 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 at some point 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!
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.
@@ -307,7 +354,7 @@ 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.
+These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues and 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.
@@ -468,3 +515,25 @@ 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
+
+> When an issue is deemed to be eligible for first time code contributors.
+
+```markdown
+Thanks for opening this issue.
+
+This looks 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:
+
+1. ...
+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 or the forum if you need help contributing, our moderators will guide you through this.
+
+Sometimes we may get more than one pull-requests. We typically accept the most quality contribution followed by the one that is made first.
+
+Happy contributing.
+```
diff --git a/docs/i18n/espanol/FAQ.md b/docs/i18n/espanol/FAQ.md
index 874490a00f..fe2638046e 100644
--- a/docs/i18n/espanol/FAQ.md
+++ b/docs/i18n/espanol/FAQ.md
@@ -4,13 +4,9 @@ Lee nuestra ["Guía de como contribuir a Open Source"](https://github.com/freeCo
### ¿Puedo traducir el currículum de freeCodeCamp?
-Yes - Read [this guide](/how-to-translate-files) if you are interested in contributing to translation.
+Yes - Read [this guide](/how-to-translate-files) if you are interested in contributing to translations.
-Currently we have the user contributed translations being done in Chinese and Español.
-
-At this time we are building our experience hosting the curriculum in the aforementioned languages. Eventually, we intend to localize freeCodeCamp into several major world languages, like: Arabic, Hindi, Portuguese, Russian and more.
-
-We thank you for your patience while we iron out the workflow.
+Currently we have the user contributed translations being done in Chinese and Español. We intend to localize freeCodeCamp into several major world languages. You can read all about this in our [announcement here](https://www.freecodecamp.org/news/world-language-translation-effort).
### ¿Cómo puedo reportar un nuevo error?
@@ -64,23 +60,26 @@ We typically do not assign issues to anyone other than long-time contributors. I
**Feel free to ask for help in:**
- La categoría de `colaboradores` de [nuestro foro de la comunidad](https://forum.freecodecamp.org/c/contributors).
-- The `#Contributors` channel on [our chat server](https://chat.freecodecamp.org/channel/contributors).
+- El canal `#Contributors` en [nuestro servidor de chat](https://chat.freecodecamp.org/channel/contributors).
We are excited to help you contribute to any of the topics that you would like to work on. If you ask us questions on the related issue threads, we will be glad to clarify. Be sure to search for your question before posting a new one.
Thanks in advance for being polite and patient. Remember – this community is run mainly by volunteers.
-**Additional Assistance:**
+### Additional Assistance
-If you have queries about the stack, architecture of the codebase, feel free to reach out to our staff dev team:
+If you have queries about the stack, architecture of the codebase, translations, or anything else feel free to reach out to our staff.
| Personal | Enviar mensaje en el Foro |
|:--------------------- |:---------------------------------------------------------------------------- |
-| Mrugesh Mohapatra | [@raisedadead](https://forum.freecodecamp.org/u/raisedadead) |
| Ahmad Abdolsaheb | [@abdolsa](https://forum.freecodecamp.org/u/abdolsa) |
| Kristofer Koishigawa | [@scissorsneedfoodtoo](https://forum.freecodecamp.org/u/scissorsneedfoodtoo) |
-| Tom Mondloc | [@moT01](https://forum.freecodecamp.org/u/moT01) |
+| Miya Liu | [@miyaliu](https://chinese.freecodecamp.org/forum/u/miyaliu) |
+| Mrugesh Mohapatra | [@raisedadead](https://forum.freecodecamp.org/u/raisedadead) |
+| Nicholas Carrigan | [@nhcarrigan](https://forum.freecodecamp.org/u/nhcarrigan) |
| Oliver Eyton-Williams | [@ojeytonwilliams](https://forum.freecodecamp.org/u/ojeytonwilliams) |
+| Rafael D Hernandez | [@RafaelHernandez](https://forum.freecodecamp.org/u/rafaelhernandez) |
| Randell Dawson | [@RandellDawson](https://forum.freecodecamp.org/u/randelldawson) |
+| Tom Mondloc | [@moT01](https://forum.freecodecamp.org/u/moT01) |
**You can email our developer staff at: `dev[at]freecodecamp.org`**
diff --git a/docs/i18n/espanol/devops.md b/docs/i18n/espanol/devops.md
index 08f239ee5c..fbd83b0bfc 100644
--- a/docs/i18n/espanol/devops.md
+++ b/docs/i18n/espanol/devops.md
@@ -69,7 +69,7 @@ Actualmente, solo los miembros del equipo de desarrolladores pueden enviar cambi
upstream git@github.com:freeCodeCamp/freeCodeCamp.git (push)
```
-2. Make sure your `maim` branch is pristine and in sync with the upstream.
+2. Make sure your `main` branch is pristine and in sync with the upstream.
```sh
git checkout main
@@ -557,14 +557,14 @@ Aprovisionamiento de las VMs con el código
7. Construye el servidor
```console
- npm run ensure-env && npm run build:server
+ npm run ensure-env && npm run build:curriculum && npm run build:server
```
8. Inicia las Instancias
```console
cd api-server
- pm2 start production-start.js -i max --max-memory-restart 600M --name org
+ pm2 start ./lib/production-start.js -i max --max-memory-restart 600M --name org
```
### Registro de Eventos y Monitoreo
@@ -600,7 +600,7 @@ npm ci
3. Construye el servidor
```console
-npm run ensure-env && npm run build:server
+npm run ensure-env && npm run build:curriculum && npm run build:server
```
4. Inicia las Instancias
diff --git a/docs/i18n/espanol/how-to-add-cypress-tests.md b/docs/i18n/espanol/how-to-add-cypress-tests.md
index dbc073ec11..445bfb5c1f 100644
--- a/docs/i18n/espanol/how-to-add-cypress-tests.md
+++ b/docs/i18n/espanol/how-to-add-cypress-tests.md
@@ -1,83 +1,83 @@
-# How to add Cypress tests
+# Cómo agregar pruebas de Cypress
-When making changes to JavaScript, CSS, or HTML which could change the functionality or layout of a page, it's important to add corresponding [Cypress](https://docs.cypress.io) integration tests.
+Al realizar cambios en JavaScript, CSS o HTML que podrían cambiar la funcionalidad o el diseño de una página, es importante agregar una prueba de integración de [Cypress](https://docs.cypress.io) correspondiente.
-To learn how to write Cypress tests, or 'specs', please see Cypress' official [documentation](https://docs.cypress.io/guides/getting-started/writing-your-first-test.html).
+Para aprender como escribir pruebas de Cypress, o especificaciones, observa la [documentación](https://docs.cypress.io/guides/getting-started/writing-your-first-test.html) oficial de Cypress.
-> Note: When writing tests for freeCodeCamp, remember to add `/* global cy */` to the top of the file to avoid ESLint issues.
+> Nota: Cuando escribimos pruebas para freeCodeCamp, recuerda agregar `/* global cy */` al inicio del archivo para evitar problemas con ESLint.
-## Where to add a test
+## Donde agregar una prueba
-- Cypress tests are in the `./cypress` directory.
+- Las pruebas de Cypress están en el directorio `./cypress`.
-- Cypress tests for a curriculum module are in the corresponding curriculum directory, i.e. `cypress/integration/learn/responsive-web-design/basic-css/index.js`.
+- Las pruebas de Cypress para un módulo curricular están en el directorio curricular correspondiente, por ejemplo: `cypress/integration/learn/responsive-web-design/basic-css/index.js`.
-## How to run tests
+## Como ejecutar pruebas
-> [!NOTE] If using GitPod, please see [Cypress-GitPod Setup](/how-to-add-cypress-tests#cypress-gitpod-setup)
+> [!NOTE] Si utilizas GitPod, por favor mira la [Configuración de Cypress-GitPod ](/how-to-add-cypress-tests#cypress-gitpod-setup)
-### 1. Ensure that MongoDB and client applications are running
+### 1. Asegúrate de que MongoDB y la aplicación de cliente se estén ejecutando
-- [Start MongoDB and seed the database](/how-to-setup-freecodecamp-locally#step-3-start-mongodb-and-seed-the-database)
+- [Inicia MongoDB y propaga la base de Datos](/how-to-setup-freecodecamp-locally#step-3-start-mongodb-and-seed-the-database)
-- [Start the freeCodeCamp client application and API server](/how-to-setup-freecodecamp-locally#step-4-start-the-freecodecamp-client-application-and-api-server)
+- [Inicia la aplicación de cliente de freeCodeCamp y el servidor API](/how-to-setup-freecodecamp-locally#step-4-start-the-freecodecamp-client-application-and-api-server)
-### 2. Run the cypress tests
+### 2. Ejecuta las pruebas de Cypress
-To run tests against production builds, replace `dev` with `prd` below.
+Para ejecutar pruebas en las compilaciones de producción, reemplaza `dev` con `prd` abajo.
-- To run all tests in the `./cypress` directory:
+- Para ejecutar todas las pruebas en el directorio `./cypress`:
```console
npm run cypress:dev:run
```
-- To run a single test:
+- Para ejecutar una sola prueba:
```console
npm run cypress:dev:run -- --spec=cypress/pathToYourSpec/youSpecFileName.js
```
-- To create a development build, start the development server, and run all existing cypress end-to-end tests:
+- Para crear una compilación de desarrollo, inicia el servidor de desarrollo y ejecuta todas las pruebas de cypress existentes de extremo a extremo:
```console
npm run e2e:dev:run
```
-## Cypress-GitPod Setup
+## Configuración de Cypress-GitPod
-### 1. Ensure you are on the _Feature Preview_ of GitPod _as of 01/02/2021_
+### 1. Asegúrate de estar en la _Feature Preview_ (vista previa de funciones) de GitPod _a partir del 01/02/2021_
-- Go to [GitPod Docs - Feature Preview](https://www.gitpod.io/docs/feature-preview/) to see how to enable _Feature Preview_
+- Ve hacia [GitPod Docs - Feature Preview](https://www.gitpod.io/docs/feature-preview/) para ver como habilitar la _Feature Preview_
-### 2. Ensure Development Environment is Running
+### 2. Asegúrate de que el entorno de desarrollo se esté ejecutando
-If starting the GitPod environment did not automatically develop the environment:
+Si al iniciar el entorno de GitPod no se creó automáticamente el ambiente:
-- Start the database
+- Inicia la base de datos
```console
mongod
```
-- Seed the database
+- Propaga la base de datos
```console
npm run seed
```
-- Develop the server and client
+- Inicia el servidor de desarrollo y cliente
```console
npm run develop
```
-### 3. Install Cypress Build Tools
+### 3. Instala las herramientas de compilación de Cypress
```console
npm run cypress:install-build-tools
```
-- When prompted in the terminal, select your keyboard layout by language/area
+- Cuando se te solicite en la terminal, selecciona la distribución de tu teclado por idioma / área
-Now, [Cypress can be run](/how-to-add-cypress-tests#_2-run-the-cypress-tests)
+Ahora, [Cypress puede ejecutarse](/how-to-add-cypress-tests#_2-run-the-cypress-tests)
diff --git a/docs/i18n/espanol/how-to-catch-outgoing-emails-locally.md b/docs/i18n/espanol/how-to-catch-outgoing-emails-locally.md
index 858b758239..fb927924ac 100644
--- a/docs/i18n/espanol/how-to-catch-outgoing-emails-locally.md
+++ b/docs/i18n/espanol/how-to-catch-outgoing-emails-locally.md
@@ -81,7 +81,7 @@ Empieza [a usar MailHog](#using-mailhog).
## Usando MailHog
-Abra una nueva pestaña o ventana del navegador y vaya a [http://localhost:8025](http://localhost:8025) para abrir su bandeja de entrada de MailHog cuando se haya completado la instalación y éste se encuentre funcionando. The inbox will appear similar to the screenshot below.
+Abra una nueva pestaña o ventana del navegador y vaya a [http://localhost:8025](http://localhost:8025) para abrir su bandeja de entrada de MailHog cuando se haya completado la instalación y éste se encuentre funcionando. La bandeja de entrada aparecerá similar a la captura de pantalla de abajo.

diff --git a/docs/i18n/espanol/how-to-help-with-video-challenges.md b/docs/i18n/espanol/how-to-help-with-video-challenges.md
index fe2418840c..a16eb5933a 100644
--- a/docs/i18n/espanol/how-to-help-with-video-challenges.md
+++ b/docs/i18n/espanol/how-to-help-with-video-challenges.md
@@ -2,7 +2,7 @@
Los retos en vídeo son un nuevo tipo de desafío en el currículo de freeCodeCamp.
-Un desafío de vídeo es una pequeña sección de un curso de vídeo completo sobre un tema en particular. Una página de desafío de vídeo inserta un vídeo de YouTube. Cada página de desafío tiene una única pregunta de selección múltiple relacionada con el vídeo. A user must answer the question correctly before moving on to the next video challenge in the course.
+Un desafío de vídeo es una pequeña sección de un curso de vídeo completo sobre un tema en particular. Una página de desafío de vídeo inserta un vídeo de YouTube. Cada página de desafío tiene una única pregunta de selección múltiple relacionada con el vídeo. El usuario deberá responder correctamente la pregunta antes de avanzar al siguiente desafío de video en el curso.
Las páginas de desafío de vídeo son creadas por miembros del equipo freeCodeCamp. Los vídeos de YouTube también son subidos por miembros del equipo freeCodeCamp. Muchos de los desafíos de video todavía no tienen preguntas asociadas con ellos.
@@ -34,23 +34,23 @@ Challenge description text, in markdown
# --question--
-These fields are currently used for the multiple-choice Python challenges.
+Estos campos se utilizan actualmente para los desafíos de Python de opción múltiple.
## --text--
-The question text goes here.
+El texto de la pregunta va aquí.
## --answers--
-Answer 1
+Respuesta 1
---
-Answer 2
+Respuesta 2
---
-More answers
+Más respuestas
## --video-solution--
@@ -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 multiple-choice question
+### Dale un vistazo al video asociado con el desafío y crea una pregunta de opción múltiple
-First, find the videoId.
+Primero, encuentra la videoId (id del vídeo).
-Por ejemplo, en el siguiente código de la cabecera de un archivo markdown de desafío de video, el videoId es "nVAaxZ34khk". On GitHub, the information should be laid out in a table format.
+Por ejemplo, en el siguiente código de la cabecera de un archivo markdown de desafío de video, el videoId es "nVAaxZ34khk". En GitHub, la información debe ser colocada en un formato de tabla.
````
---
id: 5e9a093a74c4063ca6f7c14d title: Data Analysis Example A challengeType: 11
@@ -83,16 +83,16 @@ videoId: nVAaxZ34khk
---
```
-Next, access the YouTube video with that `videoId`. The URL for the video will be:
-https://www.youtube.com/watch?v=[videoId] (replace `videoId` in the URL with the video's ID - without square brackets)
+A continuación, accede al vídeo de YouTube con esa `videoId`. La URL del video será:
+https://www.youtube. om/watch?v=[videoId] (reemplaza `videoId` en la URL con la ID del video sin los corchetes)
-In the example above, the URL is https://www.youtube.com/watch?v=nVAaxZ34khk
+En el ejemplo anterior, la URL es 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.
+Dale un vistazo al video de YouTube con ese videoId y piensa en una pregunta de selección múltiple basada en el contenido del video.
-### Add the question to the markdown file
+### Añade la pregunta al archivo markdown
-You can add the question locally or using the GitHub interface. Para añadir la pregunta localmente, necesitas [configurar freeCodeCamp localmente](how-to-setup-freecodecamp-locally.md). También puede encontrar el archivo en GitHub y hacer clic en el botón Editar para añadir la pregunta directamente en su navegador.
+Puedes añadir la pregunta localmente o utilizando la interfaz de GitHub. Para añadir la pregunta localmente, necesitas [configurar freeCodeCamp localmente](how-to-setup-freecodecamp-locally.md). También puede encontrar el archivo en GitHub y hacer clic en el botón Editar para añadir la pregunta directamente en su navegador.
If a question has not yet been added to a particular video challenge, it will have the following default question:
@@ -120,7 +120,7 @@ More answers
1
```
-Add/Update the question text under the part that shows:
+Añade/Actualiza el texto de la pregunta debajo de la parte que muestra:
```
# --question--
diff --git a/docs/i18n/espanol/how-to-proofread-files.md b/docs/i18n/espanol/how-to-proofread-files.md
index ae92193ab4..a7b3b44bca 100644
--- a/docs/i18n/espanol/how-to-proofread-files.md
+++ b/docs/i18n/espanol/how-to-proofread-files.md
@@ -35,6 +35,6 @@ Si bien puedes ver *todas* las traducciones propuestas para un segmento, deberí
> [!WARNING] Si un segmento es aprobado durante la revisión, se mostrará como finalizado en la vista de proofreading y será descargado en el próximo pull de Crowdin a GitHub.
-Cuando un archivo ha sido corregido, no se requiere ningún paso adicional. Si tienes alguna pregunta o te interesa colaborar como corrector, por favor contáctanos en nuestra [sala de chat de traductores](https://chat.freecodecamp.org/channel/translators).
+Cuando un archivo ha sido corregido, no se requiere ningún paso adicional. Si tienes alguna pregunta o te interesa colaborar como corrector, por favor contáctanos en nuestra [sala de chat de traductores](https://chat.freecodecamp.org/channel/translators). If you are already a proofreader and are interested in having a dedicated channel for a specific language, [fill out our form](https://forms.gle/XU5CyutrYCgDYaVZA).
> [!NOTE] Crowdin te permite aprobar tus propias traducciones. Sin embargo, en general suele ser mejor permitir que otro corrector revise tus traducciones propuestas como medida adicional para asegurarse que no hayan errores.
diff --git a/docs/i18n/espanol/how-to-setup-freecodecamp-locally.md b/docs/i18n/espanol/how-to-setup-freecodecamp-locally.md
index 54a0b18279..e2c60a5a1f 100644
--- a/docs/i18n/espanol/how-to-setup-freecodecamp-locally.md
+++ b/docs/i18n/espanol/how-to-setup-freecodecamp-locally.md
@@ -63,7 +63,7 @@ Esto es esencial, ya que te permite trabajar en tu propia copia de freeCodeCamp
> [!TIP] El repositorio principal en `https://github.com/freeCodeCamp/freeCodeCamp` es frecuentemente conocido como el repositorio `upstream`.
>
-> Your fork at `https://github.com/YOUR_USER_NAME/freeCodeCamp` is often referred to as the `origin` repository. `YOUR_USER_NAME` would be replaced with your GitHub username.
+> Tu fork en `https://github.com/YOUR_USER_NAME/freeCodeCamp` suele referirse como el repositorio `origin`. `YOUR_USER_NAME` será remplazado con tu nombre de usuario de GitHub.
**Sigue estos pasos para fork el repositorio `https://github.com/freeCodeCamp/freeCodeCamp`:**
diff --git a/docs/i18n/espanol/how-to-translate-the-website.md b/docs/i18n/espanol/how-to-translate-the-website.md
index 6ea2b7732b..11013166c5 100644
--- a/docs/i18n/espanol/how-to-translate-the-website.md
+++ b/docs/i18n/espanol/how-to-translate-the-website.md
@@ -1,14 +1,14 @@
-The client/react side of our website is translated into various world languages using [react-i18next](https://react.i18next.com/) and [i18next](https://www.i18next.com/).
+El lado del cliente de nuestro sitio web se traduce a varios idiomas del mundo usando [react-i18next](https://react.i18next.com/) y [i18next](https://www.i18next.com/).
-> [!NOTE] Curriculum lesson content is [translated separately](./how-to-translate-files.md).
+> [!NOTE] El contenido de la lección del plan de estudios se [traduce por separado](./how-to-translate-files.md).
-## File Structure
+## Estructura de archivos
-The files for translating the website are located in the `client/i18n` folder. Each language has a folder within that containing JSON files with the translations.
+Los archivos para traducir el sitio web se encuentran en la carpeta `client/i18n`. Cada idioma tiene una carpeta dentro que contiene archivos JSON con las traducciones.
-The values in the `translations.json` file contain the majority of the text that appears on the website. The keys are used in the codebase to get the correct text for whatever language is set. This file needs to have the exact same keys in all languages.
+Los valores en el archivo `translations.json` contienen la mayor parte del texto que aparece en el sitio web. Las claves se utilizan en la base de código para obtener el texto correcto para cualquier idioma que se establezca. Este archivo debe tener exactamente las mismas claves en todos los idiomas.
-The `intro.json` file contains the key-value pairs for the introduction text on the certification pages.
+El archivo `intro.json` contiene los pares clave-valor para el texto de introducción en las páginas de certificación.
The `motivation.json` files are not required to have the same quotes, compliments, or array length. Just the same JSON structure. These are not translated via Crowdin.
@@ -16,11 +16,11 @@ The `trending.json` file contians the titles and links for the trending news art
The `meta-tags.json` file contains the information for our website's meta tag information. These are not translated via Crowdin.
-## Adding a Language
+## Agregar un idioma
To add a new language, create a folder with the language name as the title next to the other languages and copy the JSON files from another language into your new folder.
-In the `allLangs.js` file, add the language to the `client` array in the first variable. Then, follow the instructions in the comments to add the rest of the necessary variables.
+In the `all-langs.js` file, add the language to the `client` array in the first variable. Then, follow the instructions in the comments to add the rest of the necessary variables.
## How to Translate
@@ -32,7 +32,7 @@ Modifications to the `trending.json`, `meta-tags.json`, and `motivation.json` fi
Set the `CLIENT_LOCALE` variable in your `.env` file to the locale you want to build.
-> [!NOTE] The value needs to be one of the client languages available in `client/i18n/allLangs.js`
+> [!NOTE] The value needs to be one of the client languages available in `config/i18n/all-langs.js`
## How to Structure Components
@@ -105,7 +105,7 @@ The above example passes an object to the `t` function with a `username` variabl
The general rule is to use the "t" function when you can. But there's a `Trans` component for when that isn't enough, usually when you have elements embedded in the text. You can use the `Trans` component with any type of react component.
-### Basic Elements Nested
+### Elementos básicos anidados
```js
// in the component:
@@ -128,7 +128,7 @@ import { Trans } from 'react-i18next'
You can place the key inside the component tags like the above example if the text contains "simple" tags with no attributes. `br`, `strong`, `i`, and `p` are the default, but that list can be expanded in the i18n config.
-### Complex Elements Nested
+### Elementos complejos anidados
Other times, you will want to have certain text inside another element, an anchor tag is a good example:
@@ -151,7 +151,7 @@ Other times, you will want to have certain text inside another element, an ancho
In the above example, the key is set in the attributes of the `Trans` component. The `<0>` and `0>` in the JSON represent the first child of the component, in this case, the anchor element. If there were more children, they would just count up from there using the same syntax. You can find the children of a component in the react dev tools by inspecting it. `placeholder` is simply there because the linter was complaining at me about an empty `` element.
-### With a Variable
+### Con una variable
```js
// in the component:
diff --git a/docs/i18n/espanol/index.md b/docs/i18n/espanol/index.md
index 8ca8cf9046..e88a0f0389 100644
--- a/docs/i18n/espanol/index.md
+++ b/docs/i18n/espanol/index.md
@@ -22,9 +22,11 @@ Puede ayudar a ampliar y mejorar el plan de estudios. También puede actualizar
## Translations
-We are localizing freeCodeCamp.org to world languages starting with Chinese and Espanol. We will be expanding the translations to more languages. It's our dream to provide you with resources to learn, no matter the world language you speak.
+We are localizing freeCodeCamp.org to world languages starting with Chinese and Español. We will be expanding the translations to more languages.
-To help us with this massive effort, we have integrated our open-source code-base & curriculum with [Crowdin](https://crowdin.com/).
+To help us with this massive effort, we have integrated our open-source code-base & curriculum with [Crowdin](https://crowdin.com/). You can read all about this in our [announcement here](https://www.freecodecamp.org/news/world-language-translation-effort). We encourage you to read the announcement and share it your friends to get them excited about this.
+
+It's our dream to provide you with the resources to learn, no matter the world language you speak.
**If you're interested in translating, here are the guides to translate our [curriculum](how-to-translate-files.md), the [learning platform](how-to-translate-the-website.md) and our [Contributing guidelines](https://translate.freecodecamp.org/contributing-docs).**
@@ -38,7 +40,7 @@ Broadly, we use
- un conjunto de aplicaciones client-side basadas en React
- y scripts de prueba para evaluar los proyectos curriculares enviados por nuestros campers.
-If you want to productively contribute to the curriculum, we recommend some familiarity with these tools.
+If you want to productively contribute to the learning platform, we recommend some familiarity with these tools.
If you want to help us improve our codebase...
diff --git a/docs/i18n/espanol/moderator-handbook.md b/docs/i18n/espanol/moderator-handbook.md
index 9b5cc4afc3..28a7d22de7 100644
--- a/docs/i18n/espanol/moderator-handbook.md
+++ b/docs/i18n/espanol/moderator-handbook.md
@@ -1,164 +1,170 @@
# El Manual oficial para moderador de freeCodeCamp.
-Esto te ayudará a moderar diferentes lugares en nuestra comunidad, incluyendo:
+This handbook will help you moderate different places in our community. This covers conversations and interactions in issues & pull request threads on GitHub, the community forum, the chat rooms and other official communities that we foster.
-- Peticiones de GitHub & pull requests
-- Los foros, salas de chat, grupos de facebook y otros lugares de reuniones en línea
-- Eventos presenciales y grupos de estudio, competencias y conferencias
+> [!NOTE] All freeCodeCamp moderators are community-wide moderators. That is we trust you to oversee any of these places.
-**Todos los moderadores de freeCodeCamp son de amplio acceso. Esto significa que confiamos en ti para supervisar cualquiera de estos lugares.**
+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. Others just help out on the forum. Some are active everywhere.
-This said you can serve as a moderator in whichever places are of the most interest to you. Algunos moderadores solo ayudan en GitHub. Otros solo contribuyen en foros. Otros moderadores se mantienen activos en todo.
+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.
-Al final, lo que queremos es que disfrutes ser un moderador y que inviertas tu tiempo en los sitios que te interesen.
+> "With great power comes great responsibility." - Uncle Ben
-> [!NOTE] "Un gran poder conlleva una gran responsabilidad." - Tío Ben
+As a moderator, temperament is more important than technical skill.
-Como moderador, el temperamento es más importante que las habilidades técnicas.
+Listen. Be Helpful. Don't abuse your power.
-Escucha. Presta ayuda. No abuses de tu poder.
+freeCodeCamp is an inclusive community, and we need to keep it that way.
-freeCodeCamp es una comunidad inclusiva y necesitamos conservarla así.
+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).
-Tenemos un único código de conducta que regula por completo nuestra comunidad. Mientras menos reglas, más fácil es recordarlas. Puedes leer las reglas y fijarlas en tu memoria [aquí](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 on a platform that you would like to moderate please [reach out to a staff member](/FAQ?id=additional-assistance).
## Moderando GitHub
-Los moderadores tienen la habilidad de cerrar conflictos, y aceptar pull requests.
+Moderators have two primary responsibilities on GitHub:
-Los moderadores tienen dos responsabilidades principales en GitHub:
+1. Triaging and responding to issues
+2. Reviewing and merging pull requests (a.k.a QA).
-1. Probando y fusionando pull requests
-2. Evaluar y responder a problemas
+### Moderating GitHub Issues
-### Moderando Pull Requests
+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.
-Los Pull Requests (PRs) son la vía que utilizan los colaboradores para someter cambios al repositorio de freeCodeCamp. We must perform Quality Assurance (QA) on pull requests before we decide whether to merge them or close them.
+#### Issue Triage
-#### Tipo de Pull Requests
+[Triaging](https://en.wikipedia.org/wiki/Triage) is a process of prioritizing attention to each new issue report. We have a extensive list of labels that we use to mark the priority, category, status and scope of each issue.
-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:
+You can help us moderate the the issue reports by helping us organize and triage these by applying labels from [this list](https://github.com/freeCodeCamp/freeCodeCamp/labels). Usually a description is available alongside the label explaining its meaning.
-```markdown
-Thank you for your pull request.
+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.
-We are closing this pull request. Please add links and other details to the challenge's corresponding guide article instead.
+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?id=first-timer-only-issues) for triage.
-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 Stale, Outdated, Inactive Issues and Pull Requests
-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.
+- 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.
-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.
+- Activity is defined as: Comments requesting an update on the PR and triages like `status: update needed` label etc.
-#### Cómo combinar o cerrar pull requests
+- 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.
-En primer lugar, cuando elijas un pull request a QA, deberás asignarte a él. You can do this by clicking the "assign yourself" link below the "assignees" part on the right-hand column of GitHub's interface.
+> [!TIP] We recommend you use this list of standard [reply templates](https://contribute.freecodecamp.org/#/moderator-handbook?id=reply-templates) while triaging issues.
-Dependiendo del tipo de pull request que sea, siga las reglas indicadas arriba.
+### Moderating Pull Requests
-Antes de fusionar cualquier pull request, asegúrate de que GitHub tiene marcas verdes para todo. Si hay alguna X, averigua primero y descubre cómo convertirlas en marcas de verificación verdes primero.
+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, request changes, or close them.
-A veces habrá un conflicto de fusión. This means that another pull request has made a change to that same part of that same file. GitHub tiene una herramienta para abordar estos conflictos de fusión en GitHub. Puedes tratar de resolver estos conflictos. 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. A veces habrá información redundante que se puede eliminar. Antes de que finalices, cerciórate de eliminar el `<<<<<<`, `======`, y `>>>>>>` que Git añade para indicar áreas de conflicto.
+#### Types of Pull Requests
-Si el pull request parece estar listo para fusionarse (y no requiere la aprobación de @raisedadead), puedes seguir adelante y fusionarlo. Asegúrate de utilizar la funcionalidad predeterminada "Squash and Merge" en GitHub. Esto aplastará todas las solicitudes pull se compromete a un solo commit, lo que hace que la historia de Git sea mucho más fácil de leer.
+1. **Challenge Instruction Edits**
-A continuación, deberías comentar sobre la solicitud de extracción, dando las gracias al colaborador de tu propia manera personal.
+ These are changes to the text of challenges - the Description, Instructions, or Test Text.
-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. Puedes mirar la esquina superior derecha del cuerpo del PR, para determinar un colaborador de primera vez. Mostrará `First-time contributor` como se muestra a continuación:
+ 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](https://contribute.freecodecamp.org/#/moderator-handbook?id=closing-invalid-pull-requests).
-Si el pull request no parece listo para fusionarse, puedes responder amablemente al autor que debe hacer para prepararlo. Hopefully, they will reply and get their pull request closer to ready.
+ 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.
-A menudo, un pull request será obviamente poco esfuerzo. 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".
+2. **Challenge Code Edits**
-También hay situaciones en las que el colaborador está intentando añadir un enlace a su propio sitio web, o incluir una biblioteca que ellos mismos crearon, o tiene una edición frívola que no sirve para ayudar a nadie más que a sí mismos.
+ These are changes to the code in a challenge - the Challenge Seed, Challenge Solution, and Test Strings.
-En ambas situaciones, debes seguir adelante y cerrar su pull request y responder con este mensaje estándar:
+ 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.
-```markdown
-Thank you for opening this pull request.
+ 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.
-This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you.
+ You can close invalid pull requests and reply to them with these [reply templates](https://contribute.freecodecamp.org/#/moderator-handbook?id=closing-invalid-pull-requests).
-Thank you and happy coding.
-```
+ 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.
-Si necesitas una segunda opinión sobre un pull request, sigue adelante y deja tus comentarios sobre el pull request, luego agregue la etiqueta "discussing" al pull request.
+3. **Platform Changes**
-### Moderando problemas de GitHub
+ These code edits change the functionality of the freeCodeCamp platform itself.
-freeCodeCamp es un proyecto activo de código abierto. Cada día recibimos nuevos asuntos, todos los cuales necesitan ser probados y etiquetados.
+ 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.
-#### Tipos de problemas de GitHub
+ 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 **"@freeCodeCamp/dev-team"** so they can take a final look.
-1. **Code Help Requests**, which people have mistakenly created GitHub issues for. If someone is asking for help, paste the following message, then close the issue.
+4. **Automated PRs (Dependabot)**
-```markdown
-Thank you for reporting this issue.
+ Some PRs are automated dependency updates made via an integration. You should not merge or approve these PRs. One of the members of the dev-team will take care of reviewing and merging such automated PRs.
-This is a standard message notifying you that this issue seems to be a request for help. Instead of asking for help here, please click the **"Help"** button on the challenge on freeCodeCamp, which will help you create a question in the right part of the forum. Volunteers on the forum usually respond to questions within a few hours and can help determine if there is an issue with your code or the challenge's tests.
+#### How to review, merge or close pull requests
-If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened.
+##### Assign yourself to a pull request:
-Thank you and happy coding.
-```
+First of all, when you choose a pull request to review, 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.
-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:
+Depending on the type of pull request it is, follow the corresponding rules listed previously.
-- If it's a simple change to an existing challenge, label it as `first timers only`, otherwise label it as `help wanted`. Utilice otras etiquetas según corresponda.
-- If the issue is more significant, flag it as `bug`. Si hay alguna ambigüedad en cuanto al curso correcto de acción en un problema, siéntate libre de etiquetar a @raisedadead sobre el problema y luego añade la etiqueta `Discutir`.
+##### Ensure the CI checks are passing:
-3. **Duplicate Issues** If an issue is the same as another reported issue, the prior reported issue should take precedence. Flag as `Duplicate`, paste the following message replacing `#XXXXX` with the issue number, then close the issue.
+Before merging any pull request, make sure that GitHub is reporting all checks to be passing (green check marks) on the pull-requests. If you see any of the checks failing, please investigate and get some clarification on the root cause. Is the change being made breaking our tests? Will the site build correctly if the the PR is merged? These checks are critical for the stability of the platform.
-```markdown
-Thank you for reporting this issue.
+> [!WARNING] Merging a PR that is failing CI/CD checks can cause difficulties for all stakeholders, including the dev-team and contributors.
-This is a standard message notifying you that this issue appears to be very similar to issue #XXXXX, so we are closing it as a duplicate.
+##### Handling merge conflicts:
-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.
-```
+Sometimes there will be a Merge Conflict.
-4. **Fixed in staging** Some problems may have already been fixed in staging, but don't have a GitHub issue associated with them. If this is the case, you can paste the following message, close the issue, and add a `status: resolved/shipping` label:
+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.
-```markdown
-Thank you for reporting this issue.
+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.
-This is a standard message notifying you that the problem you mentioned here is present in production, but that it has already been fixed in staging. This means that the next time we push our staging branch to production, this problem should be fixed. Because of this, we're closing this issue.
+If you are uncertain, please ask one of the fellow moderators or the dev-team for assistance.
-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.
-```
+##### Merging a valid pull request:
-#### Cerrando pedidos, obsoletos, problemas inactivos y solicitudes de Pull
+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, which makes the Git history much easier to read.
-- 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. Estos pueden ser cerrados en un script automático/bot o por los propios moderadores.
+> You should then comment on the pull request, thanking the contributor in your own personal way.
-- La actividad se define como: Comentarios que solicitan una actualización en PR y clases como `estado: actualización necesaria` etiqueta etc.
+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:
-- Si el OP solicita ayuda adicional o incluso tiempo, lo anterior puede ser relajado y revisado después de que se dé una respuesta. In any case, the mods should use their best judgment to resolve the outstanding PR's status.
+
+
+ First time contributor badge on pull requests (screenshot)
+
+
+
+
+
+
+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 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:
+
+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.
+
+You can close invalid pull requests and reply to them with these [reply templates](https://contribute.freecodecamp.org/#/moderator-handbook?id=closing-invalid-pull-requests).
#### Otras pautas para moderadores en GitHub
-Aunque tendrás acceso de escritura al repositorio de freeCodeCamp, **nunca deberías enviar código directamente a los repositorios freeCodeCamp**. Todo el código debe introducir el código base de freeCodeCamp en forma de pull request desde un fork del repositorio.
+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.
-Además, nunca debes aceptar tus propios PRs. Deben ser QA'd por otro moderador, al igual que cualquier otro PR.
+Also, you should never accept your own PRs. They must be reviewed by another moderator, just like with any other PR.
-Si observas que alguien rompe el código de conducta [](https://code-of-conduct.freecodecamp.org) en problemas de GitHub, o abrir solicitudes de extracción con contenido o código malicioso, envíe un correo electrónico a dev@freecodecamp. rg con un enlace a la solicitud de extracción ofensiva y podemos considerar prohibirlos de la organización GitHub de freeCodeCamp por completo.
+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.
## Moderando el foro
-Como moderador, usted ayuda a mantener a nuestra comunidad un lugar agradable para que cualquiera aprenda y obtenga ayuda. Usted tratará con mensajes marcados y manejará el spam, fuera de tema y otras conversaciones inapropiadas.
+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.
-Ten en cuenta que una vez que seas un moderador en el foro, empezarás a ver pistas azules de los miembros del foro, como "esta es la primera vez que [person] ha publicado - ¡Bienvenidos a la comunidad! o "[person] no ha publicado en mucho tiempo - ¡Bienvenidos de nuevo! "
+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."
-![Un mensaje de texto azul que dice "esta es la primera vez que [person] ha publicado - ¡Demos la bienvenida a la comunidad!](https://i.imgur.com/mPmVgzK.png)
+![A blue text message saying "this is the first time [person] has posted - let's welcome them to the community!](https://i.imgur.com/mPmVgzK.png)
-Estas son oportunidades para que usted las acoja y haga que se sientan muy especiales. Nunca sabes qué persona que está involucrada marginalmente puede convertirse en nuestro próximo super-ayudante, ayudando a muchas otras personas en su viaje de codificación. Incluso la bondad más pequeña puede desencadenar una cascada de buenas acciones.
+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 smallest kindness may trigger a cascade of good deeds.
### Eliminando mensajes del foro
-Los moderadores del foro tienen la capacidad de borrar los mensajes del usuario. Sólo deberías hacer esto para las siguientes instancias:
+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.
@@ -166,21 +172,23 @@ Los moderadores del foro tienen la capacidad de borrar los mensajes del usuario.
### Tratando con spam
-Para el primer mensaje de correo no deseado de un usuario, envíe un mensaje explicando el problema, y elimine el enlace o mensaje según corresponda. Deja una nota en el perfil del usuario explicando la acción que has tomado. 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. Marque la casilla del mensaje privado indicando que su mensaje es una "advertencia formal".
+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."
-Puedes hacer preguntas e informar de incidentes en la sección [del foro del personal](https://forum.freecodecamp.com/c/staff).
+You can ask questions and report incidents in the in the [staff forum section](https://forum.freecodecamp.com/c/staff).
### Tratando con conversaciones fuera de tema
-Mensajes o temas que parecen estar en el lugar equivocado pueden ser recategorizados o renombrados a cualquier cosa que sea apropiada.
+Posts or topics that seems to be in the wrong place can be re-categorized or renamed to whatever would be appropriate.
-En circunstancias excepcionales, puede ser apropiado que un moderador bifurque una discusión en múltiples hilos.
+In exceptional circumstances, it may be appropriate for a moderator to fork a discussion into multiple threads.
-De nuevo, si tienes algún problema o pregunta, haz un post con tus acciones en la categoría de personal, y etiquetar a otro moderador si quieres que revisen tus acciones de moderación.
+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.
### Usuarios Inderramados
-Nuestros Términos de Servicio requieren que los usuarios de freeCodeCamp tengan al menos 13 años de edad. En el caso de que un usuario revele que es menor de 13 años enviarles el siguiente mensaje y eliminar su cuenta del foro (si la eliminación no está disponible, suspender la cuenta es suficiente). Luego envía un correo electrónico a [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) o [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) para eliminar también la cuenta freeCodeCamp del usuario.
+Our [Terms of Service](https://www.freecodecamp.org/terms) require that freeCodeCamp users be at least 13 years of age. In the event that 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
@@ -194,82 +202,115 @@ Thank you for understanding.
## Moderando Facebook
-Si ves algo que parezca incumplir nuestro [Código de Conducta](https://code-of-conduct.freecodecamp.org/), deberías eliminarlo inmediatamente.
+If you see anything that seems to break our [Code of Conduct](https://code-of-conduct.freecodecamp.org/), you should delete it immediately.
-A veces la gente publicará cosas que creen que son divertidas. No se dan cuenta de que lo que dijeron o lo que compartieron podría interpretarse como ofensivo. En estos casos, su publicación debe ser eliminada, pero la persona que la publicó no necesariamente necesita ser prohibida. Con la eliminación de su correo, espero que lleguen a comprender que lo que publicaron era inapropiado.
+Sometimes people will post things that they think are funny. They don't realize that what they said or what they shared could be interpreted as offensive. In these cases, their post should be deleted, but the person who posted it doesn't necessarily need to be banned. By getting their post deleted, they will hopefully come to understand that what they posted was inappropriate.
-Pero si se trata de una ofensa atroz que no puede atribuirse razonablemente a una diferencia cultural o a un malentendido del idioma inglés. entonces debe considerar fuertemente bloquear al miembro del grupo de Facebook.
+But if it is an egregious offense that can't reasonably be attributed to a cultural difference or a misunderstanding of the English language, then you should strongly consider blocking the member from the Facebook group.
## Moderating Chat
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 it was intended to violate the Code of Conduct.** 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.
+1. **Make sure it was intended to violate the Code of Conduct.**
-2. **If the camper clearly and intentionally violates the Code of Conduct, the moderator will proceed as follows:** Kick or mute the offending person from the chat room. In order 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:
+ 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.
-```
-Kicked: _@username_
-Reason(s): _Spamming, trolling_
-Evidence: _One or more links to the offending message(s)_
-```
+2. **If the camper clearly and intentionally violates the Code of Conduct, the moderator will proceed as follows:**
-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, 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:
+ Kick or mute the offending person from the chat room. In order 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:
-- Call the `!fCC private username` command, where `username` is the camper's chat user name.
-- 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.
+ ```
+ Kicked: _@username_
+ Reason(s): _Spamming, trolling_
+ Evidence: _One or more links to the offending message(s)_
+ ```
-4. **Deleting messages** Moderators can delete messages on our chat server. They should only exercise this ability in four very specific situations:
+3. **Creating a Private Discussion**
-- 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 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 an advertisement and/or a self-promoting message/image (social media).
+ 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:
-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.
+ - Call the `!fCC private username` command, where `username` is the camper's chat user name.
+ - 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.
-> [!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.
+4. **Deleting messages**
-5. **Don’t use @all 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. Instead, if you want people to see an announcement, you can pin it to the channel to allow everyone to read it.
+ Moderators can delete messages on our chat server. They should only exercise this ability in four very specific situations:
-6. **Don’t threaten to take action** If a camper is breaking 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:
+ - Someone has posted a pornographic or graphically violent image.
-- Camper posts a wall of code to request help:
+ - Someone has posted a link or code that is malicious in nature and could harm other campers who click on it.
- Moderator: @username Please use Codepen or Pastebin when posting large amounts of code.
+ - Someone has flooded the chat with lots of spam messages to such an extreme extent (usually involving bots) as to render chat completely unusable.
-- Or if you really have to explain why:
+ - Someone has posted an advertisement and/or a self-promoting message/image (social media).
- 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.
+ 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.
-- For mild and unintentional violations of the code of conduct:
+ > [!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.
- Moderator: This is a friendly reminder for everyone to follow the code of conduct: https://code-of-conduct.freecodecamp.org/
+5. **Don’t use @all or @here**
-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.
+ 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.
-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 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. Remember: we’re all on the same team. We want to dignify the role of moderators and present a unified front.
+ Instead, if you want people to see an announcement, you can pin it to the channel to allow everyone to read it.
-9. **Talk with other moderators** 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!
+6. **Don’t threaten to take action**
-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.
+ If a camper is breaking 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:
+
+ - Camper posts a wall of code to request help:
+
+ 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.
+
+ - For mild and unintentional violations of the code of conduct:
+
+ Moderator: This is a friendly reminder for everyone to follow the code of conduct: 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.
+
+ 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 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.
+
+ 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 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 on the server or not.
## How to become a moderator
If you are helping people in the community consistently over time, 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), 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), and 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. This is required for us to be able to give you write access to 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
Please note that we will frequently remove mods whom we think are inactive. When we do this we will send the following message:
-> 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.
+```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.
-> 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 me know.
+```
## How our Contributors room works
@@ -279,11 +320,17 @@ Our assumption is that contributors will read anything in this room that directl
## Dealing with solicitors
-You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. Once you realize that this is what they're after, please stop talking to them and tell them to email quincy@freecodecamp.org. He gets proposals like this all the time and is in the best position to judge whether such a relationship will be worth it for our community (and it rarely is).
+You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. 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 proposals like this all the time and is 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
-You may come across situations where users are seeking 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 at some point reflect back to fCC, 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!
+You may come across situations where users are seeking 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 at some point 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!
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.
@@ -307,7 +354,7 @@ 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.
+These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues and 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.
@@ -468,3 +515,25 @@ 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
+
+> When an issue is deemed to be eligible for first time code contributors.
+
+```markdown
+Thanks for opening this issue.
+
+This looks 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:
+
+1. ...
+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 or the forum if you need help contributing, our moderators will guide you through this.
+
+Sometimes we may get more than one pull-requests. We typically accept the most quality contribution followed by the one that is made first.
+
+Happy contributing.
+```
diff --git a/docs/i18n/portuguese/FAQ.md b/docs/i18n/portuguese/FAQ.md
index eed0f3cbe4..da993a6378 100644
--- a/docs/i18n/portuguese/FAQ.md
+++ b/docs/i18n/portuguese/FAQ.md
@@ -4,13 +4,9 @@ Read our ["How to Contribute to Open Source Guide"](https://github.com/freeCodeC
### Can I translate freeCodeCamp's curriculum?
-Yes - Read [this guide](/how-to-translate-files) if you are interested in contributing to translation.
+Yes - Read [this guide](/how-to-translate-files) if you are interested in contributing to translations.
-Currently we have the user contributed translations being done in Chinese and Español.
-
-At this time we are building our experience hosting the curriculum in the aforementioned languages. Eventually, we intend to localize freeCodeCamp into several major world languages, like: Arabic, Hindi, Portuguese, Russian and more.
-
-We thank you for your patience while we iron out the workflow.
+Currently we have the user contributed translations being done in Chinese and Español. We intend to localize freeCodeCamp into several major world languages. You can read all about this in our [announcement here](https://www.freecodecamp.org/news/world-language-translation-effort).
### How can I report a new bug?
@@ -70,17 +66,20 @@ We are excited to help you contribute to any of the topics that you would like t
Thanks in advance for being polite and patient. Remember – this community is run mainly by volunteers.
-**Additional Assistance:**
+### Additional Assistance
-If you have queries about the stack, architecture of the codebase, feel free to reach out to our staff dev team:
+If you have queries about the stack, architecture of the codebase, translations, or anything else feel free to reach out to our staff.
| Staff | Send message on Forum |
|:--------------------- |:---------------------------------------------------------------------------- |
-| Mrugesh Mohapatra | [@raisedadead](https://forum.freecodecamp.org/u/raisedadead) |
| Ahmad Abdolsaheb | [@abdolsa](https://forum.freecodecamp.org/u/abdolsa) |
| Kristofer Koishigawa | [@scissorsneedfoodtoo](https://forum.freecodecamp.org/u/scissorsneedfoodtoo) |
-| Tom Mondloc | [@moT01](https://forum.freecodecamp.org/u/moT01) |
+| Miya Liu | [@miyaliu](https://chinese.freecodecamp.org/forum/u/miyaliu) |
+| Mrugesh Mohapatra | [@raisedadead](https://forum.freecodecamp.org/u/raisedadead) |
+| Nicholas Carrigan | [@nhcarrigan](https://forum.freecodecamp.org/u/nhcarrigan) |
| Oliver Eyton-Williams | [@ojeytonwilliams](https://forum.freecodecamp.org/u/ojeytonwilliams) |
+| Rafael D Hernandez | [@RafaelHernandez](https://forum.freecodecamp.org/u/rafaelhernandez) |
| Randell Dawson | [@RandellDawson](https://forum.freecodecamp.org/u/randelldawson) |
+| Tom Mondloc | [@moT01](https://forum.freecodecamp.org/u/moT01) |
**You can email our developer staff at: `dev[at]freecodecamp.org`**
diff --git a/docs/i18n/portuguese/devops.md b/docs/i18n/portuguese/devops.md
index 4761aa3314..d60878b09b 100644
--- a/docs/i18n/portuguese/devops.md
+++ b/docs/i18n/portuguese/devops.md
@@ -69,7 +69,7 @@ Currently, only members on the developer team can push to the production branche
upstream git@github.com:freeCodeCamp/freeCodeCamp.git (push)
```
-2. Make sure your `maim` branch is pristine and in sync with the upstream.
+2. Make sure your `main` branch is pristine and in sync with the upstream.
```sh
git checkout main
@@ -557,14 +557,14 @@ Provisioning VMs with the Code
7. Build the server
```console
- npm run ensure-env && npm run build:server
+ npm run ensure-env && npm run build:curriculum && npm run build:server
```
8. Start Instances
```console
cd api-server
- pm2 start production-start.js -i max --max-memory-restart 600M --name org
+ pm2 start ./lib/production-start.js -i max --max-memory-restart 600M --name org
```
### Logging and Monitoring
@@ -600,7 +600,7 @@ npm ci
3. Build the server
```console
-npm run ensure-env && npm run build:server
+npm run ensure-env && npm run build:curriculum && npm run build:server
```
4. Start Instances
diff --git a/docs/i18n/portuguese/how-to-proofread-files.md b/docs/i18n/portuguese/how-to-proofread-files.md
index 5a737aeef9..6d7adeb066 100644
--- a/docs/i18n/portuguese/how-to-proofread-files.md
+++ b/docs/i18n/portuguese/how-to-proofread-files.md
@@ -35,6 +35,6 @@ While you can view *all* proposed translations for a given string, the community
> [!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/channel/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/channel/translators). If you are already a proofreader and are interested in having a dedicated channel for a specific language, [fill out our form](https://forms.gle/XU5CyutrYCgDYaVZA).
> [!NOTE] 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.
diff --git a/docs/i18n/portuguese/how-to-translate-the-website.md b/docs/i18n/portuguese/how-to-translate-the-website.md
index 6ea2b7732b..a783a75cd8 100644
--- a/docs/i18n/portuguese/how-to-translate-the-website.md
+++ b/docs/i18n/portuguese/how-to-translate-the-website.md
@@ -20,7 +20,7 @@ The `meta-tags.json` file contains the information for our website's meta tag in
To add a new language, create a folder with the language name as the title next to the other languages and copy the JSON files from another language into your new folder.
-In the `allLangs.js` file, add the language to the `client` array in the first variable. Then, follow the instructions in the comments to add the rest of the necessary variables.
+In the `all-langs.js` file, add the language to the `client` array in the first variable. Then, follow the instructions in the comments to add the rest of the necessary variables.
## How to Translate
@@ -32,7 +32,7 @@ Modifications to the `trending.json`, `meta-tags.json`, and `motivation.json` fi
Set the `CLIENT_LOCALE` variable in your `.env` file to the locale you want to build.
-> [!NOTE] The value needs to be one of the client languages available in `client/i18n/allLangs.js`
+> [!NOTE] The value needs to be one of the client languages available in `config/i18n/all-langs.js`
## How to Structure Components
diff --git a/docs/i18n/portuguese/index.md b/docs/i18n/portuguese/index.md
index 0bbeda1b34..799e36a7dd 100644
--- a/docs/i18n/portuguese/index.md
+++ b/docs/i18n/portuguese/index.md
@@ -22,9 +22,11 @@ You can help expand and improve the curriculum. You can also update project user
## Translations
-We are localizing freeCodeCamp.org to world languages starting with Chinese and Espanol. We will be expanding the translations to more languages. It's our dream to provide you with resources to learn, no matter the world language you speak.
+We are localizing freeCodeCamp.org to world languages starting with Chinese and Español. We will be expanding the translations to more languages.
-To help us with this massive effort, we have integrated our open-source code-base & curriculum with [Crowdin](https://crowdin.com/).
+To help us with this massive effort, we have integrated our open-source code-base & curriculum with [Crowdin](https://crowdin.com/). You can read all about this in our [announcement here](https://www.freecodecamp.org/news/world-language-translation-effort). We encourage you to read the announcement and share it your friends to get them excited about this.
+
+It's our dream to provide you with the resources to learn, no matter the world language you speak.
**If you're interested in translating, here are the guides to translate our [curriculum](how-to-translate-files.md), the [learning platform](how-to-translate-the-website.md) and our [Contributing guidelines](https://translate.freecodecamp.org/contributing-docs).**
diff --git a/docs/i18n/portuguese/moderator-handbook.md b/docs/i18n/portuguese/moderator-handbook.md
index d2396c25f2..39d08facc7 100644
--- a/docs/i18n/portuguese/moderator-handbook.md
+++ b/docs/i18n/portuguese/moderator-handbook.md
@@ -1,18 +1,14 @@
# The official freeCodeCamp Moderator Handbook.
-This will help you moderate different places in our community, including:
+This handbook will help you moderate different places in our community. This covers conversations and interactions in issues & pull request threads on GitHub, the community forum, the chat rooms and other official communities that we foster.
-- GitHub issues & pull requests
-- The forum, chat rooms, Facebook groups, and other online meeting places
-- In-person events like study groups, hackathons, and conferences
+> [!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 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.
+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. Others just help out on the forum. Some 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.
-> [!NOTE] "With great power comes great responsibility." - Uncle Ben
+> "With great power comes great responsibility." - Uncle Ben
As a moderator, temperament is more important than technical skill.
@@ -22,129 +18,139 @@ 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).
+> [!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 on a platform that you would like to moderate please [reach out to a staff member](/FAQ?id=additional-assistance).
+
## Moderating GitHub
-Moderators have the ability to close issues and accept or close pull requests.
+Moderators have two primary responsibilities on GitHub:
-Moderators have two primary responsibilities regarding GitHub:
+1. Triaging and responding to issues
+2. Reviewing and merging pull requests (a.k.a QA).
-1. QA'ing and merging pull requests
-2. Evaluating and responding to issues
+### 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.
+
+#### Issue Triage
+
+[Triaging](https://en.wikipedia.org/wiki/Triage) is a process of prioritizing attention to each new issue report. We have a extensive list of labels that we use to mark the priority, category, status and scope of each issue.
+
+You can help us moderate the the issue reports by helping us organize and triage these by applying labels from [this list](https://github.com/freeCodeCamp/freeCodeCamp/labels). Usually a description is available alongside the label explaining its meaning.
+
+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?id=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.
+
+- 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.
+
+> [!TIP] We recommend you use this list of standard [reply templates](https://contribute.freecodecamp.org/#/moderator-handbook?id=reply-templates) while triaging issues.
### Moderating Pull Requests
-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.
+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, request changes, 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**
-```markdown
-Thank you for your pull request.
+ These are changes to the text of challenges - the Description, Instructions, or Test Text.
-We are closing this pull request. Please add links and other details to the challenge's corresponding guide article instead.
+ 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.
-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.
-```
+ You can close invalid pull requests and reply to them with these [reply templates](https://contribute.freecodecamp.org/#/moderator-handbook?id=closing-invalid-pull-requests).
-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.
+ 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.
-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.
+2. **Challenge Code Edits**
-#### How to merge or close pull requests
+ These are changes to the code in a challenge - the Challenge Seed, Challenge Solution, and Test Strings.
-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.
+ 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.
-Depending on the type of pull request it is, follow the corresponding rules listed above.
+ 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.
-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.
+ You can close invalid pull requests and reply to them with these [reply templates](https://contribute.freecodecamp.org/#/moderator-handbook?id=closing-invalid-pull-requests).
-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 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 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.
+3. **Platform Changes**
-You should then comment on the pull request, thanking the contributor in your own personal way.
+ 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 **"@freeCodeCamp/dev-team"** so they can take a final look.
+
+4. **Automated PRs (Dependabot)**
+
+ Some PRs are automated dependency updates made via an integration. You should not merge or approve these PRs. One of the members of the dev-team will take care of reviewing and merging such automated PRs.
+
+#### How to review, merge or close pull requests
+
+##### Assign yourself to a pull request:
+
+First of all, when you choose a pull request to review, 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 previously.
+
+##### Ensure the CI checks are passing:
+
+Before merging any pull request, make sure that GitHub is reporting all checks to be passing (green check marks) on the pull-requests. If you see any of the checks failing, please investigate and get some clarification on the root cause. Is the change being made breaking our tests? Will the site build correctly if the the PR is merged? These checks are critical for the stability of the platform.
+
+> [!WARNING] Merging a PR that is failing CI/CD checks can cause difficulties for all stakeholders, including the dev-team and contributors.
+
+##### Handling merge conflicts:
+
+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 you are uncertain, please ask one of the fellow moderators or the dev-team for assistance.
+
+##### Merging a valid pull request:
+
+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, 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:
-
+
+
+ First time contributor badge on pull requests (screenshot)
+
+
+
+
+
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 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:
+
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.
-In both of these situations, you should go ahead and close their pull request and reply with this standard message:
-
-```markdown
-Thank you for opening this pull request.
-
-This is a standard message notifying you that we've reviewed your pull request and have decided not to merge it. We would welcome future pull requests from you.
-
-Thank you and happy coding.
-```
-
-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.
-
-### Moderating GitHub Issues
-
-freeCodeCamp is an active open source project. We get new issues every day, all of which need to be triaged and labeled.
-
-#### Types of GitHub Issues
-
-1. **Code Help Requests**, which people have mistakenly created GitHub issues for. If someone is asking for help, paste the following message, then close the issue.
-
-```markdown
-Thank you for reporting this issue.
-
-This is a standard message notifying you that this issue seems to be a request for help. Instead of asking for help here, please click the **"Help"** button on the challenge on freeCodeCamp, which will help you create a question in the right part of the forum. Volunteers on the forum usually respond to questions within a few hours and can help determine if there is an issue with your code or the challenge's tests.
-
-If the forum members determine there is nothing wrong with your code, you can request this issue to be reopened.
-
-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 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.
-
-3. **Duplicate Issues** If an issue is the same as another reported issue, the prior reported issue should take precedence. Flag as `Duplicate`, paste the following message replacing `#XXXXX` with the issue number, then close the issue.
-
-```markdown
-Thank you for reporting this issue.
-
-This is a standard message notifying you that this issue appears to be very similar to issue #XXXXX, so we are closing it as a duplicate.
-
-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.
-```
-
-4. **Fixed in staging** Some problems may have already been fixed in staging, but don't have a GitHub issue associated with them. If this is the case, you can paste the following message, close the issue, and add a `status: resolved/shipping` label:
-
-```markdown
-Thank you for reporting this issue.
-
-This is a standard message notifying you that the problem you mentioned here is present in production, but that it has already been fixed in staging. This means that the next time we push our staging branch to production, this problem should be fixed. Because of this, we're closing this issue.
-
-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 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.
-
-- 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 judgment to resolve the outstanding PR's status.
+You can close invalid pull requests and reply to them with these [reply templates](https://contribute.freecodecamp.org/#/moderator-handbook?id=closing-invalid-pull-requests).
#### 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 QA'd by another moderator, just like with any other PR.
+Also, you should never accept your own PRs. They must be reviewed by another moderator, just like with 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 dev@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
@@ -180,7 +186,9 @@ Again, if you have any problems or questions, make a post with your actions in t
### Underage Users
-Our Terms of Service require that freeCodeCamp users be at least 13 years of age. In the event that 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). Then email [Quincy](https://forum.freecodecamp.org/u/QuincyLarson) (quincy@freecodecamp.org) or [Mrugesh](https://forum.freecodecamp.org/u/raisedadead) (mrugesh@freecodecamp.org) to delete the user's freeCodeCamp account as well.
+Our [Terms of Service](https://www.freecodecamp.org/terms) require that freeCodeCamp users be at least 13 years of age. In the event that 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
@@ -204,72 +212,105 @@ 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 it was intended to violate the Code of Conduct.** 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.
+1. **Make sure it was intended to violate the Code of Conduct.**
-2. **If the camper clearly and intentionally violates the Code of Conduct, the moderator will proceed as follows:** Kick or mute the offending person from the chat room. In order 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:
+ 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.
-```
-Kicked: _@username_
-Reason(s): _Spamming, trolling_
-Evidence: _One or more links to the offending message(s)_
-```
+2. **If the camper clearly and intentionally violates the Code of Conduct, the moderator will proceed as follows:**
-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, 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:
+ Kick or mute the offending person from the chat room. In order 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:
-- Call the `!fCC private username` command, where `username` is the camper's chat user name.
-- 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.
+ ```
+ Kicked: _@username_
+ Reason(s): _Spamming, trolling_
+ Evidence: _One or more links to the offending message(s)_
+ ```
-4. **Deleting messages** Moderators can delete messages on our chat server. They should only exercise this ability in four very specific situations:
+3. **Creating a Private Discussion**
-- 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 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 an advertisement and/or a self-promoting message/image (social media).
+ 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:
-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.
+ - Call the `!fCC private username` command, where `username` is the camper's chat user name.
+ - 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.
-> [!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.
+4. **Deleting messages**
-5. **Don’t use @all 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. Instead, if you want people to see an announcement, you can pin it to the channel to allow everyone to read it.
+ Moderators can delete messages on our chat server. They should only exercise this ability in four very specific situations:
-6. **Don’t threaten to take action** If a camper is breaking 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:
+ - Someone has posted a pornographic or graphically violent image.
-- Camper posts a wall of code to request help:
+ - Someone has posted a link or code that is malicious in nature and could harm other campers who click on it.
- Moderator: @username Please use Codepen or Pastebin when posting large amounts of code.
+ - Someone has flooded the chat with lots of spam messages to such an extreme extent (usually involving bots) as to render chat completely unusable.
-- Or if you really have to explain why:
+ - Someone has posted an advertisement and/or a self-promoting message/image (social media).
- 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.
+ 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.
-- For mild and unintentional violations of the code of conduct:
+ > [!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.
- Moderator: This is a friendly reminder for everyone to follow the code of conduct: https://code-of-conduct.freecodecamp.org/
+5. **Don’t use @all or @here**
-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.
+ 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.
-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 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. Remember: we’re all on the same team. We want to dignify the role of moderators and present a unified front.
+ Instead, if you want people to see an announcement, you can pin it to the channel to allow everyone to read it.
-9. **Talk with other moderators** 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!
+6. **Don’t threaten to take action**
-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.
+ If a camper is breaking 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:
+
+ - Camper posts a wall of code to request help:
+
+ 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.
+
+ - For mild and unintentional violations of the code of conduct:
+
+ Moderator: This is a friendly reminder for everyone to follow the code of conduct: 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.
+
+ 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 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.
+
+ 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 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 on the server or not.
## How to become a moderator
If you are helping people in the community consistently over time, 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), 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), and 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. This is required for us to be able to give you write access to 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
Please note that we will frequently remove mods whom we think are inactive. When we do this we will send the following message:
-> 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.
+```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.
-> 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 me know.
+```
## How our Contributors room works
@@ -279,11 +320,17 @@ Our assumption is that contributors will read anything in this room that directl
## Dealing with solicitors
-You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. Once you realize that this is what they're after, please stop talking to them and tell them to email quincy@freecodecamp.org. He gets proposals like this all the time and is in the best position to judge whether such a relationship will be worth it for our community (and it rarely is).
+You may be approached by organizations who want to partner or co-brand with freeCodeCamp in some way. 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 proposals like this all the time and is 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
-You may come across situations where users are seeking 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 at some point reflect back to fCC, 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!
+You may come across situations where users are seeking 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 at some point 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!
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.
@@ -307,7 +354,7 @@ 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.
+These are some of the standard reply templates that you may use while reviewing pull requests and triaging issues and 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.
@@ -468,3 +515,25 @@ 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
+
+> When an issue is deemed to be eligible for first time code contributors.
+
+```markdown
+Thanks for opening this issue.
+
+This looks 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:
+
+1. ...
+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 or the forum if you need help contributing, our moderators will guide you through this.
+
+Sometimes we may get more than one pull-requests. We typically accept the most quality contribution followed by the one that is made first.
+
+Happy contributing.
+```