Dev Diary 2019-04-13

Been a while since I’ve had a good afternoon just to hack away on a project. For Record Store Day I whipped up a little Rails app to hold information about my record collection. I don’t imagine I’ll be open-sourcing it (a bit on that down the page). It’s satisfying coming up with something that matches exactly what I want in a program - and I’m seeing that this doesn’t always align with what is available in the market nor in open source software.

Typically my impulse with an app like this is to open source it, but I’m seeing there’s a cost to open-sourcing software these days. I grew up in the age when open-source software meant “here’s a tarball, go figure it out.” An open version control system was a blessing. Let’s take a look at what used to pass as cutting edge distribution:

  • Create a tarball
  • FTP tarball to server
  • (maybe) inform Freshmeat

But nowadays, with so many tools like GitHub and a polished software ecosystem, things are more complicated. If you want your project to be used, recognized, and enjoyed in 2019:

  • Create source repo in GitHub (Or BitBucket. Or GitLab).
  • Create CI system (but which to use?! Travis? CircleCI?)
  • Create logo and snappy website to differentiate yourself from the competition
  • Create a governing structure for your project (complete with contributor agreement program)
  • Write 200 pages of documentation outlining every single feature, in addition to auto-generated documentation a la doxygen
  • Write series of blog posts and hot takes for Hacker News

These things aren’t hard individually, but in aggregate it can become a lot of work. Users now have an expectation that things should just work. And if it doesn’t, expect the bug tracker (now required) to fill up with “this piece of crap doesn’t work.” Users don’t want to spend a weekend fixing a bug anymore. If the software doesn’t work, replace it with the other Big Shiny Project that does (and yes, I’m guilty of this behaviour).

There’s not enough incentive to open-source anything unless you’re willing to put a lot of additional work in that doesn’t really benefit you personally. Leaving around a bunch of code that looks shabby in comparison (but might be better suited to the task than what currently exists) could scare away potential recruiters, leave you stressed out dealing with the negativity, or confuse folks about what you’re actively working on in the public sphere.

Does this mean I’m quitting working on open-source software? Of course not. But I’m going to be a lot more choosy about what ends up in GitHub, etc. these days, because I’d rather spend time working on stuff that makes me happy than stuff that brings back minimal (or sometimes negative) value to my life.