RyNo

My website is now a Fossil repository
Login

My website is now a Fossil repository

That's right; this very website, that you're reading right now, is a Fossil repository.

What?

Fossil is a version control system, similar to Git or CVS. It's designed to be the "one stop shop" of sorts for a software project: code, documentation, bug reports, discussions, etc. Think of it as equivalent to a GitHub repository, what with its Issues and PRs and such alongside a project's source code.

Why?

Previously, I was using Jekyll and generating the site statically. This worked reasonably well, but Jekyll's starting to show its age a bit, and it's a bit inconvenient to have to go chase down a laptop and do various git and rsync invocations to publish changes.

Now that my homepage is a Fossil repo, I can just... use Fossil, including its web UI. I could make changes from my phone if I wanted. Fossil's also what I plan to use for my project hosting needs going forward (given the above-listed features and its bidirectional Git compatibility), and using Fossil as a website does a good job of exercising a lot of the less-obvious features and configuration.

Beyond that, though, Fossil's Markdown flavor happens to have some rather nice features, the most exciting (for me) being built-in support for Pikchr (which I've gravitated toward as my diagramming tool of choice). If I want to shove a diagram in a post, it's as easy as whipping up a fenced code block:

```pikchr
$sep = 1.5
thickness = 0.025
L: circle
C: circle at $sep right of L
R: circle at $sep right of C
line from L.c to R.c
line "A SECRET REPORT WITHIN THE GUILD" big big invis from 0.5 below L.c to 0.5 below R.c
```

Which turns into1:

A SECRET REPORT WITHIN THE GUILD
$sep = 1.5
thickness = 0.025
L: circle
C: circle at $sep right of L
R: circle at $sep right of C
line from L.c to R.c
line "A SECRET REPORT WITHIN THE GUILD" big big invis from 0.5 below L.c to 0.5 below R.c

Neat, right? No fiddling with extra image files to do that. The footnotes feature is also pretty cool; I used it above, and the definition shows up at the bottom of the page.

How?

First off, I created a new Fossil repo:

fossil new website.fossil
mkdir website; cd website
fossil open ../website.fossil

The repo for my Jekyll code was nearby, so I used that to import each of my existing posts (with commands along the lines of fossil wiki create $POST_NAME -t $YYYYMMDD -M markdown ../blog/_posts/$FILENAME). Fossil's Markdown dialect doesn't support some of the stuff Jekyll supports (like frontmatter and tables of contents), so I had to edit each post to clean that up. I also attached each posts' images and adjusted their references accordingly.

The rest of my old website's pages I recreated as ordinary wiki pages in Fossil, using the web UI. I could've imported 'em, but they all were long overdue for some rewrites anyway.

I also:

Verdict

There are a couple things that are still fairly clunky:

All in all, though, I'm happy with the move so far.


  1. ^ David Lynch's Dune rendition is the best sci-fi movie ever and I will die on this hill.