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.