In 2020, the Island of TeX introduced Docker images for easily reproducible builds as well as a semi-official response to the need for continuous integration. These images were among the first using vanilla TeX Live, providing the required tools for running software included in TeX Live – for example, Java Virtual Machine, Python, and so forth. Additionally, the island provides TeX Live releases from 2014 on and let the user decide whether they want to pull all the documentation and source files into their CI configuration.
With attention came the idea to more officially publish our images as texlive/texlive, which the island gladly did. Now IoT manages the releases at Docker Hub as well: https://hub.docker.com/r/texlive/texlive.
Docker Hub is the world’s largest repository of container images with an array of content sources including container community developers, open source projects and independent software vendors building and distributing their code in containers.
Apart from applications in continuous integration, the Docker images have lured the island into creating another tool based on them. TeXdoc online is the successor to TeXdoc.net (which now redirects).
This tool provides a RESTful API for texdoc. A REST ful API is a stateless interface to web applications responding to typical HTTP requests with uniform responses. Usually, JSON is used for the response format. Following this principle, this software responds to HTTP GET requests with JSON representing documentation-related objects. There are several endpoints you can access.
The front end of TeXdoc online is structured in a similar way to TeXdoc.net. The main feature is still searching for packages. Topics are handled differently, though. We use CTAN’s JSON API to fetch their topics and packages belonging to these topics. Any user visiting the landing page will be shown six random categories with a few packages each. If a category holds several packages, four of them are selected at random. Users have the option to show all topics and list the packages for any topic they are interested in. Also, each package entry can be automatically queried for documentation.
Deploying the software is straightforward. You can get an executable JAR file with all dependencies included that you can simply run using your local Java installation. Running the JAR bundle will open a local web server that can be accessed from your browser. As an alternative to running the JAR file, the island also provides a dockerized image. This image is based on IoT’s TeX Live images, which makes it quite large in terms of file size but also eliminates the need for a local TeX installation. Using Docker is the preferred solution for hosting your own instance of TeXdoc online.
The Docker image also provides daily updates. The container will update daily at midnight (container time) and thus stays up to date as long as
the current version of TeX Live is supported. The island’s continuous integration ensures that you can always pull the latest tag and receive the latest and greatest TeX documentation, which when pulled and run will update itself.
To ease deployment, IoT provides a ready-made configuration for Docker Compose, an orchestration tool for Docker containers. It uses the Caddy web server to provide automatic HTTPS with local certificates or, on public domains, Let’s Encrypt certificates.
After finishing TeXdoc online to a production-ready degree, the island turned to the development of another handy tool, Albatross. This command line tool, with a silly yet adorable name, solves a very common problem: finding system fonts that provide a certain glyph. Users may provide the glyphs themselves or their corresponding Unicode code points in hexadecimal notation.
IoT also migrated checkcites, a tool for checking missing or unused references, from Paulo’s personal repository to the island. The team also decided to rewrite it from Lua to Kotlin — this is still a work in progress. And the island is going from a monolithic implementation to a modular one, which is also a work in progress.
In 2020, IoT finished version 5 of arara, a major rewrite from Java to Kotlin, mainly working on features from user feedback, especially directory support and the processing of multiple files. The team got hooked by the idea of aligning release schedules of arara with TeX Live releases enabling IoT to make (small) breaking changes more often. So the island had big plans and started to work on version 6 right after releasing version 5. As with checkcites, the team walked the extra mile and arara went from a monolithic implementation to a modular one, plus an enhanced feature set and optimized workflow.
In version 5, the implementation had everything contained in one big block. In version 6, IoT made a split between an API, a core implementation, the engine and the CLI application to separate concerns. This was the first step in the direction of splitting out components that are bound to one platform. Aditionally, the team hopes to enable other people to develop their own tools based on the arara libraries if they wish to. With multiple library components this should be easy. The developers of the TeXify IDEA plugin expressed their interest in this to integrate proper arara support in TeXify.
For version 7, the team wants to take larger steps towards platform-independence. Hence, IoT will make use of Kotlin/Multiplatform (MPP) to use a single codebase for all target platforms. Some components will have to be rewritten, some need different interfaces for different platforms but in the end, the team hopes to provide an even more multitalented tool.
Up to now, arara has been developed as a file-based build tool. The tool does not track dependencies nor does it manage projects. You throw a file at it and it makes the best out of it. The team is evaluating support for projects and dependencies. Other feature candidates include cleaner logs and granularity switchs, new DSL-based rules and configurations, and better integration with existing workflows.
The team has many plans and hopes to realize as much as possible. The island is a vibrant environment for the development of TeX-related tools; IoT wants to enhance the user experience, from newbie to expert, and promote use and diffusion of modern methodologies and technologies. If you are interested in helping the island develop ideas or even implementing some code, visas for the island are free and easy to get, so feel free to reach out.