imagine • program • share

Scratch Team Blog

This blog is now retired....

Tuesday, March 05, 2013

As we get closer to the release of Scratch 2.0,
we've decided to change the way we blog.
So this blog is now officially retired!

You can check out our new blog at:
Scratch On!

Meet the Scratch 2.0 Development Team

Friday, November 30, 2012

Scratch 2.0 is nearing the beta test phase, so it seems like a good time to introduce the small team of designers and developers who are working hard to finish it!
Mitch Resnick
I’m a professor at the MIT Media Lab, and I lead the Lifelong Kindergarten research group. In addition to developing Scratch, our group helps develop robotics kits like LEGO Mindstorms. In fact, I’m officially the LEGO Professor at MIT. I feel like I have the best job in the world.
Natalie Rusk
I am part of the group designing the Scratch 2.0 project editor. I also am developing support materials (such as the new “tips window”). In addition, I research and write about motivation for learning. A bit of Scratch trivia: I named the sprite “Gobo.”
John Maloney
I’m the lead programmer for the Scratch project editor and player. I’ve written a bunch of code, but many others have made major contributions over the past ten years. Some of my favorite features of Scratch 2.0 are: cloning, procedures, turbo mode, fast lists, and video.
Champika Fernando
I’m a Master’s student at the MIT Media Lab. I’ve been working on developing and designing the Scratch 2.0 website and helping to design the new vector-based Paint Editor. I grew up in Canada, and in my spare time I enjoy cooking, cycling and going on adventures. I also love waffles :)
Sayamindu Dasgupta
I am a PhD student at the MIT Media Lab. I developed the backend of the Scratch 2.0 website, and the Cloud data system. The Cloud data system is also a part of my research, which covers programming with data. I grew up in Kolkata, India, and when not around computers, I like to take photos, fly kites, and cook.
Ricarose Roque
I am a PhD student at the MIT Media Lab. I help with the design of the community website and study ways to support creative collaboration. I also love to design Scratch workshops, especially for families. I was born in the Philippines and grew up in Los Angeles. In my free time, I enjoy hanging out with my friends and family and love to make/eat waffles and tacos.
Amos Blanton
In addition to managing the current Scratch website, I help with the design of the Scratch 2.0 website and support materials, and reboot the servers when they need it. I like hiking, playing with my 2-year-old son, and creating fun workshops with Scratch and LEGO WeDo.
Shane Morgan Clements
I’m new to the Scratch team. I’ve really enjoyed working on the costume editor and website, and I'm looking forward to seeing what everyone creates using the new vector graphics tools. My home is just outside of Boulder, Colorado, and I enjoy spending time in the mountains with family and friends.
Several other people were actively involved in earlier stages of the Scratch 2.0 development process, including Paula Bonta, Karen Brennan, Gaia Carini, and Brian Silverman. In addition to all the development work, there are lots of folks whose efforts help make Scratch 2.0 possible - like Paddle2See (who is working tirelessly to isolate glitches in the new Flash player), Cheddargirl, and many more people who have contributed to Scratch. This includes our community moderators and all the Scratcher alpha testers who’ve volunteered their time and energy to give feedback and isolate bugs in Scratch 2.0.

While there’s still lots of work to be done, we’re planning on announcing the timetable in December for the beta version and the final release. (Believe us, we’re eager to get it done too!)

Scratch 2.0: 4 new features

Monday, October 15, 2012

Hey all you Scratchers! This is Scimonster, Lightnin, silvershine, Lucario621,  Hardmath123, and kayybee, members of the Scratch 2.0 alpha testing team. We're here today to answer some questions you had about new features in Scratch 2.0! Please note that anything in this post is subject to change before the final release.

Cloud Data

