Tectonic is a project that is actively growing and evolving. We’d love for you to contribute!
When we write “contribute,” we’re not just talking about modifying Tectonic’s source code. We mean all sorts of things that help the project: answering questions from new users, sharing ideas, writing documentation, helping make the website more awesome, and more. The only restriction is that you must abide by Tectonic’s Code of Conduct. In summary, it says that you should not act like a jerk. Good-faith efforts to follow the letter and spirit of the Code of Conduct are required of all Tectonic community members.
Participating on the forums
The TeX/LaTeX ecosystem is powerful but complex, which means that even longtime users will run into problems that they can’t solve on their own. The TeX/LaTeX StackExchange site is a great resource, but we’ve also set up the Tectonic forum site as a place for discussions that are more specific to Tectonic: release announcements, ideas for new features, and of course bugs and problems that might be Tectonic-specific. A great way to start getting more involved in the Tectonic community is to become an active participant on the forum!
Working on the Source Code
It’s certainly true, though, that there’s a lot of work to be done on the Tectonic source code! Here’s some information about the code and how to work with it.
Due to its historical baggage, Tectonic is written in a combination of C, C++, and Rust. The aim is to eventually transition it to be fully written in Rust, but that is going to take a long time.
We recognize that Rust is a new language that not many people are familiar with, but it is technically excellent. It would have been massively more challenging implement Tectonic’s web-based bundle functionality in a language like C. By porting more and more of Tectonic to Rust, we hope to eventually be able to deploy it over more of the target systems that Rust supports, like WebAssembly.
Rust API documentation
The API of the Tectonic Rust crate is documented on the nifty docs.rs website. Please note, however, that this documentation has not been a focus of effort and is very spotty. Improvements are of course welcome!
Being a Rust program, Tectonic is built with that language’s standard cargo tool. However, various additional tools and libraries are needed due to Tectonic’s aforementioned historical baggage. Building Tectonic requires:
- The Rust compiler and its Cargo package manager. These are easily installed through rustup.rs.
- C and C++ compilers.
- The following system libraries, which can be installed through whichever means are standard for your OS:
To build your own version of Tectonic, clone the repository to your local
machine, then follow
cargo install method for installing,
but use the command
cargo build instead of
cargo install, running it from
the cloned repository directory.
Testing Your Build
cargo test command will run a small test suite, including the classic
TeX “TRIP” test. Additional tests are most welcome!