Computerworld

An open palette: Tux Paint's Bill Kendrick

Bill Kendrick on Tux Paint, Tux4Kids, the GSoC, computer games, KDE, Debian, the spread of Linux and open source software in education

Bill Kendrick is a software machine. He is the lead designer and developer of New Breed Software, a company creating free and open source games, libraries, tools and utilities across a range of operating systems, mobile devices, hand held and home video consoles. He has personally created a diverse range of classic Web-based games that run across all browsers, and has worked as a professional video game developer since 2003.

But perhaps Kendrick's most significant software achievement is Tux Paint, a highly acclaimed, free and open source illustration program that is primarily aimed at kids, but is used by all ages courtesy of its intuitive and effortless design. Tux Paint has earned praise from education institutions and computer publications all over the world, has been translated into dozens of languages, and is featured on the One Laptop Per Child XO laptop. He is also involved in the Tux4Kids project, which was recently accepted as a mentoring program for Google's Summer of Code (GSoC).

Computerworld spoke with Bill Kendrick, to find out his thoughts on Tux Paint, Tux4Kids, the GSoC, computer games, KDE versus Debian, the spread of Linux, New Breed software, and the role open source software can play in education.

Kendrick on TuxPaint

Kendrick on TuxPaint

What was it about the Atari and Commodore platforms that inspired you to create Tux Paint? What influenced its creation?

Atari and Commodore programmers utilised graphics and sound any chance they got. I have a paint program on cartridge for my Atari (that ironically I think I got after I started writing Tux Paint) that make noise as you paint, just like Tux Paint. I think that's a lot more engaging, compared to more "adult" or "professional" drawing tools.

Back in the days of the 8-bit Atari and Commodore computers, there were no mice, no windowing system, no GUI widget toolkits. Paint programs were full-screen, and the tools available to you were usually all right there on the screen, or all collected on their own screen.

Along with those old-school 8-bit interfaces, I was also inspired by the simplicity and in-your-face accessibility of some modern, special-purpose user interfaces: PalmOS handhelds and the TiVo DVRs, to be specific.

How involved are you in the process of merging and managing changes that people contribute to Tux Paint?

There are some people with commit access to the source code repository who occasionally surprise me with stuff, but lately, for the most part, I'm usually the one making code changes. New stamps and translations get committed by a few folks, but much of that still gets piped through me, too.

How many people contribute to Tux Paint, and what are the most frustrating and rewarding aspects about the development process?

There are a few dozen of people who contribute on a semi-regular basis, and many of those people are doing translation work. Really, I'd have to do some statistical analysis to figure out what's been going on lately.

The most frustrating thing is my lack of time to dedicate to the project. My dream in life is to work on Tux Paint, and other "edutainment" apps I've dreamed up, full-time, salaried and hire some contributors to work full-time, too. Who wants to make that happen? Drop me a line!

The most rewarding is hearing stories from schools that just found Tux Paint, and who are doing great things with it. Most recently, I received an email from a company that does eye-tracking hardware and software for the disabled, and sent me a link to a photo of a kid using Tux Paint with his eyes. Incredible. I want to go down that route even more, if I can, since I think many of the commercial drawing apps for kids are completely lacking in the accessibility department. (Consider "accessibility" in terms of localisation, for example: Tux Paint is translated to 80 plus languages. Most commercial kid drawing programs are in English only; some English and Spanish and maybe French.)

Are you involved in getting Tux Paint out in Linux distributions?