One cool new feature of Scratch 2.0 is cloud data.
Cloud variables and lists are similar to ordinary variables (and lists), with the exceptions that:
  • The values are stored on the Scratch servers.
  • They will keep their values until changed, even if you leave the project.
  • They update almost immediately for everyone who is viewing the project and can be updated by everyone viewing it.
  • When other Scratchers “look inside” your project, they can edit cloud variables’ data (but only temporarily)
As such, cloud data is useful for many types of projects:
  • Surveys
  • High scores / high score lists
  • Collaborative projects
  • Collaborative and multiplayer games
This opens up a whole wealth of new Scratch project ideas!
You might be wondering how to create a cloud variable. It's very simple: when you click the “make a variable” button, there will also be a check box that allows you to create a cloud variable.

User ID

One requested feature was a way to know who was viewing the project. This has been implemented, but not in a way most envisioned it. Instead of there being a username reporter that reports the username of the viewer, there is a user ID block that reports the viewer number that you were (i.e. the second person to view the project has ID 2). An anonymous user has an ID of 0. Using IDs instead of usernames addresses some privacy and security concerns about collecting that kind of data.
What can this block be used for if it doesn't give you the name?
  • A personal high score
  • Preventing users from voting twice in a survey
  • Saving your progress in a game or preferences in a project
  • And much more!

Time blocks

Another feature that has been highly requested is a way to get the date and time. There are, as of the time this was written, two date/time blocks. The main one is a reporter, current (minutes). It has a drop down menu with: year, month, date, day of week, hour, minute, second. It returns the current value for your local timezone.
Some uses for this block are:
  • A clock in an OS
  • An alarm clock project
  • A calendar
Another block is days since 2000. It reports how many days (with a long decimal) since January 1, 2000.
Some uses for this block are:
  • Countdowns
  • Synchronizing events for all users in a game
  • Situations where all users, even those in different time zones, should see the same time, especially when using cloud data

Run a block without screen refresh

The reason people put projects in turbo mode is usually to run just a couple of their scripts faster. The Scratch Team has been working on ways to let the project creator make parts of their code run in “turbo” mode (which just means they run without pausing a lot to update the screen, also known as atomicity). First they tried adding a “warp speed” C shaped block called “Run all at once”, an idea inspired by Snap, a more advanced program inspired by Scratch. But they were concerned it could be confusing to new users.
The current plan is to make “run without screen refresh” an option for custom blocks you create. If you check this option, the scripts in the block will run without pausing to refresh the screen - making them much faster. This gives the programmer more control over which scripts run at what speeds. It's even better than a turbo on/off block!

What do you think of these features? Are there improvements you’d like to see? Share your thoughts on this forum thread.

Scratch 2.0 website development

Monday, April 23, 2012

Scratch 2.0 is a collaboration, with different people working on different parts of the same project. Most of the Scratch Team's time and effort is spent thinking carefully about how to make Scratch 2.0 easy and intuitive for people who are new to programming. Developers help turn those ideas into working code.
The movie below is a visualization that shows how one part of Scratch 2.0 - the website code - has grown and changed as we work on it. Each dot represents a file that's part of Scratch 2.0. The figures that dart in and out, making changes to existing files and adding new ones, are the developers. As you'll see, Champika Fernando, the lead developer of the Scratch 2.0 website, has changed a lot of files, along with John Maloney and Sayamindu Dasgupta. And of course, the entire Scratch Team has been thinking carefully about the design of things (something which this visualization does not show).

Lots of Scratchers have been asking us when Scratch 2.0 will be ready. It's still too soon to name an exact date, but we're planning to launch Scratch 2.0 later this year. As soon as we have a timetable for release, we’ll post an announcement in our forums.
Got questions or comments? You can join in the discussion about this blog post on the Scratch forums.

Scratch 2.0 Update: New Name, New Mascot!

Sunday, April 01, 2012

Edit: We hope you enjoyed this April Fools Joke! And don't worry, Scratch 2.0 will still be called Scratch.

