The TeX FAQ

Frequently Asked Question List for TeX

Installing

Contributing a file to the archives

You have something to submit to the archive — good news!

Before we even start, here’s a check-list of things to sort out:

  1. Licence: in the spirit of TeX, we hope for free software; in the spirit of today’s lawyer-enthralled society, CTAN provides a list of “standard” licence statements. Make sure that there’s a formal statement of the licence of your package, somewhere in the files you upload; beyond the CTAN installation, your package is a candidate for inclusion in (La)TeX distributions … and thereafter, also in operating system distributions … and the people who bundle all these things up need a clear statement of your intent.
  2. Documentation: it’s good for users to be able to browse documentation before downloading a package. You need at least a plain text README file (possible names are “README”, “README.txt”, and “README.md”, but no other variants). For an international audience it would be best to write the README file in English; of course, you can provide another README file in another language if you want to. All text files should be UTF-8 encoded.

    In addition, a PDF file of the package documentation, prepared for screen reading, is highly desirable. The source code of the documentation should be provided.

  3. Name: endless confusion is caused by name clashes. If your package has the same name as one already on CTAN, or if your package installation generates files of the same name as something in a “normal” distribution, the CTAN team will delay installation while they check that you’re doing the right thing: they may nag you to change the name, or to negotiate a take-over with the author of the original package. Browse the archive to ensure uniqueness.

    The name you choose should also (as far as possible) be somewhat descriptive of what your submission actually does; while “descriptiveness” is to some extent in the eye of the beholder, it’s clear that names such as mypackage or jiffy aren’t suitable.

  4. Version: Every submission of every CTAN package has to contain a “version identifier” that permits to distinguish this version of the package from earlier or later ones. This tag should be put into a place where it is easy to find, such as a VERSION file, or the top part of your README file. It is not enough to rely on your Changes file.

    This version identifier may consist of either a version number (i.e. something like 1.0, or 3.0.17, or 2.1a), or a version date (i.e.: preferably in YYYY-MM-DD or YYYY/MM/DD notation, like 2021-04-01 or 2021/04/01), or a string consisting of both the aforementioned data.

You upload via the CTAN upload redirector (the archive’s main page has a link). The upload page shows what it needs to know, and allows you to enter the information. The mechanism can only accept one file per upload: if you had intended to upload lots of files, you need to bundle them into an “archive” file of some sort; acceptable formats are zip and tar.gz (most uploads are packed in zip format). Once you have completed your upload, the redirector assigns it to a member of the team for processing.

If you can’t use this method, or if you find something confusing, feel free to ask advice of the CTAN management team. You can also use the contact field of the upload form to provide specific information to the CTAN team.

What will happen next?

FAQ ID: Q-uploads