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:
b) We very strongly recommend using an existing license; devising your own will certainly delay any inclusion in TeX Live. We also strongly recommend using a clause “or any later version” with any license. The licensing conditions for TeX Live go into more detail about what is and isn't acceptable.
We don't include packages in the experimental or obsolete trees on CTAN unless the author explicitly requests it. All other packages that meet the above criteria are fair game by default, and we try to install any new ones (that don't require compilation; see below) 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.
It is best for the documentation for a package foo to be in the file foo.pdf. If this is not possible for whatever reason, please use foo-doc.pdf. In any event, please do not name it literally manual.pdf; that generic name does not help users. As mentioned above, please include all sources to the documentation.
Special case: if you are making a LaTeX package containing .tex files which should be installed in the runtime tex/ subtree (that is, are not documentation), please be sure and state this in your README and ideally in the package announcement as well.
Some packages are complex. If your package has many files in many different places, distributing it as subdirectories of a texmf tree, with your files in the TDS places, can help get it in TL. This can be done by uploading a separate .tds.zip file to CTAN along with the main tree.
If you do this: 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 is not very large, or you are not well-acquainted with the TDS, please don't worry about it. It is not a requirement, nor even a recommendation; it causes more trouble than it solves when the TDS organization is not correct, which can happen all too easily.
If your package includes source files that actually have to be compiled into binary executables, such as C or C++, it is necessary to use the GNU configuration standards, almost certainly via Automake. The entire TeX Live source tree is now based on 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.
Packages containing executables written in a scripting language are easier to deal with. We recommend using either Perl or 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 scripting language and needs to search for files, using the kpsewhich executable may be convenient.
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.