I could get very didactic here – but in reality, that’s not my point at all. My point is actually very narrow. In open-source software projects, standards are really, really, really important. More important than most people give them credit for. I’m reminded of a quote a friend of mine cites on a regular basis:
Your actions are speaking so loudly, I can’t hear your words.
See, standards are kind of like actions. The project you’re developing may be doing really great, innovative, clever things. But if you fail to adhere to a consistent standard throughout the codebase, as a potential contributor, your lack of standards is going to speak far more loudly and clearly to me than any clever code you’ve written.
If you fail to pay attention to detail in the small things (white space, brackets, naming conventions, inline documentation, etc.), why would I assume you’ve made prudent choices in the big things?
On a more practical level – I tend towards some very OCD-esque thinking patterns. There may be very legitimate bugs that I’d be happy and equipped to fix, but I just can’t get past how difficult it is to read through your code. It might be more judgmental than I’d care to openly admit, but when I read code that doesn’t follow the accepted conventions of the ecosystem it is deployed within – here is my pattern of thought:
- Wow – this code is doing interesting things.
- Hmm, it’s really hard to read. I wonder why they’re not following proper standards.
- I suppose if they’re not concerned about the fundamentals, the elementary things, why would they give any care to bigger things?
- If they can’t adhere to something as simple as a whitespace convention or naming convention, why on earth would they be able to architect anything worth using?
- If they’re releasing this into a community of developers, but they’re not adhering to (or at least seemingly aware of) the “rules” in that community – does that actually say something about them? It might.
- Hmm, time to find an alternative project to contribute to or build upon.
The point is this: Open source projects are intended to be collaborative and a place where community is embraced. If we don’t adhere to a set standard in our own projects, we eventually become self-sabotaging and our code ends up working against us.