Skip to content
DevMeme
4942 of 7435
The Eternal Debate Over Comments in JSON
DataFormats Post #5409, on Sep 8, 2023 in TG

The Eternal Debate Over Comments in JSON

Why is this DataFormats meme funny?

Level 1: No Notes Allowed

Imagine you’re building a big LEGO set with your dad. The instruction booklet that comes with it has a bunch of steps. You notice some steps are a bit confusing, so you say, “Hey, I want to use a pencil to mark a note on this page so I remember what to do.” But then your dad suddenly yells, “No way! The instruction book was found exactly like this, we can’t change a thing!” You suggest that maybe the company could update the booklet to make it clearer, but your dad is acting like the book is some ancient treasure map that absolutely cannot be altered. He even says, “The printing press has already finished the job, we can’t add anything now!” at the top of his lungs. At this point, you’re just frustrated and thinking, “Seriously? It’s just a little note, why are we being so stubborn?” In the end, you throw your hands up and say, “People who made this must have been really lazy or something!”

In this silly story, the instruction booklet is like the JSON format, and your desire to write a helpful pencil note is like wanting to add a comment. The dad insisting the book was “discovered” and the printing is done is just like someone absurdly claiming JSON’s rules were fixed and can’t ever change. It’s funny (and a bit ridiculous) because they’re having a huge shouting fight over something that seems so simple and obvious to fix. The big joke is that sometimes in real life, computer programmers argue in the same over-the-top way about little things like this. One person can’t believe a feature is missing, and the other person makes wild excuses for why it’s missing – and they get mad at each other. It’s like two people yelling instead of just saying “yeah, maybe we should allow notes.” Seeing grown men throw a tantrum (and a chair!) about “no notes allowed” makes us laugh, because it’s a exaggerated cartoon of how silly we can all be when we refuse to change a rule that probably should have been changed.

Level 2: No Comments Allowed

Let’s break down the joke in simpler terms. JSON (JavaScript Object Notation) is a very common text-based format for storing and exchanging data. It’s basically how you format data to send from a server to a web page, or to save configurations. For example, you might have a JSON file that looks like:

{
  "name": "Alice",
  "age": 30
}

Here, "name" and "age" are data fields. Now, in most programming languages and config files, you can include comments – little notes or explanations that the computer ignores but humans find helpful. A comment might look like this:

// This is a comment explaining the data
{
  "name": "Alice",
  "age": 30
}

In the snippet above, the line starting with // is meant for humans reading the file (perhaps explaining who Alice is or why age is needed). However, with JSON this is not allowed. If you put // This is a comment in a JSON file, it will cause an error when you try to load or parse that JSON. The JSON specification (the official rules of the format) says nothing about comments, which effectively means any // or /* ... */ will break the format. In other words, JSON has a strict “no comments” rule. This often surprises newcomers. A junior developer might think, “JSON is a text file for config or data, why can’t I just put a # or // to leave a note for myself?” But when they try, their JSON parser (the piece of software that reads JSON) will complain about “invalid syntax.”

So, why is this a big deal? Well, programmers love using comments in code and config files to clarify things. It’s a basic convenience: imagine a long list of settings in a file — wouldn’t it be nice to add a short note about what a setting does or why a value is set a certain way? In formats like YAML or XML, you can include comments freely. JSON’s strictness forces developers to either omit those notes or come up with hacks (like adding a dummy field called "//": "this is a comment" which is kind of an awkward workaround). Over time, this turned into a running joke and annoyance in the programming community. It’s such a small thing, yet it affects so many of us, which is why this meme hits home for a lot of folks. It’s DeveloperHumor 101: taking a niche technical gripe and blowing it up dramatically.

