Discuss Scratch
- Discussion Forums
- » Advanced Topics
- » Parsing BBCode to HTML using Python
- 8to16
-
Scratcher
1000+ posts
Parsing BBCode to HTML using Python
WARNING: THIS POST INTENTIONALLY HAS EXCESSIVE USAGE OF BBCODE
I've been experimenting with a Python script to convert DjangoBB-flavoured BBCode posts on the forums to HTML. Isn't that crazy?
The results are suprisingly accurate (except that text in brackets should not show, but I tried and that was interfering with scratchblocks)!
Well, it doesn't support smileys for nowBut I'll get to that eventually!
How It Works
This parses the code by hacking your account itself. It maps BBCode used by Scratch's forums to HTML similar to what Scratch would output. This replicates many of the quirks DjangoBB has with parsing BBCode.
say [Look. It even works with Scratchblocks!]
It even supports quotes
and code...
print("But not syntax highlighted code. For now, at least...")
For anyone curious, here is the code to run this yourself:
import requests
import re
import traceback
import urllib.parse
from pygments.lexers import get_lexer_by_name
from pygments.formatters import HtmlFormatter
def bbcode_to_html(bbcode_text):
"""Converts BBCode text to HTML, correctly handling all cases."""
try:
def handle_quote_with_username(match):
username = match.group(1)
content = match.group(2)
return f"""<div class="quote">
<b>{username} wrote:</b><br>
{content}
</div>"""
def handle_quote_without_username(match):
content = match.group(1)
return f"""<div class="quote">
{content}
</div>"""
def handle_link(match, url_base, link_text_group=1, display_text_group=None): #display_text_group defaults to None
link_text = urllib.parse.quote_plus(match.group(link_text_group)) # Use quote_plus
display_text = match.group(display_text_group) if display_text_group is not None and len(match.groups()) >= display_text_group else match.group(link_text_group)
return f"<a href='{url_base}{link_text}' target='_blank' rel='noopener noreferrer'>{display_text}</a>"
def handle_img(match):
url = match.group(1) if match.group(1) else match.group(2)
return f"<img src='{url}' alt='Image'>"
def handle_code(match):
content = match.group(1)
return f"<pre class='code'>{content}</pre>"
def handle_scratchblocks(match):
return f"<pre class='blocks'>{match.group(1)}</pre>"
replacements = [
(r"\[code\](.*?)\[/code\]", handle_code),
(r"\[code(?:=.*?)?\](.*?)\[/code\]", handle_code),
(r"\[scratchblocks\](.*?)\[/scratchblocks\]", handle_scratchblocks),
(r"\[b\](.*?)\[/b\]", r"<b>\1</b>"),
(r"\[i\](.*?)\[/i\]", r"<em>\1</em>"),
(r"\[u\](.*?)\[/u\]", r"<u>\1</u>"),
(r"\[s\](.*?)\[/s\]", r"<s>\1</s>"),
(r"\[big\](.*?)\[/big\]", r"<span style='font-size: 1.2em;'>\1</span>"),
(r"\[color=(.*?)\](.*?)\[/color\]", r"<span style='color: \1;'>\2</span>"),
(r"\[url\](.*?)\[/url\]", r"<a href='\1' target='_blank' rel='noopener noreferrer'>\1</a>"),
(r"\[url=(.*?)\](.*?)\[/url\]", r"<a href='\1' target='_blank' rel='noopener noreferrer'>\2</a>"),
(r"\[quote=(.*?)\](.*?)\[/quote\]", handle_quote_with_username),
(r"\[quote\](.*?)\[/quote\]", handle_quote_without_username),
(r"\[small\](.*?)\[/small\]", r"<span style='font-size: 0.8em;'>\1</span>"),
(r"\[center\](.*?)\[/center\]", r"<center>\1</center>"),
(r"\[p\](.*?)\[/p\]", r"<p>\1</p>"),
(r"\[img\](.*?)\[/img\]", handle_img),
(r"\[img=(.*?)\]", handle_img),
(r"\[wiki(?:=|\s+)(.*?)\](.*?)\[/wiki\]", lambda m: handle_link(m, "https://en.scratch-wiki.info/wiki/Special:Search?search=", 1, 2 if m.group(2) else None)),
(r"\[wiki\](.*?)\[/wiki\]", lambda m: handle_link(m, "https://en.scratch-wiki.info/wiki/Special:Search?search=", 1)),
(r"\[wp(?:=|\s+)(.*?)\](.*?)\[/wp\]", lambda m: handle_link(m, "https://en.wikipedia.org/wiki/Special:Search?search=", 1, 2 if m.group(2) else None)),
(r"\[wp\](.*?)\[/wp\]", lambda m: handle_link(m, "https://en.wikipedia.org/wiki/Special:Search?search=", 1)),
(r"\[google(?:=|\s+)(.*?)\](.*?)\[/google\]", lambda m: handle_link(m, "https://www.google.com/search?hl=en&q=", 1, 2 if m.group(2) else None)),
(r"\[google\](.*?)\[/google\]", lambda m: handle_link(m, "https://www.google.com/search?hl=en&q=", 1)),
(r"\[(?:dict|dictionary)(?:=|\s+)(.*?)\](.*?)\[/(?:dict|dictionary)\]", lambda m: handle_link(m, "https://dictionary.com/browse/", 1, 2 if m.group(2) else None)),
(r"\[(?:dict|dictionary)\](.*?)\[/(?:dict|dictionary)\]", lambda m: handle_link(m, "https://dictionary.com/browse/", 1)),
]
html_text = bbcode_text
# 1. Replace newlines with <br /> globally FIRST
html_text = html_text.replace('\n', '<br />')
for pattern, replacement in replacements:
html_text = re.sub(pattern, replacement, html_text, flags=re.IGNORECASE | re.DOTALL)
return html_text
except Exception as e:
print(f"An error occurred during parsing: {e}")
traceback.print_exc()
return None
def fetch_and_parse_bbcode(url):
try:
response = requests.get(url)
response.raise_for_status() # Raise HTTPError for bad responses (4xx or 5xx)
bbcode_text = response.content.decode('utf-8')
html_content = bbcode_to_html(bbcode_text)
if html_content is None:
return None
full_html = f"""<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>BBCode Parser</title>
<style>
body {{
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
line-height: 1.2;
margin: 20px;
}}
pre.code {{
background-color: #f0f0f0;
padding: 10px 20px;
border: 1px solid #ccc;
font-family: monospace;
overflox-x: scroll;
line-height: 1;
}}
.quote {{
background-color: #f0f0f0;
padding: 10px 20px;
border: 1px solid #ccc;
}}
</style>
<script src="https://cdn.scratch.mit.edu/scratchr2/static/__774e7841eab6f875e16f7cec38b2f7c3__//djangobb_forum/scratchblocks/scratchblocks.min.js" defer></script>
<script>
document.addEventListener('DOMContentLoaded', (event) => {{
scratchblocks.renderMatching('pre.blocks', {{
style: 'scratch3',
languages: ['en'],
scale: 1,
}});
}});
</script>
</head>
<body>
{html_content}
</body>
</html>"""
return full_html
except requests.exceptions.RequestException as e:
print(f"Error fetching URL: {e}")
return None
except Exception as e:
print(f"An error occurred during parsing: {e}")
return None
# Example usage (now more general)
post_id = 3466932
post_id_input = input("Post ID (defaults to TOLORS): ")
if not post_id_input == "":
post_id = post_id_input
print(post_id)
bbcode_url = f'https://scratch.mit.edu/discuss/post/{post_id}/source/' # Example URL
output_filename = "parsed_bbcode.html"
html_content = fetch_and_parse_bbcode(bbcode_url)
if html_content:
with open(output_filename, "w", encoding="utf-8") as file:
file.write(html_content)
print(f"{output_filename} written")
else:
print("Failed to parse BBCode.")
Last edited by 8to16 (Jan. 20, 2025 21:24:46)
- 8to16
-
Scratcher
1000+ posts
Parsing BBCode to HTML using Python
testing:
bold
don't blame me
i can't make this script load my own local bbcode
bold
don't blame me
i can't make this script load my own local bbcode
- 8to16
-
Scratcher
1000+ posts
Parsing BBCode to HTML using Python
This posts uses the p tag.
The p tag wraps BBCode in paragraphs..
- davidtheplatform
-
Scratcher
500+ posts
Parsing BBCode to HTML using Python
I believe the forums use a modified version of postmarkup for bbcode rendering, it may be helpful for you
- 8to16
-
Scratcher
1000+ posts
Parsing BBCode to HTML using Python
TOLORS
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>BBCode Parser</title>
<style>
body {
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
line-height: 1.2;
margin: 20px;
}
pre.code {
background-color: #f0f0f0;
padding: 10px 20px;
border: 1px solid #ccc;
font-family: monospace;
overflox-x: scroll;
line-height: 1;
}
.quote {
background-color: #f0f0f0;
padding: 10px 20px;
border: 1px solid #ccc;
}
</style>
<script src="https://cdn.scratch.mit.edu/scratchr2/static/__774e7841eab6f875e16f7cec38b2f7c3__//djangobb_forum/scratchblocks/scratchblocks.min.js" defer></script>
<script>
document.addEventListener('DOMContentLoaded', (event) => {
scratchblocks.renderMatching('pre.blocks', {
style: 'scratch3',
languages: ['en'],
scale: 1,
});
});
</script>
</head>
<body>
<span style='font-size: 1.2em;'><b>GENERAL INFORMATION</b></span>
<br />
<br /><b><span style='color: red;'>WELCOME TO THE LIST OF REJECTED SUGGESTIONS!</span>
<br />This topic contains suggestions that have previously been rejected by the Scratch Team. As a result, these suggestions will not be added to Scratch, so please do not make any posts in the "Suggestions" forum asking for one of these. Otherwise, you may be directed to this topic.
<br />
<br />Moreover, please do not make any posts in the "Suggestions" forum asking that the Scratch Team "rethink" a rejected suggestion unless you are giving a solution to the problem that caused the feature to be rejected.
<br />
<br /><span style='color: red;'>PLEASE DO NOT SUGGEST THINGS HERE!</span>
<br />I am not a member of the Scratch Team; your suggestion will get more attention if you make your own topic about it. Also, please do not spam or create off-topic posts, or else they may be deleted.
<br />
<br /><span style='color: red;'>USE THE REPORT BUTTON ON SPAM/OFF-TOPIC POSTS; DON'T RESPOND!</span>
<br />Responding to spam or off-topic posts just leads to more off-topic discussion. Simply use the Report button whenever you see an off-topic post on this thread, without responding; a moderator will remove it when they get the chance.</b>
<br />
<br /><em>Every suggestion listed here has been officially rejected by the Scratch Team.</em> Descriptions for each rejected suggestion have been written by myself, and in addition, I have included a link to a post by a Scratch Team member officially rejecting the suggestion. If you have any questions on whether or not your suggestion is rejected, or if you do not understand why something was rejected, feel free to ask about it here.
<br />
<br />If you see someone in the forums or elsewhere on the website trying to suggest something that is rejected below, feel free to refer them to this thread. It would be a good idea to include a quote from this list explaining why their suggestion is rejected.
<br />
<br />Please let me know if any information is incorrect, missing, or outdated! Please also update me on any recently-rejected suggestions so we can discuss whether or not to add them to this list. Even if a suggestion is infrequently suggested or it is "obviously rejected," it's still helpful for me to see that the suggestion exists. I will do my best to regularly update and revise the list as needed. In addition, feel free to tell me if there are any spelling mistakes or formatting errors. Other general feedback is appreciated as well. :)
<br />
<br /><a href='https://scratch.mit.edu/discuss/post/3471785/' target='_blank' rel='noopener noreferrer'>Click here</a> for a table of contents with shorter explanations on why suggestions are rejected.
<br />
<br /><b>Previous Lists</b>
<br /><a href='https://scratcharchive.asun.co/forums/viewtopic.php?id=20075' target='_blank' rel='noopener noreferrer'>July 2009 – May 2013</a> (by @Chrischb)
<br /><a href='https://scratch.mit.edu/discuss/topic/4789/' target='_blank' rel='noopener noreferrer'>May 2013 – February 2017</a> (by @jvvg)
<br /><a href='https://scratch.mit.edu/discuss/topic/239492/' target='_blank' rel='noopener noreferrer'>February 2017 – August 2018</a> (by @customhacker)
<br /><a href='https://scratch.mit.edu/discuss/topic/310111/' target='_blank' rel='noopener noreferrer'>August 2018 – March 2019</a> (by @LionHeart70)
<br />
<br /><b>Translated Lists</b>
<br /><a href='https://scratch.mit.edu/discuss/post/6031411/' target='_blank' rel='noopener noreferrer'>日本語</a> (Japanese, by @inoking)
<br /><a href='https://scratch.mit.edu/discuss/topic/413104/' target='_blank' rel='noopener noreferrer'>Français</a> (French, by @IA-maker)
<br /><a href='https://scratch.mit.edu/discuss/topic/792451/' target='_blank' rel='noopener noreferrer'>Português</a> (Portuguese, by @Super-Cat-Poderoso21)
<br /><a href='https://scratch.mit.edu/discuss/topic/509049/' target='_blank' rel='noopener noreferrer'>Română</a> (Romanian, by @LankyBox01)
<br />
<br />====================
<br />
<br /><span style='font-size: 1.2em;'><b>THE REJECTED SUGGESTIONS</b></span>
<br />
<br /><span style='font-size: 1.2em;'><b><u>1. Scratch Blocks</u></b></span>
<br />
<br /><b>1.1 <a href='https://scratch.mit.edu/discuss/post/634620/' target='_blank' rel='noopener noreferrer'>"Broadcast received" boolean block</a></b>
<br />This in theory would allow a project to detect when a broadcast is sent, but there is ambiguity on how this would work. Would it return true if the broadcast was run at any point after the green flag was clicked, or only on the instant the broadcast was run, or something else? The workaround is simple: use variables that change when a broadcast is received, then use the "equals" block.
<br />
<br />However, the blocks "repeat until broadcast received" and "wait until broadcast received" are NOT rejected. You can discuss them on <a href='https://scratch.mit.edu/discuss/topic/324844/' target='_blank' rel='noopener noreferrer'>this topic</a>.
<br />
<br /><pre class='blocks'>
<br /><[message v] received? :: events>
<br /></pre>
<br />
<br /><b>1.2 <a href='https://scratch.mit.edu/discuss/post/2070854/' target='_blank' rel='noopener noreferrer'>"When stop sign clicked" hat block</a></b>
<br />This block would allow users to click the stop sign to run a script. However, the stop sign is designed to stop all the scripts in the project. With this block in place, more scripts will start when you want the project to stop, thus defeating the purpose of the stop sign. Regardless, there are workarounds for this block using the timer or ghost effect blocks; these can be found in <a href='https://scratch.mit.edu/discuss/post/3547555/' target='_blank' rel='noopener noreferrer'>this post</a> or <a href='https://scratch.mit.edu/discuss/post/8005188/' target='_blank' rel='noopener noreferrer'>this post</a>.
<br />
<br />This suggestion extends to any block that causes a script to be run as a result of the stop sign being clicked, not just the specific hat block below. For more information, see <a href='https://scratch.mit.edu/discuss/post/6871820/' target='_blank' rel='noopener noreferrer'>this post</a>.
<br />
<br /><pre class='blocks'>
<br />when @stopSign clicked :: events :: hat
<br /></pre>
<br />
<br /><b>1.3 <a href='https://scratch.mit.edu/discuss/post/3603084/' target='_blank' rel='noopener noreferrer'>"Pointing towards sprite" boolean block</a></b>
<br />This in theory would allow a sprite to detect if it is pointing towards another sprite, but there is ambiguity on how this would work. Would it return true if the sprite is pointing in any general direction towards another sprite, or strictly at the center of that sprite? This depends on your intended function of the block, at which point you may consider implementing your own workaround.
<br />
<br />However, a block that removes this ambiguity by describing where specifically the sprite is pointing is NOT rejected. You can discuss that on <a href='https://scratch.mit.edu/discuss/topic/753149/' target='_blank' rel='noopener noreferrer'>this topic</a>.
<br />
<br /><pre class='blocks'>
<br /><pointing towards (sprite v)? :: sensing>
<br /></pre>
<br />
<br /><b>1.4 <a href='https://scratch.mit.edu/discuss/post/3669210/' target='_blank' rel='noopener noreferrer'>Social action reporter blocks</a></b>
<br />This block could be used, for example, to obtain the current number of loves of the project. However, project creators can easily use these blocks to prevent Scratchers from playing unless the project is given enough loves. If a user presses the love button on a project, it should be because they enjoyed the project, not because they are trying to reach some sort of goal. Social actions are not intended to be a way to interact with a Scratch project.
<br />
<br />This suggestion extends to all social actions, including views, loves, favorites, remixes, comments, and followers. It also extends to boolean blocks which involve social actions.
<br />
<br /><pre class='blocks'>
<br />(number of [loves v] :: sensing)
<br /></pre>
<br />
<br /><b>1.5 <a href='https://scratch.mit.edu/discuss/post/3528653/' target='_blank' rel='noopener noreferrer'>Cloud lists</a></b>
<br />This block would allow you to create lists available for everyone to see, similar to cloud variables. However, cloud lists would require similar restrictions as cloud variables, and the issues currently present with cloud variables would only grow with the addition of cloud lists. You can still use cloud variables to create a list which contains entries everyone can see.
<br />
<br /><pre class='blocks'>
<br />(☁ list :: list)
<br /></pre>
<br />
<br /><b>1.6 <a href='https://scratch.mit.edu/discuss/post/3684338/' target='_blank' rel='noopener noreferrer'>2D lists</a></b>
<br />2D lists, also known as 2D arrays, nested lists, or matrices, are a type of data structure that allows you to put an entire list as an element of another list; that is, it allows you to put lists inside of lists. These sorts of data structures are used widely in other programming languages and functions similarly to a table.
<br />
<br />This block, and others, would allow you to create 2D lists to store information. However, this is too complicated for what is supposed to be an introductory programming language. There are workarounds possible by using an ordinary list and an indexing function. For those who are interested, it may be worth checking out <a href='https://snap.berkeley.edu/' target='_blank' rel='noopener noreferrer'>Snap!</a>. It is a block-based programming language designed for experienced programmers and has more advanced data structures than Scratch does.
<br />
<br /><pre class='blocks'>
<br />add [] to sublist () of [list v] :: list
<br /></pre>
<br />
<br /><b>1.7 <a href='https://scratch.mit.edu/discuss/post/272115/' target='_blank' rel='noopener noreferrer'>3D Scratch</a></b>
<br />A 3D Scratch interface, involving a z-axis in the project stage, could make it easier to create 3D projects. However, Scratch is a language that is designed to be as easy as possible for beginners to learn. The purpose of Scratch is to teach beginners basic programming concepts, which is best accomplished with a 2D interface. Adding a 3D interface could make Scratch more difficult to learn and teach. This includes having a separate website for 3D Scratch. This suggestion also includes the possibility for virtual-reality "Scratch VR" features, where a lot of the same difficulties come up; for more information, see <a href='https://scratch.mit.edu/discuss/post/4149704/' target='_blank' rel='noopener noreferrer'>this post</a>.
<br />
<br />For those who are interested, it may be worth checking out Snap's <a href='http://beetleblocks.com/' target='_blank' rel='noopener noreferrer'>3D Beetle extension</a> or <a href='https://creaticode.com/' target='_blank' rel='noopener noreferrer'>CreatiCode</a>. They are block-based programming languages similar to the Scratch editor, but with 3D features. There is another similar program to Scratch that contains block programming with 3D features, called <a href='https://education.mit.edu/project/starlogo-tng/' target='_blank' rel='noopener noreferrer'>Starlogo TNG</a>.
<br />
<br /><b>1.8 <a href='https://scratch.mit.edu/discuss/post/4186455/' target='_blank' rel='noopener noreferrer'>Blocks that control the mouse pointer</a></b>
<br />This block, and others, could be used to hide the mouse pointer, change the way that it looks, freeze it, or prevent it from leaving the project screen. These blocks, however, do not significantly change the types of projects that can be created with Scratch; for more information, see <a href='https://scratch.mit.edu/discuss/post/3889314/' target='_blank' rel='noopener noreferrer'>this post</a>. In addition, they may confuse users by having them wonder where the mouse pointer went.
<br />
<br />However, changing the look of the mouse pointer to one of the default mouse pointers is NOT rejected. You can discuss that on <a href='https://scratch.mit.edu/discuss/topic/512009/' target='_blank' rel='noopener noreferrer'>this topic</a>.
<br />
<br /><pre class='blocks'>
<br />hide mouse pointer :: looks
<br /></pre>
<br />
<br /><b>1.9 <a href='https://scratch.mit.edu/discuss/post/4034761/' target='_blank' rel='noopener noreferrer'>"Forever if" C block</a></b>
<br />This block was in the Scratch 1.4 editor, and worked the same as putting an "if" block inside a "forever" loop. It was removed in Scratch 2.0 because many beginners found it to be confusing. The aforementioned workaround is evidently simple and more intuitive.
<br />
<br /><pre class='blocks'>
<br />forever if <> {
<br />
<br />} @loopArrow :: control cap
<br /></pre>
<br />
<br /><b>1.10 <a href='https://scratch.mit.edu/discuss/post/3899362/' target='_blank' rel='noopener noreferrer'>Permanent option for cat blocks</a></b>
<br />The <a href='https://en.scratch-wiki.info/wiki/Cat_Block' target='_blank' rel='noopener noreferrer'>cat blocks</a> were created by the Scratch Team as a part of April Fools' Day, where some Scratch blocks like the one below had cat ears and a face on them. Many Scratchers adored the cat blocks and have suggested that the Scratch Team permanently keep them in the editor, or otherwise make a permanent toggle so users can turn them on or off. However, the cat blocks were intended to be temporary, and the Scratch Team has stated that they do not plan to bring them back as a permanent option. However, it is possible that they may temporarily come back during future April Fools' Day events.
<br />
<br /><pre class='blocks'>
<br />when green flag clicked :: cat
<br /></pre>
<br />
<br /><b>1.11 <a href='https://scratch.mit.edu/discuss/post/4903222/' target='_blank' rel='noopener noreferrer'>Comment block</a></b>
<br />In principle, the comment block has no effect, but it would be used to write comments in-line with other blocks in a script. This would be useful for those who want to explain how their code works, for example. This block was found to be too confusing for beginners, who expected all blocks to do something (the comment block does not do anything). As a result, the Scratch Team created the existing comment system, where comments can be attached to a block in a way that is clearly separate from the rest of the blocks in the script. There is an easy workaround: create a custom block with a text input, and don't put anything in its definition.
<br />
<br /><pre class='blocks'>
<br />comment [] :: #aeaeae
<br /></pre>
<br />
<br /><b>1.12 <a href='https://scratch.mit.edu/discuss/post/4336855/' target='_blank' rel='noopener noreferrer'>"Jump to code" block</a></b>
<br />This block could be used to allow a program to jump to another point in the code, even within the same script, similar to the "goto" statement used in other programming languages. This could cause confusion, however; by implementing less <a href='https://en.wikipedia.org/wiki/Structured_programming' target='_blank' rel='noopener noreferrer'>structured programming</a>, this could cause code to be confusing to read and write.
<br />
<br /><pre class='blocks'>
<br />jump to [code v] :: control
<br /></pre>
<br />
<br /><span style='font-size: 1.2em;'><b><u>2. The Coding Interface</u></b></span>
<br />
<br /><b>2.1 <a href='https://scratch.mit.edu/discuss/post/1958869/' target='_blank' rel='noopener noreferrer'>Adding users to work on projects</a></b>
<br />Having multiple Scratchers work on the same project would be difficult to moderate not only due to technological limitations but also because it could lead to private messaging; for more information, see #7.1 on this list. This suggestion includes live editing (similar to Google Docs) and other forms of private collaboration. If you would like to work on a project with another Scratcher, you can remix each others' projects.
<br />
<br />At the moment, a turn-based collaboration system for shared projects is NOT rejected. You can discuss it on <a href='https://scratch.mit.edu/discuss/topic/322107/' target='_blank' rel='noopener noreferrer'>this topic</a>.
<br />
<br /><b>2.2 <a href='https://scratch.mit.edu/discuss/post/3471767/' target='_blank' rel='noopener noreferrer'>Text-based syntax in Scratch</a></b>
<br />Some users wish to code Scratch not with the blocks, but with typing code instead (similar to how more advanced programming languages work). Others are interested in an option to view, convert, or download Scratch code to other programming languages. However, the Scratch Team has discussed this possibility multiple times and has decided every time that it would not be beneficial for beginners or teachers.
<br />
<br />This suggestion extends to coding, viewing, converting, or downloading Scratch in <em>any</em> text-based language, including BBCode, Javascript, some form of pseudocode, or some other programming language. If you wish to code using another language, then you can learn it on your own, but it would have to be done outside of Scratch. For those who are interested, it may be worth checking out <a href='https://tosh.blob.codes/' target='_blank' rel='noopener noreferrer'>Tosh</a>. It is a text-based programming language that serves as a text editor for Scratch projects. Another option is <a href='https://arcade.makecode.com/' target='_blank' rel='noopener noreferrer'>MakeCode Arcade</a>, a programming language that can convert between block-based and text-based programming within the editor.
<br />
<br /><b>2.3 <a href='https://scratch.mit.edu/discuss/post/3409849/' target='_blank' rel='noopener noreferrer'>Set the editor to look like older versions of Scratch</a></b>
<br />Some users prefer the look and feel of the older Scratch editors, and have suggested an option to make the editor look like an older version of Scratch (such as Scratch 1.4 or 2.0), but still run off of HTML5 like Scratch 3.0 does. However, this would be more complicated for educational and documentation purposes. It could be confusing if someone is trying to learn Scratch from someone who is using a completely different layout of the editor than them. In addition, the Scratch Team changed the design for a reason: to make it easier, more intuitive, and friendlier for newcomers to use.
<br />
<br /><b>2.4 <a href='https://scratch.mit.edu/discuss/post/3429453/' target='_blank' rel='noopener noreferrer'>Revert back to older versions of the Scratch editor</a></b>
<br />The Scratch editor has to update sometimes to accommodate certain changes. In particular, an online editor that ran off of Adobe Flash (rather than Squeak) was added in the Scratch 2.0 editor, and the Scratch 3.0 editor was created for tablet support. Changing the editor back to an older version would not only undo years of hard work by the Scratch Team, but they also might not work online anymore due to changing technologies.
<br />
<br />The Scratch Team is still working on bug fixes, new features, and other improvements on the Scratch 3.0 editor. The new interface was created in such a way that it is easy for the Scratch Team to keep working on improvements. The Scratch Team will continue to evaluate constructive feedback on how they could improve upon the current Scratch editor.
<br />
<br /><b>2.5 <a href='https://scratch.mit.edu/discuss/post/3303002/' target='_blank' rel='noopener noreferrer'>Official Scratch to EXE converter</a></b>
<br />On Scratch, an important goal is to have anyone be able to look at the code for any project. This philosophy is not only important for learning code and remixing, but is also important for moderation purposes; for more information, see #3.2 and #4.1 on this list. Converting to EXE (or any other black box executables) will prevent users from looking at the code, and hence goes against this philosophy. Third-party converters do exist, and you are allowed to use those, but the Scratch Team will not make an official converter.
<br />
<br /><b>2.6 <a href='https://scratch.mit.edu/discuss/post/375856/' target='_blank' rel='noopener noreferrer'>Increase the 300 clone limit</a></b>
<br />The clone limit is set in place to prevent projects from becoming unplayable. Otherwise, users could create a large number of clones very quickly and crash someone's browser page. Plus, the Scratch Team wants to make sure that all projects run smoothly for as many people as possible. Increasing the limit to even 500 clones might make the project run slowly on some users' devices.
<br />
<br /><b>2.7 <a href='https://scratch.mit.edu/discuss/post/3983340/' target='_blank' rel='noopener noreferrer'>Scratch editor for video game consoles</a></b>
<br />The Scratch Team does not have the resources to put a Scratch editor onto a video game console. This includes making a Scratch editor for Nintendo, Xbox, and Playstation consoles.
<br />
<br />However, the ability to connect gaming controllers to a computer or tablet to use for Scratch is NOT rejected. For example, see <a href='https://scratch.mit.edu/discuss/topic/280263/' target='_blank' rel='noopener noreferrer'>this topic</a>, but note that the Scratch Team received all the feedback that they need here for the time being.
<br />
<br /><b>2.8 <a href='https://scratch.mit.edu/discuss/post/7749389/' target='_blank' rel='noopener noreferrer'>Default list in a new Scratch project</a></b>
<br />When you make a new Scratch project, a variable called "my variable" is automatically created. Some Scratchers have suggested that a list should automatically be created, for example called "my list". However, lists tend to be more complicated for newer users, and hence not used as much.
<br />
<br /><b>2.9 <a href='https://scratch.mit.edu/discuss/post/4094599/' target='_blank' rel='noopener noreferrer'>Letters in cloud variables</a></b>
<br />Some users would like an easy way to set cloud variables to values which include letters. However, allowing letters in cloud variables would cause a lot of moderation issues. For example, it would be too easy to make inappropriate cloud chat projects; for more information, see #3.1 on this list.
<br />
<br />It is possible to simulate letters in cloud variables by encoding and decoding between numbers in cloud variables and letters in normal variables.
<br />
<br /><b>2.10 <a href='https://scratch.mit.edu/discuss/post/8078494/' target='_blank' rel='noopener noreferrer'>AI image generation in Scratch</a></b>
<br />The Scratch Team has experimented with AI image generation for Scratch in the past. There are benefits for enhancing creativity, including making it easier for Scratchers to make the costumes they want for their projects, as well as inspiring Scratchers to make new stories based on the images they generate. However, there are also many downsides, including ethical concerns arising from AI images using copyrighted material, biases present in AI which reinforce harmful stereotypes, the ease of creating inappropriate content, and the difficulty of accessing AI. For these reasons, the Scratch Team has stated that they will not be adding AI image generation to Scratch anytime soon. For more information, see <a href='https://medium.com/scratchteam-blog/inside-scratch-lab-ai-image-generation-179f11bd921a' target='_blank' rel='noopener noreferrer'>this article</a>.
<br />
<br />However, the use of AI as a virtual assistant is NOT rejected. You can discuss it on <a href='https://scratch.mit.edu/discuss/topic/740793/' target='_blank' rel='noopener noreferrer'>this topic</a>. In general, AI in Scratch is not entirely rejected; it depends on the specific use of the AI.
<br />
<br /><span style='font-size: 1.2em;'><b><u>3. Scratch Projects</u></b></span>
<br />
<br /><b>3.1 <a href='https://scratch.mit.edu/discuss/post/3622655/' target='_blank' rel='noopener noreferrer'>Chat projects with cloud variables</a></b>
<br />Although it is possible to make a chat project using cloud variables, it is not allowed to make such a project. This is because there is a high potential for bullying and inappropriate messages, and the Scratch Team does not have the resources to moderate these chat rooms. This includes adding a block that filters out inappropriate language, as such a block would only be useful for cloud chat projects, which are not allowed. For more information, see <a href='https://scratch.mit.edu/discuss/post/8131219/' target='_blank' rel='noopener noreferrer'>this post</a>.
<br />
<br />Chat projects on Scratch which contained a whitelist (that is, the user could only chat using certain words) used to be allowed on Scratch. Over time, however, the moderation issues got too high, and some users attempted to use such projects to get around the <a href='https://scratch.mit.edu/community_guidelines/' target='_blank' rel='noopener noreferrer'>Community Guidelines</a>. As a result, the Scratch Team has decided that these kinds of projects are not allowed on the Scratch website, even if they contain a whitelist of words. However, <em>whitelisted phrases</em> are okay, provided that users cannot freely write their own sentences using the cloud chat project.
<br />
<br /><b>3.2 <a href='https://scratch.mit.edu/discuss/post/1222338/' target='_blank' rel='noopener noreferrer'>Disable remixing</a> or <a href='https://scratch.mit.edu/discuss/post/1034040/' target='_blank' rel='noopener noreferrer'>censor minor remixes</a></b>
<br />One of the most important ideas of Scratch is the <em>share</em> aspect. Scratch is a website not only for displaying your work, but also for <em>sharing</em> it with others, and by posting your project on the Scratch website you agree to allow others to remix your work. You are not allowed to write "Do not remix this project" in the Notes and Credits of your project; you may get alerted for this, because it discourages remixing. This suggestion extends to the ability to require permission to remix a project, as you have already given permission to others to use your creations by sharing a project on Scratch; for more information, see <a href='https://scratch.mit.edu/discuss/post/5302901/' target='_blank' rel='noopener noreferrer'>this post</a>.
<br />
<br />A remix of a project is allowed on Scratch, even if the remix only contains minor changes (this includes recolors). However, when you remix a project, you should put in the Notes and Credits what you changed. If you see a project that contains no noticeable changes, please use the Report button on it so the Scratch Team can take a look at it. This suggestion extends to "extremely minor remixes," such as a remix of a game that gives you 2 points per second instead of 1. As long as the user explains what they changed about the project and gives proper credit, this is okay.
<br />
<br />However, a feature that prevents unchanged remixes from being shared is NOT rejected. You can discuss it on <a href='https://scratch.mit.edu/discuss/topic/39464/' target='_blank' rel='noopener noreferrer'>this topic</a>.
<br />
<br /><b>3.3 <a href='https://scratch.mit.edu/discuss/post/3187896/' target='_blank' rel='noopener noreferrer'>Ban certain franchises</a></b>
<br />Generally, the Scratch Team does not censor projects based on a certain franchise unless a large number of inappropriate projects were made with the franchise. An example is Five Nights at Freddy's; see <a href='https://scratch.mit.edu/discuss/topic/168506/' target='_blank' rel='noopener noreferrer'>this announcement</a> for more information. In general, it is usually possible to make appropriate projects based on a certain franchise. Of course, you should always report inappropriate projects of any kind.
<br />
<br /><b>3.4 <a href='https://scratch.mit.edu/discuss/post/4541993/' target='_blank' rel='noopener noreferrer'>Censor projects with no coding</a></b>
<br />Scratch encourages creativity of many kinds, not just programming. As a result, many kinds of projects are allowed, such as algorithms, games, art, animations, music, and others. Some of these projects do not necessarily need any scripts in them, and the Scratch Team will not require that they do.
<br />
<br /><b>3.5 <a href='https://scratch.mit.edu/discuss/post/4600199/' target='_blank' rel='noopener noreferrer'>Remove the automatic project censoring system</a></b>
<br />The automatic project censoring system, with the accompanying temporary account block, is extremely useful to ensure that the community stays safe. Without this system, users who make inappropriate projects could keep making them without immediate consequence if a moderator is not online at the time. That would just expose more people to inappropriate content. While the Scratch Team is open to making improvements to this system, neither removing the automatic project censor nor removing the automatic temporary account block are the solutions.
<br />
<br /><b>3.6 <a href='https://scratch.mit.edu/discuss/post/6735765/' target='_blank' rel='noopener noreferrer'>Ability to see Scratchers' unshared projects</a></b>
<br />If a Scratch project is unshared, then it is not intended to be seen by anybody other than the project creator and the Scratch Team. Allowing anybody to view unshared projects made by other Scratchers has the potential for abuse: Scratch projects could be leaked before they are ready to be shared, personal information could be exchanged, or someone could encounter inappropriate content that was intended to be removed from the Scratch website. Keeping unshared projects hidden from other Scratchers helps prevent this abuse from happening.
<br />
<br />While the Scratch Team is open to implementing features to make collaboration easier, allowing Scratchers to view others' unshared projects is not the solution. For more information, see <a href='https://scratch.mit.edu/discuss/post/6358631/' target='_blank' rel='noopener noreferrer'>this post</a>.
<br />
<br /><span style='font-size: 1.2em;'><b><u>4. Project Pages</u></b></span>
<br />
<br /><b>4.1 <a href='https://scratch.mit.edu/discuss/post/2038330/' target='_blank' rel='noopener noreferrer'>Disable “See Inside”</a> or <a href='https://scratch.mit.edu/discuss/post/1071234/' target='_blank' rel='noopener noreferrer'>restrict sharing</a></b>
<br />Some users want an option to prevent Scratchers from looking inside their project and using their artwork, scripts, or sounds. However, the core ideas of Scratch are "Imagine, Program, <em>Share</em>." By sharing a project on the Scratch website, you are allowing others to see the code and potentially remix or reuse the data inside, as long as they give credit. That being said, please use the Report button on any project that uses content from another Scratcher without giving credit to them. If you do not want other users to see inside your project, then do not share your project on the Scratch website.
<br />
<br />Restricting sharing so that only certain users can view the project is also not going to be implemented. It is important for projects to be publicly shared for everyone to see so people can report them if they are inappropriate. Only allowing certain users to view projects could increase the chances of inappropriate projects being shared on the website. "Unlisted projects," similar to a YouTube feature, will also not be implemented for the same reason; for more information, see <a href='https://scratch.mit.edu/discuss/post/3742815/' target='_blank' rel='noopener noreferrer'>this post</a>. It could also be used for private messaging; for more information, see #7.1 on this list.
<br />
<br /><b>4.2 <a href='https://scratch.mit.edu/discuss/post/1958521/' target='_blank' rel='noopener noreferrer'>Dislike button</a> or <a href='https://scratch.mit.edu/discuss/post/2749716/' target='_blank' rel='noopener noreferrer'>a project rating system</a></b>
<br />Generally, a user's first project is something rather simple, such as a test project, a remix, or a project made using a tutorial. Because this project is simple, other users may give the project low ratings since it is not advanced. With low enough ratings, the creator might be discouraged enough to stop using Scratch. Moreover, constructive feedback is encouraged on Scratch. A dislike button may show the creator how many people disliked their project, but it tells nothing about what the creator could do better. If you do not like a project, you could choose not to love it, or you could leave a <em>respectful and constructive</em> comment telling the user how to improve, in addition to saying what you like about the project.
<br />
<br />With that, a dislike button is rejected for anything, including projects and comments. This also includes a decoy dislike button that does not raise any number in a "dislike counter"; for more information, see <a href='https://scratch.mit.edu/discuss/post/4482219/' target='_blank' rel='noopener noreferrer'>this post</a>. However, a like button for comments is NOT rejected. You can discuss it on <a href='https://scratch.mit.edu/discuss/topic/43677/' target='_blank' rel='noopener noreferrer'>this topic</a>.
<br />
<br /><b>4.3 <a href='https://scratch.mit.edu/discuss/post/3268569/' target='_blank' rel='noopener noreferrer'>Ability to see who viewed a project</a></b>
<br />Views are different from loves and favorites in that users can view a project to see if they like it, and then love or favorite the project if they do like it. With this suggestion, drama could be started if a user sees that another user viewed a project, but did not love or favorite it. Moreover, projects generally get significantly more views than loves, favorites, or comments, so if users got notifications for this, it would lead to lots of unwanted messages. Despite all this, there is a workaround for this which uses cloud variables, so one could potentially see who viewed a project. This includes the ability to see who viewed a comment, profile, studio, or forum post.
<br />
<br /><b>4.4 <a href='https://scratch.mit.edu/discuss/post/6643659/' target='_blank' rel='noopener noreferrer'>Ability to see who reported a project</a></b>
<br />Reports are intended to be anonymous. With this suggestion, drama could be started if a user sees that another user reported their project. Some may even retaliate by reporting their projects in return (whether or not the projects deserved to be reported). This includes the ability to see who reported a comment, profile, studio, or forum post.
<br />
<br /><span style='font-size: 1.2em;'><b><u>5. Studio Pages</u></b></span>
<br />
<br /><b>5.1 <a href='https://scratch.mit.edu/discuss/post/2621530/' target='_blank' rel='noopener noreferrer'>Remove studio activity messages</a></b>
<br />Although they may seem annoying at times, they are rather helpful for some users. Removing such messages entirely does not have a clear benefit for everyone. If you find it annoying, one easy way to solve this is to not curate so many studios.
<br />
<br />However, the option to turn them off is NOT rejected. You can discuss it on <a href='https://scratch.mit.edu/discuss/topic/76356/' target='_blank' rel='noopener noreferrer'>this topic</a>.
<br />
<br /><b>5.2 <a href='https://scratch.mit.edu/discuss/post/3190328/' target='_blank' rel='noopener noreferrer'>"Invite all followers" button for studios</a></b>
<br />This feature existed in Scratch 2.0, but it was an extremely easy way for one user to create lots of notification spam for other users, most of which was unwanted. By removing this feature, users are forced to work a little bit to invite a large number of users.
<br />
<br /><b>5.3 <a href='https://scratch.mit.edu/discuss/post/67636/' target='_blank' rel='noopener noreferrer'>Remove "add everything" or "invite everyone" studios</a></b>
<br />These studios are not against the Community Guidelines and are also rather harmless. Certain friendships or collaborations could also be formed as a result of such studios.
<br />
<br /><b>5.4 <a href='https://scratch.mit.edu/discuss/post/5416219/' target='_blank' rel='noopener noreferrer'>Revert back to older versions of the studio pages</a></b>
<br />The Scratch website has to update sometimes to accommodate certain changes. In particular, the Scratch 3.0 studio pages were created to improve website performance and the studio experience. Changing the studio pages back to these older versions would not only undo months of hard work by the Scratch Team, but they also may not be sustainable in the long run anymore. More information on why these changes were made are stated in <a href='https://scratch.mit.edu/discuss/topic/526539/' target='_blank' rel='noopener noreferrer'>this topic</a>, and frequently asked questions are listed in <a href='https://scratch.mit.edu/discuss/topic/526541/' target='_blank' rel='noopener noreferrer'>this topic</a>.
<br />
<br />The Scratch Team is still working on bug fixes, new features, and other improvements on Scratch 3.0 studio pages. The new interface was created in such a way that it is easy for the Scratch Team to keep working on improvements. The Scratch Team will continue to evaluate constructive feedback on how they could improve upon the current studio pages. Common studio suggestions can be found on <a href='https://scratch.mit.edu/discuss/topic/527997/' target='_blank' rel='noopener noreferrer'>this topic</a>.
<br />
<br /><b>5.5 <a href='https://scratch.mit.edu/discuss/post/5452511/' target='_blank' rel='noopener noreferrer'>Increase the studio reply limit</a></b>
<br />The reply limit of 25 replies in studios was implemented to keep studio conversations open to the community and to improve website performance. Load times and server stresses tend to increase with larger reply limits, particularly due to the large number of Scratch users on the website. The number 25 was chosen as a practical one to mitigate these issues while also encouraging open conversation in studios.
<br />
<br /><b>5.6 <a href='https://scratch.mit.edu/discuss/post/7184283/' target='_blank' rel='noopener noreferrer'>Add multiple studio hosts</a></b>
<br />The restriction of only allowing one studio host in a studio was implemented to help prevent studio raids and confusion over who edited the studio description. By allowing multiple studio hosts in one studio, this introduces the same problems that the studio host role was intended to solve in the first place.
<br />
<br /><b>5.7 <a href='https://scratch.mit.edu/discuss/post/7967876/' target='_blank' rel='noopener noreferrer'>Prevent your projects from being added to studios</a></b>
<br />One of the key values of Scratch is the sharing aspect, and allowing others to add your projects to their studios is part of sharing. You do have the option to remove your projects from studios if you choose to do so. If the studio is being used in a disrespectful manner, you can use the Report button on it.
<br />
<br /><span style='font-size: 1.2em;'><b><u>6. Comments and Text Fields</u></b></span>
<br />
<br /><b>6.1 <a href='https://scratch.mit.edu/discuss/post/1939992/' target='_blank' rel='noopener noreferrer'>Delete or edit your comments everywhere</a></b>
<br />The inability to delete your comments everywhere is put in place so users do not post inappropriate comments or spam comments on other users' profiles, projects, or studios, just to delete them later on. In contrast, you are not really likely to spam your own projects or profile. The only benefits to this are to remove comments that you did not mean to post and to fix spelling errors. The former could be solved by thinking carefully before posting any comments, and the latter could be worked around by typing slowly and/or stating your mistakes in a reply to the comment. This also applies to forum posts; that is, a feature for Scratchers to delete their own forum posts will not be implemented.
<br />
<br />Editing comments could similarly lead to comment manipulation, such as a user commenting "I like this project," waiting until someone replies with "I agree," and then editing the original comment to say "I hate this project." Allowing Scratch Team members to view the edit history of a comment does not make it easy to moderate, since then they have to look carefully at the context of each edit, which takes time.
<br />
<br /><b>6.2 <a href='https://scratch.mit.edu/discuss/post/3577897/' target='_blank' rel='noopener noreferrer'>Remove character limits on text fields</a></b>
<br />The character limit exists to prevent spam. If any character limits were removed entirely, spammers could use this to paste large blocks of text, effectively slowing down the website.
<br />
<br />Simply raising the limits, however, is NOT rejected. You can discuss various character limits on the following topics: <a href='https://scratch.mit.edu/discuss/topic/16406/' target='_blank' rel='noopener noreferrer'>About Me and What I'm Working On</a> or <a href='https://scratch.mit.edu/discuss/topic/118446/' target='_blank' rel='noopener noreferrer'>studio descriptions</a>.
<br />
<br /><b>6.3 <a href='https://scratch.mit.edu/discuss/post/4221/' target='_blank' rel='noopener noreferrer'>Notification for being mentioned in comments</a></b>
<br />Some users would like to be notified whenever someone mentions their username in a comment on the website. Although such an option was considered, it was not added due to the potential for spam. For instance, someone could write @Scratcher multiple times to spam that user's notifications.
<br />
<br /><b>6.4 <a href='https://scratch.mit.edu/discuss/post/4264317/' target='_blank' rel='noopener noreferrer'>Live commenting</a> or <a href='https://scratch.mit.edu/discuss/post/4445027/' target='_blank' rel='noopener noreferrer'>streaming</a></b>
<br />This refers to some system where you would not need to refresh the webpage to see new comments that are posted. Some Scratchers think this would be convenient if you are engaged in a conversation with someone so that the conversation moves more quickly (somewhat like how texting works). However, aside from the technological barriers this would bring, it would also put a greater emphasis on the social media aspect of Scratch, moving the focus away from the project-creating aspect. Indeed, project creating is intended to be the primary focus of Scratch.
<br />
<br />Streaming is similarly rejected, as is video chat, as they are forms of live commenting. With streams, it is easy to share personal information without anyone being able to report it, which the Scratch Team does not want to risk. Although one solution would be to have the Scratch Team moderate the streams, they do not have the resources to do that effectively.
<br />
<br /><span style='font-size: 1.2em;'><b><u>7. Scratch Community</u></b></span>
<br />
<br /><b>7.1 <a href='https://scratcharchive.asun.co/forums/viewtopic.php?id=12732&p=1#p83414' target='_blank' rel='noopener noreferrer'>Private messaging</a></b>
<br />Scratch currently has public messaging, meaning anyone can see the comments that you write. As a result, people are more likely to be respectful since anyone can see the comment. However, with private messaging, people know that only the intended recipient can see the message, which could lead to many more disrespectful or inappropriate comments. The Scratch Team also simply does not have the resources to moderate a private messaging system, precisely because there would be a lot of bad comments. In addition, it is a huge Internet safety concern and is not the purpose of Scratch anyway.
<br />
<br />This suggestion extends to allowing users to post links to other private messaging websites. Many such messaging websites are not as well-moderated as Scratch is. If such links were allowed, Scratch may be held responsible if anything bad happens to someone. It also extends to voice chat capabilities on Scratch; for more information, see <a href='https://scratch.mit.edu/discuss/post/4583863/' target='_blank' rel='noopener noreferrer'>this post</a>.
<br />
<br />However, the ability to message others <em>publicly</em> in an area where nobody else can comment is NOT rejected. You can discuss it on <a href='https://scratch.mit.edu/discuss/topic/756779/' target='_blank' rel='noopener noreferrer'>this topic</a>.
<br />
<br /><b>7.2 <a href='https://scratch.mit.edu/discuss/post/242372/' target='_blank' rel='noopener noreferrer'>A 13+ version of the Scratch website</a> or <a href='https://scratch.mit.edu/discuss/post/3468115/' target='_blank' rel='noopener noreferrer'>age-restricted content</a></b>
<br />Scratch is designed for ages 8 to 16, but any content shared on the website must be appropriate for all ages. Dividing the community by making a separate, age-restricted website would not be helpful. Potential restrictions from entering the website (such as a warning, or requiring a parent to answer math equations) would not necessarily stop an underage child from entering the 13+ website.
<br />
<br />This suggestion extends to age-restricting <em>anything</em> on Scratch, such as viewing specific projects or accessing specific Scratch features. As a general rule, Scratch is for all ages, and content shared on the Scratch website should be appropriate for all ages.
<br />
<br /><b>7.3 <a href='https://scratch.mit.edu/discuss/post/663346/' target='_blank' rel='noopener noreferrer'>Ban "follow for follow" (F4F)</a></b>
<br />Although many Scratchers do not enjoy seeing follow for follow requests, asking someone to participate in follow for follow is relatively harmless. If someone asks you to do follow for follow, and you do not want to, just <em>politely</em> decline their request. If they keep spamming you with requests, you can use the Report button on their comments.
<br />
<br /><b>7.4 <a href='https://scratch.mit.edu/discuss/post/3513044/' target='_blank' rel='noopener noreferrer'>Allow Scratchers to moderate the website</a></b>
<br />A community moderator program used to exist where Scratchers could moderate the website, but it was removed due to some very inappropriate things showing up in the report queue, among other reasons. A volunteer program could also encourage trolls to use moderator tools to cause problems on the website. As a result, the Scratch Team has decided to only allow adults to moderate the website, including the forums, and those adults would need to join the Scratch Team as a paid position in order to moderate the website.
<br />
<br />If you are 18 or older, legally allowed to work in the United States, and are interested in moderating the website, check out the "Jobs" link at the bottom of the website to see if there are any openings for the "Community Moderator" position.
<br />
<br /><b>7.5 <a href='https://scratch.mit.edu/discuss/post/2706108/' target='_blank' rel='noopener noreferrer'>Scratchers and Scratch Team members should not promote political views</a></b>
<br />According to the Community Guidelines, <em>"Scratch welcomes people of all ages, races, ethnicities, religions, abilities, sexual orientations, and gender identities."</em> As long as someone's beliefs and statements are respectful and welcoming towards all groups of people, they are allowed to express them on the Scratch website. This includes Scratchers, as well as members of the Scratch Team; in particular, the Scratch Team will continue to feature projects and studios that they believe promote the core values of Scratch and its community.
<br />
<br />More detailed explanations in the case of LGBTQ+ ideas can be found in <a href='https://scratch.mit.edu/discuss/post/4455151/' target='_blank' rel='noopener noreferrer'>this post</a> and <a href='https://scratch.mit.edu/discuss/post/2704445/' target='_blank' rel='noopener noreferrer'>this post</a>.
<br />
<br /><b>7.6 <a href='https://scratch.mit.edu/discuss/post/3023560/' target='_blank' rel='noopener noreferrer'>Relax or remove the extension policy</a></b>
<br />Browser extensions, userscripts, and userstyles are not allowed to be mentioned on Scratch as per the <a href='https://scratch.mit.edu/discuss/topic/284272/' target='_blank' rel='noopener noreferrer'>extension policy</a>. Although such extensions may be useful, it is not easy to tell if the extension is harmful to your device. The Scratch Team believes that the potential risks and harm in allowing browser extensions outweigh the benefits, and are not looking for ways to improve this policy. This includes browser extensions, userscripts, and userstyles made by anyone, including Scratchers or well-known companies like Google.
<br />
<br /><b>7.7 <a href='https://scratch.mit.edu/discuss/post/3518582/' target='_blank' rel='noopener noreferrer'>Paid advertisements on the Scratch website</a></b>
<br />Some users are interested in seeing paid advertisements in their projects, like on YouTube, so they can make real money from people viewing their projects. Similarly, some users believe that having advertisements around the Scratch website can allow the Scratch Team to make more money. However, Scratch is supposed to be a non-profit organization. If the Scratch Team or any Scratchers start making money from anywhere on the Scratch website, that would contradict this non-profit philosophy, and that would be a huge legal issue.
<br />
<br /><b>7.8 <a href='https://scratch.mit.edu/discuss/post/3778904/' target='_blank' rel='noopener noreferrer'>Project advertisements on the Scratch website</a></b>
<br />Some users are interested in having advertisements around the website which advertise Scratch projects or studios, even if they are not paid for these advertisements. However, it is unclear how projects would be chosen to be advertised. Also, this would require a Scratch Team member to ensure that inappropriate projects are not chosen to be advertised, and the Scratch Team does not currently have the resources to do this.
<br />
<br /><b>7.9 <a href='https://scratch.mit.edu/discuss/post/3603086/' target='_blank' rel='noopener noreferrer'>Pop-up alert that encourages users to take a break from screen time</a></b>
<br />Certainly, too much computer time is not good for anyone. But, if someone is concerned about themselves or their children getting too much screen time, there are other methods that exist that can help encourage these healthy choices, such as external software or simple willpower. There is not a need to have such a warning built into Scratch, even if it is optional or able to be ignored.
<br />
<br /><b>7.10 <a href='https://scratch.mit.edu/discuss/post/3983330/' target='_blank' rel='noopener noreferrer'>Propose your own projects to be featured</a></b>
<br />Scratchers can suggest projects that they think should be featured in the <a href='https://scratch.mit.edu/studios/28715018/' target='_blank' rel='noopener noreferrer'>Propose Projects to be Featured</a> studio. One of the rules of proposing projects is that you cannot propose your own projects to be featured. There are several reasons why this rule is in place. First, if users could propose their own projects, then there would be more requests in the studio, and it would be difficult for curators to add them all. Second, proposing someone else's project helps emphasize that Scratch is a helpful and supportive community, as proposing someone's project to be featured is an indication that the project creator has made a good project. Lastly, this verifies that at least one other person has seen the project and agrees that it is a feature-worthy project, leading to higher-quality proposals.
<br />
<br />If you would like your own project to be featured, keep in mind that you can actually ask someone else to propose your project for you. Be sure to practice good advertising as described in <a href='https://scratch.mit.edu/discuss/topic/396541/' target='_blank' rel='noopener noreferrer'>this topic</a>, and be polite when asking. Keep in mind that they may decide not to propose it; you should not try to force them to propose it.
<br />
<br /><b>7.11 <a href='https://scratch.mit.edu/discuss/post/4229735/' target='_blank' rel='noopener noreferrer'>"Recently Shared Projects" row on the front page</a></b>
<br />This proposed row on the front page would display projects that were most recently shared by Scratchers, in an attempt to help unnoticed Scratchers get more views. <a href='https://en.scratch-wiki.info/wiki/Recently_Shared_Projects' target='_blank' rel='noopener noreferrer'>Such a feature existed</a> in Scratch 1.4 and Scratch 2.0. It was removed for several reasons: the community did not find these projects interesting, the row would sometimes show inappropriate projects, and these new projects would often get disrespectful comments from other users. If you are interested in seeing recently shared projects, there is a "Recent" section of the Explore page; see <a href='https://scratch.mit.edu/explore/projects/all/recent' target='_blank' rel='noopener noreferrer'>this page</a>.
<br />
<br />A button or link which allows you to view a random project is also rejected <a href='https://scratch.mit.edu/discuss/post/6233413/' target='_blank' rel='noopener noreferrer'>for similar reasons</a>.
<br />
<br /><b>7.12 <a href='https://scratch.mit.edu/discuss/post/5784390/' target='_blank' rel='noopener noreferrer'>"Featured Scratchers" row on the front page</a></b>
<br />This proposed row on the front page would display Scratchers who have been considered helpful, respectful, and/or good project creators. However, the Scratch Team believes that the existing "Featured Projects" row already gives enough attention to Scratchers, and that it showcases projects, which is the main purpose of Scratch. It helps keep Scratch focused on projects rather than specific users.
<br />
<br /><b>7.13 <a href='https://scratch.mit.edu/discuss/post/4287696/' target='_blank' rel='noopener noreferrer'>Ability to vote on featured projects</a></b>
<br />There are already three rows on the front page that are controlled entirely by the Scratch community: "Projects Curated by", "What the Community is Remixing", and "What the Community is Loving." The "Featured Projects" row is useful to give the Scratch Team a chance to showcase projects that they feel are inspirational, highlight specific cultures, and are not very popular.
<br />
<br /><b>7.14 <a href='https://scratch.mit.edu/discuss/topic/689659/' target='_blank' rel='noopener noreferrer'>Revert the purple color palette back to blue</a></b>
<br />The specific color of purple was chosen as a practical one, as the Scratch Team determined through research that it is the color which is the most helpful for those with vision impairments. That is, the color change is important for the sake of improved accessibility, which means that more people will be able to use Scratch. For more information on the Scratch Team's process that led to the purple color palette, see <a href='https://scratch.mit.edu/discuss/post/7341699/' target='_blank' rel='noopener noreferrer'>this post</a>.
<br />
<br />However, an option to change the color palette is NOT rejected. You can discuss it on <a href='https://scratch.mit.edu/discuss/topic/296027/' target='_blank' rel='noopener noreferrer'>this topic</a>.
<br />
<br /><b>7.15 <a href='https://scratch.mit.edu/discuss/post/269139/' target='_blank' rel='noopener noreferrer'>"Other" option for reporting profiles</a></b>
<br />An "other" option for reporting profiles used to exist, but the Scratch Team found that Scratchers would often use it to report comments and projects. It is much easier for the Scratch Team to find inappropriate comments and projects if they were reported directly. To report something inappropriate about the profile that is not listed under the given options, contact the Scratch Team using <a href='https://scratch.mit.edu/contact-us/' target='_blank' rel='noopener noreferrer'>Contact Us</a>.
<br />
<br /><b>7.16 <a href='https://scratch.mit.edu/discuss/post/7752840/' target='_blank' rel='noopener noreferrer'>Change the types of projects to be featured</a></b>
<br />The Scratch Team has a list of types of projects they are looking to feature in the <a href='https://scratch.mit.edu/studios/28715018' target='_blank' rel='noopener noreferrer'>Propose Projects to be Featured studio</a>. Such a list has existed for years, and the Scratch Team is happy with the kinds of projects they have been featuring. While some Scratchers are unhappy with the types of projects being featured, it is ultimately up to the Scratch Team to decide what to feature.
<br />
<br /><b>7.17 <a href='https://scratch.mit.edu/discuss/post/7841418/' target='_blank' rel='noopener noreferrer'>Official contests on Scratch</a></b>
<br />Scratchers often host contests about making a certain type of Scratch project, and it has been suggested that the Scratch Team should host an official contest. However, Scratch is not about competition; the Scratch Team would prefer to emphasize the fun of creativity and learning without doing so in a competitive environment. Scratchers are still allowed to host their own contests, but the Scratch Team will not hold any official contests.
<br />
<br /><span style='font-size: 1.2em;'><b><u>8. Account Information</u></b></span>
<br />
<br /><b>8.1 <a href='https://scratch.mit.edu/discuss/post/367229/' target='_blank' rel='noopener noreferrer'>Changing usernames</a> or <a href='https://scratch.mit.edu/discuss/post/2456140/' target='_blank' rel='noopener noreferrer'>changing display names</a></b>
<br />If a user could change their username (or even set a certain "nickname" or "display name"), this could be very confusing for the Scratch community, especially for those following that user. In addition, this would make moderation of the website more difficult because it would be harder for the Scratch Team to keep an eye on what a user may be doing. The Scratch Team has allowed username changes only on very rare occasions, such as if the username contains personal information or causes gender dysphoria. Generally, the Scratch Team does not change usernames on request (including for reasons such as "I do not like my current username anymore").
<br />
<br />However, because of the way that usernames are stored on the server, changing the cases of letters in your username (for example, changing @Za-Chary to @ZA-CHARY) is NOT rejected. You can discuss it on <a href='https://scratch.mit.edu/discuss/topic/339198/' target='_blank' rel='noopener noreferrer'>this topic</a>.
<br />
<br /><b>8.2 <a href='https://scratch.mit.edu/discuss/post/1870800/' target='_blank' rel='noopener noreferrer'>Add a rank above Scratcher</a> or <a href='https://scratch.mit.edu/discuss/post/993968/' target='_blank' rel='noopener noreferrer'>allow users to skip the New Scratcher status</a></b>
<br />There are three ranks: New Scratcher, Scratcher, and Scratch Team. The only reason the New Scratcher rank exists is to prevent spam, and since it only takes a few weeks to become a Scratcher, bullying and separation are rather minimal. Similarly, the Scratch Team rank exists so users know who is on the Scratch Team; note that Scratch Team members do not brag about the Scratch Team rank. In contrast, there may be division in the community between Scratchers and those with a higher rank, which could also lead to bragging and bullying. This also includes a "verified Scratcher" status where well-known Scratchers get a special symbol next to their name; for more information in the case where a Scratcher is famous outside of Scratch, see <a href='https://scratch.mit.edu/discuss/post/8319140/' target='_blank' rel='noopener noreferrer'>this post</a>.
<br />
<br />In particular, this suggestion includes a "Former Scratch Team Member" rank as well as a "Youth Advisory Board" rank, as account ranks in general are intended to identify who has access to certain features. For more information, see <a href='https://scratch.mit.edu/discuss/post/8187666/' target='_blank' rel='noopener noreferrer'>this post</a>.
<br />
<br />Although the restrictions for New Scratchers may seem annoying, they are extremely effective against spam and inappropriate content. For New Scratchers who are wondering how to become a Scratcher or what it means to be one, check out <a href='https://scratch.mit.edu/discuss/topic/6986/' target='_blank' rel='noopener noreferrer'>this topic</a>. The Scratch Team will not allow any accounts to "skip" the New Scratcher status, even if it is an alternate account of an existing account.
<br />
<br /><b>8.3 <a href='https://scratch.mit.edu/discuss/post/3326952/' target='_blank' rel='noopener noreferrer'>Show when users are online</a></b>
<br />This suggestion refers to some sort of indicator that lets you know if a user is currently online. The Scratch Team has discussed it and has decided that it is not something that can benefit the core functionality of Scratch as a creative platform. Between making projects, sharing projects, and viewing projects, an online indicator is not much help in these areas.
<br />
<br /><b>8.4 <a href='https://scratch.mit.edu/discuss/post/1631442/' target='_blank' rel='noopener noreferrer'>Show when users are banned</a></b>
<br />For privacy reasons, the Scratch Team does not share such account information with anyone other than the account owner. In particular, a banned user may not want to reveal the fact that they were banned to the public.
<br />
<br />However, giving a Scratcher the option to publicly show if they are banned is NOT rejected. You can discuss it on <a href='https://scratch.mit.edu/discuss/topic/465353/' target='_blank' rel='noopener noreferrer'>this topic</a>.
<br />
<br /><b>8.5 <a href='https://scratch.mit.edu/discuss/post/3704074/' target='_blank' rel='noopener noreferrer'>Recycle usernames</a> or <a href='https://scratch.mit.edu/discuss/post/1765412/' target='_blank' rel='noopener noreferrer'>delete inactive accounts</a></b>
<br />The only potential benefit to these suggestions is that Scratchers could reuse usernames. However, this is problematic in several ways. Deleting inactive accounts might mean that the user's projects get deleted, which would be extremely unfortunate should they decide to return to Scratch. Even if the account is already deleted, someone may attempt to impersonate the deleted user with the new username. In addition, there are reasons that the Scratch Team may need to refer back to the deleted account.
<br />
<br />However, deleting accounts with absolutely no activity since account creation is NOT rejected. (Note, however, that some accounts may have had activity even if it doesn't look like they do.) You can discuss it on <a href='https://scratch.mit.edu/discuss/topic/779532/' target='_blank' rel='noopener noreferrer'>this topic</a>.
<br />
<br /><b>8.6 <a href='https://scratch.mit.edu/discuss/post/2128208/' target='_blank' rel='noopener noreferrer'>Blocking or ignoring Scratchers</a></b>
<br />This suggestion refers to an optional system that makes it so that you do not have to see comments that a particular user posts. This feature existed in Scratch 1.4, but the Scratch Team found that it buried any problems rather than solving them. Even if you block a user, that does not stop them from harassing other Scratchers, and also does not stop them from making more accounts to harass you further. The Scratch Team also found that some would use the block button in ways that were unwelcoming to other Scratchers of a certain identity. For more information, see <a href='https://scratch.mit.edu/discuss/post/8238485/' target='_blank' rel='noopener noreferrer'>this post</a>.
<br />
<br />If someone is being disrespectful, be sure to report that user with the Report button, or use the <a href='https://scratch.mit.edu/contact-us/' target='_blank' rel='noopener noreferrer'>Contact Us</a> link if the situation requires more explanation.
<br />
<br />However, a system to block users while simultaneously reporting them is NOT rejected. You can discuss it on <a href='https://scratch.mit.edu/discuss/topic/324190/' target='_blank' rel='noopener noreferrer'>this topic</a>.
<br />
<br /><b>8.7 <a href='https://scratch.mit.edu/discuss/post/884708/' target='_blank' rel='noopener noreferrer'>Digital currency</a> or <a href='https://scratch.mit.edu/discuss/post/1333242/' target='_blank' rel='noopener noreferrer'>money blocks</a></b>
<br />Some form of digital currency which allows you to "buy" Scratch features (with real or fake money) would not really benefit the educational value of Scratch; after all, there is not really anything that you can buy. While there could be features that are only unlockable via digital currency, this does not really contribute to Scratch's purpose of being a programming language available for everyone. However, you can make digital currency in your own projects, if you like, as long as it follows the <a href='https://scratch.mit.edu/discuss/topic/340012/' target='_blank' rel='noopener noreferrer'>policy on pretend currency systems</a>.
<br />
<br />This suggestion extends to Scratch blocks in the editor which can be used to exchange digital currency. The problem with such money blocks is that many users on the website are young and do not quite know how money works (and most do not even have a credit card account). Users could make projects which require others to pay a large amount of money to play the project. Overall, it adds further complexity to the website and would limit users' access, without any clear benefit towards the educational value.
<br />
<br />A very good detailed analysis for why digital currency should not be on Scratch can be found on <a href='https://scratch.mit.edu/discuss/post/3509160/' target='_blank' rel='noopener noreferrer'>this post</a>.
<br />
<br /><b>8.8 <a href='https://scratch.mit.edu/discuss/post/456374/' target='_blank' rel='noopener noreferrer'>Scratch achievements</a></b>
<br />Some users have suggested Scratch achievements such as "Created 50 projects" with the idea that this would give users motivation to keep using Scratch. However, this sort of idea does not really fit in with the purpose of Scratch. Some users may use their achievements to determine that they are "better" than other users. However, you are allowed to make achievements in your own games, if you like.
<br />
<br /><b>8.9 <a href='https://scratch.mit.edu/discuss/post/3665886/' target='_blank' rel='noopener noreferrer'>Notification when someone unfollows you</a></b>
<br />This sort of feature could create a lot of drama within the Scratch community. Those who are concerned about follower count may get angry at another user for unfollowing them. The Scratch Team believes that users should be able to follow or unfollow anyone they want without feeling guilty about it, especially as their interests change.
<br />
<br /><b>8.10 <a href='https://scratch.mit.edu/discuss/post/4965047/' target='_blank' rel='noopener noreferrer'>Change the list of locations</a></b>
<br />The list of locations that the Scratch Team uses is determined by an official international standard for the list of countries. The localization team for Scratch has determined that they will continue to go by this standard. As a result, countries will not be added or removed from this list. An exception could be made if the international standard changes, but that is out of the Scratch Team's control.
<br />
<br />This suggestion extends to removing the location feature entirely. For more information why that in particular is rejected, see <a href='https://scratch.mit.edu/discuss/post/3326935/' target='_blank' rel='noopener noreferrer'>this post</a>. However, the ability to make your location private is NOT rejected. You can discuss it on <a href='https://scratch.mit.edu/discuss/topic/175448/' target='_blank' rel='noopener noreferrer'>this topic</a>.
<br />
<br /><b>8.11 <a href='https://scratch.mit.edu/discuss/post/7431550/' target='_blank' rel='noopener noreferrer'>Block VPNs on Scratch</a></b>
<br />While some Scratchers abuse VPNs to go around blocks on their account, there are many legitimate reasons why a Scratcher would need to use a VPN on Scratch. As a result, the Scratch Team does not see a need to block all VPN use on Scratch; they will deal with those who abuse VPNs on a case-by-case basis.
<br />
<br /><span style='font-size: 1.2em;'><b><u>9. Discussion Forum Features</u></b></span>
<br />
<br /><b>9.1 <a href='https://scratch.mit.edu/discuss/post/2711595/' target='_blank' rel='noopener noreferrer'>Bring back the "Discuss" button</a></b>
<br />The Discuss button was removed for reasons that may not be 100% clear to some users, but it will not be coming back. In general, the forums are not as restricted as the main website is, in terms of post content. For instance, users can post images on the forums, write Scratch blocks on the forums, and write and edit posts of up to 200,000 characters, none of which is possible on the main website. These options allow for more spam and misuse, especially for new forum users who are not aware of how the forums work. It is suggested that Scratchers learn of the forums through other Scratchers, who direct them to the correct forums as needed.
<br />
<br />A very good detailed analysis for why the Discuss button may have been removed can be found on <a href='https://scratch.mit.edu/discuss/post/3282493/' target='_blank' rel='noopener noreferrer'>this post</a>.
<br />
<br /><b>9.2 <a href='https://scratch.mit.edu/discuss/post/3579079/' target='_blank' rel='noopener noreferrer'>Notification for being quoted in topics</a></b>
<br />Due to the way that the forum structure works, this suggestion is simply not possible to add. Even if it was possible, there would be a very high possibility of getting spammed with unwanted notifications. The technical issues and the potential for abuse make this feature rather impractical. If you want to stay updated on a certain topic, you can always follow the topic and get notified for new posts that are made.
<br />
<br /><b>9.3 <a href='https://scratch.mit.edu/discuss/post/2282480/' target='_blank' rel='noopener noreferrer'>Off-topic or miscellaneous section on the forums</a></b>
<br />This forum would have been used for posting about anything that was not necessarily related to Scratch. There actually used to be a forum topic like this, but it was difficult to moderate, and so it was shut down and replaced by the "Things I'm Making and Creating" and the "Things I'm Reading and Playing" forums (which do not completely allow off-topic posts).
<br />
<br />This suggestion extends to an off-topic or miscellaneous forum for Scratch-related topics. If there is something that you would like to say, Scratch-related or otherwise, and it is not a good fit for one of the existing forums, it would be a good idea to make a project or studio about it instead. This suggestion also extends to the text-based games forums; for more information, see <a href='https://scratch.mit.edu/discuss/post/8083983/' target='_blank' rel='noopener noreferrer'>this post</a>.
<br />
<br /><b>9.4 <a href='https://scratch.mit.edu/discuss/post/4426090/' target='_blank' rel='noopener noreferrer'>An official list of accepted suggestions</a></b>
<br />As a counterpart to the list of rejected suggestions, some Scratchers have expressed interest in compiling a list of features of Scratch that were suggested by someone, and eventually implemented. But it is not easy to tell whether a suggestion was implemented because it was suggested by Scratchers in the forums, Scratchers elsewhere, a Scratch Team member, a teacher, or someone else. In other words, every feature currently in Scratch was suggested by somebody, so such a list would just be a list of all features of Scratch.
<br />
<br /><b>9.5 <a href='https://scratch.mit.edu/discuss/post/4564638/' target='_blank' rel='noopener noreferrer'>Allow files to be uploaded into forum posts</a></b>
<br />The Scratch Team would have to pay for storage of these files, and they only have a limited amount of resources to do so. Storage space would be better allocated toward Scratch projects, anyway. There is also the issue of someone uploading a file that can potentially cause harm to someone's computer. Searching through these files would require significantly more moderation work, and there are not enough moderators able to do the job at the moment.
<br />
<br /><b>9.6 <a href='https://scratch.mit.edu/discuss/post/5109469/' target='_blank' rel='noopener noreferrer'>Polls in the forums</a></b>
<br />Some Scratchers have suggested optional polls that could be implemented into forum threads so users can vote on a particular suggestion, state that they experience the same glitch as someone else, or for other reasons. However, the Scratch Team is less interested in polling results and more interested in constructive posts on the forums. Although polls could theoretically reduce the number of unconstructive posts, they likely would not help Scratchers think constructively and write constructive posts. This suggestion includes polls that Scratchers can create themselves, as well as pre-made polls.
<br />
<br /><b>9.7 <a href='https://scratch.mit.edu/discuss/post/3014753/' target='_blank' rel='noopener noreferrer'>Guide section on the forums</a></b>
<br />This proposed forum section would be a place for guides and tutorials that Scratchers could freely make with the purpose of helping others. However, the forums are generally a place for discussion; it is not a good place for topics with content that is not meant to be changed. A Scratch project or the Scratch Wiki are two good places to make tutorials.
<br />
<br /><b>9.8 <a href='https://scratch.mit.edu/discuss/post/824198/' target='_blank' rel='noopener noreferrer'>Report button for signatures</a></b>
<br />To report a user's forum signature, you can just use the Report button on one of their posts, and for the reason for reporting, just explain that there is a problem with their signature. The Scratch Team has expressed that there is no need for a separate Report button for signatures since this is an effective workaround.
<br />
<br /><b>9.9 <a href='https://scratch.mit.edu/discuss/post/8075679/' target='_blank' rel='noopener noreferrer'>April Fools' Day in the forums</a></b>
<br />The Scratch Team had previously allowed Scratchers to create joke forum posts on April Fools' Day (AFD). However, issues with moderation and lag in recent years have led to the Scratch Team no longer allowing such events in the forums. This suggestion includes any form of allowing AFD posts in the forums, including making a separate forum for AFD posts.
<br />
<br />However, suggestions for AFD events unrelated to joke posts, including events outside of the forums, are NOT rejected; the Scratch Team may still host special AFD events/features on the general website.
<br />
<br /><span style='font-size: 1.2em;'><b><u>10. Discussion Forum Restrictions</u></b></span>
<br />
<br /><b>10.1 <a href='https://scratch.mit.edu/discuss/post/1134018/' target='_blank' rel='noopener noreferrer'>Remove or decrease the 60 Second Rule</a></b>
<br />The "60 Second Rule" refers to the fact that Scratchers need to wait 60 seconds after posting in the forums before they can post again (120 seconds for New Scratchers). While this may seem annoying, it is extremely effective against spam. Moreover, it can require users to carefully think about what they have typed before posting. You generally do not have to wait for very long between forum posts anyway; it is just 60 seconds. Decreasing it is also <a href='https://scratch.mit.edu/discuss/post/4416568/' target='_blank' rel='noopener noreferrer'>rejected</a>; that is, the number of seconds will not be changed.
<br />
<br />Note that, for similar reasons, removing the cooldown for comments on the rest of the website is also rejected. For more information, see <a href='https://scratch.mit.edu/discuss/post/7917632/' target='_blank' rel='noopener noreferrer'>this post</a>.
<br />
<br /><b>10.2 <a href='https://scratch.mit.edu/discuss/post/3254079/' target='_blank' rel='noopener noreferrer'>Show exact post count of other users</a></b>
<br />Like with similar numbers on the website (such as 100+ projects in studios), there is not really much of a benefit to seeing the exact number. Post count is not a competition. The goal is not to make as many posts as possible; instead, one should aim to make quality posts to help other users. If you are curious, you can still see your exact post count <a href='https://scratch.mit.edu/discuss/search/?action=show_user&show_as=posts' target='_blank' rel='noopener noreferrer'>here</a>.
<br />
<br />This suggestion extends to adding additional post milestones past 1000+ (for example, showing that a user has 5000+ posts); for more information, see <a href='https://scratch.mit.edu/discuss/post/6521078/' target='_blank' rel='noopener noreferrer'>this post</a>.
<br />
<br /><b>10.3 <a href='https://scratch.mit.edu/discuss/post/4569/' target='_blank' rel='noopener noreferrer'>Remove restricted image hosts or add your own websites</a></b>
<br />By requiring an image host website (such as <a href='https://cubeupload.com/' target='_blank' rel='noopener noreferrer'>cubeupload</a>) to be used when posting images on the forums, this decreases the chances of inappropriate images being posted on the forums, as inappropriate images are not allowed on these image host websites. The Scratch Team does not have the time to whitelist everybody's websites, especially when acceptable websites already exist.
<br />
<br />Years ago, the Scratch forums suffered from trolls who continually spammed the forums with highly inappropriate images. It got so bad that the [[]img] tag had to be temporarily disabled so it could be improved. Certainly Scratchers would prefer to have to use an image hosting website rather than not being able to post images at all.
</body>
</html>
[/code]
Last edited by 8to16 (Jan. 21, 2025 15:23:39)
- BigNate469
-
Scratcher
1000+ posts
Parsing BBCode to HTML using Python
TOLORSYou have an extra [/code] at the end of thatsniiiiiiiiiiiiiiiiiiiiiiiiiiiiiiip
Also, why
Actually, after copying and pasting that into a text editor and opening the resulting HTML file in a browser it does seem to work.
You might want to consider wrapping text in <pre> blocks rather than insert <br>s at every line break, to help preserve whitespace (the forums do preserve whitespace (when not interrupted by a line break, seemingly)- unlike HTML, which doesn't render it in most cases.
Proof: hi).
Last edited by BigNate469 (Jan. 21, 2025 15:29:11)
- 8to16
-
Scratcher
1000+ posts
Parsing BBCode to HTML using Python
You have an extra [/code] at the end of thatthis was originally designed specifically to parse TOLORS before i created this topic
Also, why
also TOLORS is a large post with a bunch of BBCode, so it's challenging to exactly parse it
this parser supports most tags in scratch's bbcode
- 8to16
-
Scratcher
1000+ posts
Parsing BBCode to HTML using Python
<span onclick=“alert('uh oh…')”>test</span>
Last edited by 8to16 (Jan. 21, 2025 15:27:16)
- BigNate469
-
Scratcher
1000+ posts
Parsing BBCode to HTML using Python
Also, for code syntax highlighting, the CSS used for that is at https://cdn.scratch.mit.edu/scratchr2/static/__774e7841eab6f875e16f7cec38b2f7c3__//djangobb_forum/css/pygments.css
- davidtheplatform
-
Scratcher
500+ posts
Parsing BBCode to HTML using Python
Also, for code syntax highlighting, the CSS used for that is at https://cdn.scratch.mit.edu/scratchr2/static/__774e7841eab6f875e16f7cec38b2f7c3__//djangobb_forum/css/pygments.cssSpecifically it uses the pygments library
- BigNate469
-
Scratcher
1000+ posts
Parsing BBCode to HTML using Python
Yeah, but you can either re-create the CSS or you can copy what's already there, or you can create a whole new stylesheet for it that uses the same class names. Knowing what is already in use helps, either way.Also, for code syntax highlighting, the CSS used for that is at https://cdn.scratch.mit.edu/scratchr2/static/__774e7841eab6f875e16f7cec38b2f7c3__//djangobb_forum/css/pygments.cssSpecifically it uses the pygments library
Speaking of which, Pygments is a Python library, so you can probably use it for this. It's website and docs are at https://pygments.org/
- alwayspaytaxes
-
Scratcher
500+ posts
Parsing BBCode to HTML using Python
Check out Your text to link here…. This function returns another function which you can pass BBCode to
Modify to your needs
Modify to your needs- Discussion Forums
- » Advanced Topics
-
» Parsing BBCode to HTML using Python

But I'll get to that eventually! 


