When making a new variable, which creates a variable block, that variable block should have a dropdown in order to be able to select different existing variables.
The variable block that is created has no dropdown.
Create 2 variables. Notice when making the 2nd one there is no way to switch it to the 1st one.
All
Ok, I know this is not a bug but instead a design choice and how Scratch works... but this behavior is different from how Blockly does it (which is how this repo has had it for a long time). I'm posting this because I'd like to ask some questions around this, and am not sure of a better place (please let me know if there is indeed a better place for this sort of discussion).
I assume Scratch 3.0 will follow how Scratch 2.0 has this and NOT include the drop downs by default. Why is this the case? It seems inconsistent to have things this way but I have a feeling you guys have good reasons... I'm curious what they are.
Also, if we choose to follow the Blockly design... I think we can maintain that behavior by simply reverting some of the recent changes. Is there any reason you can see where this would be a real issue to maintain?

I assume you're talking about the fact that there's no dropdown on the "foo" and "bar" reporter blocks above, even though there's a dropdown on the "bar" in the variable setter block.
Scratch lets you click on a block to see its value at runtime:

_Why does that mean there's no dropdown?_
If we wanted to be able to use a dropdown and tap on a block, we would have to have two touch targets in a small area. One way to do that is to use the dropdown triangle as the touch target for opening the dropdown, and the text for evaluating the variable. That's annoying anywhere else you use a dropdown (tiny touch target) and it isn't actually clear why sometimes you get the dropdown and sometimes you evaluate the variable--especially on a touch screen or if the user isn't great at using a mouse yet.
_How do I select another variable?_
You should be able to right-click on the variable getter and select a variable from the context menu, as you can in Scratch 2.0, but that looks broken right now (#964).
_Why do it this way in Scratch-Blocks/why not in Blockly?_
For Scratch/scratch-blocks: tinkerability. Blockly doesn't do that, in part because Blockly doesn't have a runtime and therefore has no idea what the value of a block would be. Obviously someone could add this behaviour into Blockly as part of integrating it into an app, if they felt like it.
_Can I just revert recent changes to get the Blockly behaviour?_
You can probably use a field_variable instead of a field_variable_getter to get the dropdown menu back. Offhand I'm not sure how well or poorly that would work. You will run into similar usability issues with evaluating the variable on tap, though, if that's a thing that you want.
That makes sense now! Thanks for the explanation :)
I know we certainly want to have features that expose the runtime value of variables but I don't think we've gotten to designing that part yet. Good to know this is closely related to this question of variable drop downs.
One quick question: why not make the set (and changeBy) blocks follow that design? Meaning when the variable shows in these blocks... have no dropdown by default? Is that in these cases it's more common to change the variable name and less common to inspect the value?
Clicking on a set variable block runs the block (in scratch) if you clicked anywhere other than an editable field, and edits the field if you clicked on an editable field. Clicking on a block doesn't display its value if it's a statement block.
Since there's so much more space to be touch targets, and since the block and its field are clearly delineated, it's much easier to discern intent. As a result clicking on the set block runs it and clicking on the variable field edits it.
Got it, thanks for the explanation!
@MichaelZawadzki - Thanks for bringing this up.
@rachel-fenichel @liam4 - Thanks for explaining and pointing at previous discussions.