Only insofar as being a "willing upstream". Many of our core contributors are actually involved in the Linux packaging department. Ben Armstrong is a Debian Developer who packages and maintains Tux Paint (and plenty of other kids' stuff) in Debian. Caroline Ford has been working with Ben and the Ubuntu folks to try and make sure Tux Paint and other Tux4Kids apps are kept up-to-date there. Toyama Shin-Ichi packages unofficial RedHat and Fedora packages. Then there are the Mac, Windows and BeOS ports. It's a big, happy, multiplatform family.

Page Break

How difficult is it developing an interface for kids as opposed to adults?

That's hard to say. I sadly must admit to not having much in the way of "true" application development. No Windows or Mac API, GTK+ or Qt. Aside from doing Tux Paint, I do games. Games for the web (HTML, C, CGIs and PHP scripts, etc.) Games for cellphones (Java/J2ME and C/BREW). Games for Linux (C with SDL, like Tux Paint). I've also done plenty of other Web development. As my time becomes more 'copious', I'd like to sit down and finally learn wxWidgets. And/or GTK+. And/or Qt. I guess I just need a good reason to, and that hasn't come up in my professional life yet.

What were some of the key changes to the latest version of Tux Paint?

Honestly, the last version was more of a bug-fix release, it was the previous version that was packed with new features, and new dependencies. Those dependencies required some changes to get things running well on Mac, Windows and BeOS, which finally settled, so I pushed out the bug-fix release.

The last big changes include a "pick any color" dialog, a dozen new Magic tools, and support for the Pango text rendering library, which allows us to finally display more complex languages properly, such as Arabic. I also pulled out all of the previous Magic tools and created a new plug-in API, that allows people to create and test their own Magic tools a lot more quickly and easily.

As kids can be so unpredictable, were there any unexpected features in Tux Paint that you were sure would work well that didn't, or vice versa?

It's hard to say what works and what doesn't with the Kids, since it's such a rare occasion that I get to watch kids using it. I see their end results, but I have no idea how much fun or frustration they had during the process.

I hear plenty of kudos, and complaints, from schools. Schools have found that they really need Open and Save File dialogs, which I specifically avoided (part of the PalmOS inspiration). Schools also find that kids need to go back and correct text they've added to the picture, which is impossible without either using the Undo option, or erasing the text manually. Fortunately, work will be done on both of these fronts, thanks to Google's Summer of Code program.

What does Tux Paint have from a development and user perspective that KidPix doesn't?

I've used KidPix twice. Once on an old black-and-white Mac in the mid-1990s, and once using some Flash demo version, a few years after I started Tux Paint.

I can really only base my comparison on screenshots I've seen, and comments I've heard, mostly from educators. From the user interface perspective, I find Kid Pix a little too messy. Even as a kid, I've found "wacky" kid stuff annoying, and I suppose that still holds true. Capability-wise, I believe Tux Paint is a lot more extensible. Adding new brushes, starters, stamps, and even Magic tools is well-documented.

The one thing I think Tux Paint lacks is an animation/presentation system.

I recently added a "Slideshow" interface, but it's really just a stop-gap. I envision a completely new, separate tool for creating animations, that would integrate itself with Tux Paint (that is, make your saved pictures available). If I were to sit down and design it, I'd probably look at modern animation programs meant for adults and professionals, and boil it down the same way I did with Tux Paint.

Does proprietary educational software always have the kid's education at heart, or is making money the chief motivator?

Not being involved in any proprietary educational software development, I definitely don't feel like I can answer that. What I have seen is a lot of complaints about the state of Tux Paint's "competitors," when it comes to UI design and, more importantly, actually being usable in school situations (over networks, on terminal server/thin client setups, etc.) And that's without taking into account the fact that many are platform-specific (read: Windows only).

Do many adults use Tux Paint?

Certainly. The Tux Paint online gallery exhibits a ton of work by adults of all ages. Some of it is incredibly well-done, which goes to show how capable of a drawing tool Tux Paint can be, in the right hands.

Page Break

Kendrick on Tux4Kids and the Google Summer of Code (GSoC)

Kendrick on Tux4Kids and the Google Summer of Code (GSoC)

Are you involved in the Tux4Kids projectt?

Sam Hart, who originally wrote Tux Typing, and created the Tux4Kids organisation, came to me in late 2001 and asked if I'd be willing to write a "Missile Command"-inspired math-quizzing arcade game. I had done a vector-graphics 3D variation on the game, and had since done a lot of SDL-based games. I was able to whip something together very quickly, but it soon fell to the wayside, as did Tux Typing. I focused very heavily on Tux Paint, and in the meantime, the other two projects were picked up by some very bright volunteers, most notably Tim Holy and David Bruce.

How much response has it had in the GSoC?

In the end we received over 130 applications from about 90 students. (Google extended the student application deadline by a week.) Picking was tougher than expected, and in the end Google gave us 11 slots (we got one more after the fact, I suppose when another ORG had to drop one).

To summarize, we've got the following in the GSoC pipeline:

Selection tools; file (open/save) dialogs; new Magic tools; an enhanced text tool for Tux Paint; improved Indic language support and some student performance analysis stuff in Tux Typing; a couple new games in TuxMath; and some work on handwriting training, which will either become part of Tux Paint and/or its own, separate application.

How will the GSoC impact the development of Tux4Kids?

It's already had an impact. Some bugs were already fixed by students, while they were applying to participate. A number of students who weren't selected to participate as students in the Summer of Code program are going ahead and contributing to the projects anyway. I'm also guessing we'll have an easy time signing up to participate in Google's Highly Open Participation (GHOP) program (a non-coding-related program for high school students) if Google decides to run it again this year.

Page Break

Kendrick on kids, Debian, computer games, shells and Linux

Kendrick on kids, Debian, computer games, shells and Linux

Has having children changed your approach to developing software and your perception on the role open source software can play in education?

Yes. A friend with young kids and I are finding that Open Source is lacking in the pre-school department. Some people have suggested ways to make Tux Paint usable for even younger users (3 and under), but I think a new, simple, single-purpose app for that age range would make the most sense.

I see no reason to bloat and convolute Tux Paint's home-grown user interface code when a from-scratch app, that wouldn't really need the long-term maintenance that Tux Paint has, would do precisely the same thing.

Do you still play any computer games? Which ones/platforms?

I was never really into "computer" games. I've always been more of a console gamer. Of course, computers allow me to write my own games, but that's a completely different activity. With a baby and a busy work life, these days I don't get much time for anything except Scrabble on my cellphone, and a certain well-known Scrabble clone on Facebook.

When I get more time (i.e., our son grows up a bit), and more space, I'll once again have all of my game systems hooked up and ready to play at any time: PlayStation 2, Sega Dreamcast, Atari Jaguar, Nintendo NES, Atari 2600, Atari 8-bit computer. I eagerly await the day that a Nintendo Wii, a Nintendo DS and perhaps even an XBox360 can enter the family.

Are you still a Debian devotee? If not, what distro are you using and why?

I'm a Debian supporter, but after falling in love with KDE, and being disappointed at how 'far behind' Debian was getting, I decided to switch to Ubuntu once Kubuntu came out and was fully supported.

What is your favourite editor and shell and why? vim or Emacs? zsh or bash?

I don't answer religious questions. Seriously, though, my skill level in both bash and csh, and both Emacs and VI, are so low, that I seem to easily switch back and forth. Of course, as a KDE devotee, I'm writing this response offline in Kate.

What do you think about the increasing spread of Linux across multimedia platforms?

I think it's great, especially as developer of games for Linux. Virgin Airlines created their "Red" in-flight entertainment system. One of my games is included: Mad Bomber of all things. (Why didn't they re-skin it and change the title!?)

As Linux, and to even a greater degree, Open Source libraries like libSDL, get ported to more devices, more of those devices are suddenly able to play a plethora of great games.

What projects are you working on at New Breed SW at the moment?

My wife and I were discussing game ideas one night, and she came up with an interesting puzzle game that I've begun working on. I'm fairly confident it will be fun, and has a ton of room for great art, re-skinning, game variations, etc. I finally spent an hour adding a little bit of menuing UI to it the other day so we can try out different game options and difficulty levels without editing and recompiling the source.