Thank you for the feedback :D I can't wait for there to be more formats too!
> If we would move away from XML, then we'd need a converter for our existing projects.
The "poor mans converter" is to deseriaize your XML into a headless worspace, and then reserialize it to JSO/whatever. So even if I don't get to something more specialized this summer, there's still a solution! But it's good to know that there's a demand for a converter :D
> I don't have an opinion on your other questions, except stacks should be arrays!
Hehe thank you for your feedback! But currently I'm actually leaning toward keeping them nested :/ I've attempted to implement the stack-based format, and there were two big problems:
1) Shadows complicate the stack-based format, and rely on hidden invariants.
For example, if you have a stack like:
```
[
{
'type': 'text_print',
},
{
'type': 'text_print',
'kind': 'shadow',
},
{
'type': 'text_print',
'kind': 'shadow',
},
{
'type': 'text_print',
},
]
```
This is actualy the serialization of a stack that looks like this:
It only works because there is an invariant of Blockly that shadow blocks may not have non-shadow children, which isn't very intuitive or clear.
2) Stacks don't work well with the type system.
For example, in a stacks-as-arrays format the top level structure would most likely look like this:
```
{
"blocks": [ // Array of arrays (stacks)
[ // Array of blocks (a stack)
{ // Actual block
"type": "text_print"
}
]
]
}
```
To keep the types consistent, that would mean that a group of blocks like below would also need to be wrapped in an array (even though there will never be a following block).
But the core team is pretty split on how this should work, so if anyone has opinions we would really appreciate them :D
Best wishes and thank you again for the feedback!
--Beka