Cats were once very popular on the internets, but that time has passed. It's time to update our look and feel before we release Scratch 2.0! We thought long and hard about what new animal to choose. Then we realized the answer was staring us in the face every time we browse the webs: Ponies. Cats Scratch - something that's mean and hurtful. But what do ponies do? They Neigh! So Scratch 2.0 will no longer be called Scratch - it'll be called Neigh!
Got questions or comments? Share them on this forum thread!
Want to read a longer (14,000 word - TL;DR) explanation of why we made the change? You can find it here.

Scratch 2.0: Project Page and Project Editor

Thursday, February 16, 2012

Many Scratchers have asked to see screenshots of what Scratch 2.0 looks like so far, so we thought we’d give a preview of two important pages: the project page, and the project editor. We’re still making lots of changes to Scratch 2.0 -- it is just entering what we call “Alpha stage,” which means it's a very rough draft that needs a lot more work. So the images and descriptions posted here are likely to change somewhat before the release of Scratch 2.0.

The Project Page

click for larger version

Just like on the current Scratch website, you can check out a project, love and favorite it, add it to a gallery, or leave a comment. However, in Scratch 2.0, the project editor is built directly into the website. That means that you can click the See Inside button to check out the scripts that make the project run in the Scratch project editor. This makes it easier to see how a project works, and remix the code.

The Project Editor

Here’s the same project when viewed in the project editor, by clicking See Inside from the project page shown above.

click for larger version

A few of the changes / new features of the 2.0 Alpha editor:
  • The block categories have been changed to make room for a few new blocks, and the ability to create your own blocks based on custom scripts.
  • The paint editor now uses vector graphic images by default.
  • The sound editor will allow very basic editing of sounds.
In the lower right corner of the image above, you'll see a new area that we're currently calling the backpack. The backpack can be used to transfer scripts, sprites, and costumes between projects. For example, if you find a project with a sprite that moves in a way that you really like, you can "See Inside" the project, and drag the script it uses into your backpack to make a copy. When you return to your project, you can open the backpack and drag the script into your sprite. We’re still not sure if “backpack” is the right name for this feature -- some have suggested we use “clipboard” instead. If you have suggestions for a better name, please let us know on the forum thread that corresponds to this blog post.

As we said in the beginning: We are still making lots of changes to Scratch 2.0, so the images and descriptions posted here are likely to change somewhat before the release. If you have more questions about Scratch 2.0, check out the Scratch 2.0 FAQ. If you don’t find an answer there, you can feel free to post your questions on this thread in the forums. We still don’t have an official release date yet, but we plan to let Scratchers test it out at Scratch Day 2012.

Here's What 44 million Scratch Scripts Look Like

Monday, August 08, 2011

In preparation for our 2 million project mark celebration and as part of my research on remixing, I have been analyzing the use and reuse of components in the Scratch Online Community. For example, I have looked into which images and programming blocks are more commonly used. Now I wanted to go one step further. I wanted to know what are the most common programming constructs or scripts created by the young Scratch programmers. So here it is, a word cloud-like representation of the 100 most common scripts.

Click for larger version

Looks Matter
By far, the most common scripts involve some kind of looks manipulation such as hiding/showing a sprite and switching its costumes. This is probably because controlling what is displayed on the screen is useful and necessary for most types of projects, from games to animations. Also, these scripts often come in pairs: for every "hide" I would expect a "show".

1st place, 9.16%
The most commonly used script (9.16% of the total) is a two block script that hides a sprite when an event occurs. The names of the events vary widely. But just to give you a an idea of the types of events we're talking about, the most common events that trigger this script are "Game Over" (2.54%) and "start" (2.44%).

Below you will see a list of the most common scripts that have something to do with looks, as well as their position in the ranking and percentage of the total, both based on their frequency.

2nd place, 4.84%


4th place, 3.28%

6th place, 1.36%

8th place, 0.95%

9th place, 0.73%

11th place, 0.63%

