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. 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.
Subversion (see in particular Chapter 2, "Basic Usage")
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)

SVN checkout (TuxMath and TuxTyping)
The SVN site is hosted on Alioth (please do not download the SourceForge SVN tree, it could be out of date). You can do an "anonymous" checkout in the following way:
svn co svn://svn.debian.org/tux4kids/
This will get you the source code, but you won\'t be able to check in your modifications, because you need to have an account on Alioth.

To get a fully-functional SVN checkout, apply for an Alioth account and wait for administrator approval. Once you have approval, do the checkout in the following way:
svn co svn+ssh://fred-guest@svn.debian.org/svn/tux4kids
assuming your user name is "fred-guest". You will have to supply your password (perhaps more than once; note you can upload an SSH key to Alioth and bypass the requirement to type the password each time you make a commit).
With this checkout, you can use the full functionality of SVN and distribute your improvements to all the developers. If you started developing with an anonymous checkout, you can manually copy any changes over to the new directory created with your Alioth account and check them in.

Copyright
Tux4kids software is released under the GPL2. By commiting your code you agree to distribute your work under this license as well. Please state so in the headers of the source files, including svg images. Thanks!

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.
  • SVN branches: if your work is "disruptive" (meaning it\'s a fairly large change in core aspects of the code), consider working in a branch. You can then make regular commits without disrupting trunk.
    However, it is dangerous to work for very long in a branch: odds are high that your work will be incompatible (in either small or large ways) with other ongoing development, your work will not get the kind of oversight that trunk gets, and in any event your work is not useful until you merge to trunk. For these reasons you should merge to trunk at any available opportunity.
    If your work is not disruptive, it may be advisable to work directly in trunk.
  • 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