Free software Advent 2025

At the end of 2025, a little event on the Fediverse was posting a piece of free software every day with the tag '#freesoftwareadvent'. Here is my list, together with some suggestions of alternatives that others made:
  1. perf is one of the main Linux performance profiling tools. It's a good simple way to see where your CPU time is going inside a program or the kernel; it's got about a million options for deeper stuff, but a simple 'perf top' (as root) or 'perf record' followed by 'perf report' can give you a lot of hints, especially with the -g for stack traces.
  2. digikam or most photo management; and also it's sibling showfoto. digikam has a load of different photo tools, from the simple colour fixes, un-distortion etc - and simple album management - all the way up to some very fancy tools. It does the download from phone or camera great. showfoto is most of the basic tools but setup generally for a set of files; I use that when I'm dealing with scans.
  3. Okular is a great PDF - and a lot of other format - document viewer. It's quite happy to deal with a few thousand page PDF file; and I just learnt it can also do images, and mark down (and others).
  4. Gnucash is a nice simple Gtk/GUI accountancy program; I've used it to keep track of my spending, income, credit cards etc for well over a decade; it does simple double-entry stuff and also has some more advanced stuff for generating reports and small businesses.
  5. fsadm is a command line tool that can resize a filesystem and the underlying lvm or luks partition at the same time, for ext* and XFS. It avoids the need to remember to do the lvm lv resize, and the filesystem resize dance separately.
  6. iptraf-ng is a TUI network monitor; it's a really easy way of watching bandwidth on each of your interfaces, and has modes to split between say IPv4/IPv6/TCP/etc, or packet size; and shows you all the IP connections currently transferrign thing, or all the ethernet devices currently doing stuff.
  7. rr is a very odd debugger - it can run backwards (kind of). Normally when debugging a program you get to a crash and find that a variable has a bad value - your challenge is now to find out how it got that way. With 'rr' you can watch the variable and tell it to 'reverse-cont' backwards until it found what wrote it! It's not that often you need it, but when you do it's amazing - it's also great for helping understand a code base you don't know.
  8. deboostrap is one of my favourite parts of debian - and you can use it from other distros as well! It lets you setup a debian install in a directory for use with a container/chroot/etc. My most recent two uses are 1) Building up a new debian install on an existing machine running a different distro in an LVM LV on the running system and configoring it, ready to go on reboot 2) Installing a very old debian chroot for some testing.
  9. inxi is a CLI system information tool - it's got modes that cover a lot of different things, but for example if you're speaking to someone with a graphics problem, instead of asking them which GPU they have, and then checking their Mesa etc options - just ask them to paste you the output of 'inxi -G'
  10. pigz is a fast parallel compressor - it splits the normal compressors over however many threads you want; it's really great when you have a HUGE file that needs to be less huge. Others suggested pbzip2 and zstd.
  11. minicom is a TUI serial comms program - ideal for when you're dealing with real serial devices and you need to play with baud rates, and the like. It's not fancy, and frankly hasn't changed much in ages - but it comes in handy. In the last year I've used it with an Apple ][c, JavaStation, and Epson-HX20 - but even more modern stuff sometimes has that emergency rescue serial shell. Others suggested screen or tio as alternatives.
  12. nut is a UPS monitor program; you can configure your host to switch off when your UPS is running low and change settings on the UPS and monitor charge. The 'N' stands for Network - so you can do a lot of things remotely, for example making a bunch of machines speak to one host monitoring the UPS and get them all to shut down. I also use some of my own scripts to feed it into some graphing stuff with Grafana and get pretty line voltage graphs.
  13. netpbm tools are a suite of tools to convert and fiddle with the ppm/pbm/pgm (collectively pnm) file formats, which are pretty much the simplest image formats on the planet, which even have an ASCII version; so if you have a simple script you want to generate simple images with they're a good choice of format, and if you have them, the pbm tools can convert to/from pretty much anything else or do simple scale/etc - lighter than ImageMagick say.
  14. xxd is a command that is both a hex dumper, and an undumper - i.e. it can turn the hexdump back into a binary. Being able to go both ways makes it good for being able to edit a hex file in your favourite editor. Other tricks it can do are to generate a C array declaration with the contents. It defaults to hex numbered address (unlike 'hexdump' which confusingly uses octal!)
  15. systemd-analyze is a useful if random tool that's part of systemd; it's actually got a whole bunch of different useful bits thrown in. The 'blame' , 'plot' and 'critical-chain' subcommands let you debug start up time. 'calendar' and 'timestamp' let you test if your format for a time/date is OK to use in a systemd file; 'verify' lets you check your systemd unit file for errors. There's loads more random bits.
  16. The arch wiki has got to be one of the best open source documentation resources; detailed with examples on most admin commands, and mostly applicable to all distros not just to arch (with minor tweaking). And I don't even use Arch!
  17. Graphviz is a suite of programs for drawing graphs (In the nodes/edges senses, rather than upwards and to the right sense) - and it uses a file format called 'dot'. Lots of things generate dot output (such as systemd-analyze I mentioned) and it's really easy to generate from scripts and things. 'dotty' is probably the most common program in the suite. There are some newer formats and programs - but this one is probably the most universal.
  18. A bunch of other free OSs, including freebsd, freedos, and reactos
  19. xmllint is a general XML utility; I mostly use it for pretty-printing huge machine generated, single line XML files into an indented hierarchy that's almost readable so I can figure out what's wrong with them.
  20. gitk is a simple GUI git repo viewer; I mostly use it when trying to keep a view of the order of my commits as I'm trying to reorder or break them up, or trying to follow a change back to the commit which had the original version of the line I changed. I find that on huge old repos adding --max-count=20000 keeps the RAM usage down.
  21. k3b is a CD/DVD burner with audio ripper - now, I'd have to say I've not actually burnt a disc in many years, but I do still use the CD audio ripping. It's got some nice settings for retrying slightly tired discs. Others suggested 'abcde', as a CLI alternative.
  22. pandoc is a document conversion CLI program that can read and write loads of different document formats; mostly for text, but with formulas and references and things; so any type of markdown practically to any other, or to and from html, or ebooks, or wikis or man pages, or...
  23. mtr is a TUI traceroute with a bunch of extra features (which I occasionally find more of) - in it's default mode it shows all the network hops between you and your destination - and shows packet loss on each link, which is great for finding who is to blame for a *partially* dodgy connection. Hitting 'Z' shows you the ASN for each hop, which lets you find who owns it; Hitting D gets a scrolling display so you can see where momentary blips happen.
  24. Frozen bubble is a fun little game (clone of Puzzle Bobble) - but with happy penguins.


mail: fromwebpage@treblig.org irc: penguin42 on libera.chat | matrix: penguin42 on matrix.org | mastodon: penguin42 on mastodon.org.uk


back to Dave Gilbert's Home Page