fnc: interactive text-based fossil user interface


This is a long overdue announcement for a project I have been developing for a while.

fnc is an opinionated text-based user interface (TUI) for Fossil. It is heavily inspired by tog, which I missed after moving from git repositories for personal source control (via got–a saner and much simpler Git-compatible VCS) to Fossil. If familiar with tog, or even tig (Git's TUI browser), fnc is the Fossil counterpart.

The goal is to provide a terminal alternative to fossil ui. Complete coverage is not the objective–only the essential version control ingredients–all the forum, wiki, and ticket bells and whistles are not in scope. There was early consideration for a builtin Fossil chat interface, but that should instead be a standalone program. Although still in alpha development, fnc is more than suitable for daily use, and most existing commands are likely stable. In addition, fnc provides a couple features considered essential by the author that are not available in Fossil (e.g., interactive stash and scope data in diff hunk headers).

fnc uses ncurses and libfossil–an "unofficial" third party Fossil project–and is developed in close concert with the latter. The libfossil author, Stephan Beal, is one of Fossil's core developers, and the library has been developed with the endorsement of Fossil's author–D. Richard Hipp. It is very well documented, and makes developing third party Fossil applications a breeze. Stephan is an excellent developer, but also approachable and receptive to suggestions or feedback. Although libfossil is also still in alpha, the library has reached feature parity with Fossil's core version control features. Notable omissions involve the ticket and wiki subsystems, as well as support for stash and unversioned content. Nonetheless, as fnc demonstrates, libfossil more than facilitates development of useful Fossil applications. I highly recommend getting in touch with Stephan if you have any ideas or plans to develop Fossil-related projects.

The target platform is OpenBSD, where fnc is both pledge(2)d and unveil(2)ed, and can be installed with pkg_add fnc. macOS is also supported, where fnc is available via MacPorts with port install fnc. In addition, Linux packages with Landlock support are available; see the project site for the various package managers.

If interested, please visit the canonical site or read the documentation for further information!

Tags: code vcs
send comments to mark AT jamsek DOT net

Generated by emacs org mode

Copyright © 2023 Mark Jamsek