Many times on the boards someone has reported an issue and we’ve mentioned that it’s a “known bug” and that we’re working on it. But what is a bug? A bug is a “glitch in the system” – basically something that sneaked through that causes Helium to behave as it shouldn’t. But how does this happen? Are we developers sneaking in easter eggs just to mess with you? Yes, totally.
I’m kidding. In actuality what you see on Helium is an oversimplification of what is actually going on. Helium is actually thousands of lines of code and thousands of specifications – all dictating how it’s supposed to behave. With each new release both grow and with them the complexity of Helium as well. To combat this we build a test suite that checks that Helium is still following all the “rules” (specifications) which we run every time we check in some new code. Even so, stuff slips through. Interactions you can’t foresee happen.
So next we have our QA/Ops team. With each new release or fix we deliver a “release candidate” that they dig through making sure not only does it do all the new things it’s supposed to but also that all the old stuff is still there and functioning. For every bug that you see on live they find hundreds (thousands) that we fix before you ever see the new release.
However, no matter how well you know an application they (and us in development) are only a handful of people. We can’t imagine all the ways the thousands of Helium users will test and use the site. What they’ll do that we’d never think of. And, more importantly, how the new users will approach the site – as familiarity sometimes causes blind spots. So, inevitably, we release the new build to the live servers and our community does something we never even thought of and poof we find a new bug.
This is just a natural part of development. Honestly, with the size of our code (massive) and the size of our development/ops team (very small) it’s amazing that we are able to release so much new code and not have more bugs slip through. What you might also not realize is that Helium is actually not one code base but over a dozen all interacting in interesting ways – with each new code base added to the mix exponentially increasing the complexity of the final entity. Some are also built in different languages or in different frameworks – with each being a combination of user interface code, middleware code, and database code which have to coexist and interact. In other words, the simple site you see is an extremely complex co-mingling of various code bases, languages, specifications and interactions – all of which breed the opportunity for bugs to arise.
Or we really are just messing with you and testing to see if you’ll notice.
I hope this helps.