Our dev environment

A setup post this week, because I’ve really no progress to report on.

Fossil

Fossil is a source code management system similar to git. Unlike git, it integrates project management features like bug tracking, wikis, and account access control. It’s very much like github, but you can manage it yourself.

Our web host comes with fossil preinstalled. Issue is that at the time I didn’t know it, so it took me a while to get there. But once I figured I could just use the preinstalled version, it went as simply as it could.

A screenshot of the necking fossil project timeline, with a site style
  similar to this one, the timeline stops at exactly the 2023-02-19

Once I got things setup, of course, the first thing I did was personalize the CSS. As you can see, I went ham.

In terms of source code version control, fossil doesn’t change much from git. It is opinionated toward trunk-based development, and automatically syncs before commit. Otherwise, the most important difference is the absence of a staging area. But for solo dev, it’s not that different.

In terms of project management. I didn’t have the opportunity to use the wiki and tickets. However, unlike gitlab, fossil is extremely efficient. And unlike gitea, it runs as a CGI script. Which means I can use it on my host provider. Fossil, furthermore, is fully open source: No gated functionalities, no artificial limitations. It has an expansively fine-grained user access control panel, and a way to sync them between repositories.

For game development, fossil is lacking large file support. I’m currently using the “untracked files” feature to publish (internally) the assets with the dev game executable.

Ideally, tracking of assets goes beyond source control, and is integrated into the game executable as much as source control.

Discord

devildahu exists mostly as a discord server where we coordinate our efforts. (note that we also have a public discord server).

The little programming I did this week involved creating a bot to post fossil timeline updates to our discord server.

Screenshot of a lot of messages made by a discord bot

The bot is just a rust program running once per hour on the web host that calls the fossil executable like so: fossil rss and posts to a discord webhook a summary. Using a rss parsing crate, I read the relevant metadatas and, with serde, converts them into the POST payload for the line item.

This enable us to know what each other is working on. Because I’m terribly obsessive and want to know everything my friends do it allows to build trust by making our work and contribution to the team visible. Hopefully motivate each other to contribute more, and know where to focus our contributions.