What code I put online

Yesterday, Kelsey Hightower shared some thoughts via Twitter about what kind of code he usually puts online and for what reasons:

I share a lot of code with no intention of accepting contributions or building a community around. In those cases I’m sharing what I’ve learned and maybe something that you might find useful.

That’s pretty much also the approach I’m following with a slight variation. I put public projects into one of the following three categories:

  1. One-off stuff that I basically just put online to make my learning process visible. They tend not to be really updated or maintained.
  2. Those that I mostly produced for myself and don’t accept contributions except for issues from outside of a very very small group of people. I tend to maintain them half-heartedly.
  3. Those that I originally created for myself but do accept contributions from pretty much everyone. This is usually also the kind of project I see maintaining myself over the medium to long run.

It’s to some degree also a life-cycle thing. For instance: webmentiond started off as (1), then as I started to properly use it for myself moved into (2). A couple of weeks later when I heard from some folks who also wanted to use it, I moved it into (3).

tpl, on the other hand, started off as (2) as I needed something like it for work and this is pretty much where it has stayed. From time to time I get feature- and pull-requests from co-workers but that’s it.

What I’m really bad at right now is to explain this to people coming to GitHub repositories I’ve created. Perhaps I will just create some little shields showing the “maintenance status”:

  1. One-off/experiment (red)
  2. Internal (yellow)
  3. Maintained (green)
  4. Unmaintained/Abandoned/archived (red)

I think I might add them over the course of the next couple of days with a link to this post 😅