to create snap block extention for turbowarp


I have a project, porting snap project for working with turbowarp
I have 2 suggestion
1 : coding a snap's blocks extention for scratch3/turbowarp
2 : coding a xml to sb3 converter for open snap project on turbowarp


Your second idea isn't possible; the whole reason we made Snap! is that there are things Scratch doesn't do.

The first one, though, sounds great. Javascript does have first class procedures and lists, so it should be possible. I would suggest starting with Snap! 4.0 as the goal, then when that's done, add the 5.0 features, then 6.0.

me: really wants it

also, It might be worth checking out DevBlocks, a scratch mod where you can load an extension from a URL.

I found that in this scratch 3 custom extension, it includes some blocks that are in snap. The (if <> then [] else []) reporter is there, the url block is there (although it doesn't just say url), the ^ block is there, current millisecond is there. I think the extension is a great start to snap in scratch 3.0 (which I also want)

that's in devblocks

it's made by sheeptester

I know about it too.

I guess, but none of those get you any closer to first class procedures, which is really the defining attribute of Snap!. Of course you could add that to Scratch; that's how Jens made BYOB. But it's not just adding blocks; it's adding a new data type, adding a visualization (the rings), etc etc. The extension would probably be almost as big as Scratch itself.

(Someone once said that the best thing about BYOB was zebra coloring... but that was when he was a beginner.)

well, the scratch editor source code is available, so I guess if someone who knew javascript (unlike me) could create a scratch 3.0 snap mod that will allow first class, and all the stuff snap has, but it will run on the scratch 3.0 engine.

Oh sure, it's doable -- Scratch is Turing-complete, so it can compute anything computable. Just, it's way way harder than adding a few blocks that don't change how Scratch handles data.

If anyone really wanted to try it, I would suggest first class lists as a less challenging project that still would involve digging into the data representation and the visualization. It's less challenging because it doesn't really require changing the evaluator, whereas first class procedures obviously changes how you approach procedures and evaluation.

snap has current time in milliseconds, not current millisecond, so I guess we can't use that block?

time in milliseconds and current millisecond is the same thing.


I went back and checked, yeah, they're not the same. idk why they decided to do it like that, it's not very useful... but I guess you could convert the current second to milliseconds and add that to the current millisecond reporter...