This page gives some information about contributing packages to TeX Live (TL), and ways to make integrating your package easier for the TL maintainers. Basic requirements:
We don't include packages in the experimental or obsolete trees on CTAN without special arrangement. All other packages that meet the above criteria are fair game, and we try to install any new ones within a few days of their appearance on CTAN. If you find qualifying packages missing in TL, feel free to email us at tex-live@tug.org.
Standard (La)TeX packages with a .ins file, .dtx, README, etc., don't need any special treatment; they can just have all the files at the top level. The TL scripts more or less automatically translate the CTAN package into the TDS arrangement used in TL.
Special case: if you are distributing LaTeX package containing any .tex files which should be installed in the tex/ subtree (that is, are not documentation), please be sure and state this in your README and ideally in the package announcement as well.
Many packages are more complex. If your package has many files in many different places, it is easiest to include TL if you distribute it as subdirectories of a texmf tree, with your files in the TDS places. Then all the scripts have to do is copy your tree. (See, for example, the lm and vntex packages.)
As a rule of thumb for LaTeX packages, only .dtx and .ins files go in source/; general auxiliary files can go in doc/. For packages that include fonts, please include .tfm files and .map files.
If your package includes source files that actually have to be compiled into binary executables, such as C or C++, it is by far best to use the GNU configuration standards, typically via Autoconf or Automake. In particular, building in a directory other than the source directory (a standard feature of the GNU autotools), must be supported, as it is our standard build method. Incorporating new compiled programs is generally a lengthy and difficult proces.
Packages containing executables written in a scripting language are generally relatively easy to deal with. We recommend using either Perl or (especially) TeXLua, for the simple reason that we provide those interpreters in TeX Live itself, including on Windows. For other languages (Python, Ruby, shell scripts), it is up to the end-users to install everything necessary.
If your program needs to search for files, please use Kpathsea to find them. If your package is written in a script language such as Perl or Python and needs to search for files, you can use the kpsewhich executable.
Finally, please make any executables do something reasonable with the
options --help and --version. Again, see the
GNU standards.
If you have questions or suggestions, please email tex-live@tug.org.