Now, the images in the meme are from a famous scene of the TV show American Chopper, which has become an Internet meme template for arguments. The big older guy (Paul Teutul Sr.) and the younger guy (his son, Paul Jr.) are known for having explosive, over-the-top fights about trivial things in the show. The meme community turned this into a format where each panel has them yelling opposing statements. In this american_chopper_meme version, they’re yelling about JSON and its lack of comment support. Let’s map it out in simple terms:

  • Panel 1 (Older man): He’s basically shouting, “Which genius designed JSON and forgot to include the ability to have comments?!” He’s mad about the no_comments_in_json rule. This represents developers who complain about this missing feature in JSON.
  • Panel 2 (Younger man): The son yells back something absurd: “JSON wasn’t created, it was discovered.” This sounds dramatic and a bit silly. He’s implying that JSON’s form was not a conscious design choice but something that already existed and couldn’t be changed. Of course, in reality JSON was designed by people, but he’s taking a philosophical stance for the sake of arguing. This mocks how some people defend JSON’s limitations as if they are laws of nature.
  • Panel 3 (Older man): Now the dad is counter-arguing: “Data formats aren’t stuck in time like dinosaur bones!” In plain language, he’s saying “Just because JSON started without comments doesn’t mean it has to stay that way forever!” He’s pushing back, meaning we could update it. The dinosaur bones analogy is him ridiculing the idea that JSON is a fossil you can’t alter.
  • Panel 4 (Action shot): Things go wild – the older man actually throws a chair in anger while the younger man ducks. The caption has the younger guy insisting, “The finite state machine had already been written.” This is a very techy phrase. A finite state machine is basically a way to describe how something like a parser works internally (going through different states as it reads each character of the file). By saying it “had already been written,” the younger man is giving a convoluted excuse: “the code for JSON parsing is already done and decided, so we can’t possibly change it now.” He’s basically using technobabble to say “too late, can’t change JSON.” This is played for laughs, because it’s such an over-the-top justification. (Most people, even many programmers, don’t normally bring up finite state machines in casual conversation! It’s deliberately melodramatic and pedantic.) This line is referencing a very specific finite_state_machine_argument that a stubborn developer might use to avoid extra work – blaming the complexity of the parser or the finality of the spec as a reason not to add comments.
  • Panel 5 (Older man leaves): The last panel shows the dad storming off in disgust, shouting “The laziness of programmers never ceases to astound me.” He’s basically concluding that the only reason comments aren’t in JSON is that programmers are too lazy or stubborn to add it (or to change things now). It’s a comedic exaggeration, but it’s pointing at a real sentiment: sometimes developers do seem to settle for less-than-ideal solutions (like a data format with no way to add notes) out of convenience or inertia. This notion of programmer laziness is a common light-hearted trope — we often joke that a lot of innovation or lack thereof in coding comes from being lazy in clever ways. In this case, the older man is using it as an insult, frustrated that nobody ever revisited JSON to include a simple feature like comments.

In summary, to a junior developer or someone new to these terms: the meme is funny because it turns a dry technical limitation (JSON not supporting comments) into a dramatic shouting match. It’s riffing on how developers endlessly debate even tiny issues. The data_format_specification for JSON says “no comments,” which has led to endless forum threads and rants. Here, those rants are personified as two guys literally throwing furniture over it! The younger guy’s melodramatic defenses (“it was discovered,” “the parser’s already written!”) poke fun at the sometimes ridiculous justifications people come up with to defend the status quo. And the older guy’s fury stands in for all of us who’ve ever been annoyed by a design decision that feels short-sighted. If you’ve ever asked “Why on earth doesn’t this tool let me do X?!” and gotten an unsatisfying answer, this meme will feel pretty relatable. By packaging that feeling into the over-the-top American Chopper argument format, it exaggerates the scenario to humorous effect. Even if you didn’t know all the tech lingo, the visuals of two grown men fiercely arguing make it clear that this is a big deal to them, which is inherently funny when the subject is just // comments in a config file. It’s a classic case of developers gleefully making mountains out of molehills, and that’s why it’s comedic. We laugh because, yeah, we’ve seen debates like this over much smaller technical issues in real life!

Level 3: Comment Crusade

This meme captures a heated developer humor showdown over JSON’s design choices. In the classic American Chopper meme format (famous for its father-son shouting match), two devs are effectively re-enacting the comment support controversy around JSON. The older developer is livid, shouting “Who created JSON without adding the capability for comments?” This immediately resonates with experienced programmers because it highlights a long-standing gripe: JSON, one of the most popular data formats in tech, disallows comments. For any developer who’s tried adding a // note in a JSON file only to have their parser throw errors, this frustration is very real. JSON (JavaScript Object Notation) is used everywhere for configuration files, APIs, and data serialization, yet you can’t include even a tiny explanatory note within it. That design decision has caused countless eye-rolls and Stack Overflow questions. The meme exaggerates this irritation by having someone literally screaming about it – a reflection of how absurdly passionate engineers can get over what outsiders might see as trivial tech details.

The younger developer’s comeback is both ridiculous and hilarious to any senior engineer:

JSON wasn’t created, it was discovered.

This line parodies a quasi-mythical reverence for JSON’s origin. It’s poking fun at the idea that JSON is treated like some kind of natural law or ancient fossil – something that was unearthed rather than intentionally designed by mere mortals. There’s a kernel of historical reference here: JSON was essentially derived from JavaScript’s object literal syntax and popularized by Douglas Crockford. In a sense, Crockford often joked that he “discovered” JSON lurking inside JavaScript. By saying JSON wasn’t created but discovered, the meme mocks a mindset that the JSON format is sacrosanct and unchangeable – as if its form was preordained. Seasoned devs recognize this as a satire of data format specification bullheadedness. The young guy sounds like those developers who act like a spec is fixed in stone for eternity (like the “bones of a dinosaur” the older man mentions) – an attitude not uncommon in debates about legacy technology. It highlights how some treat specs and standards almost like physical laws of nature, instead of human agreements that could, in theory, be improved.

