bharvey wrote:
We started talking about this at the MIT Scratch conference, but have been slow getting off the starting line partly because school started for me and I barely have time to sleep. And Jens has been busy at his work too. But we really should start getting serious about this. (Yes, nXIII, you'll be involved too.)
I have already (kinda) started it. Do you want the same skin? (just curious)
Last edited by nXIII (2010-09-20 15:03:15)
Offline
nXIII wrote:
I have already (kinda) started it. Do you want the same skin? (just curious)
We might or might not follow the Scratch 2.0 design, I guess, but I'm less concerned about that than about the innards. We should talk about it. Why don't you email us a progress report? Tnx.
Offline
↑ So cool!
If we get all of these features and a good speed, I won't need to learn another program (like Stencyl)!
EDIT: I wish there was some way I could contribute. I know I stink at programming and programming concepts compared to all of you, but I really want to help out. Of course, I don't want you TRYING to find a job for me, or waiting on me to figure out a job.
But if there is something not-to-complicated that you could use help with, feel free to ask me!
Last edited by shadow_7283 (2010-09-20 17:04:51)
Offline
UI Design!
I'll probably come across a lot of other jobs for you, too; I just haven't gone far enough in the project to know much about it yet. Sorry!
But if you would like to work on a new/improved UI, I would be happy to incorporate it into the project!
Last edited by nXIII (2010-09-20 17:19:32)
Offline
Cool! I'm not brilliant at graphics or anything, but I'd love to help plan out the design!
Last edited by shadow_7283 (2010-09-20 17:20:51)
Offline
nXIII wrote:
Well, right now I'm just looking into recreating Scratch's ObjStream in a PHP parser, which would then print the parsed file to the JavaScript.
Cool. Bear in mind that the project file format and the internal reprsentation are likely to change when we have first class sprites.
Offline
shadow_7283 wrote:
feel free to ask me!
I think that before anyone gets too far into writng code, Jens and I have to put together an overall design spec. (Jens, jump in here if I'm misrepresenting your view of the process.) Otherwise we'll end up with a bunch of not-really-compatible chunks of code that will need additional bits of glue code to make them sort of work together!
But, thanks, and stay tuned! (Plus of course there will be a long alpha test stage like last time, once there's something to test.)
Offline
P.S. A quick Google search nets one Scheme-to-Javascript compiler and several Scheme interpreters in Javascript. If someone wants to research these and make a recommendation about the best one (best in terms of speed and extensibility), that'd be really helpful.
Offline
bharvey wrote:
P.S. A quick Google search nets one Scheme-to-Javascript compiler and several Scheme interpreters in Javascript. If someone wants to research these and make a recommendation about the best one (best in terms of speed and extensibility), that'd be really helpful.
Scheme?!
JavaScript is a perfectly fine language! It doesn't need a Scheme interpreter! :)
Lambda example:
window.alert(function(f){return f(2)}(function(n){return n + 2)}));
Last edited by nXIII (2010-09-20 18:31:52)
Offline
Brian, forgive me please for the following a bit polarizing and even exaggerating reading of your very interesting post. My purpose is to try and clarify a somewhat differing perspective.
bharvey wrote:
...We might or might not follow the Scratch 2.0 design, I guess, but I'm less concerned about that than about the innards. We should talk about it. ...
This touches on some of what I called "delicate" issues. The future relation to Scratch is one of the crucial strategic decisions. I'm not sure how many people would be aware of BYOB's existence without having checked out Scratch's mods list - at least I wouldn't. Permit me to be skeptical about trying to compete with Scretch on a playing field where it truly shines (interface) or about reinventing some of the expected new and likely well greased wheels (interpreter). I'm also doubting whether there is a real evolutionary niche for an application that's "like" Scratch but with alternative graphical metaphors, with an all-inclusive target group (is that a target at all?) and with a "similar" (JS) but independent technology. I'm not saying it's not possible - two, three dedicated and talented people working together can achieve ambitious goals...
What I'd rather hope for is that the few available resources go where they are truly needed. That is not in redesigning a great design, or reinventing a technology already sufficient for its purpose. It is my belief that Scratch's current and likely also future limitations are mostly conscious and intentional ones and in line with its stated goals. The other ones they'll work out over time... Therefore the real opportunity that I can see here is in extending and complementing Scratch with additional features for well defined usage scenarios by leveraging (that is, waiting for) its upcoming technology and building both upon Scratch's well established user community (the teachers!) and its educational success (the older kids), rather than questioning the meaningfulness of focused targeting per se ("no floor, no ceiling") and aiming for a "silver bullet" general-purpose educational tool.
Offline
I was thinking about an improved Scratch interface, and I realized a flaw in the current one. Future versions of BYOB (or Scratch) should have a more standard-computer type interface.
For instance, a standard computer action is to click and drag to select. Unfortunately, Scratch doesn't have that, but think about how nice it would be to be able to select individual blocks to copy or delete.
Another important thing I think that needs to be added are shortcut keys. Honestly, if you want no ceiling, you are going to have to cater to those programmers how navigate with extreme speed through the use of shortcuts. Blender does a phenomenal job of this.
Some shortcuts for Scratch that I think should be added:
-Ctrl-s (save/save as)
-Ctrl-n (new)
-Ctrl-space (start project)
-Ctrl-shift (stop project)
-M when not typing input= motion
-C when not typing input= control
-L when not typing input = looks
etc.
One last feature to make it more computer-like.
Ctrl-f (find)
I know almost every Scratcher has wanted this at some point. A way to remove certain blocks with certain inputs from a Script.
Anyway, this is just something to think about. I know it probably isn't that high on a list of priorities, but I think it is still important.
Offline
shadow_7283 wrote:
I was thinking about an improved Scratch interface, and I realized a flaw in the current one. Future versions of BYOB (or Scratch) should have a more standard-computer type interface.
For instance, a standard computer action is to click and drag to select. Unfortunately, Scratch doesn't have that, but think about how nice it would be to be able to select individual blocks to copy or delete.
Another important thing I think that needs to be added are shortcut keys. Honestly, if you want no ceiling, you are going to have to cater to those programmers how navigate with extreme speed through the use of shortcuts. Blender does a phenomenal job of this.
Some shortcuts for Scratch that I think should be added:
-Ctrl-s (save/save as)
-Ctrl-n (new)
-Ctrl-space (start project)
-Ctrl-shift (stop project)
-M when not typing input= motion
-C when not typing input= control
-L when not typing input = looks
etc.
One last feature to make it more computer-like.
Ctrl-f (find)
I know almost every Scratcher has wanted this at some point. A way to remove certain blocks with certain inputs from a Script.
Anyway, this is just something to think about. I know it probably isn't that high on a list of priorities, but I think it is still important.
Well, I think the problem with this is that it moves too much toward text-based-ness. However, I at one point tried to accommodate this need through Auto, and autocompletion tool for Scratch. Example pic: (keystrokes shown in red between screenshots)
What I think the shortcuts should be: (you gave me some ideas!)
(most of these apply when nothing has keyboard focus)
Ctrl-s - save
Ctrl-n - new
space - toggle playing project (play/stop)
shift + space - pause/resume project
m - motion
l - looks
u - sound
p - pen
c - control
s - sensing
o - operators
v - variables
typing a number n (i.e. pressing 1 then 2) will attach the nth block in the current palette to the cursor (this saves the back, forth motion of dragging from palette to script
any arrow and scroll wheel - scroll through the pane the mouse is over
alt - similar to windows menus, switch keyboard focus to menu w/ accesskeys. (i.e. alt then f would open the file menu, use arrows to select choice)
ctrl + 1, 2, or 3 - go to the scripts pane (1), costumes pane (2), or sounds pane (3)
in costumes page/sounds page - use up/down to select a costume, then press e, c, or backspace to edit, delete, or copy; press enter to switch to the selected costume
Last edited by nXIII (2010-09-20 21:04:13)
Offline
Wow! Things were pretty quiet here for a while, but this topic seems to have caught fire.
nXIII wrote:
Scheme?!
JavaScript is a perfectly fine language! It doesn't need a Scheme interpreter!
Indeed, if Javascript didn't have lambda I wouldn't be contemplating this direction. (I can't speak for Jens.) But Scheme does have one big advantage: A Scheme program is a Scheme list, so you can take the code of your program and manipulate it. I think that would help encourage program-generating programs, etc.
shadow_7283 wrote:
Future versions of BYOB (or Scratch) should have a more standard-computer type interface.
Good idea, and it sounds like a perfect thing for you to work on once we have a framework in place.
marc_hr wrote:
The future relation to Scratch is one of the crucial strategic decisions.
Yeah, for sure. The thing is, Scratch 2.0 is still off in the vague future, and meanwhile, BYOB is really slow at running the kind of program I write, with lots of calls to recursive reporters. At least part of the reason for that is that the design of Scratch's evaluator (hence of BYOB's) privileges commands over reporters; Scratch wants everything that happens to happen visibly on the stage. So we really need a thoroughly new evaluator.
It's partly at the urging of Brian Silverman that we're pursuing doing it in Javascript. The Scratch Team will notice if we provide a solid Scratch-equivalent that way; it's only because they think it can't be done (for detailed reasons having to do with things like sounds) that they're planning to use Flash.
But if Scratch 2.0 comes out tomorrow, of course we'll base our work on it. I don't want to leave the Scratch community! I love the Scratch community; it's even more a work of genius than Scratch itself, I think.
What I think is clear is that further development based on Scratch 1.4 is an evolutionary dead end. Maybe there will be a BYOB 3.1; it'd be nice to have first class sprites quickly. But it's hard for me to imagine putting energy into a 3.2. (As it is, a lot of the documentation is stuck at the 2.99 level!) So the alternative to writing our own evaluator is to spin our wheels until Scratch 2.0 comes out.
Offline
Wow, this discussion is really taking off in a direction and an intensity that I didn't expect! Let me point out that we're not yet even starting this new project. Our main goal with BYOB has been and still is to convince the Scratch Team to take over BYOB's design of being able to build your own blocks and of first class procedures along with first class lists. In my dreams I fantasize about a Scratch with "no floor and no ceiling" and not about BYOB taking over the world. This has also been part of our discussions with the Scratch Team. Brian Silverman at one point asked us why we didn't want to invent our own environment, with a bigger stage and all, and Brian Harvey made a good case (I think) about not wanting to split the Scratch community, not separating beginners from advanced programmers. Isn't it just one the most wonderful and amazing happenings in all of the internet, how on this site you have both adults and kids, professors, lawyers, students, gamers, artists and musicians exchanging ideas about programming?
So, yeah, let's start thinking about rewriting BYOB in case Scratch 2.0 doesn't cut it. At times I am more pessimistic about this, because there was this strange consensus at the Scratch conference to take the emphasis away from programming, but I'm hoping that this is just a rhethorical "marketing" scheme and that Scratch 2.0 will be all I ever wanted it to be!
So, how do we start? I'm going to look into setting up a "lively" GUI framework in JS. I want to do this anyway for lots of reasons (I need to be doing something creative with this iPad they gave me). There are quite a lot of these frameworks already out there, including the "Liveley Kernel" written by my super hero Dan Ingalls, who has also been the principal programmer behind Squeak. So we'll want to look around and experiment for some time before really implementing an "application". And you can all help with that!
Once you get to know Brian it's hard not to become taken in by Scheme. In fact, I have read that JavaScript is largely based on Scheme. This is fantastic and I cannot wait to explore the possibilities that this implies.
Last edited by Jens (2010-09-21 05:19:25)
Offline
Jens wrote:
Our main goal with BYOB has been and still is to convince the Scratch Team to take over BYOB's design ... and Brian Harvey made a good case (I think) about not wanting to split the Scratch community ... There are quite a lot of these frameworks already out there ...
So, stupid me - I was preaching to the quire! Or was I? While I've never talked to the Scratch team, but just listening to you both Jens and Brian, I'm sorry to say, but I wouldn't hold my breath for them "coming aboard" ...
I have a feeling that the biggest show-stopper of Scratch 2.0 is none other than Scratch 1.4 itself. I heard once that "the greatest enemy of a good thing is a better one" - apparently it's no trivial task for the Scratch team to convincingly surpass their own achievement such as to justify a renewed effort.
The Scratch community to the rescue! Let them vote with their feet - ahm, rather, with their mouse-clicks downloading BYOB4 (or whatever you'll chose to call it)! Brian, maybe you should ask yourself not: "what can BYOB do for me?" but rather: "what can I do for my - ahm, ... !"
Seriously, please consider: The BYOB Jens is dreaming about and Brian might have seemingly lost hope for, could just be the single most important justification for another Scratch version to come out ...
BTW: Aren't we right now in Scratch's very own backyard (forum)? I'd be thrilled to hear one of their people comment on this thread! (How hard could that be ...!?)
Offline
@ bharvey & jens
To me, Byob as it is today is almost perfect, with an immense field of possibilities for all kind of programming and programmers. It benefits from decades of applications already written in the world of high-class languages and into the educational world (see Logo and conferences of 2010 Constructionism). It also benefits from the Scratch support where you can find "ad infinitum" examples of scripts in all domains (for example I've recently found on the Scratch site a script to display colors defined by its 3 components red, green, blue - see my Byob tutorial). For the time being there is no limit to the creativity with Scratch-Byob.
Obviously Scratch and Byob are not designed to write day-to-day "real life" accounting, stock or payroll handling, mobile phone or Ipad applications, but that is is another story. ( I have read that Google Android applications can now be written with one pick-and-stick language similar to Scratch ?).
Offline
xly wrote:
@ bharvey & jens
To me, Byob as it is today is almost perfect, with an immense field of possibilities for all kind of programming and programmers. It benefits from decades of applications already written in the world of high-class languages and into the educational world (see Logo and conferences of 2010 Constructionism). It also benefits from the Scratch support where you can find "ad infinitum" examples of scripts in all domains (for example I've recently found on the Scratch site a script to display colors defined by its 3 components red, green, blue - see my Byob tutorial). For the time being there is no limit to the creativity with Scratch-Byob.
Obviously Scratch and Byob are not designed to write day-to-day "real life" accounting, stock or payroll handling, mobile phone or Ipad applications, but that is is another story. ( I have read that Google Android applications can now be written with one pick-and-stick language similar to Scratch ?).
Yes. It's called app inventor. Google it.
You'll need a google account to use it. It's very cool.
Offline
marc_hr wrote:
...The BYOB Jens is dreaming about and Brian might have seemingly lost hope for...
Oh, I'm afraid that now we're really veering off into the wrong direction!
Marc, you see, we're all friends with the Scratch team! Mitchel is this epic visionary and designer and John Maloney and Brian Silverman are among the world's awesomest programmers, and all the members of the Scratch team are, in fact, incredibly brilliant and thoughtful geniuses. I was priviledged myself to be allowed to contribute to Scratch 1.4 as an external (hired) programmer, and Brian has been the driving force behind switching over from Scheme (his great love, as you might have noticed ) to Scratch in Berkeley's CS10 course,and he is constantly travelling to Boston meeting with the MIT gang all the time
We're really not competing with Scratch for users, because we consider ourselves to be part of Scratch. Of course it is our (Brian's and mine, and the community's) right to be enthusiastically expectant and even impatient about extending Scratch, but of course it is the Scratch designers' obligation to be extremely cautious and perhaps even reluctant about just that.
Otherwise Scratch would soon look and feel like MS Word crammed into Eclipse, with all those features that people apparently cannot do without, like copy & paste, multi-level undo and redo, multi-select, keyboard shortcuts for everything, list boxes, auto-complete, and whatnot. That would be a "professional" IDE, and we could be discussing all kinds of "advanced" and "secret" programming techniques and GUI tweaks in the forums, but it would surely be the end of Scratch.
So, let's just slow down a little and not fantasize about world dominance but stick to improving and supporting BYOB3, because people are actually using it. In the meantime there's nothing that keeps us from playing with JavaScript and HTML5, but I wouldn't call it a project yet, and probably won't for quite a long while.
Offline
OK, I see - I may have gone too far and inadvertently touched a nerve here. Sorry for that. But almost all of the assumptions, Jens, that you've been so vehemently distancing yourself from haven't even crossed my mind. Could be though that someone might have misunderstood it that way and you thought it due to set things straight.
I assume that Jens understood my intention but for those who might not have, just the bottom line:
As best friends might sometimes disagree it occurs to me that the Scratch team and the BYOB team have as of now not reached common ground on where and when the "future" should be unfolding. I was trying to raise the question whether the Scratch community should not be heard on this (or better: proactively given a voice) - since I truly believe that a certain carefully coordinated and complementary combination of the two would be really worth the effort and beneficial to all of us.
Offline
marc_hr wrote:
I was trying to raise the question whether the Scratch community should not be heard on this (or better: proactively given a voice)
Excellent point, Marc. Merging BYOB3 into Scratch 2.0 is currently ranked 5th on Scratch Suggestions, so let's all go and vote!
Offline
Yay! As I've already mentioned, I find it kind of silly that customizable user pages are wanted more than BYOB3.
Scratch isn't YouTube.
Offline
nXIII wrote:
shadow_7283 wrote:
I was thinking about an improved Scratch interface, and I realized a flaw in the current one. Future versions of BYOB (or Scratch) should have a more standard-computer type interface.
For instance, a standard computer action is to click and drag to select. Unfortunately, Scratch doesn't have that, but think about how nice it would be to be able to select individual blocks to copy or delete.
Another important thing I think that needs to be added are shortcut keys. Honestly, if you want no ceiling, you are going to have to cater to those programmers how navigate with extreme speed through the use of shortcuts. Blender does a phenomenal job of this.
Some shortcuts for Scratch that I think should be added:
-Ctrl-s (save/save as)
-Ctrl-n (new)
-Ctrl-space (start project)
-Ctrl-shift (stop project)
-M when not typing input= motion
-C when not typing input= control
-L when not typing input = looks
etc.
One last feature to make it more computer-like.
Ctrl-f (find)
I know almost every Scratcher has wanted this at some point. A way to remove certain blocks with certain inputs from a Script.
Anyway, this is just something to think about. I know it probably isn't that high on a list of priorities, but I think it is still important.Well, I think the problem with this is that it moves too much toward text-based-ness. However, I at one point tried to accommodate this need through Auto, and autocompletion tool for Scratch. Example pic: (keystrokes shown in red between screenshots)
What I think the shortcuts should be: (you gave me some ideas!)
(most of these apply when nothing has keyboard focus)
Ctrl-s - save
Ctrl-n - new
space - toggle playing project (play/stop)
shift + space - pause/resume project
m - motion
l - looks
u - sound
p - pen
c - control
s - sensing
o - operators
v - variables
typing a number n (i.e. pressing 1 then 2) will attach the nth block in the current palette to the cursor (this saves the back, forth motion of dragging from palette to script
any arrow and scroll wheel - scroll through the pane the mouse is over
alt - similar to windows menus, switch keyboard focus to menu w/ accesskeys. (i.e. alt then f would open the file menu, use arrows to select choice)
ctrl + 1, 2, or 3 - go to the scripts pane (1), costumes pane (2), or sounds pane (3)
in costumes page/sounds page - use up/down to select a costume, then press e, c, or backspace to edit, delete, or copy; press enter to switch to the selected costume
A much simpler way to acomplish this would be to have a block that would be set up like the old comment block. You would enter in some code, and then there would be an extra option in the right-button menu to 'get blocks' which would replace that block with the blocks the code represents. Anything not recognized would be replaced with another code block, containing the unrecognized code, so that a type-o can be fixed.
An example of some code you could use:
go to x: (-240) y: (0)
clear
pen down
repeat (480)
go to x: ((x position) + (1)) y: (([sin] of (x position)) * (100))
pen up
When used in a script, this block would run normally, as if it was the blocks it represents. This would be useful if you're making a really long script or script section, and you want to make sure that it works before youhave to edit the long script and cause lag.
I might post some mockups at some point, but I hope this is enough for now.
Offline
rubiks_cube_guy238 wrote:
A much simpler way to acomplish this would be to have a block that would be set up like the old comment block. You would enter in some code, and then there would be an extra option in the right-button menu to 'get blocks' which would replace that block with the blocks the code represents. Anything not recognized would be replaced with another code block, containing the unrecognized code, so that a type-o can be fixed.
An example of some code you could use:go to x: (-240) y: (0)
clear
pen down
repeat (480)
go to x: ((x position) + (1)) y: (([sin] of (x position)) * (100))
pen upWhen used in a script, this block would run normally, as if it was the blocks it represents. This would be useful if you're making a really long script or script section, and you want to make sure that it works before youhave to edit the long script and cause lag.
I might post some mockups at some point, but I hope this is enough for now. http://scratch.mit.edu/forums/img/smilies/smile.png
That would be quite difficult; for example, do we use python-like indentation for control structures, or do we use brackets of some sort? How is this parsed? Is it compiled at runtime, or is it ignored until you convert it to blocks? And how would you express, for example, a color argument?
Last edited by nXIII (2010-09-21 19:36:44)
Offline
nXIII, you really need to combine all of your squeak hacks and form the ultimate Scratch mod.
Offline