Conduct - amark/gun GitHub Wiki

From the community chat:

I'll catch up on chats later. But I want to make some statements that expose/reveal my conduct bias. This stuff usually comes up once per year, and its probably good for me to explain personal take in case that helps give clarity to anyone.

Strong words ahead: Actually, I love that attitude! "Is one language better than another for security reasons? If so, should I contribute there?" That question is extremely :+1: respectful and awesome because it:

  • (A) asks an objective/measurable/scientific question &
  • (B) is pro-social.

In contrast, its only the rare devs that come in and say (directly or indirectly) "I won't contribute unless YOU rewrite everything in MY favorite language" - those are the types I roll my eyes at because the moral beauty of Open Source is that it is decentralized, we can all do our own thing and whoever has the best fork hopefully wins over time, so the awful putrid arrogant entitlement attitude of assuming they have a nosey right to busybody boss and force other forks into snob-driven compliancy behavior is repugnant.

Busybodies

Those types are the most anti-social toxic people on the planet yet are desperate to find pricks like them, they go around until they have a hall monitoring gang to feel belongingness with that grossly hunts people down to prick on for no scientifically measurable reason or standard (they invent arbitrary rules that are measurable, but they enforced selectively). They are so fundamentally useless at everything else in life their only decisions they're capable of making is based off of insecurely reflecting status signals across a hive mind NPC. They're likely privileged spoiled brats who have 0 skin to handle rejection so they throw hissy tantrum fits until they get their abused victims to do their micro-controlling bureaucratic demands, and then act like they are the ones that got hurt because they crybabied louder about you not letting them harass you, hoping to initiate you into their creepy cult by making you bow down asking for forgiveness by worshipping their holier-than-thou prickhood pridolatry.

Heroes

Oppositely, now look people in this community:

  • They give out help voluntarily kindly
  • (A) as best they can without agenda/no gain of their own (or if there is, they disclose it) and/or
  • (B) in response to a question

This is very different than colonializing pricks hunting people down to be """helped"""

  • (A) that help is = "we're helping you conform to us", their agenda, not something that can be scientifically measured on its own, it requires their arbitration, thus...
  • (A2) this "help" = you do the work they want you to do while they pridefully judge you for it, that is the "help" they are providing - indoctrinating you into as$holery.

Warnings

Beware of 3 things, mechanisms they all implicitly learn:

  • (1) They unconsciously learn how to push people's buttons in just the right ways that specifically generates reactions that make you look extremely bad out of context because...
  • (2) to enforce their hivemind cult they have to make non-pricks look bad to ensure all non-pricks stay split up in a weak & vulnerable state without larger protection, which increases the chance that the toxic group will remain as the biggest dominate collective.
  • (3) As soon as non-pricks have made it obvious to identify the cultists, the cultists will concentrate on masquerading and reversing language and marketing to confuse potential recruits - for instance, if "prick" or "abuser" accurately describes them, they will start to point, shout & scream for years nonstop that you are the "prick" instead, until nobody remembers what was being talked about.

This deflection makes it hard to educate others about this cult's existence and toxic behavior, even though it is obvious to most people, it is hard to put to words.

Compiled Languages vs Interpreted

So you are absolutely right:

Javascript is an unsafe language. Javascript is the worst language to choose to implement a database. If you lookup my posts from 2014 when I launched GUN, you'll see that JS being a bad language was exactly the reason I chose it: If we can prove that GUN is fast and works correctly even in JS (a process might crash/unfinish any moment a user leaves a webpage, for instance) AND IF we can prove to do that in the fewest/smallest lines of code THEN we'll have evidence GUN as a protocol/database/distributed system is well designed and reliable. We then went further than that, and built PANIC which intentionally simulates all sorts of nasty behavior (what happens if two browsers crash at the same time? What happens if the network between users fails? etc. etc.). Now, when GUN is being implemented in other languages (like Rust, which is much much safer), it should be even easier, faster, and more correct by default. So yes, please! Contributing to gun/gun.js has extremely high standards (byte size, 0 dependencies, cross environment & legacy support, performance hacks, single-file-executable, etc.) because its end goal is to be used not read. The goal of gun/gun.js is not to be a software project for contributor gloat, the goal is for it to be so small, so compact, so universal, that GUN freaking dies hardcore because its guaranteed to exist on any machine, anywhere in the world and beyond, that its (concept) is as standard/commonplace as Object/HashMap/Dictionary. That literally if your motherboard or chip (or OS or language or browser) doesn't already support it, it is literally cheaper to add gun/gun.js polyfill than it costs to load your app's logo. This is what is meant when GUN was discussed as being an "embedded" database. My fork/version of GUN will always remain dedicated & obsessed with maximizing performance, scale, speed at mathematically possible smallest sizes. My fork/version of GUN is meant for it to be used. Its a tool, not a diagram.

Unlike these tradeoffs you have to make in JS tho, Rust is designed for code to be readable/understandable AND performant/small etc., this is because Rust is a real programming language. If you have to use a build/devtool to code, you should be using a real programming language that actually compiles it. You literally get the benefits of everything. So this is what I mean by gun.js dying (above), the sooner we can get Android/Apple/Microsoft to include the proper Rust executables in their OS/kernel/Browsers then the sooner I can retire lol. So community contributions to the Rust version not only is going to be much easier for people to participate in (assuming they know Rust), it will also have longer term impact and therefore is meant to be readable and maintainable by others. So if you want to join me in obscure JS optimizations, turning yourself into a human compiler, then contribute to (this) JS fork/version. If you want to help the community grow some longer term sustainability & features, help join the Rust initiative, teach JSers how to learn Rust, etc.

Contribution

Finally, some last comments. The people who have helped me the most in this community have:

  • (A) taken initiative to help others and/or take initiative to build new modules/features ontop/alongside GUN that anyone else can add with a single extra npm/import/script tag and/or
  • (B) asks me what I need help with and then either
    • (1) tries to do it and/or if it is beyond their current code understanding then
    • (2) makes time to help sit me down and focus/brainstorm/debug/implement it together and/or
    • (3) learns how to write the unit/panic tests to replicate a bug or test the new feature.