How to Smerge...
Smerge is a version control system for the block-based language Snap!, which enables collaboration and tinkering in the classroom. It's tailored to novice programmers and therefore easy to use for teachers and students. What we wanted to avoid was making a feature-overloaded git clone.
The use of Smerge is also explained in this video (English subtitles available) in addition to the following instructions
A Badger works on his sett, containing a lot of tunnels and chambers, with all his family members and is gradually expanding it over years.
We proceed in exactly the same way while programming: our progress and the further development of the program from version to version we can also present as a "badger's sett". In this example, we are developing asteroids, the game in which you have to destroy all asteroids with your starship before they hit the ship.
But how do we come to such a "badger's burrow"? We can open any of the versions directly in Snap! with a double click. Then we can work on our project, as we are used to.
To save the changes in Snap!, we have to "post" them to our badgers sett. This is done via the corresponding block post to "smerge..." under Variables. We can summarize what we have done; this way, we will find this particular version of your project later again. Then we can find them in our badgers sett on smerge.org.
A badger does not work alone on his construction, but with the whole family. Everyone digs their own tunnel.
It's the same with us when we work collaboratively. We split the work: You work on making the spaceship able to shoot, while a friend or team member handles the asteroids flying through space.
As you see, everyone is working in his own "tunnels"!
At a certain point the badger wants to meet up with his family members. In the same way, we want to merge our changes to the project. Eventually we want to play the game, don't we?
Therefore we simply click the "merge"-Button in the bottom right, tick all the versions we would like to merge, and click yes to confirm.
Now we will find a new version, with all changes merged. But what happens if more than one made changes to the same script? If such a situation occurs, we will have to manually choose with version we want to keep:
Sometimes the badger abandons one tunnel, e.g. due to a lack of stability. He then has to go back and up in his sett, and work on from a different chamber. In the same way, sometimes we have to go back to an older version, e.g. because we made some mistakes or tried something that didn't really work out. In order to do so, we simply open the version we want to rever to, open it in Snap! by double-clicking, and work on from there. This way, we will get a new "tunnel".
What does Smerge offer you and how it can help with teaching?
- enabling collaboration for project-based learning with Snap!
- all the data is always available and automatically backed up, so no more "I forgot my stuff at home" or "my partner is ill, I can't work" from your students.
- set up templates in the sense of "code skeletons", where you can supply your students with custom blocks, some code pieces already in place, ... You can even add further templates via drag and drop.
- the development process is always visible, to your students as well as to you. This allows for assessing individual contribution and giving individual feedback.
- you see the version history and are able to revert changes and go back to old versions, which enables tinkering and playing around in a risk-free enviroment.
We deliberatly have no dedicated user accounts or management. Instead, to secure your projects, you will get a PIN on the time of project creation, and can set a password. If you add your e-mail at project creation, you can retrieve your PIN and password for all your projects if you forgot them.
Want to know more or need help? Contact