10 Sparks that Lit the Flame of Scratch
15 years and millions of users later, here’s what led to MIT’s launch of a programming language and online community with Scratch
By Mitchel Resnick | Medium
This year is the 15th anniversary of the launch of the Scratch programming language and online community — and also the 20th anniversary of when my Lifelong Kindergarten research group at the MIT Media Lab started working on Scratch. Scratch has grown beyond what we could have imagined in the early days. Last year, more than 30 million people around the world programmed and shared stories, games, and animations with Scratch.
What were the early explorations and design decisions that contributed to the long-term growth and impact of Scratch? This anniversary year seems like a good time to take a look back and reflect on the early days of Scratch, leading up to the 2007 launch. Many, many people, activities, and events have contributed to the success of Scratch over the years. Here, I describe ten of the initial “sparks” that lit the flame of Scratch, highlighting some of the ideas and interactions that inspired us as we began our work on Scratch.
- Logo and LogoBlocks
The Logo programming language was, in many ways, the most important inspiration for Scratch. Developed by Seymour Papert, Cynthia Solomon, and others, Logo was the first programming language designed specifically for children. With Logo, children could create graphical patterns and artwork by writing programs to control the movements of a “turtle” (see below). Logo was based on Seymour’s “constructionist” approach to learning, which emphasized the importance of children creating and making things based on their interests. I began working with Seymour when I arrived at MIT in 1983, and I was deeply influenced by his ideas.
As personal computers were introduced in K-12 schools in the 1980s, Logo became one of the most popular pieces of software. But by the 1990’s, the growth of Logo had started to slow. One problem was that Logo, like most programming languages, required children to learn obscure punctuation rules, such as where to put colons and square brackets. This distracted from the most important ideas and goals of programming.
I began talking about this problem with Brian Silverman, then the chief scientist at Logo Computer Systems Inc., which developed the most popular commercial versions of Logo software. Brian and I began exploring graphical approaches to programming. Over the previous decade, we had been collaborating with the LEGO company, so it was natural for us to use a building block metaphor: children could build computer programs out of graphical building blocks, much as they built houses and castles out of physical LEGO bricks. With these graphical blocks, children would no longer need to learn obscure punctuation rules. In 1995–96, Brian and I supervised Andy Begel on his MIT undergraduate thesis, in which he implemented a working prototype of a building-block programming language to control motors and sensors. We tried out the prototype, called LogoBlocks, with children and educators, and they found it engaging and easy to use. We became committed to pursuing block-based approaches to programming.
2. Squeak Etoys
Around that time, several other groups were also working on graphical programming languages for children, including Alice (from Randy Pausch and his group at CMU) and AgentSheets (from Alex Repenning and his group at University of Colorado). My MIT research group was most intrigued with Squeak Etoys (see below), developed by Alan Kay and his group at Disney. We were inspired by the “liveness” of Etoys: children could change their programs even as they were running and see the effects right away. There were also ways for children to share their Etoys projects online — and look inside and learn from one another’s projects. And we appreciated how Etoys made it easier for children to program audio, music, and images, connecting with their interests in creating and manipulating media.
Brian Silverman and I asked Alan if he’d be willing to meet and explore ways that we might collaborate. Alan came to Cambridge in November 2001, and the three of us spent a weekend together, including discussions over several meals at Mary Chung’s restaurant. Alan was interested in expanding Etoys to include features from our StarLogo programming language, a version of Logo that allowed people to simulate bird flocks, traffic jams, and other systems with many interacting parts. But Brian and I were more interested in working on a language that would engage a broader range of young people in a broader range of projects. At the end of the weekend, Alan suggested that my Lifelong Kindergarten research group at MIT work separately on our own programming language, and he encouraged us to use ideas and open-source code from Etoys whenever we found it useful. By working on separate projects, but continuing to exchange ideas and code, Alan felt that we would all learn more. Brian and I agreed with Alan’s suggestion.
3. Computer Clubhouses
In January 2002, two months after the weekend with Alan, I traveled to India with Natalie Rusk to visit the first Computer Clubhouses that were opening in India. A decade earlier, I had helped Natalie start the first Computer Clubhouse in Boston as an after-school center where youth from low-income communities, ages 10 to 16, could learn to express themselves creatively with new technologies. With support from the Intel Foundation, the Clubhouse network was in the process of expanding to 100 sites in 20 countries, always keeping the focus on providing creative learning opportunities for youth from marginalized communities (see below).
As we visited Clubhouses, Natalie and I were delighted to see how Clubhouse youth worked on creative projects using tools like Photoshop. But programming tools were not very common at Clubhouses. It’s not because Clubhouse youth didn’t want to program; in fact, they wanted to work on many projects that required programming, like interactive games and animations. But existing programming tools were either too difficult to learn or didn’t provide the capabilities they needed for the projects they wanted to create. While in India, I talked with Natalie about my recent conversations with Brian and Alan, and we discussed how the Clubhouse community could serve as a focus in our efforts to design a new programming language. We were both excited to move forward on the project.
4. Early Design Decisions
I love the initial stages of a new project. There are so many possibilities to consider, and lots of big decisions to make. As we got started on Scratch in 2002, the core design team included Natalie, Brian, myself, and John Maloney, who had previously worked as a lead developer on the Squeak Etoys team. Many others in our Lifelong Kindergarten group also contributed in early design meetings, including international graduate students Leo Burd (from Brazil) and Oren Zuckerman (from Israel). We used a very iterative approach. Just as we hoped that Scratch would engage young people in a playful, tinkering-style approach to designing games and animations, we took a similar approach in designing Scratch itself, constantly developing new prototypes, trying them out, getting feedback from others, and making revisions based on what we learned. Many different people provided ideas and feedback on the prototypes: MIT students in our research group and courses, young people at Computer Clubhouses, educators in our networks, and many others.
One important decision we needed to make early on: Should Scratch games and animations be 3D or 2D? Some MIT undergraduates working with us strongly lobbied for 3D. They had grown up playing 3D video games, and they felt that young people would expect 3D and might find 2D boring. But we decided to go with 2D for Scratch, since that would open up more possibilities for young people to create their own characters and backgrounds, and import images they found on the web. We felt that young people would be most excited to work on projects with images that they had created or selected themselves, even if the images had a less professional look.
There were so many other issues to consider: should Scratch programming blocks connect horizontally or vertically? should there be a single programming area, or a separate one for each character (or “sprite”)? how could you program different actions to happen in parallel? how should different sprites communicate and coordinate with one another? what types of data structures should we include? should each programming block be a fixed shape (what we called the “lucite test”, as if you could cut them out of lucite), or could a block change shape as you added other blocks to a program? should there be a way to embed video in Scratch projects? what tools should we provide for creating, editing, and integrating sounds, images, and other media?
Throughout the design process, we relied on regular “playtests” to get feedback and suggestions. That is, we provided young people with our latest Scratch prototypes, watched how and what they created, observed what they enjoyed and what they found frustrating — and then revised our prototypes based on these experiences. We wanted Scratch to engage young people from many different backgrounds and in many different contexts, including homes, schools, community centers, libraries, and museums. We put a special priority on engaging young people from marginalized communities who hadn’t previously had opportunities for creative learning experiences with new technologies. So we organized many of our playtests at Computer Clubhouses: our MIT team made regular visits to Clubhouses in the Boston area, and a team of researchers at UCLA, led by Yasmin Kafai, worked closely with Clubhouse staff and youth in Los Angeles.
Some of our most memorable and rewarding playtests took place at the Clubhouse Teen Summit, an every-other-year event in which hundreds of young people from Clubhouses around the world come to Boston for a week. The Teen Summit in the summer of 2004 (see photos below) was our first big Scratch workshop. Teens from different Clubhouses collaborated to create a wide variety of animations and games, giving us confidence that we were on the right path in our design of Scratch. By the time of the Teen Summit in 2006, Scratch was more fully developed, and we were excited to see how Clubhouse youth from around the world brought their own images, music, and ideas into their Scratch projects, such as an interactive music-dance project based on the recently-released song Chicken Noodle Soup (see screenshot below).
6. Scratch Community
From the beginning, we wanted sharing and collaboration to be a central part of the Scratch experience. We recognized the importance of social interaction in the learning process, and we were concerned that computing (and programming in particular) had long been viewed as a solitary experience. We believed that the internet could open new opportunities for young people to learn with and from one another. But the internet was still in its infancy. YouTube and Twitter didn’t exist yet. Many schools and homes were just getting connected. We wanted Scratch to support sharing and collaboration online, but we didn’t know the best way to do it.
Our Lifelong Kindergarten group experimented with possible options for a couple years. Then, in 2005, one of the graduate students, Andrés Monroy-Hernández, began exploring Flickr, a photo-sharing website that had just launched. Andrés made a suggestion: Why couldn’t young people share Scratch projects online the same way that people shared photos on Flickr? Today, this approach might seem obvious, but it was a novel idea at the time. Andrés took the lead on the development of the Scratch website and online community — internally using the code name Scratchr, as a nod to Flickr (see below).
Scratch became the first programming language with its own integrated online community. We designed the website so that young people could download, remix, and comment on one another’s projects. We wanted the community to serve as a source of inspiration and feedback: young people could see what others were creating (and borrow pieces of the code for their own projects), while also receiving suggestions and encouragement from others. In some ways, the Scratch online community was our attempt to bring the creative, caring, collaborative spirit of Computer Clubhouses to the online world. We knew that we needed to create a friendly, respectful community, so that young people would feel comfortable and safe sharing and collaborating with one another.
7. The Scratch Cat
When we started working on our new programming language in 2002, Oren Zuckerman suggested the name Scratch to evoke the type of activity we wanted to support with Scratch. Just as hip-hop disc jockeys use a “scratching” technique to mix together clips of music, we wanted Scratch to enable young people to mix together pieces of media in creative ways. We imagined that young people would not start from a blank slate (not “from scratch” — a common misinterpretation of the name), but rather by building on the work of others and their own previous work.
In early Scratch prototypes, we used a top-down view of a cat as the default character. We selected a cat partly because of the way cats like to scratch, and we used a top-down view as a carryover from the Logo programming language, which used a top-down view of a turtle. In programming with Logo, children controlled the movements of the turtle to draw geometric patterns on the screen. But we had different plans for Scratch: we hoped that people would use Scratch to create animated stories, so a side-view made more sense than a top-down view. We hired a local designer, Wing Ngan, to sketch some possibilities. At first, we asked Wing to create a fantasy character. We liked some of his fantasy characters (see below, left), but we ultimately decided it would be better to use a familiar animal, so we asked Wing to draw some cats (see initial sketches below, center). After many iterations we finalized the Scratch Cat (below, right). We decided not to give the cat a name since we wanted children to feel comfortable deleting the cat and using different characters (or “sprites”) in their projects. We added the earlier fantasy character to the library of sprites (with the name Gobo), and it became one of the most popular sprites in the library.
8. Sample Projects
We knew that sample projects would play an important role in the rollout of Scratch. Most young people had never programmed before, so they wouldn’t know what they could create with Scratch. We felt that sample projects would be an important source of inspiration, providing young people with a sense of what’s possible. Also, we had seen that many young people prefer to learn new skills and techniques by exploring examples rather than following a lesson or tutorial. We wanted to provide a diverse range of sample projects, so that young people with many different interests and backgrounds would all see ways that they’d like to create with Scratch.
The wonderfully creative graduate students and researchers in our Lifelong Kindergarten group put together an initial set of sample projects highlighting the range of possibilities with Scratch. As more young people started using Scratch, we added some of their projects to the collection of sample projects, including an interactive adventure story created by a girl in Germany, and a virtual dog simulation created by a girl in Singapore (see below). We organized sample projects into thematic categories: animation, games, greetings, interactive art, music and dance, simulations, speak up, and stories. Over the years, many young people have told us that these sample projects helped them as they were getting started with Scratch.
9. The Launch
When we scheduled the public launch of Scratch for May 14, 2007, we weren’t quite sure what to expect. Our playtests had been encouraging, but would young people come to our website — and, more important, would they stay engaged? From the beginning, we had committed to providing Scratch for free, so that cost would not be a barrier. But would young people, and their parents and educators, find it a worthwhile way to spend their time?
A journalist from BBC News in England visited us the week before the launch, and said that they would publish a story about Scratch on May 14. We opened up our website on the evening of May 13, so that it would be ready when the BBC News article was published the next day. We watched the traffic on the site gradually increase for a few hours, and everything was working well. So we went to sleep feeling quite happy…. until early the next morning.
I woke up around 5:00am (10:00 am in London), and saw that the Scratch site was down. The BBC News article had been posted, and other sites were linking to it, leading to a surge in traffic that our servers couldn’t handle. It was an example of what some people called the Slashdot Effect: online publicity leading to overwhelmed servers. I contacted Andrés and we made an early-morning visit to the Media Lab to deal with the servers. Fortunately, Andrés was able to make some changes in our server configuration, and the site was back up and running — though we needed to continue to improve our server infrastructure over time, as traffic to the site continued to increase.
Over the following week, all of us on the MIT Scratch Team (see below) spent hours and hours monitoring activity on the Scratch site — and also adding comments and suggestions to new projects, to set a tone for supportive and caring interaction in the online community. We were delighted by the diversity and creativity of the projects that young people around the world were creating and sharing with Scratch — and by the way that young people were remixing and commenting on one another’s projects. The previous five years had been a great team effort in conceptualizing, designing, and developing Scratch, and it was wonderful to see how our creation was helping to unleash young people’s creativity.
10. More and More Sparks
In the years since the launch, there have been many more sparks, including two new generations of Scratch (in 2013 and 2019), a companion app for younger children (ScratchJr), a wide variety of resources and events to support and engage young people, families, and educators (including Scratch Cards, ScratchEd, Scratch Conferences, and Scratch Day), and an incredible collection of creative staff members and generous funders. To support and sustain the continued growth of Scratch, the Scratch team moved out of MIT in late 2019 and into a separate non-profit organization: the Scratch Foundation.
Since the launch in 2007, annual activity on the Scratch website has grown by a factor of 250, an average growth of 45% per year. But the mission and vision of Scratch have remained the same: to provide young people with digital tools and opportunities to imagine, create, share, and learn — and, through these activities, to spread creative, caring, collaborative, equitable approaches to coding and learning around the world. Looking back, the first five years of Scratch, from 2002 to 2007, will always stand out as a very special time. But I am confident that there will be many more sparks in the future that will enable Scratch to continue to expand creative learning opportunities for young people around the world.
Originally published at https://mres.medium.com on May 2, 2022.