C'mon, Jens. Don't hate your life because kids find things to do with your work other than the thing you want them to do. That's the nature of kids! If you want to build a different kind of user community, we should take positive steps to promote it, like the Scratch cards with little technical tips and examples. And perhaps make some projects that do the kind of things you think newcomers can/should/would enjoy, instead of just really hard ones (which I also do, but I don't complain that the forum kids are ruining my life).
They don't want to turn Snap! into something else. The only one who wants to do that is Stefano, who wants to turn it into C++, and he isn't even a kid. :~) What the kids want to do is understand your work, and the way you understand a large software system is by poking at it.
Oh wait, no, there's also Paul's group at EDC. They do want Snap! to be something different, namely, a restricted language. And, somewhat to my surprise, you're fine with that!
I don't think our support of users should entirely revolve around hackers, but I do think that hackers are a valuable part of any community. It's not their fault if we're not attracting the users you want.
I mean, the whole reason you made BYOB and then Snap! was to support kids using advanced techniques. We thought that Scratch, because of deliberate design choices, wasn't good enough for teenagers. For kids to do things we didn't anticipate them doing is good. Even that phishing project might have been funny if it'd been intended that way, rather than intended to be evil.
Do I have to tell the story about Ken Thompson's hacked C compiler to hack login?
I'm reminded that Scratch got started at the Computer Clubhouse project. So, along with building Scratch itself, they were very consciously pouring a ton of effort into building the community. We haven't done anything like that. Instead, we're relying on schools to bring kids to us.
I agree with this. If kids find ways to change some of the properties of morphs, that's not a problem. Imho.
As for metaprogramming, I think that a side issue about how people are using it is that some of us disagree with a few of your design decisions (such as about the scope of script variables) and have found ways to use metaprogramming to get Snap! to do what we want, and that offends you. To which all I can say is that you need to develop a thicker skin. Everybody isn't going to agree with you about everything, every time. And that's okay.