aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pydis_site/apps/content/resources/frequently-asked-questions.md130
-rw-r--r--pydis_site/apps/content/resources/guides/pydis-guides/asking-good-questions.md179
-rw-r--r--pydis_site/apps/content/resources/python-discord-code-of-conduct.md100
-rw-r--r--pydis_site/apps/content/resources/rules.md44
-rw-r--r--pydis_site/apps/content/resources/server-info/_info.yml3
-rw-r--r--pydis_site/apps/content/resources/server-info/roles.md131
-rw-r--r--pydis_site/apps/content/resources/server-info/staff-role-expectations.md67
7 files changed, 654 insertions, 0 deletions
diff --git a/pydis_site/apps/content/resources/frequently-asked-questions.md b/pydis_site/apps/content/resources/frequently-asked-questions.md
new file mode 100644
index 00000000..7e018423
--- /dev/null
+++ b/pydis_site/apps/content/resources/frequently-asked-questions.md
@@ -0,0 +1,130 @@
+---
+title: Frequently Asked Questions
+description: The Python Discord FAQ.
+icon: fab fa-discord
+---
+
+Welcome to Python Discord! Sometimes in our channels we get similar questions asked every so often.
+We've compiled the most frequently asked questions and provided our response to them.
+This FAQ is aimed at answering questions about the Python Discord community. If you have question about Python, feel free to ask in `#python-general`.
+
+## Staff & Roles
+
+#### **Q: How do I get the helper role / become moderator / join staff?**
+
+There are no applications to be come a Helper, Moderator, Admin, or other staff role.
+To become a Helper, which is our base staff role, people are nominated by a staff member and are later put up to a vote by Moderators, Admins, and Owners.
+If the candidate received enough votes unanimously, then we offer them the Helper role.
+This whole process takes place in channels only viewable to staff members.
+
+Being a Helper is not only about helping people with Python questions or helping with our projects, but is also about demonstrating an understanding of our community's culture.
+To read more about what we look for in a Helper and to read about our internal staff roles (Moderators, Leads, Core Developer, Admin), check out [this page](/pages/server-info/roles/).
+
+
+#### **Q: What is this role on the server?**
+
+We document the purposes of our most important roles on our website. Check it out [here](/pages/server-info/roles/).
+
+The roles that are not documented on that page are for seasonal events. These are specific to those events and don't impact permissions on the server.
+
+
+#### **Q: What perks are there for nitro boosters? Can I keep the nitro role once the boost expires?**
+
+People who boost our server automatically get a bright cyan role color, but this is purely cosmetic and there aren't any other incentives to give us Nitro boosts.
+Discord itself manages that specific role, so the role is automatically removed when the boost expires.
+
+Patrons who donate via [our Patreon](https://www.patreon.com/python_discord) also get a blue role and this is also a purely cosmetic role.
+We do appreciate our Patreon supporters and our Nitro Boosters!
+
+We have received suggestions to give Nitro boosters non-cosmetic perks like a Nitro boosters lounge or the ability to use emoji reactions in certain channels, though that isn't something we will consider as we don't want to gate any part of the server behind a paywall.
+
+
+#### **Q: I'd like to report inappropriate behavior on the server. How do I do that?**
+
+To report inappropriate or rule-breaking behaviour on the server, please send a direct message to our `@ModMail`.
+You should find the ModMail bot at the top of the server member list.
+If it's an urgent situation that needs immediate moderator attention, such as spam or NSFW content, then you can ping the `@Moderators` role in the server.
+
+## Questions about our bots
+
+#### **Q: Can I get Python bot on my server?**
+
+There isn't a way to invite `@Python` to other servers.
+`@Python` is closely tied to our server architecture and wouldn't be able to properly function without a specific set-up.
+If you are interested in `@Python` though, you can host your own instance of it.
+The entire project is open source and can be found on [our github](https://github.com/python-discord/bot).
+
+#### **Q: What is the Zoot bot?**
+
+Zoot is an instance of [Metricity](https://github.com/python-discord/metricity).
+It collects advanced metrics about the usage of the server.
+Message content is not stored or collected.
+You can view what data we collect in our [data privacy policy](/pages/privacy/).
+
+
+#### **Q: Do any of the bots do X? Can I contribute to the bot?**
+
+We have two bots that provide functionality in our server: `@Python` and `@Sir Lancebot`.
+
+* `@Python` is the bot that helps manage certain server functionality (i.e. our help channel and moderation systems).
+* `@Sir Lancebot` is our community bot that is designed as an entry level project for people to learn about open source contribution.
+* `@Sir Lancebot` contains our fun and silly commands, like `.battleship`, `.BunnyNameGenerator`, `.http_status` which provides dog and cat HTTP status codes, and more!
+
+You can check out [`@Python` here on github](https://github.com/python-discord/bot), and check out [`@Sir Lancebot` here](https://github.com/python-discord/sir-lancebot).
+If you have any questions about how to contribute, drop by the `#dev-contrib` channel in server.
+
+## Server Specific Questions
+
+#### **Q: Why are the help channels named after elements/food?**
+
+We want to keep the help channels uniquely named with it being somewhat easy to remember, so we decided on elements/food. `#help-1` doesn't work as well as `help-carbon` (`help-strawberry`).
+If we had them numbered, they would quickly move out of order and possibly cause confusion for newer members.
+
+
+#### **Q: Why can't I upload a specific file type?**
+
+The only file types that we allow on this server are those that Discord supports a native preview for.
+This is because it's easier and safer for people on the server since they do not need to download a file to view it.
+It's also to ease the burden on our moderators, otherwise they would have to download and check the files posted to the server.
+
+If you want to share code please use our hosted hastebin, [paste.pythondiscord.com](http://paste.pythondiscord.com).
+
+
+#### **Q: Why is this permission not allowed in that channel?**
+
+Our general policy is to allow permissions unless proven that they are negatively affecting the channel.
+If a certain channel doesn't have a permission, chances are it was allowed there at some point, but the cost of moderating or managing it outweighed the benefit.
+Feel free to ask in `#community-meta` if you'd like the reasoning behind any specific decision.
+
+
+#### **Q: Can we have a channel to show off projects or a channel to find people to work on projects with?**
+
+We previously had these channels, though they unfortunately did not work out the way we had hoped.
+Engagement was low and they were a large burden on our moderators due to the number of low quality or rule violating posts.
+
+In general, a real-time chat client isn't the best avenue for showing off your projects or finding collaborators because messages are typically only seen by those actively engaged at the time they are posted.
+You're welcome to showcase your projects in our off-topic channels or on a different platform like Reddit.
+
+
+#### **Q: Can I make a recommendation about a specific feature in the server?**
+
+If you want to make a recommendation or suggestion about the server feel free to post in `#community-meta`.
+You can also open an issue on our meta repo on GitHub, which can be found [here](https://github.com/python-discord/meta).
+
+
+#### **Q: Why did the icon change?**
+
+While we love our blurple Python logo, we also enjoy celebrating other events throughout the year, like Advent of Code, Pride Month, Black History Month, Valentine's Day, Diwali, and more! In the spirit of those celebrations, we like to have some fun and change our icon instead.
+If you're wondering why it's changed this time, check out `#changelog` on the server, as the reasoning for the recent change will be there.
+
+If you'd like to contribute and create a Python Discord server icon for us to use, check out [our branding repo](https://github.com/python-discord/branding) for what we currently have and talk to us in the `#media-branding` channel in the server.
+
+## Misc
+
+#### **Q: Can I interact with the data collected on the server?**
+
+Unfortunately we don't allow direct interaction with the metrics we collect on the server.
+The data we do collect is used for moderation purposes, please see [our Privacy Policy](/pages/privacy/) on what data is collected and how we use it.
+Legend has it that if you say "SQL" or "graphs" enough times, a `@joe` might appear and provide some graphs and run queries you might have in mind.
+
+We do have some public stats available to view here: [https://stats.pythondiscord.com/](https://stats.pythondiscord.com/)
diff --git a/pydis_site/apps/content/resources/guides/pydis-guides/asking-good-questions.md b/pydis_site/apps/content/resources/guides/pydis-guides/asking-good-questions.md
new file mode 100644
index 00000000..d9fc534a
--- /dev/null
+++ b/pydis_site/apps/content/resources/guides/pydis-guides/asking-good-questions.md
@@ -0,0 +1,179 @@
+---
+title: Asking Good Questions
+description: A guide for how to ask good questions in our community.
+icon: fab fa-discord
+---
+
+This document is intended to provide you with the information you need to get help as quickly and effectively as possible.
+If you're stuck on a problem or you just don't understand something, you should always feel welcome to ask.
+
+# Before You Ask
+
+Before you ask your question, there are a few things you can do to find an answer on your own.
+Experienced developers will do the following:
+
+* Read the official documentation for whatever you're working with
+* Use a debugger to inspect your code
+* Examine the traceback when your code raises an exception
+* Do some research online - for example, on Stack Overflow
+* Read the source code for whatever you're working with
+
+Essentially, doing your research is the first step towards a solution to any problem.
+If your problem isn't extremely general, we're going to be doing exactly these steps ourselves when helping you, so doing the legwork beforehand saves everyone a lot of time.
+
+If none of the above steps help you or you're not sure how to do some of the above steps, feel free to ask us for help.
+
+# A Good Question
+
+When you're ready to ask a question, there's a few things you should have to hand before forming a query.
+
+* A code example that illustrates your problem
+* If possible, make this a minimal example rather than an entire application
+* Details on how you attempted to solve the problem on your own
+* Full version information - for example, "Python 3.6.4 with `discord.py 1.0.0a`"
+* The full traceback if your code raises an exception
+* Do not curate the traceback as you may inadvertently exclude information crucial to solving your issue
+
+Your question should be informative, but to the point.
+More importantly, how you phrase your question and how you address those that may help you is crucial.
+Courtesy never hurts, and please type using correctly-spelled and grammatical language as far as you possibly can.
+
+When you're inspecting a problem, don't be quick to assume that you've found a bug, or that your approach is correct.
+While it helps to detail what exactly you're trying to do, you should also be able to give us the bigger picture - describe the goal, not just the step.
+Describe the problem's symptoms in chronological order - not your guesses as to their cause.
+
+| Bad Questions | Good Questions |
+| ------------- | -------------- |
+| Where can I find information on discord.py? | I used Google to try to find more information about "discord.py 1.0.0a", but I couldn't really find anything useful. Does anyone know where I might find a guide to writing commands using this library? |
+| Pillow puts my text at the bottom of the image instead of where I wanted it. Why is it broken? | Pillow appears to insert text at the bottom of the image if the given X coordinate is negative. I had a look at the documentation and searched Stack Overflow, but I couldn't find any information on using negative coordinates to position text. Has anyone attempted this? |
+| I'm having some trouble writing a YouTube random URL generator - can anyone help? | My YouTube random URL generator appears to be returning false positives for tested URLs, stating that a URL points to a real video when that video doesn't actually exist. Obviously there's some issue with how this is checked, but I can't put my finger on it. Is there anything I can check? |
+| I was given this assignment by my teacher, but I'm not sure how to approach it. Does anyone have any ideas? | I have a list of numbers - how do I calculate how many of them are even? Is there a way to remove all the odd numbers from my list? Are there quick ways to find the average of a list of numbers, or add them all together? |
+
+
+# What Not To Ask
+---
+
+#### Q: Can I ask a question?
+
+Yes. Always yes. Just ask.
+
+#### Q: Is anyone here good at Flask / Pygame / PyCharm?
+
+There are two problems with this question:
+
+1. This kind of question does not manage to pique anyone's interest, so you're less likely to get an answer overall.
+ On the other hand, a question like `"Is it possible to get PyCharm to automatically compile SCSS into CSS files"` is much more likely to be interesting to someone.
+ Sometimes, the best answers come from someone who does not already know the answer, but who finds the question interesting enough to go search for the answer on your behalf.
+2. When you qualify your question by first asking if someone is good at something, you are filtering out potential answerers.
+ [Not only are people bad at judging their own skill at something](https://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect), but the truth is that even someone who has zero experience with the framework you're having trouble with might still be of excellent help to you.
+
+So instead of asking if someone is good at something, simply ask your question right away.
+
+#### Q: Can I use `str()` on a `discord.py` Channel object?
+
+Try it yourself and see. Experimentation is a great way to learn, and you'll save a lot of time by just trying things out. Don't be afraid of your computer!
+
+#### Q: My code doesn't work
+
+This isn't a question, and it provides absolutely no context or information.
+Depending on the mood of the people that are around, you may even find yourself ignored.
+Don't be offended by this - just try again with a better question.
+
+#### Q: Can anyone help me break into someone's Facebook account / write a virus / download videos from YouTube?
+
+We will absolutely not help you with hacking, pirating, or any other illegal activity.
+A question like this is likely to be followed up with a ban if the person asking it doesn't back down quickly.
+
+#### Q: Can I send you a private message?
+
+Sure, but keep in mind that our staff members will not provide help via DMs.
+We prefer that questions are answered in a public channel so lurkers can learn from them.
+
+#### Q: Can you help me over Teamviewer?
+
+No, sorry.
+
+
+# Examining Tracebacks
+
+Usually, the first sign of trouble is that when you run your code, it raises an exception.
+For beginning programmers, the traceback that's generated for the exception may feel overwhelming and discouraging at first.
+However, in time, most developers start to appreciate the extensive information contained in the traceback as it helps them track down the error in their code.
+So, don't panic and take a moment to carefully review the information provided to you.
+
+### Reading the Traceback
+
+```py
+Traceback (most recent call last):
+ File "my_python_file.py", line 6, in <module>
+ spam = division(a=10, b=0)
+ File "my_python_file.py", line 2, in division
+ answer = a / b
+ZeroDivisionError: division by zero
+```
+
+In general, the best strategy is to read the traceback from bottom to top.
+As you can see in the example above, the last line of the traceback contains the actual exception that was raised by your code.
+In this case, `ZeroDivisionError: division by zero`, clearly indicates the problem: We're trying to divide by zero somewhere in our code and that obviously can't be right.
+However, while we now know which exception was raised, we still need to trace the exception back to the error in our code.
+
+To do so, we turn to the lines above the exception.
+Reading from bottom to top again, we first encounter the line where the exception was raised: `answer = a / b`.
+Directly above it, we can see that this line of code was `line 2` of the file `my_python_file.py` and that it's in the scope of the function `division`.
+At this point, it's a good idea to inspect the code referenced here to see if we can spot an obvious mistake:
+
+```py
+# Python Code
+1| def division(a, b):
+2| answer = a / b
+3| return answer
+```
+
+Unfortunately, there's no obvious mistake in the code at this point, although one thing we do see here is that this function divides `a` by `b` and that the exception will only occur if `b` is somehow assigned the numeric value `0`.
+
+Keeping that observation in the back of our minds, we continue reading the traceback from bottom to top. The next thing we encounter is `spam = division(a=10, b=0)` from `line 6` of the file `my_python_file.py`.
+In this case, `<module>` tells us that the code is in the global scope of that file.
+While it's already clear from the traceback what's going wrong here, we're passing `b=0` to the function `division`, inspecting the code shows us the same:
+
+```python
+5| spam = division(a=10, b=0)
+6| print(spam)
+```
+
+We have now traced back the exception to a line of code calling the division function with a divisor of `0`.
+Obviously, this is a simplified example, but the exact same steps apply to more complex situations as well.
+
+### The Error is Sometimes in the Line Before the Line in the Traceback
+
+Sometimes, the actual error is in the line just before the one referenced in the traceback.
+This usually happens when we've inadvertently omitted a character meant to close an expression, like a brace, bracket, or parenthesis.
+For instance, the following snippet of code will generate a traceback pointing at the line after the one in which we've missed the closing parenthesis:
+
+```python
+# Python Code
+1| print("Hello, world!"
+2| print("This is my first Python program!")
+
+# Terminal output
+Traceback (most recent call last):
+ File "my_python_file.py", line 2
+ print("This is my first Python program!")
+ ^
+SyntaxError: invalid syntax
+```
+
+The reason this may happen is that Python allows for [implicit line continuation](https://docs.python.org/3/reference/lexical_analysis.html#implicit-line-joining) and will only notice the error when the expression does not continue as expected on the next line.
+So, it's always a good idea to also check the line before the one mentioned in the traceback!
+
+### More Information on Exceptions
+
+Further information on exceptions can be found in the official Python documentation:
+
+* [The built-in exceptions page](https://docs.python.org/3/library/exceptions.html) lists all the built-in exceptions along with a short description of the exception.
+ If you're unsure of the meaning of an exception in your traceback, this is a good place to start.
+* [The errors and exceptions chapter in the official tutorial ](https://docs.python.org/3/tutorial/errors.html) gives an overview of errors and exceptions in Python.
+ Besides explaining what exceptions are, it also explains how to handle expected exceptions graciously to keep your application from crashing when an expected exception is raised and how to define custom exceptions specific to your application.
+
+If you encounter an exception specific to an external module or package, it's usually a good idea to check the documentation of that package to see if the exception is documented.
+Another option is to paste a part of the traceback, usually the last line, into your favorite search engine to see if anyone else has encountered a similar problem.
+More often than not, you will be able to find a solution to your problem this way.
diff --git a/pydis_site/apps/content/resources/python-discord-code-of-conduct.md b/pydis_site/apps/content/resources/python-discord-code-of-conduct.md
new file mode 100644
index 00000000..6302438e
--- /dev/null
+++ b/pydis_site/apps/content/resources/python-discord-code-of-conduct.md
@@ -0,0 +1,100 @@
+---
+title: Python Discord Code of Conduct
+description: The Code of Conduct for our community.
+icon: fab fa-discord
+---
+
+# Code of Conduct
+
+We are committed to providing a friendly, safe and welcoming environment for all, regardless of level of experience, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, religion, nationality, or other similar characteristic.
+
+##### Examples of behavior that contributes to creating a positive environment include:
+
+* Being kind and courteous to others
+* Using welcoming and inclusive language
+* Being respectful of differing viewpoints and experiences
+* Collaborating with other community members
+* Gracefully accepting constructive criticism
+* Focusing on what is best for the community
+* Showing empathy towards other community members
+
+##### Examples of unacceptable behavior by participants include:
+
+* The use of sexualized language or imagery and sexual attention or advances
+* The use of inappropriate images, including in a community member's avatar
+* The use of inappropriate language, including in a community member's nickname
+* Any spamming, flaming, baiting or other attention-stealing behavior
+* Trolling, insulting/derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or electronic address, without explicit permission
+* Discussing topics that are overly polarizing, sensitive, or incite arguments. This includes the discussion of polarizing political views, violence, suicide, and rape.
+* Responding with “RTFM”, "just google it” or similar phrases in response to help requests
+* Other conduct which could reasonably be considered inappropriate
+
+### Our Goal
+
+The goal of this document is to set the overall tone for our community.
+This isn’t an exhaustive list of things you can and can't do.
+Rather, take this document in the spirit in which it’s intended, and try to be your best self.
+
+We value many things beyond technical expertise, including collaboration and supporting others within our community.
+Providing a positive experience for other community members can have a much more significant impact than simply providing the correct answer.
+
+### Scope
+
+This Code of Conduct applies to all spaces managed by Python Discord.
+This includes, but is not limited to, the Discord server, our repositories on GitHub, the YouTube-channel, and meet-ups.
+In addition, violations of this code outside these spaces may affect a person's ability to participate within them.
+
+The Python Code of Conduct applies equally to all members of the community, including staff.
+
+---
+
+# Code of Conduct Policies
+
+### Moderation Policy
+
+These are the policies for upholding our community’s rules and the code of conduct.
+If you want to report a situation that needs to be reviewed by our moderation team, please see our [reporting guide](#reporting-guide).
+
+1. The [Python Discord Code of Conduct](#code-of-conduct) and the [Community Rules](/pages/rules) are enforced by the moderation team, which consists of users with the Moderators, Admins or Owners role on the Python Discord server.
+2. Behavior that moderators find inappropriate, whether listed in the code of conduct, the community rules, or not, is also not allowed.
+3. Complaints about moderation in-channel are not allowed. If a moderator takes an action or makes a decision you do not agree with, please send a Direct Message (DM) to ModMail from our Discord server.
+4. If you disagree with a moderation action or decision taken against you, you may appeal the action or decision by following the [Appeal Procedure](#appeal-procedure).
+
+### Reporting Guide
+
+Instances of behaviors that violate the Python Discord Code of Conduct or rules may be reported by any member of the community.
+Community members are encouraged to report these situations, including situations they witness involving other community members.
+
+You may report in the following ways:
+
+* By tagging the `@Moderators` role on the Discord server in situations that require immediate moderator attention.
+* By sending a direct message (DM) to ModMail from our Discord server.
+* By sending an email to [[email protected]](mailto:[email protected])
+
+### Appeal Procedure
+
+If you wish to appeal a decision or action taken by the moderation team, you can do so in one of the following ways:
+
+* By sending an email to [[email protected]](mailto:[email protected])
+* By sending a direct message (DM) to ModMail from our Discord server.
+
+Please provide all relevant information in your appeal, including:
+
+* Your Discord username and id.
+* The decision or action you are appealing.
+* The reason for your appeal.
+
+Appeals will be discussed internally with the moderation team, but will be kept confidential otherwise.
+
+---
+
+#### Attribution
+
+This Code of Conduct and parts of the policies are adapted from the [Adafruit Community Code of Conduct](https://github.com/adafruit/Adafruit_Community_Code_of_Conduct/blob/master/code-of-conduct.md), [Django Code of Conduct](https://www.djangoproject.com/conduct/), and the [Rust Code of Conduct](https://www.rust-lang.org/en-US/conduct.html).
+
+#### License
+![CC-BY](https://licensebuttons.net/l/by/3.0/88x31.png)
+
+All content on this page is licensed under a [Creative Commons Attribution](https://creativecommons.org/licenses/by/3.0/) license.
diff --git a/pydis_site/apps/content/resources/rules.md b/pydis_site/apps/content/resources/rules.md
new file mode 100644
index 00000000..8ecda807
--- /dev/null
+++ b/pydis_site/apps/content/resources/rules.md
@@ -0,0 +1,44 @@
+---
+title: Python Discord Rules
+description: The rules of our community.
+icon: fab fa-discord
+---
+We have a small but strict set of rules on our server. Please read over them and take them on board. If you don't understand a rule or need to report an incident, please send a direct message to <code>@ModMail</code>!
+
+> 1. Follow the [Discord Community Guidelines](https://discordapp.com/guidelines) and [Terms Of Service](https://discordapp.com/terms).
+> 2. Follow the [Python Discord Code of Conduct](/pages/python-discord-code-of-conduct/).
+> 3. Listen to and respect staff members and their instructions.
+> 4. This is an English-speaking server, so please speak English to the best of your ability.
+> 5. Do not provide or request help on projects that may break laws, breach terms of services, be considered malicious or inappropriate. Do not help with ongoing exams. Do not provide or request solutions for graded assignments, although general guidance is okay.
+> 6. No spamming or unapproved advertising, including requests for paid work. Open-source projects can be shared with others in #python-general and code reviews can be asked for in a help channel.
+> 7. Keep discussions relevant to channel topics and guidelines.
+
+# Nickname Policy
+
+In order to keep things pleasant and workable for both users and staff members, we enforce the following requirements regarding your nickname.
+
+1. No blank or "invisible" names
+2. No slurs or other offensive sentiments
+3. No noisy unicode characters - for example, z̯̯͡a̧͎̺̻̝͕̠l̡͓̫̣g̹̲o̡̼̘ or byte order marks
+4. No nicknames designed to annoy other users
+
+Staff reserves the right to change the nickname of any user for any reason. Failure to comply with these requirements may result in you losing the right to change your nickname. We also reserve the right to discipline users with offensive usernames, regardless of the nickname they're using.
+
+
+# Infractions
+
+We have a generally no-nonsense policy when it comes to our rules. If you notice someone breaking them, feel free to mention or DM a staff member and we'll try to deal with it as soon as possible.
+
+The possible actions we take based on infractions can include the following:
+
+* A public verbal or textual warning
+* Forced nick changes, where appropriate
+* A short temporary mute
+* A long temporary mute
+* A kick from the server
+* A temporary ban from the server
+* A permanent ban from the server
+
+While we do discuss more serious matters internally before handing out a punishment, simpler infractions are dealt with directly by individual staffers and the punishment they hand out is left to their own discretion.
+
+If you receive an infraction and would like to appeal it, send an e-mail to [[email protected]](mailto:[email protected]).
diff --git a/pydis_site/apps/content/resources/server-info/_info.yml b/pydis_site/apps/content/resources/server-info/_info.yml
new file mode 100644
index 00000000..af15244f
--- /dev/null
+++ b/pydis_site/apps/content/resources/server-info/_info.yml
@@ -0,0 +1,3 @@
+title: Server Information
+description: Information on roles, tooling and infrastructure at Python Discord.
+icon: fab fa-discord
diff --git a/pydis_site/apps/content/resources/server-info/roles.md b/pydis_site/apps/content/resources/server-info/roles.md
new file mode 100644
index 00000000..c5c3a7a2
--- /dev/null
+++ b/pydis_site/apps/content/resources/server-info/roles.md
@@ -0,0 +1,131 @@
+---
+title: Python Discord Server Roles
+description: Information on the various roles at Python Discord.
+icon: fab fa-discord
+---
+
+# Basic Roles
+
+### <span class="fas fa-circle" style="color:#6e6e6e"></span> Announcements
+**Description:** A role pinged by Admins when an announcement is made in the `#announcements` channel.
+
+**How to get it:** Run the command `!subscribe` in the `#bot-commands` channel.
+To unsubscribe, run `!unsubscribe` in the `#bot-commands` channel.
+
+
+### <span class="fas fa-circle" style="color:#6e6e6e"></span> Voice Verified
+**Description:** A role that lets people speak in voice channels.
+
+**How to get it:** Send `!voiceverify` in the `#voice-verification` channel.
+There are multiple requirements listed there for getting the role.
+
+---
+
+# Server Support Roles
+
+### <span class="fas fa-circle" style="color:#55cc6c"></span> Contributors
+**Description:** A role given by staff to people who make substantial contributions to any of the server's [open source repositories](https://github.com/python-discord/) (Sir Lancebot, Python, the site, the branding repo, etc..).
+This includes writing pull requests for open issues, and also for reviewing open pull requests (**we really need reviewers!**)
+
+**How to get it:** Contribute to the projects!
+There is no minimum requirements, but the role is **not** assigned for every single contribution.
+Read more about this in the [Guidelines for the Contributors Role](/pages/contributing/#guidelines-for-the-contributors-role) on the Contributing page.
+
+---
+
+# Financial Support Roles
+
+### <span class="fas fa-circle" style="color:#46e6e8"></span> Nitro Boosters
+**Description:** A vanity role for people who boost the server with their nitro subscription.
+
+**How to get it:** Boost the server with a nitro subscription.
+
+
+### <span class="fas fa-circle" style="color:#46e6e8"></span> <span class="fas fa-circle" style="color:#3e7be9"></span> <span class="fas fa-circle" style="color:#2a82bd"></span> Patrons
+**Description:** A vanity role for Patreon patrons of the server.
+
+**How to get it:** [Become a patron here!](https://www.patreon.com/python_discord)
+
+---
+
+# Staff Roles
+#### Note regarding staff roles:
+##### Q: How do I apply for Helper/Moderator/Admin?
+There is no application, and there are no public nominations. Staff keep an eye out for potential candidates, and people nominated (by staff) are put in a pool for evaluation. After a period of time the candidate for a certain role is voted on by staff higher up the hierarchy.
+
+##### Q: How do I become Helper?
+See the description of a Helper. Being active in helping others, providing good help, contributing to our projects, and abiding by our rules go a long way towards catching staff attention, and make the server a better place for both beginners and advanced Python devs.
+
+##### Role Expectations
+In addition to the informal descriptions below, we've also written down a more formal list of expectations that come with each staff role. While this list is mostly for internal use, you can read it [here](/pages/server-info/staff-role-expectations/).
+
+### <span class="fas fa-circle" style="color:#f85950"></span> Owners
+**Description:** Owners of the server.
+
+### <span class="fas fa-circle" style="color:#ff784d"></span> Admins
+**Description:** Staff who administrate the server, its function, its staff, and are involved in deciding the direction of the server.
+
+### <span class="fas fa-circle" style="color:#1abc9c"></span> Domain Leads
+**Description:** Staff in charge of a certain domain such as moderation, events, and outreach. A lead will have a second role specifying their domain.
+
+### <span class="fas fa-circle" style="color:#8dc2ba"></span> Project Leads
+**Description:** Staff in charge of a certain project that require special attention, such as a YouTube video series or our new forms page.
+
+### <span class="fas fa-circle" style="color:#ff9f1b"></span> Moderators
+**Description:** Staff who moderate the server, enforce the rules, and coordinate with staff to support the server.
+
+### <span class="fas fa-circle" style="color:#a1d1ff"></span> PyDis Core Developers
+**Description:** A role for staff who are critical contributors to the server's core projects, like the [bot](https://github.com/python-discord/bot) and the [site](https://github.com/python-discord/site), and are in charge of managing the repositories.
+
+### <span class="fas fa-circle" style="color:#a1d1ff"></span> DevOps
+**Description:** A role for staff involved with the DevOps toolchain of our core projects.
+
+### <span class="fas fa-circle" style="color:#f8d188"></span> Project Teams
+**Description:** Staff can join teams which work on specific projects in the organisation, such as our code jams, media projects, and more.
+
+### <span class="fas fa-circle" style="color:#eecd36"></span> Helpers
+**Description:** This is the core staff role in our organization: All staff members have the Helpers role.
+
+In general, being a helper means that you provide substantial help for the server's function, and have a good understanding of the culture and rules of the server.
+
+Helpers assist in the help channels, demonstrate proficiency in the language, and have strong teaching and explanation skills.
+Otherwise they might assist in other areas of the organization, such as being a core developer, events team member, or moderator.
+
+Being a helper is also more than just quantity of messages, it's about quality. We watch and we pick these people out of the crowd, because we believe that they're a valuable asset to the community, and want our users to know that they're someone that can be relied on for answers and help.
+
+---
+
+# Code Jam Roles
+### <span class="fas fa-circle" style="color:#f87dc8"></span> Code Jam Champions
+**Description:** A vanity role for winners of past code jams.
+
+**How to get it:** Win a code jam!
+
+
+### <span class="fas fa-circle" style="color:#28866c"></span> Code Jam Leaders
+**Description:** A temporary role for the duration of a code jam given to team leaders.
+
+**How to get it:** Team leaders are picked from the participants by the Events Team, and assigned for the duration of a jam.
+
+
+### <span class="fas fa-circle" style="color:#229939"></span> Code Jam Participants
+**Description:** A temporary role for the duration of a code jam given to participants.
+
+**How to get it:** Qualify for and participate in a code jam.
+
+*Note: Similar roles may exist for a game jam.*
+
+
+---
+
+# Miscellaneous Roles
+
+### <span class="fas fa-circle" style="color:#9f3fee"></span> Partners
+**Description:** Representatives of communities we are partnered with. For a list of partnered communities, see the `#partners` channel.
+
+*Note: Not related to [Discord Partners](https://discordapp.com/partners), which our server is currently a part of.*
+
+### <span class="fas fa-circle" style="color:#c77cfa"></span> Python Community
+**Description:** Prominent people in the Python ecosystem.
+Typically this will be people who have written books, people who speak at PyCon, YouTube content creators, podcasters, or notable contributors to a Python runtime or a major Python module.
+These members will have a meta role attached to further explain why they have this role, for example `CPython: Core Developer`.
diff --git a/pydis_site/apps/content/resources/server-info/staff-role-expectations.md b/pydis_site/apps/content/resources/server-info/staff-role-expectations.md
new file mode 100644
index 00000000..e3e3cfdd
--- /dev/null
+++ b/pydis_site/apps/content/resources/server-info/staff-role-expectations.md
@@ -0,0 +1,67 @@
+---
+title: Staff Role Expectations
+description: List of expectations that come with being on the staff team at Python Discord.
+icon: fab fa-discord
+---
+
+This page has a list of expectations that come with having a certain staff role in our community.
+While the term "expectations" may sound a bit formal, it's important to keep in mind that everyone with a staff role is just a volunteer and that this list is a way of having a clear overview of what each role entails.
+
+This document is mostly meant for internal reference.
+If you want a more informal description of each staff role, take a look at our [roles page](/pages/server-info/roles/#staff-roles).
+
+## Expectations
+
+### <span class="fas fa-circle" style="color:#eecd36"></span> Helpers
+
+* In general, helpers participate in Python-related channels (e.g. Help Channels, Topical Channels) and help other members of our community.
+* Helpers may also help the community by taking up organizational tasks.
+* There are no real requirements for the level of activity a helper has to have, although we do expect their activity level to be more than "nothing".
+
+### <span class="fas fa-circle" style="color:#ff9f1b"></span> Moderators
+
+* Moderators moderate our community and participate in moderation discussions in our moderators channel.
+* While moderators don't need to have high levels of activity, we do expect some form of consistent activity.
+This means that consistently being active a few times a month is better than having one day with a lot of activity per year.
+Having some kind of consistent activity helps moderators bond with the rest of the moderation team and helps them to stay up to date with the moderation policy.
+* **Moderators are not required to fulfill the helper criteria in addition to this,** although it's is obviously appreciated if they do.
+
+### <span class="fas fa-circle" style="color:#ff784d"></span> Admins
+
+* Admins are expected to work on tasks that directly improve the community on a regular basis.
+* Examples of these tasks include:
+ * Doing pull request reviews;
+ * Being involved in events;
+ * Overseeing road map items;
+ * Solving critical issues;
+ * Handling raids;
+ * Joining our meetings (if in a compatible timezone);
+ * Actioning issues on the organisation repo;
+ * Improving our infrastructure;
+ * Writing documentation or guides;
+ * Recruiting and on-boarding new staff members;
+ * Calling staff votes for nominees;
+ * Having one-on-ones with moderators.
+* Admins are also expected to keep each other updated on the status of the tasks they are working on.
+
+### <span class="fas fa-circle" style="color:#f85950"></span> Owners
+
+**In addition to** the regular Admin criteria, Owners also have to:
+
+* Join staff/admin meetings as often as possible and lead those meetings.
+* Help identify the most critical tasks and try to distribute them among the Admins during the weekly Admin meeting.
+* Make sure that no one is "blocked" in performing their tasks.
+* Ensure that the community isn’t neglecting important responsibilities.
+* Manage partnerships, sponsorships and speak on behalf of the community in public settings.
+
+---
+
+## Staff Management
+First of all, it's important to appreciate that everything staff members do in this community is voluntary and the expectations listed above are not meant to change that.
+**This means it's absolutely fine for all staff members to take breaks or vacations from their activities in the community when they need to.**
+We will never hold it against someone if they are temporarily away from their responsibilities.
+
+At the same time, it's only natural for a community like ours that there's some amount of staff turnover as personal interests and circumstances change.
+Going forward, we will periodically review the activity of individual staff members and open a dialogue with staff members who are currently not meeting the expectations to see what can be done.
+It might happen that we come to conclusion that it's better for a staff member to step down from their current position.
+Do note that there are no hard feelings involved if that happens; we just want to make sure that the current staffing reflects the people who are still interested in volunteering in this community.