This Software Is Maintained

Published 2019-04-14

I wrote a README for a recent project and included the following under the Contributing heading:

I built this for my own use, and I only intend to maintain this program so I can use it. Please do feel free to open bugs or PRs or ask questions, but don't feel bad if I don't respond or don't merge your PR. It's not you. It's me! :)

I often spend hours researching how to do make the computer do something. And then, because I don't want to fill my brain with all that computer crap, I write a program to do it for me. Then I can forget. But an artifact exists for future reference.

A Problem Was Solved

If you used my software to solve a problem, or read the code and learned how to do something, HOORAY! Bonus points for everyone!

If you didn't solve your problem, sorry! But I am not here to solve your problem. You see, I was here some time in the past to solve my problem. Now that time has passed, and I am doing something else.

Build for Tomorrow

Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.

-- Antoine de Saint-Exupery

I have learned many lessons about maintaining software:

Most contributors do not understand these rules and so they frequently add dependencies on third-party code, increase the scope or complexity of the project, or just add cruft.

For projects I work on only once or twice a year I ruthlessly optimize for minimal maintenance. Ideally it will work for years without my attention.

The Problem Goes Away Eventually

I write software to solve problems. I maintain software to continue solving that problem.

But eventually these problems just go away permanently, like when I stopped writing PHP. Other times the solution becomes obsolete, like how to build a Vagrant Box for Ubuntu 14.04. That was cool 5 years ago. Now it's useless.

So sometimes it doesn't make sense to maintain the software anymore. So I don't! Eventually, I may even delete those projects. That's OK too.

How to Contribute

If you contribute to one of my projects, it helps if you adopt my mindset.

"I solved my own problem, and this may save you some time."

There is no ego there, and there is no expectation on your part about what I do with it. There is no obligation for me, and neither of us feels badly about the outcome, regardless of what happens. Someone else may see your PR or bug and get value from it, even if I do not. That's great, too!


Related

tools development