Friday, 16. October 2020

My first FreeBSD port: Castor

As this is the first fresh post on my new Internet journal: Welcome to the Neunix Gemlog! It's technically a continuation of my old Eerielinux Blog on the Web but uses a much different platform. It's no longer Web-native (can be reached by using a Web Proxy, though). And it's written with the clear focus on text-based information where images should ideally be optional as they are external resources to the actual text document.

If you're interested in the old blog see here:

eerielinux

I've moved to Geminispace after being unhappy with Wordpress in particular and the state of the WWW in general. This is an exciting experiment for me and you can bet on me writing about how it works out in other articles. But the actual topic of this one is something different - and as a matter of fact a special one.

Castor on FreeBSD

Two days ago my first direct contribution to FreeBSD was committed. A couple of days before I had created a port for the Gemini browser __Castor__:

https://git.sr.ht/~julienxx/castor

It's a graphical browser written in Rust with GTK+ and currently supports the text-based protocols _Gemini_, Gopher and Finger. After trying out a couple of browsers I settled on this one to browse Geminispace for now.

As of this writing, Castor is available as a package on Alpine Linux, Void Linux and NixOS. On Arch Linux there's an older PKGBUILD on the AUR allowing for easier building of a pacman package (of an outdated version, though). And on Gentoo ebuilds for the two latest versions are available from the GURU overlay making it easy to build the program. According to the mailing list there was also an effort to create a SLACKBUILD, but as of now that one has not been made publically available (or I failed to find it).

On all other operating systems / distros Castor had to be manually built from source. It's not that complicated to be honest: Downloading and extracting the source as well as issuing

cargo build --release

should already do the trick on most desktop systems (the required dependencies are usually within easy reach if not).

However building software is a nuisance for a lot of people. It requires an unknown amount of effort and time. So many people won't do it unless they really want that application. Just for trying out something? Maybe if you're bored and have some time on your hands (and who has that luxury honestly?). Otherwise you're likely to just go on and skip that application, aren't you?

Since I obviously like Gemini and I'm creating content that I hope is of value to other people, it's a no-brainer that I have an interest in making Geminispace easily accessible to potential readers. This was an excellent oportunity to look into FreeBSD ports again. So I found an existing port that uses Rust's package manager and build utility, _cargo_. Then I wrote a new port from scratch that was to build Castor. It took me a while to figure out all the necessary bits but eventually I had a WIP port that could build the browser with just one manual intervention required to create a package.

I couldn't figure out what the problem was or how to eliminate that manual step to make this a properly working port. So I asked for help. A FreeBSD porter answered my request and suggested a solution. So I finished the port and created a PR on FreeBSD's bugzilla. Said porter had offered that I'd CC him and he'd take a look later. He found another thing that could be improved, made the change and then committed the port. Thanks Kyle!

The whole process was very nice and once again I can only underline that FreeBSD is a very welcoming community that tries to make it easy to contribute even if you're new. So if you're one of the people who run FreeBSD on their desktop, you can grab a recent ports tree and build _www/castor_. Ah yes, that category is a bit... well, strange if you think too much about it. But it's the place where Gopher clients and such go as well for the simple reason that there's no other category available that fits better. And if you read this at a later point in time (or wait a couple of days until the next bulk-build of packages has finished and becomes available) you can probably just

pkg install castor

and will be ready to start your journey and rush into Geminispace on FreeBSD!

The Castor browser

The current version of Castor is 0.8.16. It works fairly well already but there definitely are things that could be improved. The buttons in the upper bar are: _Back_, _add to bookmarks_, _show bookmarks_ and then there's the URL bar.

In HEAD things changed slightly. It's the buttons _back_, _forward_, _reload_, the URL bar, and to the right of that the buttons _add to bookmarks_ and _show bookmarks_. I like the new ordering and the "forward" and "reload" buttons are also a welcome new feature. Also some crates (Rust packages) have been updated to newer versions which is always nice.

Skiming through the mailing list I found some features proposed by others that I also think would be useful:

While using the application I begun to take notes whenever I encountered a situation where I thought of a missing feature. Here's my list:

Those are my thoughts on what features I'd currently like to be added to Castor. I'm already looking forward to what good things future versions will deliver. If I had any coding skills worth that name I would like to help out. But as things stand, contributing a port and helping to populate Geminispace with a little content in addition to telling people that it exists is actually the best thing I can do to help Gemini prosper.

BACK TO NEUNIX INDEX