My first contribution to Ravenports

Ravenports is a new, cross-platform packaging system designed by John Marino. John contributed a lot to FreeBSD’s ports and DragonFly’s dports collection and is furthermore well recognized for his synth package builder.

Ravenports is the logical continuation of his work on synth. It makes package building fast, reproducible, cross-platform and fun again. In addition, it has advantages for end-users, who often want to install binary packages instead of building from source. The way Ravenports handles variants makes it easy to package and install certain pre-configured variants of a software product in binary form, whereas with the old ports collection, options were only available when compiling from source.

Just like synth, the main components of Ravenports are all written in Ada. Take a look at the code and you will recognize its high code quality and readability. For myself, I am very lucky to see real Ada code in the wild, so it wasn’t a waste of time to learn Ada two decades ago.

To contribute to Ravenports, I took a few hours of my spare time, installed it on my DragonFly system, and came up with my first pull request to ravensource. I ported tig, a text-mode interface for git, which seemed to be an easy start. Due to some iconv and ncurses issues, it took a bit longer than expected, but overall it was easy, especially as the whole package system is already quite well documented. In the beginning, variants and subpackages can be confusing, but after a while, they are natural and a great concept. A couple hours later my pull request was merged and is now available in the catalog.