Skip to content
DevMeme
6289 of 7435
Dr. Doofenshmirtz Discovers the Moral Quagmire of the JSON License
OpenSource Post #6893, on Jun 17, 2025 in TG

Dr. Doofenshmirtz Discovers the Moral Quagmire of the JSON License

Why is this OpenSource meme funny?

Level 1: No Evil Allowed

Imagine someone gives you a free toy or tool and says, “You can play with this as much as you want, but only if you use it to do nice things – not for anything bad.” Now picture a cartoon villain who loves doing naughty schemes. He’s super annoyed because he planned to use this toy in a mischievous evil plot, but the rule says “no evil allowed.” Pretty funny, right? It’s like a bad guy reading the toy’s instructions and pouting, “Aw man, I can’t use it for my evil plans because the label says I’m not allowed to be evil with it!” We don’t usually see a rule like that printed on things, so it feels really silly. This meme takes that idea and makes us laugh by showing a goofy villain complaining that his new invention breaks an actual software rule that says “for good only.” It’s the mix of a serious rule and a cartoon bad guy that makes it so amusing – kind of like a villain who gets stopped, not by the hero this time, but by a little instruction tag telling him to behave.

Level 2: JSON’s “Good, Not Evil” Clause

For those newer to the scene, let’s break down the joke. JSON (JavaScript Object Notation) is a super common data format that developers use to encode and exchange data (think of saving information in a structured text form, kind of like a simpler cousin of XML). It’s everywhere – in web APIs, config files, you name it. Now, normally when software or formats are shared, they come with an open-source license spelling out how you can use them. Most licenses (like MIT, Apache, etc.) are pretty straightforward: they let you use the software for any purpose as long as you follow a few basic conditions (like keeping credit or not suing anyone).

Douglas Crockford, who popularized JSON, decided to license his JSON implementation with a quirky twist. He added a line in the license that said the software “shall be used for Good, not Evil.” Yes, he literally put that in the legal text! On paper, it reads like something out of a comic book rulebook: you may do good with this code, but villainous uses are forbidden. This is highly unusual (and technically problematic). Open source communities and organizations like the Free Software Foundation expect licenses to grant permission to use software for any purpose – good, evil, or boring. By saying “no evil,” the JSON license introduced a grey area. How do we decide what counts as evil? Joking or not, that phrase meant the license was not accepted as “free” or open-source compliant by strict standards. In fact, the FSF explicitly listed the JSON license as non-free because it restricts users in a way that conflicts with the freedom to use the software for any purpose.

So what happens when a license isn’t fully open? It causes license_compatibility_issues. For example, some Linux distributions (which include only truly free software in core components) couldn’t include JSON’s original code. In one real case around PHP (a programming language), the built-in JSON support was removed or disabled due to this license conflict. The Stack Overflow screenshot in the meme shows an answer advising a user who’s confused about missing JSON functionality on Ubuntu. The answer basically says: “Install the php5-json package (which provides JSON support) and restart Apache.” Then it explains why that step was needed – citing the JSON license’s “Good, not Evil” clause and noting that it conflicted with guidelines for free software packages. This is some deep DevCommunities trivia that not every junior developer would know, but it’s genuine history.

Now, the tweet text itself is styled as a scene from a cartoon – specifically referencing Perry the Platypus and an “inator” device, which comes from the Disney animated show Phineas & Ferb. In that show, the bumbling villain Dr. Doofenshmirtz creates oddly-named contraptions (the Something-inator) for his silly evil schemes, and Perry the Platypus is the secret agent who stops him. The meme imagines Dr. Doofenshmirtz declaring he’s built a “Binary Data Encodinator 3000” that works like a normal data encoder but “for EVIL.” That’s a playful exaggeration of, say, a base64 encoder or JSON encoder being used with bad intentions. Perry rolls his eyes because – plot twist – the doc’s evil plan violates an open-source license! The tweet even insists “It’s a real clause! look it up! You CANNOT use JSON for evil.” This mix of a children’s cartoon reference with a nerdy software license fact is what makes tech folks laugh. It’s a classic example of DeveloperHumor: you take a mundane tech detail (open_source_license_weirdness in JSON) and frame it in an absurd or pop-cultural way. Even if you didn’t know the license clause beforehand, the meme basically encourages you to google it, learn about this odd bit of open-source lore, and join in on the joke.

