This program depends on the following excellent pieces of software:

  • Python: Orthogram is implemented in the Python programming language. This project would probably not exist without Python helping along the way with its ease of use and availability of high quality libraries.

  • NetworkX: Very comprehensive network analysis library. Implemented in pure Python, so easy to install and convenient to use. Orthogram utilizes graphs to route the connections around the blocks and minimize their overlapping with each other.

  • Cassowary: Linear constraint solver implemented in pure Python. Orthogram uses this to arrange the elements in the drawing.

  • Shapely: Powerful geometry manipulation library based on GEOS. A bit overkill for the simple geometry manipulations Orthogram does, but why reinvent the wheel?

  • pycairo: Python interface to the popular cairo graphics library. Orthogram uses this to generate image files.

  • PyYAML: Simple to use, efficient YAML parser. Orthogram uses this to read the diagram definition files.

  • Sphinx: The Python documentation generator. This documentation is built with Sphinx.

The following programs improved the development experience of the author a lot:

  • mypy: Python static analyzer. Makes refactoring so much easier.

  • Poetry: Great Python package manager. Also makes publishing to PyPI a breeze.

  • GNU Guix: Advanced package manager for Linux. Can be used instead of Python’s own virtual environments and package managers. Most of the dependencies required by this project were already available as Guix packages; writing package definitions for the rest of them wasn’t too hard either.