GP is an extensible, general-purpose blocks language currently under development. As GP users (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.

For example, a user interested in music might extend GP with blocks to read, manipulate, and play musical scores (e.g. MIDI files). A user interested in ecology might create a simulation showing the shifting balance between forage plants the species that consumes them. A user interested in collaboration might create a cloud-based voicemail program.

This upward path 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 additional commands and facilities to allow their students to explore specific domains. For example, Mark Guzdial, a Computer Science professor at Georgia Tech, has extended GP with blocks to manipulate images and sound recordings, allowing students to learn programming using his “media computation” curriculum.

However, GP has ambitions beyond computer science education. A long-term goal of the GP project is to support deployment of GP projects as double-clickable applications for both laptops and mobile devices. This could make GP an attractive tool for adults who are not professional programmers yet who could use “a little programming” to help with their profession or hobby. Just as Hypercard allowed millions of people to create useful personal applications such as address books, recipe files, and music collections, GP may eventually allow people to create custom useful shared-data applications such as meeting schedulers or workout trackers.

We hope to make GP 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 creating projects using existing facilities (“authoring”) to extending the GP system with new facilities (“extending”) 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 developers – John, Jens, and Yoshiki – have decades of experience with blocks-based programming systems for novices (Etoys, Scratch, and Snap!) and with Smalltalk systems. John was the lead developer for Scratch from its inception in 2002 through 2013, and one of the original creators of Squeak Smalltalk. Jens worked on Scratch and later created Snap!, a variation of Scratch being used by UC Berkeley as the basis of a new AP computer science course. Yoshiki has created a number of programming systems for children and adults in Squeak other languages and led the effort to deploy Etoys on the XO computer for the One Laptop Per Child project.

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