Wednesday, April 27, 2011

TuxMath 2.0.0, 2.0.1, 2.0.2...

TuxMath got a lot of attention during Google Code-In 2010, with literally dozens of enhancements submitted by the 13-18 year-old contestants from Nov. 2010 to Jan 2011.  In particular, Aviral Dasgupta and Johndhel Maceda contributed valuable patches, with Aviral earning enough points to become one of the grand prize winners for the overall contest.  Unlike many of our Google Summer of Code projects, which have often focused on infrastructure not readily visible to the user, the GCI stuff was mostly highly visible.

The "Factoroids" minigame got a heavy makeover.  In its original conception, the player had to type in the answer while steering the ship, an awkward experience akin to texting while driving, with a similar risk of crashing into the asteroids while distracted.  The new gameplay instead lets the player toggle between "prime number guns" (an idea suggested by SDL leader Sam Lantinga, btw), with a new prime factor added for each level.  Also, the player can now control the ship with the mouse, using the scroll wheel to select the "weapon", and there are three different power-ups to be earned.

The main comet game had lesser changes.  At the suggestion of a user, we decided to change the decade-old behavior by having comets with the same answer all get zapped simultaneously.  The comet game also has a new power-up, with special horizontal comets earning a single-use "smart bomb" that zaps everything on the screen.

We also added new game music as well as "tool tips" for the menu system.

Under the hood, more code has been moved from TuxMath proper into the t4k_common library, which will also be used for the next release of Tux Typing.

So, with all this exciting new stuff, I was quite eager to get a new release out to our users.  By early April, it seemed that all the tough issues were resolved, and a release would be "just around the corner".  As our last release was 1.9.0, and our audience might not "get" a release numbered 1.10.0, we decided to make this version 2.0.0, the "version 2" release.  I posted a "2.0.0-pre1" release for a few days, didn't hear any negative feedback, and decided to go ahead.

Unfortunately, it is hard to resist slipping in one last feature, optimization, or other enhancement, and in doing so I managed to put an important bug into the "final" 2.0.0 release.  Most of the program worked fine, but the asteroid numbers didn't get drawn in Factoroids because the font size got left at zero.  Embarassingly, that wasn't detected until after 2.0.0 was posted.  So, I decided to create a 2.0.1 release during a two-hour airport layover with my trusty Dell Mini 9 Ubuntu netbook.  That was also a problem - I could create the win32 crossbuild, but didn't have access to a Windows machine to test it on.  It turns out that the version of NSIS in Ubuntu Jaunty on the netbook creates broken installer files.  Since I didn't know that, I posted a broken 2.0.1 build.  I wasn't able to do much about it until I returned from vacation, and today I posted TuxMath-2.0.2, which AFAICT fixes these problems.

So - I guess it shows that I don't do this stuff for a living.  But that's the beauty of the Free Software world - all these releases are free, and if something is broken, users can look forward to the next one, or contribute to fixing it themselves.  If my volunteer efforts aren't perfect, I don't have to feel like I have taken advantage of my "customers", and they have little reason to be upset with me.

Which leads me to an article in the latest FSF Bulletin (issue 17), "When Free Software Sucks", by Benjamin Mako Hill.  The basic point of the article is that Free Software is useful and valuable even in an immature or incomplete state, because there is nothing to prevent anyone from correcting the deficiencies.  So, while I still feel rather bad that I rushed out a couple of basically broken releases, it is all done in a good-faith effort to create useful software for children, which is nothing to be ashamed of.

"We claim not perfection, but progress"

Monday, April 18, 2011

Start of Tux4Kids Blog

I am starting this on the heels of the release of TuxMath-2.0.0, which I believe is the most important upgrade since I became the maintainer of TuxMath five years ago.

The purpose of this blog is to share some of the visions and goals for Tux4Kids.  Our software is acceptably well-known within the Free Software, a.k.a. "Open Source", a.k.a. "Linux" community, but it could be a much bigger thing than it has been so far.  We remain quite a small project.  I probably account for 75% of the commits to our SCM most of the time, with periods of enhanced participation from others, mainly due to Google Summer of Code or Google Code-In.

For now, I intend to write something on perhaps a weekly basis, a "Tux4Kids Weekly News", if you will.