The older man isn’t buying that explanation. He bellows, “Data formats aren’t stuck in time like the bones of a dinosaur!” This is a senior dev perspective that specs can evolve. He’s effectively saying, “Come on, JSON may be widespread, but it’s not a fossil – we can update it, add things like comments if we really wanted!” This touches on the reality of spec governance and versioning. In practice, once a technology like JSON is massively adopted, changing its specification is extremely difficult. There’s backwards compatibility to worry about – billions of devices and systems expect JSON to behave a certain way. It’s risky or impractical to alter something fundamental like “no comments” because all existing JSON parsers would reject files with comments. In that sense, JSON has become immutable for all practical purposes (like a dinosaur bone stuck in amber). However, the older dev in the meme is echoing what many of us have thought: why couldn’t the spec be revised, or a new version introduced, to allow comments? Is it truly impossible, or are we just collectively stubborn? His frustration is aimed at the seeming complacency or conservatism in the tech community – the idea that engineers just shrug and say “that’s the way it is” instead of improving a pain point. This disparity between best practices vs. reality is where the humor kicks in: everyone knows what would be nice (having comments in JSON), but we live with the status quo (no comments) because changing it is a huge ordeal. The older guy’s dinosaur analogy and exasperation underscore the absurdity of treating JSON’s original form as untouchable.

Then the meme escalates with literal chair-throwing as the younger dev yells, “The finite state machine had already been written!” This is a wonderfully nerdy punchline. To a seasoned developer, citing a finite state machine (FSM) as a reason not to change something is comically over-the-top technical. Here’s why it’s funny: a finite state machine is a concept from computer science used to model how a parser or any sequential logic progresses through input. In simpler terms, it’s like saying “the code that reads JSON was already finished and set in stone.” The younger character is effectively making an excuse: “We can’t add comments now, the JSON parser logic is done and dusted!” It’s a parody of an engineer defending a design limitation with excessive technical jargon. Senior devs recognize this attitude: sometimes programmers will treat the first working implementation as inviolable, resisting changes by claiming it’s too hard because the code is already written (or because altering it might introduce bugs). In reality, adding comment support to JSON isn’t an insurmountable technical challenge – many JSON parsing libraries could be adapted to ignore // or /* */ comments if we truly wanted. But the meme chooses an absurdly specific technical reason (“the FSM is written”) to mock that engineering obstinance. It’s highlighting the tendency to treat legacy code as something holy that no one dares refactor. The phrase also alludes to how JSON parsing is usually implemented: by a deterministic state machine or a strict algorithm that expects only valid JSON tokens. The joke is that this machine (the parser) cannot possibly be modified post hoc – which senior developers know is a lazy argument. We laugh (perhaps a bit self-consciously) because we’ve all heard colleagues say “We can’t change that now, it’s too late” about code that very much could be changed with some effort.

Finally, in the last panel, the older developer storms off, shouting “The laziness of programmers never ceases to astound me.” This is the exclamation mark on the whole debate. It comically blames pure programmer laziness for why JSON never got comment support. Seasoned devs smirk at this because there’s a grain of truth wrapped in exaggeration. Oftentimes, features remain unimplemented not due to impossibility but due to lack of initiative, low priority, or the infamous “if it ain’t broke, don’t fix it” mentality. JSON’s no-comments rule has persisted for years; rather than changing the standard, developers came up with workarounds (like adding separate "//": "comment text" fields in JSON or using other formats like YAML when comments are needed). The meme channels the collective frustration of developers who have had to explain again and again to coworkers or stakeholders: “No, you can’t put comments in that JSON config file, it just doesn’t support it.” And deep down, many agree it’s a bit silly we still have this limitation in 2023. The older meme character calling out programmer laziness is a tongue-in-cheek nod to the idea that maybe the only thing stopping us from improving the situation is that no one wants to do the legwork (or risk the backlash of altering a standard). It’s a hyperbolic conclusion to a hyperbolic argument. In essence, the TechHumor here works on multiple levels: it satirizes how devs argue about minutiae with such intensity, it references real historical arguments about JSON, and it underlines a truth about software development culture – sometimes, goofy historical reasons and inertia decide what geeks will eternally rant about. 🪓💬 (Even an argument about something as small as JSON comments can turn into an American Chopper style feud in the programmer world!)

