Tuxpaint is an open source graphics program that occupies a special niche: it is designed for children. This makes it a rarity in the software community known for every developer scratching his or her own itch. Thankfully there are developers reaching out of their comfort zone to write applications for those too young to learn Bash and Python on their own — without that effort, kids might not get exposed to free software until they took programming. If you have never looked at it, Tuxpaint deserves some attention, both because it is a great product for kids, and because it may make you rethink the approaches we take to user interfaces. On top of that, there are some intriguing raster graphics functions hidden behind that seemingly simple interface….

by Nathan Willis

You can find Tuxpaint packaged for almost every Linux distribution as part of the main package management system, so installing it should be trivial. Check the version number, though — the latest release is 0.9.21, which hit on May 10, 2010. Binaries are available on the project Web site for several distributions, as well as Windows, Mac OS X, and Nokia’s Maemo handheld platform.

Most distributions split Tuxpaint up into several packages. Most notably, the base package includes the application itself, while a separate package (such as tuxpaint-config) includes the configuration utility. Install both if available; the configuration utility lets you modify several important behaviors of the drawing program that could be valuable. Tuxpaint splits these functions into a separate utility to prevent very young children from accidentally changing environment variables in hard-to-troubleshoot ways.

“Tuxpaint includes a separate package that allows teachers, parents, or other adults to configure the paint program’s behavior without including potentially confusing UI-config-preferences in the painting app itself.”

The basics

