Is This An Onion?



  • It occurs to me that the whole belt onion/varnish onion thing is ripe for generalization. To this end, I propose the following definitions and taxonomy.

    Onion: a facet of a program - either the code or the features - whose purpose isn't known or is now forgotten, especially if the original reason had to do with cargo cult programming or copypasta programming rather than sensible design decisions.

    Onions can take a number of forms, including:

    belt onion - something which was done originally to conform to a now discarded style guide, or was added to follow some fad that has since passed.
    https://youtu.be/-o-7MmhqNfA

    varnish onion - something which served a purpose at one time, but continued to be there long after it became obsolete.

    heirloom onion - the opposite of a varnish onion: a feature that is still useful but was either discarded or never implemented, and no one seems to know why.

    news onion - a feature that exists only as rumor, jokes, or overly optimistic promises, causing confusion for both developers ("where did they get that idea? There's no way we could add that feature!") and users ("hey, I heard this was supposed to grant wishes, where's my wish?") alike.
    0_1511224483961_download.png

    minced onion - something whose structure or purpose is obscured by different components getting moved around.

    raw onion - something so incredibly poorly designed or implemented that it makes no sense that they even bother including.
    https://youtu.be/yFHoprM-WMk



  • @scholrlea said in Is This An Onion?:

    raw onion - something so incredibly poorly designed or implemented that it makes no sense that they even bother including.

    But... that's the best state of an onion!



  • @magus Fair enough. I like it raw myself, but that sort of mangles the analogy.

    Actually, I should probably rephrase that one anyway. I was really thinking in terms of something that is being done pro-forma, by someone who knew that it 'should' be included but didn't really understand why. Like the owner whom Chef Ramsay was trying to help in the video clip, the developer is adding it blindly, without understanding the underlying problem or the appropriate solution.



  • Apparently unrelated to your use of various onion terms, but "onion peeling" (or "peeling the onion") is very much a real thing, at least in the hardware world. Just in case it isn't common in software development and debugging, I'll define it:

    Your test fails; you fix the bug. The test runs further, but still fails due to another bug that wasn't observed because the first bug prevented it from getting to that part of the code. Fix that bug, but the test fails due to yet another bug. Keep peeling away layer after lay of bugs, like the layers of an onion.

    Also, you should come up with definitions for the dried onion pieces that come in a jar, grilled onions, and onion rings.


  • 🚽 Regular

    @hardwaregeek said in Is This An Onion?:

    Your test fails; you fix the bug. The test runs further, but still fails due to another bug that wasn't observed because the first bug prevented it from getting to that part of the code. Fix that bug, but the test fails due to yet another bug. Keep peeling away layer after lay of bugs, like the layers of an onion.

    It ends in tears.


  • Considered Harmful

    Grilled onion: A thing which actually does what it's supposed to, in a way, and is sensible enough to not make it a raw onion, but is made so poorly that the CPU or RAM suffer significantly.
    Onion ring: A buggy section of code which failed tests, but was rewritten only to stop failing the tests, not to actually fix the bug they identified.
    Does this sound good @ScholRLEA?



  • @pie_flavor said in Is This An Onion?:

    Grilled onion: A thing which actually does what it's supposed to, in a way, and is sensible enough to not make it a raw onion, but is made so poorly that the CPU or RAM suffer significantly.
    Onion ring: A buggy section of code which failed tests, but was rewritten only to stop failing the tests, not to actually fix the bug they identified.
    Does this sound good @ScholRLEA?

    Yes! Those fit perfectly. Thank you.

    While the grilled onion is a bit different from the others, it is something that could leave the users scratching their heads, so it works.

    Similarly, the onion ring fits because its would only make sense in the context of the unit tests it is bypassing - its behavior wouldn't be manifest from the purpose of the code, so it obfuscates the code while at the same time hiding the real issues.


  • 🚽 Regular

    Blooming Onion: The benchmark for perfection when paired with the yummy sauce.


  • FoxDev

    @scholrlea said in Is This An Onion?:

    varnish onion - something which served a purpose at one time, but continued to be there long after it became obsolete.

    Semi-rotten Onion - Something which served a purpose at one time, but has over time due to neglect, and more than a little abuse, become rotten. It still serves a critical purpose in the application, but if you deviate from the correct incantation it will visit great harm upon you

    Rotten Onion - Something which served a purpose at one time, but has over time due to neglect, and more than a little abuse, become completely and unavoidably rotten. And even worse it cannot be removed without breaking other, seemingly unrelated, bits of functionality. For reasons that are completely inexplicable it remains accessible to end users.... end users who occasionally invoke the dreaded incantation and visits great harm upon you.


  • :belt_onion:

    raw onion - something so incredibly poorly designed or implemented that it makes no sense that they even bother including.

    :disco: 🐎 ???



  • @magus The best state of an onion is thrown in the compost bin.



  • @anonymous234 said in Is This An Onion?:

    @magus The best state of an onion is thrown in the compost bin.

    Do onions look like this where you're from?



  • @ben_lubar is he from

    0_1511132824131_88c4cac9-0d38-4056-bb2d-4cf2977c8355-image.png

    ???



  • @anotherusername You can compost onions in Runescape, but I was referring to the real life ones.



  • @anonymous234 I hated onions as a child. As an adult I suspect it was a combination of my mom using too much onion (to suit my taste) and not cooking it enough (to suit my taste).



  • I am assuming that the reason that 'news onion' is called that, but in case it isn't clear, it is a reference to The Onion, specifically the number of people who took one of their over the top articles to be a real news story.
    0_1511224483961_download.png
    In fact, lemme go put this logo in the original post just to make it clear to anyone coming to the party late.


Log in to reply