Description

This is a five-panel meme using the 'American Chopper Argument' format, which depicts a heated argument between Paul Teutul Sr. and his son, Paul Jr. The meme humorously applies this format to a classic and passionate debate in the software development community: the lack of comments in the JSON data format. Panel 1: Paul Sr. angrily asks, 'WHO CREATED JSON WITHOUT ADDING THE CAPABILITY FOR COMMENTS?' Panel 2: Paul Jr. retorts with a philosophical argument, 'JSON WASN'T CREATED, IT WAS DISCOVERED'. Panel 3: Paul Sr. yells back, 'DATA FORMATS AREN'T STUCK IN TIME LIKE THE BONES OF A DINOSAUR'. Panel 4: The argument escalates as Paul Jr. throws a chair and shouts, 'THE FINITE STATE MACHINE HAD ALREADY BEEN WRITTEN'. Panel 5: Paul Sr. points accusingly and concludes, 'THE LAZINESS OF PROGRAMMERS NEVER CEASES TO ASTOUND ME'. The joke captures the frustration many developers feel when they can't comment their JSON configuration files, contrasting the pragmatic need for documentation with the purist, historical reasons for the format's strictness, namely the ease of writing a simple parser (a finite state machine)

Comments

22
Anonymous ★ Top Pick JSON doesn't have comments for the same reason C doesn't have garbage collection: the original spec was simple enough to fit on a napkin, and now we're all just pretending that the resulting ecosystem of workarounds is a feature, not a cry for help
  1. Anonymous ★ Top Pick

    JSON doesn't have comments for the same reason C doesn't have garbage collection: the original spec was simple enough to fit on a napkin, and now we're all just pretending that the resulting ecosystem of workarounds is a feature, not a cry for help

  2. Anonymous

    JSON’s ban on comments isn’t a spec limitation - it’s a distributed denial-of-documentation attack that guarantees every senior eventually writes a bespoke pre-processor and accidentally invents a build system in sed

  3. Anonymous

    The real tragedy isn't that JSON lacks comments - it's that we've collectively spent more engineering hours implementing comment-stripping preprocessors and arguing about JSONC vs JSON5 than it would have taken to just fork the spec and add '//' support back in 2005. But hey, at least our config files parse 3 microseconds faster without those pesky human-readable annotations

  4. Anonymous

    The irony is that JSON's lack of comments has spawned an entire ecosystem of workarounds (JSONC, JSON5, HJSON) and countless Stack Overflow debates - proving that sometimes the most 'discovered' truth is that developers will always find a way to add comments, even if it means forking the entire specification. Meanwhile, YAML sits in the corner with its comments, indentation nightmares, and Norway problem, reminding us that every data format is just choosing which footgun to hand developers

  5. Anonymous

    Everyone wants comments in JSON - until you remember RFC 8259 is the internet’s ABI; tweak the grammar and every streaming parser, zero‑copy deserializer, and log shipper becomes archaeology

  6. Anonymous

    JSON’s no-comment rule kept decoders simple, so enterprise answered with JSON5, HJSON, and “notes” fields - proving we’d rather reinvent a DSL than fix our schemas

  7. Anonymous

    JSON's comment-less purity: the parser FSM was hand-carved on silicon before we dreamed of docs, proving laziness is the mother of interoperable standards

  8. @sanspie 2y

    JSON это представление объектов в жсе, так что странно ожидать там комментарии. Другой вопрос, что парсер жсона мог бы игнорить комментарии

    1. @RiedleroD 2y

      English please @sanspie

      1. @sanspie 2y

        Tf, we are in telegram

        1. @RiedleroD 2y

          so?

  9. @Araalith 2y

    Really? Why does it support excessive spaces and tabs for formatting?

  10. @RiedleroD 2y

    also json5 which is a extension to the format with comments, meant to be read and written by humans

  11. @SamsonovAnton 2y

    Neither does JS. 😆

  12. @azizhakberdiev 2y

    because some people started using them to store parsing directives, which could harm compatibility

  13. @sylfn 2y

    lmao (only with translations or explanations)

  14. @sanspie 2y

    لقد بخيبة أمل بافل دوروف. ناقص مائة التركية فرحة ناقص واحد محظية زوجته

    1. @sylfn 2y

      Please use English in ths chat

    2. @NiKryukov 2y

      There is nothing to blow up

  15. Deleted Account 2y

    Hedonism more than lazyness

  16. @callofvoid0 2y

    what's the relation of finite state machine and json ?

  17. @M_Ali_S_S 2y

    My brother in Christ, json is the comment

Use J and K for navigation