Jeffrey Paul: That Time I Tried To Contribute To Open Source Software

Jeffrey Paul

That Time I Tried To Contribute To Open Source Software
16 October 2018

Round One: Raspbian

So Raspbian, the Debian-based distribution for a Raspberry Pi, doesn’t let you put a boot script or config file onto the FAT partition when you flash the SD card, forcing you to either grok the whole repo that generates the Raspbian image and modify it and rebuild the image, or to boot the pi and hook up keyboard and monitor and log in and change whatever you want changed (usually setting up network and installing your ssh keys so you can go back to your real computer and ssh into it).

I decided to fix it.

https://github.com/RPi-Distro/pi-gen/pull/207

Nope, newbies might add a boot script they don’t understand and break their system, and then they’d blame the Raspbian developers. (The same newbies that, after hooking up a keyboard and monitor, have a root prompt for that system.)

Gatekeepers: 1, sneak: 0.

Round Two: Raspbian, Part 2

I’ve found that when reading diffs of lists, it is much better to have one item per line, so that each line of the diff adds or removes one item from a list. I’ve also found that if those lists are sorted, it becomes much easier to quickly visually search to see if an item you have in mind is in the list or not.

I noticed while maintaining my own fork of the pi-gen repo above (due to its lack of support for a user-supplied init script on the FAT partition) that the list of packages to be installed is a big clumpy mess that doesn’t make it obvious what is or isn’t included unless you read the whole thing.

I submitted a formatting fix:

https://github.com/RPi-Distro/pi-gen/pull/206

Pedantic gatekeepers: 2, sneak: 0.

Round Three: ipfs

I love ipfs. I run several instances at home and I pay to run a few instances in the cloud. I hawkishly track all ipfs-related projects that serve to bring ipfs integration into mirrors, fetchers, and the like closer to reality.

I tend to run ipfs on Ubuntu LTS OSes, either in Docker containers or on VMs or bare metal. Ubuntu LTS these days uses systemd, which, despite its own faults or merits, is what we’re working with. Systemd has its own concept of config files (“unit files”) that dictate how to start services. They’re quirky and their documentation is somewhat difficult to parse and the whole thing reminds me somewhat of configuring sendmail via a creaky constellation of m4 macros in the late 90s.

I wrote a general purpose systemd unit file for starting up ipfs on an Ubuntu box. Install Ubuntu, install ipfs from the official distro, and drop in this unit file and you’re good to go.

I decided that because it took me about a half hour to suss out all the various systemd-specific quirks, tossing it into the ipfs repo as an example/starter for anyone else who wants to save that half hour of their lifespan might be useful. I’m not packaging it for inclusion in a distribution or anything, just a little bit of code-as-documentation in the misc directory. Surely an uncontroversial submission for a vanilla config on a vanilla OS, right?

I bet you can guess how that went.

https://github.com/ipfs/go-ipfs/pull/5583

fin

0 for 3. Back to private forks and gists I go. Rachel was right.

About The Author

Jeffrey Paul is a hacker and security researcher living in Berlin and the founder of EEQJ, a consulting and research organization.

@sneakdotberlin

@eeqj

sneak@sneak.berlin

keybase.io/sneak

linkedin.com/in/jeffreypauleeqj