Smerge: A Version Control System for Block-based Languages

Smerge is a version control system for the block-based language Snap! that enables collaboration and tinkering in the K-12 classroom. It is designed with novice programmers in mind, making it easy to use for teachers and students alike.

Target group

K-12 computing teachers, programming novices.


Collaboration is a core practice of computational thinking. With Smerge, our goal is to enable collaboration in programming projects for novices while also challenging typical stereotypes of computer science.


Block-based programming is very popular for K-12 programming education for several reasons. However, there are limited solutions that allow for collaboration in the sense of working on a project simultaneously. To address this issue, we are developing Smerge, a tool for the classroom that combines intuitive and easy-to-use access with the power of version control in programming projects.

Project Outline

Professional software development would be unthinkable without collaboration. In particular, version control systems (VCS) provide unique opportunities for working together. VCS also offers many advantages in schools, e.g., no more “I forgot my stuff at home” or “my partner is sick, I can’t work on our project”. However, professional tools such as git have an enormous complexity that cause problems even for experienced software developers. In this project, a didactically reduced version control system for the block-based language Snap! is designed, implemented, and evaluated. In this way, even novice programmers can benefit from the possibilities of a VCS for collaboration and tinkering.
Principle Investigator

Prof. Dr. Tilman Michaeli


Prof. Dr. Tilman Michaeli,


Share it