Imperfect people, imperfect software

Other than Kanye West there's not many people who say they're perfect... ;) Imperfection is kind of built-in. We tend to make mistakes all the time, no matter the intention. We forget things, say something wrong, don't pay attention, spill some coffee... human error. And let's face it, with software development it's no different.

Today a PR got merged with an incorrect use statement. The use statement probably got there because PhpStorm added that automatically. The flaw wasn't noticed during review, and now it got merged into the concrete5 core. Of course, it's just a use statement, not a critical bug. But it shows imperfection. That use statement doesn't belong there. The code may work, but at the same time it's incorrect.


Imperfect people, imperfect software

concrete5 contains many known and unknown bugs. Bugs could lead to hours of investigating why something doesn't work as expected. End-users who have to deal with foreign key constraints, vague error messages, or incomplete documentation... It'd all lead to a lot of frustration...

But, do we have a right to be frustrated? And if so, do we have the right to vent frustration publicly? Or even blame people or an organisation for it? It's not the first time that (end)users blame concrete5 for things that don't work. I've done that too, and it's definitely tempting to spit it all out. Especially when you feel you have a legit point! Some examples:

  • I just upgraded to 8.4.3 but I now only see a white screen. Upgrading has never worked for me well, why can't this JUST WORK?!!
  • Over the past few years, I have been woefully disappointed in the documentation for C5.

These may be valid points of frustration. But there is blame in the message. And that's a bit tricky I think, especially if people invested their (free?) time in an open source project.

Open source

Because concrete5 is open source, we are all partly responsible for the end result. We don't pay for the software and concrete5 doesn't 'owe' anyone anything. In fact, people who contribute to the project do us a favor! We owe them! It took concrete5 a decade to get to its status quo. Years of writing code, fixing bugs, thinking about solutions. Does it really deserve one's frustration? Even if the frustration is legit and understandable? I think everybody (including myself) needs to take a step back when frustration becomes prevalent. We should zoom out a bit and try to see a broader perspective...

Making an imperfect system a little better

From the perspective that we're all responsible for the end-result, we should rather focus on improving the imperfect. To make that more concrete, here are some ideas when working with concrete5:

  • In case of bug reports, try to be as specific as possible. E.g. by providing information about your environment, version, platform, browser, time, submitted data, login state, etc. Screenshots, a GIF-animation, or a bullet-point list of how an issue can be reproduced can be really helpful, in some cases.
  • Write a review when you're using themes and or add-ons.
  • Write documentation. Everybody with a concrete5 account can change or submit documentation on! Even the documentation site itself is on Github.
  • Submitting pull requests. Issues with the 'help wanted' label can be a good start. Also, pull requests that add documentation to the code, e.g. in the form of docblocks, are very much appreciated by everybody.
  • Helping others via Slack or via the forums. To keep up to date with the forum, you'd subscribe to the RSS feed.
  • Share stories and increase outreach. Send a tweet or retweet via Twitter, start a blog or write an interesting blog post, submit a case study, star concrete5 repositories, add a concrete5 logo to your website.
  • Encouraging, e.g. with a simple thumbs up, constructive feedback, reviewing a pull request, aim for positivity, a simple thank you. A positive vibe will probably result in more commitment and engagement.

OK. That's it for today... Thanks for reading and feel free to comment on this article via the Feedback button.