You can launch Tuxpaint from the command line with tuxpaint & . It defaults to an 800-by-600 window, though you can change this by appending a different screen size to the command (e.g., tuxpaint --1024x900--native switch instead of a width-and-height measurement launches Tuxpaint in full-screen mode at your monitor’s native resolution.

You will see the toolbar on the left, a tool options button-bar on the right, and a combination color-selector/info area down at the bottom. The penguin mascot at the bottom offers tooltips and explanations for each feature, and offers words of encouragement along the way. The interface is geared towards Tuxpaint’s 3-to-12-year-old target user; the buttons are big and include pictorial images as well as text labels, and there is no concept of print-size or image resolution: all pictures are 100% of the visible area on screen. There are also sound effects associated with all of the drawing tools, although these can be deactivated.

If you try saving an image, you will notice that you are not presented with a filesystem browser or asked for a file name. All pictures are stored within Tuxpaint’s private directory, and remain unnamed. You open up an old file by clicking on “Open,” then finding the picture in question by looking for its thumbnail image.

Tuxpaint has just six tools: paintbrush, rubber stamp, line tool, text tool, polygon tool, and eraser. But it extends these with a range of options. There are a variety of paint brushes, some of which include some very interesting features, such as animation or movement-activated shape morphing. The animal-shaped brushes, for example, create brush stamps that appear to run and jump as you drag the cursor along.

The stamp tool is not a “clone” stamp like that found in GIMP or other raster editors; instead, it stamps clip art from a built-in collection consisting of a few hundred freely-licensed images. These include line art, full-color graphics with alpha transparent shadows, and even photographs. The stamps included come grouped into different categories: people, animals, common objects, plants, street signs, astronomical images, etc. Several are clearly intended to fit together, such as a large collection of isometric Medieval town-and-castle buildings that would look at home in a MMORPG. Each stamp can be flipped horizontally, vertically, or scaled up or town as desired.

“Tuxpaint’s ‘stamps’ tool contains hundreds of scalable images, from stock photography to paint and drawing primitives, to creative elements designed for children.”

The text, line, polygon, and eraser tools hold few surprises, but Tuxpaint adds a great many more creative options through its “Magic” menu. Adults would call this menu “filters,” of course, but magic is probably easier to explain. The magic filters include everything from common image transformations like color shifts and blur, to compound effects like “cartoon” that highlights shape edges in black and simplifies the color palette. Several kinds of distortion are available, as are “natural media” effects like chalk and wet paint, plus truly original filters that throw confetti or snowballs onto a picture.

In short, there are a lot of drawing and painting features packed into Tuxpaint, in light of how few toolbar buttons it appears to have at first glance. Kids will have a lot of fun with the Magic menu, especially exploring it to find out what some of the more peculiar features do.

“Tuxpaint’s ‘magic’ tool, despite the cutesy name, actually contains a wide array of complex filters, including some procedurally-drawn elements like flowers, and mathematically randomized bubbles.”

Kid-friendliness

As mentioned earlier, Tuxpaint’s stated aim is to be usable for children between the ages of three and twelve. Particularly for the young end of that scale, it means some UI choices that make Tuxpaint stick out when compared to typical Linux applications. But that is not always bad.

Several steps are taken to hide details of the underlying OS from the user — Tuxpaint natively runs full-screen, without the window manager decorations, and it uses its own widget toolkit. That toolkit, in addition to being large and bright, is guaranteed not to change when you update to the next release of your distro, change users, or switch to a “dark” GTK theme for doing pro video work. Tuxpaint even attempts to prevent accidentally spawning extra copies of itself by waiting 30 seconds between launch requests — just in case young hands inadvertently click the launcher too many times.

Tuxpaint also does away with the need to worry about filenames and directory hierarchies, which is unquestionably good for young children — but finding the file you want to open is often easier when browsing by thumbnail. How often do you click on files in a standard GTK or Qt file browser just to look at the thumbnail preview? But the files are always there, saved as PNG images in $HOME/.tuxpaint/saved/. The decision to use a fixed-size, 1-to-1 pixel drawing canvas is interesting — very young kids might not understand zoom levels and the difference between DPI and PPI, but on the other hand Tuxpaint does allow them to increase or decrease the size of stamp tool images, which seems contradictory.

There are other interesting options that can be enabled by parents or teachers, such as grabbing mouse focus entirely, disabling print support. Some UI choices, such as sound effects, could clearly become annoying, but it is nice to remember that sound feedback is an important accessibility technique for users with visual impairment.

Interesting surprises

For adults, of course, Tuxpaint clearly is not going to replace Krita or GIMP. But the app does implement some interesting ideas that have not yet made their way into other “mainline” open source graphics projects. For example, consider several of the advanced brushes and stamps. The animated animal brushes mentioned earlier draw cartoon cats and squirrels, but you could use the same technique to draw any sort of animated sprite. There is also an impressive procedural “leaf” brush that makes natural-looking vegetation, randomized on every click. Some brushes are sensitive to the direction of motion, rotating or deforming as the cursor moves.

Many of the “Magic” filters create sophisticated effects, from particle-filled “tornadoes” to randomly-sized alpha-transparent bubbles. The “Flower” filter draws procedural flower stems, bent along a spline curve that defined as you move the mouse. And the “Rails” filter paints an interconnected network of railroad-track lines, automatically reconnecting wherever the cursor meets previously-drawn track. It is not hard to imagine either of these features making it into Inkscape one day — even if they are adapted to serve some more “grown up” drawing purpose like drawing schematics.

“Tuxpaint also includes a ‘rails’ tool — not Ruby-related; this function draws dynamically-configured railroad tracks, computing compound intersections on an as-you-draw basis.”

Last but not least, Tuxpaint’s collection of public-domain and CC-licensed images shipped under the stamp tool is impressive. It includes not just simple cartoons and pictures of backyard animals, but more sophisticated imagery like full-color composite photos of the Earth, moon, and solar system planets (including Pluto). We have recently seen increased integration of the Open Clip Art Library into open source design tools, but on the whole access to high-quality reusable imagery still has a ways to go. How nice would it be to point-and-click add CC-licensed Flickr photos, high-res astronomical or map data into a presentation, like kids can add the planets in Tuxpaint?

Have tux, will travel

The bottom line is that teachers and parents of young children should look at Tuxpaint, whatever platform they run. Don’t be fooled by the apparently simplicity of the user interface; this application packs a phenomenal number of tools into an uncomplicated package. Not just tools to distract the kids at the computer, but tools to let them be creative.

There are a lot of additional resources available for parents and Tuxpaint users on the project’s Web site, including additional brushes and stamps, sorted categorically. There is also a more detailed examination of Tuxpaint’s tuxpaint-config setup program to help tweak the default settings, which is not required, but is a good idea for anyone setting the application up on a shared computer, or for use with a shared printer. Very few open source applications do as good of a job meeting the needs of kids, while still being easy to adopt for parents, as this one.

by Nathan Willis