General information
Tux4Kids programs are written in C and use Simple DirectMedia Layer (SDL) for the graphics. The programs are portable, running on Linux, Windows, Mac OSX, and BeOS/Haiku. They are internationalized into many languages, and developers should keep the needs of non-English speakers in mind.
Most development happens on Linux, and the tools for development are readily available on any modern Linux distribution. However, it should also be possible to develop on other platforms.

Documentation for major tools and libraries
SDL (see in particular the DocWiki link)
We also use SDL_image (graphics files), SDL_mixer (sound), SDL_ttf (fonts), and will soon add SDL_net (network). Documentation for these is available on the DocWiki.
Git (The well-known "Git Community Book")
libintl/gettext (for internationalization, aka translation)
Automake (build system)
CMake (an alternative build system, used especially for our Mac OSX releases of TuxMath but working on other platforms, too)

Tux4Kids now uses Git for source code management
The git repositories for the Tux4Kids subprojects (tuxmath.git, tuxtype.git, tux4kids-admin.git, tux4kids-web.git, and t4kcommon.git) are located on the Alioth server under alioth.debian.org/git/tux4kids/ with the names as listed above. See
  • Git Repository
  • for details.

    Copyright and License
    Tux4kids software has historically been a "GPL2 or later" project. By commiting your code you agree to distribute your work under this license as well. All source files should have a copyright and license statement. We are currently assessing whether to move to GPLv3+.

    Development and coding tips
    • Installing the required libraries (from distributor packages on Linux): be sure to install the "dev" versions as well, so that you have the header files.
    • Documentation about compiling is available in the "doc" directory in trunk.
    • Branches: Git supports branching and merging extremely well. In particular, if you create your own branch for something major or disruptive, you can keep it current with other changes coming into the main trunk by frequent rebasing. This greatly reduces the old problem with SVN-style branches where it could become very difficult to merge the branch back into the trunk. If you join the project, you will be able to push directly into our bare repositories. However, if you have something that could be disruptive, it is best to check with a maintainer first.
    • Please keep the changelog (in the doc/ directory) updated!
    • For information about preparing strings appropriately for internationalization, see these tips. TuxMath now has built-in linebreaking code (adopted from gettext) in the "linewrap" source file.
    Graphics
    Because of the impending support for SVG, we strongly prefer that any new graphics files be created in SVG format. We can generate PNG files as needed from the SVGs.
    Tux4Kids logo
    High Quality Educational Software Alternatives
    Tux_Family