When I look at Scratch, I see it from the viewpoint of a computer science professor who is very interested in seeing young people not only become interested in programming and computer science, but is also interested in seeing them learn the fundamentals of structured and object-oriented programming early on. Of course, they probably need to learn structured programming before attempting to learn object-oriented programming.
From this viewpoint, I suggest that the next important additions to Scratch should be:
1. Multiple data types including at least the addition of boolean types and string types.
2. The ability for the programmer to create and call methods and/or functions that receive parameters and return values. Functions that receive parameters and return values effectively already exist in some of the blocks such as the block containing trig functions. However, there is no facility that I am aware of for the programmer to create new functions that receive parameters and return values.
If possible, the parameter-passing capability should support indirection in the spirit of pointers in C++ and/or references in C# and Java, but even if indirection is not supported, the ability to modularize a program using programmer-designed methods and/or functions is an extremely important fundamental programming concept.
Offline