This is a studio for the topic: https://scratch.mit.edu/discuss/topic/195714/
The Add All the Features campaign advocates features which improve the programming experience for Scratchers everywhere.
We believe that Scratch's current facilities are inadequate for effectively teaching Scratchers about programming, defeating the purpose of its very existence. Users are forced to use inefficient workarounds for existing programming ideas which the Scratch Team has chosen not to implement.
This harms every Scratcher by instilling poor programming practices. For many, Scratch is the first taste of programming, so habits acquired here make everlasting impressions on programming. Scratchers learn to develop solutions which would be horrendous in mainstream programming.
In practical terms, the lack of features makes programming painfully hard, as users must spend time and resources implementing tedious workarounds.
Opponents of the campaign argue that adding certain features would be too "complex" for beginning programmers. We disagree. Often, the workaround for a feature is much harder to grasp than the feature itself. Secondly, new Scratchers do not understand many features which already exist in Scratch, but eventually learn them because the Scratch Team has made the decision to include them.
Of course, balance of what to implement does exist. We only wish to add features which are commonly used in programming, and can be presented in an understandable way.
Because Scratch doesn't have a return statement, its users often store return values in a variable.
Because Scratch doesn't support local variables, users must flood the palette with variables.
A lack of a “switch” construct causes users to use nested if-else statements, making code unreadable.
A lack of first-class lists force users to write separate, identical procedures for usage on different lists.
Because Scratch doesn't have break statements, in order to exit a loop early, Scratchers must place it in a separate script.
Hash maps are often implemented in O(n) time, rather than O(1) time (from MonsterOfTheDeep).
(TO BE IMPROVED)