TODO
This spec is a work in progress; it's nowhere near complete. Please contribute if you can! Anywhere that says TODO is something that needs to be worked on, as well as any sections that are empty or missing.
TODO: Cleanup
Various things need to be worked on to make this a good resource:
- ⚠️ ‼️ Cite reliable sources. ‼️ ⚠️ This specification should eventually provide references to the code of Scratch itself (not just wikis) to prove its claims and be an accurate source of information about the Scratch programming language. As it is in early stages with little to no actual research done, misleading or inaccurate information is sometimes presented (pointed out in issues #4, #6, and #7). It should also be made clear to others that this spec is more of an early draft and the content it hopes to cover has not been extensively investigated yet.
- Decide on formatting and structure guidelines. Currently, the rules of how this spec is to be formatted are not well defined, and the rules should probably be rewritten and refined to help provide more organized and comprehensive documentation (e.g. when to use links between sections, what terms to use in reference to Scratch ideas, how to best cite sources, what qualifies as a secrtion, etc).
- Cleanup excessive linking and wordiness. Links to headings should only be applied if they offer further context about a section and have not been previously or recently linked to in said section. Additionally, this specification should explain everything about Scratch with no extra wordiness or fluff. Unfortunately, @OceanIsEndless has a strong tendency to do both of these. It is unclear what the spec's structure should be as well, and there may be too many or too little sections.
TODO: Blocks
This specification should eventually document every block ever! (A bit hopeful, but certainly possible, and most definitely necessary for Scratch 3.0 to be 100% functionally recreatable from this document.)
Below is a list of blocks that have been or still need to be documented here. (Fully specified blocks are crossed off.) Specifying standard blocks is the first priority. Once they are documented, the scope of this spec can be expanded to include hidden, obsolete, and even nonstandard blocks as well, probably in that order.
Click to view block list
Motion Blocks
- Standard
move () steps
turn cw () degrees
turn ccw () degrees
go to ( v)
go to x: () y: ()
glide () secs to ( v)
glide () secs to x: () y: ()
point in direction ()
point towards ( v)
change x by ()
set x to ()
change y by ()
set y to ()
if on edge, bounce
set rotation style [ v]
(x position)
(y position)
(direction)
- Hidden (specify what they do, even if nothing at all)
scroll right ()
scroll up ()
align scene [ v]
(x scroll)
(y scroll)
- Obsolete (imagine what they would do if kept operational)
scroll right ()
scroll up ()
align scene [ v]
(x scroll)
(y scroll)
- Nonstandard (blocks that mods of Scratch added)
- PenguinMod
move [ v] () steps
change by x: () y: ()
point towards x: () y: ()
turn around
if touching ( v), bounce
set rotation style [look at | up-down v]
move to stage [ v]
- Unsandboxed
(rotation style)
- PenguinMod
Etcetera... More will be written in time.