14th place, 0.53%

15th place, 0.47%

17th place, 0.42%

18th place, 0.40%

21st, 0.35%

As you can see from the small percentages, the frequency distribution of scripts appears to be a long tail distribution. This is to be expected given the large number of combinations that are possible. One might expect a similar distribution if we were to look for the most popular phrases in the English language (probably an even longer and flatter tail).

Interacting via the Keyboard
16th place, 0.46%
It is nice to see that interactivity ranked highly as well. After all, interactivity is one of the features that distinguishes Scratch projects from, say, videos or pictures. You can see that some of the scripts above involve interactivity. For example, the 11th most common script is probably used in interactive stories that function like slideshows. I say this partly because I have seen this quite often and because the most commonly used keys that trigger this script are "space" (36.55%) and "1" (6.66%).  The use of the "space" key to interact with projects has developed into a cultural norm that participants learn in the Scratch Online Community (possibly influenced by Microsoft PowerPoint as well).

While slideshows are interactive, we can see even more complex interactivity in the 16th most popular script. This script is often used in games to let a player control a character using the keyboard. The most common arguments used are "right arrow ,  direction 90° and a move 10 steps" (16.21%) followed by the equivalent "left arrow  and direction -90°" (16.81%).
27th  0.25%
(with sample arguments)
Update - I was asked about script #27. Here is what I found.
Despite not being obviously interactive, the 27th most common script represents a form of interactivity because one of its arguments is a variable changed by pressing the arrow keys. As we can see in this this project (the very first one to use this script), these blocks are typically used to control the horizontal position of background elements on on a scrolling background game.

Background Sound

13th place
I was a bit surprised to find a script related to sound ranked so highly. I guess both animations and games often have some sound playing continuously in the background. Looking more closely, I was even more surprised to find that the sounds looped more frequently are not music files imported into Scratch (i.e. commercial songs) but recordings created within Scratch using the microphone. The most common sound name played with this script is "recording1" (3.82%) followed by "one1" (1.08%).

Signs of Experimentation
You will notice that some of the scripts in the script cloud are single hat blocks. I was debating whether to include them or not. Technically, I considered them to be scripts even if they don't have any other blocks underneath. I decided to include them because it is quite telling how often people drag a hat block and leave it unused. Compared to other languages, Scratch is quite forgiving and lets people do this without any big repercussions. I would like to think these unused hat blocks represent moments of tinkering and experimentation, something that we value a lot in Scratch.

3rd, 4.73%

5th, 1.44%

12th, 0.63%

10th place, 0.68%
After talking to some people, I did decide to leave out the script that had the comment block by itself. For several technical reasons it was identified as a script by the analysis I ran and it's in the 10th position in the list (0.68%). The use of the comment block was both surprising and encouraging. Partly because it was added recently so a lot of projects back in 2007 and 2008 did not even have the option of using it.


Equivalent scripts.
Arguments are ignored
For the past few years, I have been collecting a massive database with information about the components of each version of every project uploaded to the Scratch website. Among other things, this database has the human-readable representation of the scripts for each sprite. As you might know, a sprite can have zero or more scripts, so I started by extracting each script associated with every sprite and created a new database table for it. This new table has a record for every script that comes with its the human-readable version, the id of the project, its version number and the id of the sprite, among other fields.  As I did this, I also added a column to store a version of the script without any arguments. This way, scripts with different arguments but with the same block sequence are considered as equals. This new database table of scripts has more than 44 million scripts and close to 1.7 million unique projects out of a total of 1,883,872 projects (90% of projects have scripts). If you are interested in looking at the data, please check out this spreadsheet and let us know if you find any other facts worth mention (or any mistakes!).

This analysis was possible thanks to the work of former MIT student Rita Chen and members of the Scratch community including MyRedNeptune and the active Scratch Wiki editors Jonathanpb, Scimonster and BWOG. Thanks gals and guys!