In summary, JSON is a data format, its original license had a bizarre rule about “good, not evil,” and the meme jokes that a cartoon bad guy’s new gadget runs afoul of that rule. It’s blending OpenSourceLicenses trivia with a cartoon meme format. So if you ever hear a developer jokingly say “Remember, you can’t use JSON for evil,” now you know they’re referencing this very clause – usually with a grin.

Level 3: Devil in the License Clause

For seasoned developers, this meme hits on a hilariously niche bit of tech lore: the time JSON’s license literally outlawed “evil” usage. The tweet is written in the voice of a cartoon villain (think Dr. Doofenshmirtz from Phineas & Ferb) unveiling his latest invention: the “Binary Data Encodinator 3000.” In true doofenshmirtzian fashion, he boasts that it’s just a regular data encoder “EXCEPT mine is for EVIL!” – precisely the kind of nefarious purpose forbidden by the original JSON license. The punchline? Using JSON for evil would violate its license! Perry the Platypus (the silent, long-suffering secret agent from the show) can only roll his eyes at the ridiculous predicament. It’s an absurd crossover of a Disney cartoon plot with OpenSource licensing trivia, and that contrast is exactly why it’s hilarious to veteran devs.

What makes this especially funny to insiders is that the JSON license’s “Good, not Evil” clause is both real and notoriously out-of-place. Most of us never read software LICENSE files line-by-line – until a build breaks or a lawyer panics. Imagine the surprise (or groan) of a senior engineer discovering that a fundamental DataFormat library like JSON came bundled with a pseudo-ethical directive. It’s the kind of quirky detail you joke about at meetups: “Remember when JSON’s license technically forbade us from doing evil? mwahaha .” Developer communities love this kind of humor because it validates that yes, someone actually wrote that, and yes, it had real consequences. The meme even provides proof in the form of a Stack Overflow snippet, essentially saying “Look, it’s a real clause! Here’s the Q&A to prove it.”

In that Stack Overflow answer (shown in the image), a user had trouble with JSON on Ubuntu, and the top answer explains that the JSON extension was removed due to a license conflict – namely our infamous clause. The advice: install php5-json manually, then restart Apache. Buried in the explanation is the gem from JSON’s license: “The Software shall be used for Good, not Evil.” Seasoned devs chuckle at this because they recall the mini-uproar it caused. The OpenSourceLicenses world deemed JSON’s license non-free (as the FSF put it, it failed the test of freedom because of that no-evil rider). This meant downstream maintainers had to treat JSON with special handling despite it being a de-facto standard for DataFormatsAndSerialization in modern apps. The whole situation was a perfect storm of open_source_license_weirdness: a widely-used technology encumbered by a whimsical yet restrictive condition.

The humor has an extra layer if you’ve lived through corporate compliance drills. Picture an earnest legal department trying to assess, “Are we using this software for evil?” It’s comedy gold: the very people who follow licenses by the book aren’t planning world domination, yet they must assume the license is serious. Meanwhile actual villains (in fiction or otherwise) wouldn’t care about legal clauses at all. The good_not_evil_clause thus mainly ended up inconveniencing the good guys (open-source maintainers, Linux distros, etc.) rather than stopping any hypothetical bad guys. This irony isn’t lost on senior devs who’ve seen well-meant rules backfire. So when the meme has a melodramatic Doofenshmirtz proudly violating the JSON license, it’s riffing on that shared experience: of course the cartoon villain doesn’t care about a license – that’s a headache reserved for us law-abiding tech folks! It’s a nod and a wink to all the devs who’ve dug into obscure OpenSource license texts or posted wry comments on forums about “using JSON for evil.” In short, the meme deftly combines a DevCommunities in-joke with pop culture, and every experienced developer in on the joke can’t help but smirk.

Level 4: Evil Clause vs Freedom Zero

At the deepest level, this meme highlights a philosophical license paradox in the open-source world. The infamous JSON license included a moral usage clause: “The Software shall be used for Good, not Evil.” On the surface it’s a tongue-in-cheek condition, but legally and ethically it clashes with foundational free software principles. The Free Software Foundation (FSF) articulates “Freedom 0” as the user’s unrestricted freedom to run software for any purpose. Likewise, the Open Source Definition (maintained by OSI) forbids placing field of endeavor restrictions on software usage. A clause explicitly banning “evil” uses might seem like a lighthearted joke, but it violates these core tenets. After all, who defines what constitutes “evil” in a legal context? This ambiguity and restriction mean the JSON license is non-compliant with free-software criteria, despite JSON being a ubiquitous data format.

