Visual block syntax for programming languages
JavaScript HTML CSS
Latest commit 7717bcd Jan 12, 2016 @dethe dethe Merge pull request #1158 from waterbearlang/892_highlight_selection
892 highlight selection
Failed to load latest commit information.
css click to add is nearly complete Jan 10, 2016
docs remove workaround for removedChild not working earlier Oct 4, 2015
example Merging conflict fix for list of examples in app.js Dec 6, 2015
images Song example Nov 29, 2015
js handle insertion of locals with click Jan 10, 2016
lib formatted all wb-files Jan 10, 2016
sounds just added the music Apr 6, 2015
test Tests for sound blocks Dec 6, 2015
tutorial Remove onclick handlers from tutorials. Apr 14, 2015
.gitattributes Add support for polygon sprites Sep 22, 2013
.jsdoc-conf.json Add an epic amount of JSDoc for execution.js. Apr 13, 2015
.travis.yml update travis config Sep 20, 2015 Change CONTRIBUTING title to 'Waterbear' Dec 19, 2014
favicon.ico fixed play button after stop button Jun 22, 2014
index.html formatted all wb-files Jan 10, 2016
package.json fix phantomjs tests Nov 17, 2015
play.html formatted all wb-files Jan 10, 2016
playground.html formatted all wb-files Jan 10, 2016


Build Status

"It goes against the grain of modern education to teach children to program. What fun is there in making plans, acquiring discipline in organizing thoughts, devoting attention to detail and learning to be self-critical?" --Alan Perlis


Waterbear is a toolkit for making programming more accessible and fun. Not a language itself, but a block syntax inspired by Scratch ( that can be used to represent languages. Waterbear's blocks drag and snap together, representing code that eliminates syntax errors much like garbage collection alleviates memory errors and bound checking helps prevent overrun errors.

Waterbear's system of draggable, snappable blocks, are built using clean HTML5, CSS3, and Javascript. The goal is not to slavishly duplicate Scratch, or to create a programming language, but to create a visual syntax tool that can be used with a variety of languages and projects.

The motivation is to reduce syntax errors in the same way that garbage collection has reduced memory errors, or bounds checking has reduced overrun errors. I have also been testing various programming systems on my own kids, and Scratch is the one tool they were able to pick up easily, both for creating projects and for reading/modifying other people's projects. Waterbear is a way of relaxing some of the restrictions imposed on Scratch, and opening it up to the web at large.

The look and feel of Waterbear differs from Scratch, which is implemented in Squeak Smalltalk's Morphic environment. Waterbear blocks are intended to use web technologies naturally, without trying to force them into a different paradigm. In other words, this project is attempting to create blocks in a web-centric way. Waterbear is designed to be easy to use on both desktop/laptop browsers and on iPads and smart phones.

Waterbear is pre-alpha software, very raw, and in constant flux right now.

For further info:


Copyright 2011 Dethe Elza

Waterbear code licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Creative Commons License
Waterbear Documentation by Dethe Elza is licensed under a Creative Commons Attribution 3.0 Unported License.
Permissions beyond the scope of this license may be available at