I was looking back on some of my old blog posts from 2021 earlier1, and I came across something that I thought bears repeating.

It was from this post, and the section I though was worth re-visiting was called “Caveat Emptor”.

It was about how my open source projects are often unfinished, and unpolished, and very much work in progress.

What I said then still applies today, and I’ll repeat it below.

As mentioned above, the context for the following is an old blog post, and so when it says “this post”, or “this project”, it’s talking about the original post.

Caveat Emptor

Part of the barrier to telling people about things I’ve done is sheer time it takes to write even quite a simple post like this one.

So my first disclaimer is just to say that this post is mostly a re-hash of the README file from the Github Repository. Nothing wrong with that I think, but just to be clear…

My second disclaimer is that this is work-in-progress code from the real world.

I’ve encountered a few people who subscribe to a fundamentalist view of open source code: that it’s useless unless it is fully polished, fully tested, 100% supported and actively maintained.

I understand this point of view; we’ve all encountered code that makes great claims and turns out to be broken or mostly unfinished.

Respectfully though, those people are wrong.

Imperfect open-source code can be frustrating. However, it can also be a helpful foundation for someone else to build on, a good example of the pros and cons of particular technique, or a useful supplier of that one crucial line you have been searching the internet for.

Aiming for perfection is setting the barrier way too high. I am as insecure as the next person when it comes to showing my workings in public. I’ve been a professional programmer for more than three decades, but I still suffer from impostor syndrome.

It’s tempting to hide away, but I’m trying to fight the urge, and I’d like to contribute in some small way to an environment where we aren’t scared to risk being wrong.

I offer up all of my open-source code in this spirit. It’s not perfect, because I am busy, and because I am still writing it. I find this code useful, and I hope someone else might. If you do find that it is fundamentally broken, please tell me why. That way I learn something.

  1. Which sounds a little bit narcissistic now that I say it out loud. Ah well - bite me. I fell into a rabbit hole ok, and it just so happens to be one of my own making.