Under the hood of this humor is a real-world license compatibility issue. Open-source operating systems and strict DevCommunities (like Debian or Fedora) have policies allowing only OSI-approved or FSF-free licenses in their core repositories. The JSON license’s Good, not Evil clause failed that test. This led to actual json_license_drama: for instance, the official JSON implementation by Douglas Crockford was excluded from certain Linux distributions and PHP versions. Engineers had to scramble for workarounds, such as using alternative JSON parsers under truly free licenses. In one notable case, a major company’s legal team even sought explicit permission from JSON’s author to use the code in potentially “not-good” ways, because the license wording made their lawyers uneasy. (Crockford famously granted them a tongue-in-cheek permission note allowing use of JSON for evil.) The broader context is that any license imposing ethical conditions – however well-intentioned – creates a paradox: it aims to enforce virtue but ends up undermining the neutral freedom that defines open source. This meme’s absurd scenario of an “evil encoder” lampoons that paradox by taking the clause to its extreme: a comical illustration of how a seemingly trivial license line collides with fundamental open-source freedoms.

Description

This image is a screenshot of a tweet formatted as a monologue from the cartoon villain Dr. Doofenshmirtz. The text reads: 'BEHOLD! MY BINARY DATA ENCODINATOR 3000... mine is for EVIL. which specifically violates the JSON license... It's a real clause! look it up! You CANNOT use JSON for evil.' The humor is layered, referencing a character known for comically mundane 'evil' inventions while highlighting a real and notorious piece of tech trivia. Below the tweet is a screenshot of a Q&A forum answer, which explains the real-world implications of the JSON license's clause, 'The Software shall be used for Good, not Evil.' It details how this clause conflicts with the Free Software Foundation's definition of free software (which permits use for any purpose), leading distributions to sometimes unbundle JSON support from packages like PHP. The meme is a classic in-joke for developers, finding humor in the collision of moral philosophy, open-source licensing, and practical package management

Comments

