GP is an extensible, general-purpose blocks language that is powerful yet easy to learn. As GP learners (ages 12 to adult) gain experience, they can add new commands and features to GP — simultaneously learning concepts like object-oriented programming — all while continuing to use the same blocks-based programming system that they started with.

GP can be used for a wide variety of tasks. For example, a musician might write a program to manipulate and play musical scores. A biology student might create a simulation showing the shifting balance between forage plants and the animals that eat them. A teenager might create a cloud-based voicemail application and share it with their friends.

GP was inspired by Scratch, a blocks language created to introduce programming and computational thinking to young people ages 8 to 16. Scratch recently climbed into the top 20 most popular programming languages in the TIOBE index ( The Scratch website has 16.6 million registered users who have shared over 20 million projects (

Scratch is easy to learn. However, Scratch is aimed at creating games, stories, and animations and sharing them on the Scratch website. In contrast, while GP is not quite as easy to learn as Scratch – GP has about 350 commands (versus the 150 of Scratch) and introduces concepts like object-oriented programming – its additional commands and concepts support a wider range of applications, and GP applications can be deployed as double-clickable applications or on web pages. A key part of our research agenda is to explore this tradeoff between ease of learning and generality.

As GP learners grow in knowledge and experience, they can create extensions that add new commands and features to GP. This upward path, along with its generality, makes GP suitable for Scratch programmers looking for new horizons. We have used GP in both school and after-school settings with children who already knew Scratch. Our experience suggest that the transition from Scratch to GP is smooth.

Educators can extend GP with their own commands and facilities to allow students to explore specific domains. For example, Mark Guzdial, a computer science professor at Georgia Tech, has extended GP with blocks to manipulate digital images and sounds, allowing students to learn programming using his “media computation” curriculum.

However, GP has ambitions beyond computer science education. GP’s ability to deploy applications could make GP an attractive tool for adults who are not professional programmers yet who could use “a little programming.” Just as Hypercard allowed millions of people to create custom applications such as address books, recipe files, and music collections, GP may allow ordinary people to create applications such as cloud-based meeting planners, custom interfaces to a real-time databases (e.g. parking availability), and personal fitness trackers.

We hope to make GP almost as easy to learn as Scratch yet with the generality and power of languages like Smalltalk and Python. We also hope to make the transition from authoring projects using existing facilities to extending GP with new facilities as seamless as possible. To that end, all the code of GP system itself (aside from a small virtual machine) can be viewed, edited, and debugged as GP code in the the GP environment itself.

The GP team has decades of experience with both self-supporting Smalltalk systems and blocks-based programming systems for novices. John was one of the original creators of Squeak Smalltalk and the lead developer of Scratch for its first dozen years. Jens created Snap!, a variation of Scratch that is being used by UC Berkeley as the basis of a new advanced placement computer science course. Yoshiki created Kedama, a Squeak-based massively parallel simulation system, and led the deployment of the Etoys blocks based language on the One Laptop Per Child XO computer.

We plan to make a beta version of GP available to early adopters around mid-2017.