Author: Alexander Avery
Posted: Sun | Feb 16, 2025
Plan9
Things I Appreciate About Plan 9
A few weeks ago I got a hold of a Dell OptiPlex and installed 9front on it. I’d like to share some things I appreciate about the system after having used it for around twenty hours.
rio
Having used tiling window managers for several years, I was surprised at how much I enjoy rio. The transition to a mouse controlled workflow was made easy by its thoughtful design. For those unfamiliar, window operations are mostly handled through a menu brought up by clicking and holding button three on the mouse. Of course, this eliminates noise and redundancy from window decorations, but there is something more I like. Rio remembers what option you picked last, and preselects it for you upon initializing the menu. That means repeated window operations become easier. This is contrary to the interface presented by Windows, macOS, and many X11 desktop environments, where decorations on the window require precision clicks for each interaction. On those systems, closing two windows in a row is no easier than closing a single window. The same can be said for resizing them as well. If you’re curious as to what that looks like, here is a quick recording.
Notice how, initially, the menu preselects “New”, but after selecting “Delete” the subsequent delete requires no extra mouse movement.
Aside from the presented interface, it’s uniquely powerful to have each window exposed as a directory under /dev/wsys
.
This makes sharing windows, producing screen recordings or screenshots trivial, and supports a host of creative applications.
Rio enables remote graphics — thanks to 9p — and supports running instances of rio recursively.
This initially may sound complicated, though it’s quite the opposite.
I’d recommend reading the paper “A Concurrent Window System”, by Rob Pike, if you are interested to see how.
Patches
Upon seeing some 9front demos, I was convinced the first thing I would do would be to patch rio to support image wallpapers. After all, there are several patches for theming rio online, and any one of them would be easy to apply. Contrary to my expectations, after the installation, there were far more useful and interesting things to do. The boring gray background achieved exactly what it was designed to, and faded away into the system.
That is precisely the reason I appreciate the culture around patching. Instead of more features appearing in the default install over time, the preferred method is applying patches as the user desires. This allows core programs to remain “feature-complete”, spending zero time adding this or that to the core window system, for example. If you want patches, no one will stop you from applying or creating them, and matters of personal taste don’t end up in the default installation.
sam
A lot has been said about sam and acme, though I rarely see much mentioned surrounding the remote editing capabilities of sam. Sam runs as an editing (host) process and a separate terminal process that can communicate transparently over a network. If you run the host process remotely, and the terminal process locally, you get some interesting properties:
- Large files can be edited with sam commands, without transferring the entire file over the network to the terminal.
- The host need not reside on a machine that supports bitmapped displays.
I won’t elaborate further, as you have likely come up with a few personally relevant inferences.
ndb
NDB is what I wish I had to configure my pfSense router — more on that later. There is nothing particularly outstanding about it that I am aware of, it’s just a good idea that’s executed well.
Source included
The term “open source” can evoke assumptions that are not always true.
For example, even if a project is open source, building the project may be a hassle, even undocumented.
The Linux kernel, and most programs I rely on, are open source, though I rarely interact with said source.
The sources of these programs are just not effortlessly accessible, and therefore not made easily useful.
Manuals usually end with a link to some bug tracker, the author’s email, and copyright information.
This is not the case on Plan 9.
When you run man <cmd>
— bam — the source filename or directory is right at the bottom.
Just plumb it, and you’re off doing whatever you need: modify it, study it, patch it, have fun.
Graphics are not bad
Any one of my Linux installations consists of nearly entirely terminal programs. The usual exemptions, of course, include a web browser and a video player. I use a web browser for the things I have to, and for now, that tends to include managing just about every “smart device” I rely on. If I want to configure any of my IP cameras, I have to launch Firefox. If I want to change settings on my pfSense firewall, or a managed switch, it’s Firefox again. These interfaces are never good, so I convinced myself the best thing would be to have a CLI to manage these devices. After all, I’d much rather edit files over ssh than click around in menus.
While watching a video posted by adventuresin9, however, I realized my dislike of graphical programs was misplaced. From the video in question, the creator states one reason he uses 9front is because it provides a more secure interface to IoT devices. Instead of, for example, routers running a stripped down Linux handling authentication itself, the router could run u-boot, and provision itself from a file and auth server. It never occurred to me that the insecure authentication software running on these devices was also redundant. He went on to state my exact problem: that because people don’t generally want to manage IoT devices over ssh or telnet, they often provide complex web interfaces. The original issue I had with managing pfSense was specifically the clunky web interface, not graphics in general. Using rio to manage these devices would be an improvement, and even preferable to my original idea concerning ssh access.
There’s a lot more to appreciate, but that’s all I’ll mention for now. If you haven’t, I hope you try Plan 9.