Skip to content
DevMeme
6289 of 7590
OpenSource Post #6893 · source on Telegram

Dr. Doofenshmirtz Discovers the Moral Quagmire of the JSON License

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