About a year ago, as I was living off of savings having recently quit a job, I was trying to see if I could do open source development full-time and live the āContent Creatorā¢ lifeā by launching a Patreon page. As you can see from the publicly visible stats, I currently get 21 USD per month (ā¦unless that changes after publication? hint hint :3) so clearly the āfull-timeā thing didnāt work out. I ended up doing paid contract work, of course.
So what went wrong, why werenāt I able to join the ranks of the FOSS developers that get actually significant subscription revenue? Basicallyā¦ Iām terrible at being a ācontent creatorā, due to the way my brain works:
- Iām way better at starting projects than finishing them;
- I do great work when I get obsessed with something, but I normally get obsessed with a variety of small-ish things all over the place instead of having a single, coherent, marketable Big Project,
- and the things I get obsessed with happen to mostly be specifically obscure, Iām a huge fan of uncommon platformsāand sadly thereās no money in things like bringing up amdgpu on FreeBSD on aarch64;
- worst of all, a crucial part of ācontent creationā is public communicationāand posting isnāt among the things I get obsessed with, posting is more like a chore for meā¦
- and I have a habit of wanting to surprise everyone with a cool end result rather than keeping the public updated throughout the process, which, as you might imagine, combines very well with the first issue on this list.
This is why Iāve been blogging so little. Iām probably not getting anyone to volunteer to be the official Manager & Spokesperson of Val Packett Labs any time soon, so Iām writing this post to break the silence by myself, to try to get into the habit of quicker, more frequent post writing, and to use the public as a bit of a āmanagerā and ātherapistā i.e. letās review my FOSS backlog/roadmap together!
Without further ado, here it is:
- In the background, thereās an overarching operating system megaproject, tentatively titled SoftBSD: building an atomic-image-based FreeBSD derivative that greatly simplifies All The Container Nonsense Of All Kinds into a unified software image management system.
- It has spawned some various mini-subprojects such as an init system (yeah it would be reasonable to just use dinit but I have Opinions and Ideas about what āsystemd the good partsā Actually means especially for This Kind of System) and a logging daemon (my take on the whole journald style binary files vs old school text files is just āSQLiteā)ā¦ Those kinda deserve standalone ālaunchesā of their own, and could be attractive by themselves to a wider audience, but I havenāt gotten around to doing that becauseā¦ *looks at the rest of the list* ah yeah.
- One of the planned subprojects, a fully logind-compatible session tracker that would finally let us run GNOME Shell on FreeBSD, I wanted to submit for FreeBSD Foundation sponsorship, and Iāve even discussed it with ed@ā¦
- Anyway, the BSD-work-in-general has been mostly blocked on setting up the cross-OS dev environment I want, for developing FreeBSD from under Linux and vice versa, sharing everything as much as possible, etc.
- and the ākeyā part of that is filesystem sharing with VMs, so I went with the D41844 import of Juniperās 9pfs client implementation that didnāt really work as-is, imported the absent more recent Juniper commits except the one that broke everything, added a missing method for
mmap
to work properly, overall got it to sort of a working stateā¦ only to hit a terrible performance wall? As I remember, building FreeBSD inside of a FreeBSD VM running off of virtio-9p with that driver would just spend the majority of time on lock contention rather than actually performing the work, making very little progress over time. I never quite got to trying to get my head around the concurrency implementation in that driver :/ and yeah right I could probably just use NFS but shhhhh - At least the Fixes to make bootstrapping from Linux/musl work that were also part of āthe dev environmentā have been met with plenty of interest and should end up merged eventually!
- Something way easier and more light-heartedā¦ browsing through my package repository accounts Iāve recovered a āCSS frameworkā I wrote a literal decade ago that Iād already deleted from GitHub, but not from npm; last month I started writing a blog post about exploring it a bit, and somehow still didnāt come around to finishing it. I really need to cross this one out already.
- I definitely could (and should) come back to TiddlyPWA and work on some issues there.
- And speaking of tiddly things, when I saw heynote I realized I could also use math.js to build a āSoulver-likeā inline calculator-notepad TiddlyWiki plugin.
- Now a big one! Soooo I donāt have a gaming PC anymore and the PC port of the sequel to a big graphically intensive game I absolutely loved came out on Steam recently, so naturally I started working on a Cloud Gaming Solution that would satisfy me. Yes Iāve seen docker-steam-headless; no of course itās not how Iād build it, of course my solution would be Wayland-based :D
- Iāve actually done a lot of research and made a lot of progress on this, Iām quite close to getting it done;
- and I have actually been posting a little bit on fedi about nvidia and amdgpu and CloudFormation, hey look at that.
- Part of the aforementioned solution involves a little webapp (for spawning the instances of course) so of course we require more
mineralsweb dev tools: Iāve long been a fan of the ābundler-lessā way of doing things, and now with import maps shipped everywhere, importmap-rails came out to promote their usage in production. Iām going to build a Rust thingy thatās just the ādownload all the JS locally to avoid depending on the CDN in productionā feature of importmap-rails plus some tiny extras like pre-compressing text assets as.gz
/.br
, to be used right before rust-embed in release builds. - To help me with a paid contract project, Iām working on a thing to help with manually editing big OpenAPI spec filesā¦ specifically a FUSE filesystem that splits a spec into separate files per path, always converted to YAML even if the āmountedā file is JSON.
- As if I needed to add another item onto this list!! Just a couple days ago I decided to finally take a look at that pile of very old cheap Android tablets collecting dust in my local hackerspace, primarily looking for something to run 3D printer control on instead of an SBCā¦ Well, I found a gem there, next to various broken junk there was a fully functioning tablet with a Rockchip RK3066 SoC and UART contact pads! Iām definitely getting mainline-powered postmarketOS onto this. Hereās the tablet with a newly added serial connection:
Ah, by the way, some things I have actually done:
- Took PaperWM for a spin and contributed the EDGE snapping mode to itā¦ yeah thatās that;
- Fixed the firmware on my custom keyboard, as there was a bug with the keyboard not responding anymore after a sleep-wake cycle on the host; now thatās not an issue anymore and even the keyboard itself goes to deep sleep with a USB suspend, saving precious mW;
- One dayāapparently 7 months ago already, wowāI stumbled upon wazero, a WebAssembly runtime written in Go. Immediately I thought: hm, golang, Caddy, a wazero based plugin for Caddy just should exist now, and with caddy-tailscale I could then build a funny little one-process āFaaSā server where I could just POST a
.wasm
binary and have it instantly appear as its own host in my tailnet. A CGI WASI binary specifically, of course, due to the āAWS Lambda is the new CGIā memes and such. Sadly the āfinal productā FaaS thing fell through due to caddy-tailscaleās experimental network listener mode not handling config reloads well, as well as due to me not having any actual use for this and losing motivation :D- But, but, but: caddy-wasm-wcgi, caddy-multi-dyna-config, and cgi.cr (the endpoint for accepting new wasm files and generating Caddy configs for them was to be written in Crystal) are all actually working published complete projects, justā¦ not announced anywhere, as I wasnāt feeling like blogging just about them without the meme-FaaS thing, so I guess this is their announcement here and theyāre not part of the backlog anymore! Granted, WCGI is not the actual future and caddy-wasm now exists for the proper WASI Component Model based HTTP stuff that is the future. But if caddy-wasm-wcgi ever helps someone with Wasm-ifying an actual legacy application Iād be very happy about it!
- Various build fixes landed for musl/Chimera: jemallocator, compio, aquatic
- Got sponsored (!) to do something with actually rather obscure stuff: rewrote a little Discord bot in Factor, also writing Flatpak build scripts for Factor due to running a non-glibc Linux.
- Also sponsored: resurrecting dav1d.js/avif.js due to old iPhones.
*exhales*
Okay, thatāsā¦ actually not too bad! Well, thatās only the open source stuff, while I also need to do paid work, do local political activism, participate in the local hacklab, hang out with friends, take care of myself, and sometimes just watch some damn YouTube :D But still, the scary huge backlog isnāt actually that scary nor messy. I will continue working on what I like and some things will be successful and some less so and thereās that!