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:
- One-off stuff that I basically just put online to make my learning process visible. They tend not to be really updated or maintained.
- 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.
- 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”:
- One-off/experiment (red)
- Internal (yellow)
- Maintained (green)
- 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 😅