46
Anonymous ★ Top Pick The 'not for evil' clause in the JSON license is the only thing that has caused more pointless arguments in engineering meetings than tabs versus spaces. It's the perfect example of a feature no one asked for, creating a bug that affects everyone
  1. Anonymous ★ Top Pick

    The 'not for evil' clause in the JSON license is the only thing that has caused more pointless arguments in engineering meetings than tabs versus spaces. It's the perfect example of a feature no one asked for, creating a bug that affects everyone

  2. Anonymous

    The security team worried about supply-chain exploits; legal worried the app might conquer the tri-state area - only JSON manages to combine both threat models in one license clause

  3. Anonymous

    The real evil here is discovering your entire microservices architecture technically violates a license because Douglas Crockford wanted to make a philosophical statement about morality in software - meanwhile, your PM just classified the new dark pattern feature as 'ethically neutral user engagement optimization.'

  4. Anonymous

    Ah yes, the JSON license - proof that even in software licensing, someone tried to hardcode morality into the spec. Crockford's 'Good, not Evil' clause is the programming equivalent of a parent saying 'I'm not mad, just disappointed' - technically unenforceable, philosophically amusing, and practically a nightmare for legal departments. The FSF's response? 'Freedom 0 means ANY purpose, Doug.' It's the ultimate collision between idealistic intent and pragmatic open source philosophy, resulting in distros quietly yeeting php5-json like it's technical debt from a legacy codebase. Nothing says 'mature ecosystem' quite like having to fork a data serialization format because someone got philosophical about curly braces

  5. Anonymous

    Security and legal blocked the Encodinator 3000: the SCA report says 'JSON license prohibits evil'; we migrated to Protobuf and renamed it 'Telemetry' and procurement immediately approved

  6. Anonymous

    Legal flagged our JSON because of the “good, not evil” clause - so we renamed the service to “Compliance-Driven Binary Encoder” and suddenly the packets were morally acceptable

  7. Anonymous

    Legacy license alert: Still more enforceable than most microservices SLAs

  8. @advanced_name_1 1y

    translate from frontend language to backend pls

    1. @deadgnom32 1y

      class Meme: public XPost { public std::unique_ptr<licenses::License<licenses::JsonLicense>> jsonLicense; public std::unique_ptr<licenses::License<licenses::FsfLicense>> fsfLicense; public Meme(){ jsonLicense = std::unique_ptr<licenses::License<licenses::JsonLicense>>(new licenses::License<licenses::JsonLicense>()); try{ fsfLicense = std::unique_ptr<licenses::License<licenses::FsfLicense>>(new licenses::License<licenses::FsfLicense>.from(jsonLicense)); } catch (ConflictingRulesException& exception) { std::cout << "in class Meme from function public Meme() [Error]: cant use JSON for Evil, hence not free software." << std::endl; exit(EXIT_FAILURE); } } };

      1. Deleted Account 1y

        wtf?

        1. @deadgnom32 1y

          backend language

      2. Deleted Account 1y

        cpp developer? 😃

        1. @deadgnom32 1y

          no

          1. Deleted Account 1y

            😒

            1. @deadgnom32 1y

              but it's C++ yes. I'm no {{specific_language}}-Developer I'm an IT Department in person.

              1. Deleted Account 1y

                I'm c/c++ dev

                1. @deadgnom32 1y

                  I can pray for your mental health 🙏 if you want me to.

                  1. Deleted Account 1y

                    😂

                  2. Deleted Account 1y

                    no i don't need to pray, but why about cpp syntax, pointers and refresenes?

                    1. @deadgnom32 1y

                      it's just way too overloaded with everything in the world, which results in reduced readability even in constructions designed for its improvement. you can really cut the language in 3-4 smaller languages with shorter syntax and it will only be better. well, basically that's what new modern languages practically have done, instead of trying to be able to solve every task in the world.

                      1. Deleted Account 1y

                        yep but from first times when they said c++ is powerful language, I learn it, and Im still enjoying when I write c++ code. I really love the low level/middle level languages like c,c++

                        1. @NickKhalow 1y

                          C lang was considered as a high level language in time :) It's all relative

                          1. Deleted Account 1y

                            wait, what? if C Lang is high level so what's the python and js?

                            1. @TheFloofyFloof 1y

                              A toy

                            2. @purplesyringa 1y

                              stop thinking in absolutes

                              1. @purplesyringa 1y

                                there's no "low-level" and "high-level" languages, it's a spectrum

                                1. @purplesyringa 1y

                                  Python > Go > Rust > C++ > C > Assembly > Machine code > ucode at least if we're talking about the software side; where you draw the line between high-level and low-level stuff is entirely up to you

                                  1. @purplesyringa 1y

                                    personally I'm with @NickKhalow, I wouldn't even consider x86 machine code low-level these days tbh

                                  2. @purplesyringa 1y

                                    tbf you can't even always compare languages like this. Rust is "closer to hardware" than Go, but also provides a lot more thought-out abstractions

                                  3. @RiedleroD 1y

                                    abacus is too high-level, I code using individual pebbles and rocks

                                    1. Sure Not 1y

                                      Average chad rock throwing enjoyer.

                                2. @TheFloofyFloof 1y

                                  It's autistic :3

                                  1. @purplesyringa 1y

                                    yayyyyyyyy :3 :3 :3

                                3. @itsTyrion 1y

                                  so is my autism

                            3. @NickKhalow 1y

                              Key word is "was" considered

                          2. Deleted Account 1y

                            what's assembly then?

                      2. Deleted Account 1y

                        Other languages like python and javascript are good but not like the c++

                2. @patsany_horosh_mne_v_dm_pisat 1y

                  Quit C++, keep the C arc

                  1. Deleted Account 1y

                    I'm in both of them

    2. @deadgnom32 1y

      better?

      1. @advanced_name_1 1y

        Yep

  9. @viktorrozenko 1y

    There was a clause in a JSON parser license that states it shouldn’t be used for evil which isn’t fully “free”

    1. @viktorrozenko 1y

      So this guy created his own parser without that clause

  10. @anonusernametg 1y

    I'm specifically going to use JSON for evil purposes and noone can stop me

  11. @seyfer 1y

    PHP is evil, got it

  12. Deleted Account 1y

    I am batman, the hunter of evil

Use J and K for navigation