1. 28

    You shouldn’t be having visceral reactions to peoples’ coding mistakes anyway.

    No. Emotions are part of how humans work. Of course, these emotions can lead to various kinds of communication, and in a team setting choosing kind and useful communication is important.

    I would prefer the author say “Your code review need not contain raw emotional language.”

    P.S. The word should is a minefield in writing.

    1. 4

      Agreed. And it’s not just mistakes — I remember (almost 20 years ago) being really steamed by a coworker’s commit that added a new feature by spicing a bunch of awful kludges into clean code I’d written. It felt like an insult, like sabotage. I went next door and started yelling at him. Not one of my finest moments.

      1. 3

        At least the awkward memory will keep you from doing the same in the future, and as long as he didn’t give up and go to law school there’s probably no long-term harm ;-)

      2. 3

        I would prefer the author say “Your code review need not contain raw emotional language.”

        Outside of obvious emotive words, what makes a statement “raw emotional language”?

        Whowhich particular group of people (amidst an international community of tech people, where emotional appraisal varies among cultures) – gets to objectively qualify it as so?

        1.  

          Who … gets to objectively qualify it as [“raw emotional language”]?

          You added “objective” to this question. I would not expect such judgments to be objective.

          One possible rephrasing of the question is “Who gets to decide if there is raw emotional language?”. Still, that phrasing is limiting, because the question may imply:

          1. there is (a) one person or group…
          2. … making (b) “the decision”

          However, there doesn’t have to be one person or group acting. Also, there doesn’t need to be one decision made. There is more flexibility than that.

          Here is a better phrasing of a set of questions: “How would this suggestion (to avoid raw emotional language) play out? Would it be a guideline? Would it be enforced? If so, how?”. Rather than write at length, I’ll just say this becomes a decision for teams to figure out; i.e. managers, human resources, and employees.

          1.  

            Your better phrasing still doesn’t address the question of what makes something (such as a statement in a code review) “raw emotional language”.

            In a diverse team comprised of people from multiple backgrounds across the planet, many will have differing definitions given the cultural differences in emotional appraisals (especially of language), thus there is no globally uniform notion as “raw emotional language” (beyond emotive words) that everyone will sincerely agree upon … and so ultimately – if one were to enforce, be it as a guideline or a hard rule, this nebulous idea at all (aka. “play out”) – it would have to come down to whichever person/group (usually in authority) gets to choose what is/ what is not considered “raw emotional language” (at the expense of going against a subset of their employees).

            1.  

              Overall, I think you are losing essential context here. Remember the context: my feedback is offered at a high level with regards to the original blog post. Please read it in this context. Nothing there is perfect, and there are no claims that enforcement should be harsh or rigid. The post does not suggest these guidelines have to be imposed.

              In a diverse team comprised of people from multiple backgrounds across the planet, many will have differing definitions given the cultural differences in emotional appraisals (especially of language), thus there is no globally uniform notion as “raw emotional language” (beyond emotive words) that everyone will sincerely agree upon.

              You’re making a false dichotomy here. There is likely to be significant common ground.

              In areas where there may be differences of experience or opinion, having these kinds of discussion will be valuable. It is very useful for a team to be aware of how their language affects each other. It can help build common understanding and some shared norms.

              Yes, even after these discussions, some areas of disagreement may remain – such is the nature of humanity. Having such differences is not a convincing justification for throwing out an imperfect goal altogether.

              this nebulous idea at all (aka. “play out”) – it would have to come down to whichever person/group (usually in authority) gets to choose what is/ what is not considered “raw emotional language” (at the expense of going against a subset of their employees).

              It sounds to me like you are asking for the impossible – a completely unambiguous definition, applicable across all regions on earth, where all employees sincerely agree at a particular time.* I think it would be helpful if you accept that this is not going to happen perfectly, and this is ok. However, it is still better to strive to not include raw emotional language in a code review. Some imperfections in figuring this out do not justify throwing out the goal of being calm and rational in a code review.

              * Remember that people can adapt and change.

              1.  

                I do understand that you are giving a high level and general view … however my comment is primarily in response to a very specific code review criterion proposed (be it prescribed as a guideline or imposed as a hard/ rigid rule), viz:

                Your code review need not contain raw emotional language.

                which you also repeat but in a different form as,

                it is still better to strive to not include raw emotional language in a code review

                Hence my as yet unanswered query of just what would constitute this “raw emotional language” (beyond emotive words).

                Now if, as you say, there is likely to be “significant common ground” in regards to emotional appraisal of statements in code reviews among a diverse team comprised of people from multiple backgrounds across the planet – such as from the Americas, Europe, Africa, Asia, Russia, Australia, etc – then surely it would be straightforward to directly answer that as yet answered query?

                It sounds to me like you are asking for the impossible – a completely unambiguous definition, applicable across all regions on earth, where all employees sincerely agree at a particular time.

                Which is why I say that if one were to prescribe this as a guideline or impose it as hard rule – it would ultimately have to come down to whichever person/group (usually in authority*) gets to choose what is/ what is not considered “raw emotional language” (at the expense of going against the rest). However if it be as loose and time-varying in meaning as you say it is, then nobody nowhere at no point in time will have any idea of what “raw emotional language” is, thus making the whole guideline/ rule null and void to begin with.

                * I use this word in its sociological meaning (and regardless of organizational hierarchies).

                1.  

                  What?

                  1.  

                    What?

                    What is it exactly that you are asking here?

      1. 24

        Calling reviewers’ behavior “toxic behavior” seems pretty toxic itself. It immediately puts it in an us-vs-them hostile framing. If “toxic” is removed from the title, it would be less likely to rile people up. The “unhelpful” framing is better, but still violates the guideline against passing opinion off as fact. How about “Review behaviors I think are counterproductive”?

        1. 7

          I think “toxic” is a pretty reasonable descriptor in this context. Behaviors which are unhelpful, counterproductive, adversarial, and have a net negative effect on culture and trust are IMO bad enough to be classified as “toxic”, especially since they have a tendency to spread around unchecked.

          1. 4

            Real-world example of this in a general context (not just code reviews).

            1. 3

              Much like “problematic,” the word “toxic” seems to have become a signifier of a certain kind of holier-than-thou preaching, and, well…. problematic.

            1. 7

              I avoid node like the plague, personally.

              1. 19

                Why people keep posting stuff like this? What’s the point? To show your status? Desire to kick somebody?

                There lots of people loving and using nodejs, and js in general everyday. So why come and post comments like this?

                1. 6

                  It’s a common attitude here. They could have provided info (e.g. not wanting to deal with JS language versions / node versions / not wanting to rely on a node installation in certain environments, not finding JS expressive for their use cases), but without justification it’s indistinguishable from the whole “web bad” meming.

                  1. 7

                    Because it is objectly a badly designed piece of software. Forcing all IO operations to be async, all thrown in the same event loop and the results catched in callbacks has very well known problems and it is all in all a bad idea as it was proven decades before node was first released.

                    Other than that, it is a command line interpreter for js, which is a language in the same breed as most of popular languages. I don’t see a strong case for js as a language instead of perl, python, PHP, ruby, etc. Perhaps something like coffeescript would be more aliciating in that respect. But its popularity has peaked long ago.

                    Js command line interpreters did exist before node and not many cared about them. Windows came with a built in JScript interpreter for more than 20 years now. And there are other implementations if you look them up.

                    But to the point of this topic… I don’t quite get the rationale of people saying “when it gets too complicated to shellscript”. Shellscript is literally optimized to call external programs and easily glue their output. Other languages are more complicated than shellscript non this task. If the task at hand wasn’t much about calling other programs, then shellscript wasn’t a good match to start with. If it was, no amiubt or complexity will be better handled by other languages. Quite the opposite.

                    1. 11

                      That’s still not justification to jump into a post about “hey who here uses nodejs for bash scripting” with “no and I HATE IT”.

                      1. 5

                        Shellscript is literally optimized to call external programs

                        Right, and it’s very good at this.

                        and easily glue their output

                        …which it is not as good at. Unstructured textual “data” is the worst possible case for connecting programs together, because machines cannot manipulate unstructured data (without fancy ML techniques, which usually implicitly parses it into a structure that the ML model understands). In order to manipulate the output of various tools, it needs to be structured - so either it needs to come out structured (e.g. JSON) or you end up needing to parse it.

                        Most Unix utilities output “unstructured” data - which really means a collection of ad-hoc, poorly-designed, under-specified, brittle structured-text formats - the worst case. Meanwhile, none of the “classic” shells (sh, bsh, bash, dash, zsh, ksh, csh, tcsh, ash - excluding oil & other novel newcomers) actually give you decent tools to parse this mess (e.g. actual parsing tools with BNF & things, as opposed to text-manipulation tools like sed & awk - which aren’t even part of the shells anyway), nor do they provide any kind of structural interchange format that programs can use to exchange structured data.

                        Compared to that, JavaScript has some very strong advantages - most notably (1) JSON and (2) real objects.

                        1. 2

                          Forcing all IO operations to be async…

                          This isn’t actually true. You can use blocking IO in node, it’s just not idiomatic. In fact, scripting is typically a pretty good use case for blocking IO since you’re not generally trying to balance thousands of IO operations at the same time.

                          But to the point of this topic… I don’t quite get the rationale of people saying “when it gets too complicated to shellscript”. Shellscript is literally optimized to call external programs and easily glue their output.

                          Agreed, if all you want to do is glue together a pipeline of tools that read from stdin and write to stdout, a shell script is the right choice. I think the point others (and myself) have raised is that “scripting” is often broader than just redirecting A’s stdin to B’s stdout. When that’s the case, dynamic languages such as python, ruby, lua, and yes, javascript, are pretty handy.

                          1. 3

                            Blocking io operations on node have been marked deprecated for a decade or so. The fact that they need to be deprecated (they prevent anything else from working as expected) is exactly why node’s IO architecture is a very bad idea.

                            It is not my place to bash on node. I followed it since the day it was released. If it has sentimental value to some, nothing against that. But it was very clear from day one what it was. An single threaded event machine with V8 bolted into it. In all honesty, it would be more useful if they would have built V8 with basic IO and concurrency primitives like any proper language distribution out there. But obviously, the big selling point was a fast way to implement relatively performant http servers. Which they achieved.

                            What exactly do you refer to when you say scripting? Processing files, pick files on directories, running commands on file lists, running commands over ssh, download files from FTP or http servers…. Count occurrences… I find all this stuff an order of magnitude quicker to achieve with shellscripts than with general purpose programming language.

                            1. 3

                              In all honesty, it would be more useful if they would have built V8 with basic IO and concurrency primitives like any proper language distribution out there.

                              I was doing some professional Typescript programming - writing a CLI tool - shell scripting type stuff! - about a year ago and the lack of adequate threading / mutexes etc drove me up the wall (I had to query a number of things in a hurry). For whatever reason, the kexec library wasn’t building right, so I was locked on an earlier version of node for interacting with shell commands. The development system and VM was deeply, radically unfit for task, to a degree I’ve never experienced in any other language & VM as a professional. I was surprised even: I thought the system had matured and addressed all of this. This stuff was solved decades ago; it should have been reimplemented in V8 and friends. At this point, I don’t talk about roles with node; I don’t look to use it in a company, or to increase adoption in a company. If I wind up having input, I do not advise using or writing node programs or tech stacks serverside or desktopside.

                              1. 2

                                It sounds like you wanted threads but were stuck with a single threaded runtime that was designed to address io-heavy, cpu-light workloads. It sounds like a frustrating experience, but is this node being objectively bad, or just not a good fit for what you were trying to build?

                                1. 1

                                  I was surprised even: I thought the system had matured and addressed all of this. This stuff was solved decades ago;

                                  It could not have possibly addressed those because it pretty much has denied to address them at design time. It is effectively broken by design. You got one thread, concurrency is achieved by having all IO calls being async. You have one thread, block it, you block everything. If you are serving http responses on a busy website, put a blocking call and you will reduce the concurrency to one request at time.

                                  And when you are performing IO calls say, inside a for loop, there is no way to cap the resources.

                                2. 2

                                  What exactly do you refer to when you say scripting?

                                  Yeah I think part of the disagreement and differences in preferences on this story probably have to do with us all having different use cases for “scripting” which is a broad umbrella. Often times I need to accomplish a task by communicating with APIs and services, maintaining some local state and data according to some straightforward business logic rules along the way. It’s the kind of thing I basically always want a language with actual data structures for. For small bits of automation with less logic, I’ll use shell.

                            2. 3

                              I don’t think it’s personal. They just don’t like node. The runtime is ascendant so it’s bound to attract dissenters.

                              1. 7

                                It’s not personal, but it’s also not helpful. It doesn’t add anything to the conversation.

                                1. 1

                                  You’re right. I read the comment as distressed as opposed to a call out. I don’t need to soothe anyone here.

                          1. 40

                            No, literally never.

                            I only have nodejs installed on machines where I absolutely need it, that might mostly be because I don’t like js and the whole nodejs ecosystem, but it’s a fact. None of my personal projects rely on it and if I have to use it it’s wrapped in a docker container (with rare exceptions) - but my main argument is actually the (imho) horrible dependency handling where I either need to install globally or have the huge node_modules folder somewhere.

                            I dislike bash scripts but at least I can write them to only rely on binaries that I can count on being available (i.e not literally 0 dependencies, but in reality it feels like it).

                            I have experimented in writing lua scripts instead of bash with my own 20 loc-c-script runner binary, but I gave that up as well.

                            1. 4

                              The dependencies situation is what finally drove me to embrace Bash for all the things instead of Javascript–even though I find JS to be my main quick hack tool that I reach for.

                              1. 2

                                my main argument is actually the (imho) horrible dependency handling where I either need to install globally or have the huge node_modules folder somewhere

                                You shouldn’t ever need to install globally unless you want to. So is size the main concern here? node_modules can definitely get super big, but in my experience typically only for application-sized projects, not for scripting use cases. Something I like about npm is the fact that you almost never have to worry about implicit peer dependencies, or shared transitive dependencies at different versions, which isn’t the case with bash. I think this is where much of the node_modules size comes from.

                                1. 4

                                  the OP talked about “scripting” - so I instantly thought of bash - but even with a python script I maybe have 1-5 dependencies that I can somehow finagle into a virtualenv, and it never grows to half a gigabyte.

                                  I’m not saying anyone shouldn’t use (node)js, but I don’t see a single advantage over literally anything for me.

                                  1. 2

                                    For what it’s worth I basically agree. Unless my project is JS, I’m not reaching for it over python as a sh alternative.

                                2. 1

                                  my main argument is actually the (imho) horrible dependency handling where I either need to install globally or have the huge node_modules folder somewhere.

                                  I hear you on the huge dependencies. Node is famous for this. :)

                                  Aside from that, you can install nodejs global packages into your home directory, much like you can install perl, python, or ruby dependencies locally. It’s just a matter of configuring npm (or yarn) to do so ; and as with other package managers, the dependencies also need to be somewhere on your disk.

                                  1. 2

                                    that’s what I meant, but maybe I’m wrong, I thought npm install -g <pkg> as non-root would install “global per user” but that’s exactly what I don’t want, then my $HOME suddenly becomes a non-defined ball of dependencies.

                                    I think the real thing is that the bash script lives there, on its own, for years or decades and doesn’t have to be updated ever, just copied from machine to machine (or checked into my dotfiles). This is simply a very different use case than real “software” which I “install”.

                                1. 4

                                  Whenever I get to the point in a script where I want to do interesting things with data that isn’t plaintext, I jump ship from bash.

                                  1. 5

                                    “This should be small, I’ll do it in bash”

                                    “Oh god, why did I use bash again?”

                                    1. 1

                                      For some kinds of non-plaintext data I don’t mind sticking with bash. For example, using jq in pipes is reasonably painless. The thing that really gets me is no floating point arithmetic, not even as a bash extension. Some of my scripts end up with stuff like this in them, which is not too satisfying:

                                      SOME_FLOAT=0.5
                                      ANOTHER_FLOAT=0.2
                                      RATIO=$(echo "scale=3 ; ${SOME_FLOAT}/${ANOTHER_FLOAT}" | bc -l)
                                      
                                    1. 31

                                      If the author is here and open to changing the post title, Rust is for everyone, and good for professionals too! The title as is sounds like it may be exclusionary toward people who don’t identity as professionals, or feel intimidated by Rust, which is contrary to Rust’s core goal of opening up systems programming to everyone!

                                      1. 39

                                        I, the author, am here.

                                        I appreciate the constructive feedback and can see your point. Choosing titles is hard. I too was concerned about the exclusionary potential for the title. However, I thought I had it sufficiently mitigated by the introduction paragraphs. Apparently I could have done better.

                                        I’m not going to change the title of this post because I don’t want to deal with the hassle of rewriting URLs. However, I will try to consider your feedback for future posts I author.

                                        1. 6

                                          I appreciated the way you took the feedback. Just wanted to say thanks for listening and considering it.

                                          1. 3

                                            My usual way of framing it is “Rust is an industrial programming language”. That leaves the door open for practitioners of all kinds. It’s more like a cars are (in general) a utility and not a plaything or research endeavor, but are open to enthusiasts and amateur practitioners as well.

                                            1. 2

                                              Thanks! I liked the disclaimer, and think predicting how people will respond can be tough. Appreciate you putting in the time to write this, and agree that Rust can be used in professional / production environments successfully, and that it can feel like a breath of fresh air for many!

                                              1. 2

                                                I’ve programmed in the following languages: C, C++ (only until C++11), C#, Erlang, Go, JavaScript, Java, Lua, Perl, PHP, Python, Ruby, Rust, shell, SQL, and Verilog.

                                                To me, Rust introduced a number of new concepts, like match for control flow, enums as algebraic types, the borrow checker, the Option and Result types/enums and more.

                                                How did you use Erlang without pattern matching?

                                                1. 2

                                                  I think the order is alphabetical so its possible that author used Erlang after he learned Rust.

                                                  Have a nice day!

                                              2. 22

                                                Or, alternately, when someone writes 13,000 words about how nice Rust is, how ergonomic and human-centric and welcoming and humane the language and tooling and community are, they can keep the title without someone telling them they’re maybe being exclusionary.

                                                1. 16

                                                  It’s constructive criticism. If you post something on the public web, it’s fair game to criticize it- especially if done in a polite manner.

                                                  1. 23

                                                    It’s criticism, but just because it’s delivered politely does not mean it is constructive. There is a cost to spending the effort to write a thirteen thousand word love letter to a language, just to have someone nipping at your ankles about how the first four words might exclude someone. Objectively speaking, this is a blogger that Rust would benefit from sticking around – but what is the signal they’ve received here?

                                                    1. 11

                                                      Agree 💯.

                                                      Recently a friend submitted his static site generator which is optimised for math heavy sites on HN.

                                                      He made the fatal mistake of calling it “beautiful” in the description and the amount of hangups that people had. It was done in a mostly polite manner, but the amount of time and energy wasted in discussing just the first sentence with barely any technical discussion of the internals, was a form of pathological bikeshedding that I was surprised to see. It was just that “nipping at his ankles” as you’ve described, which can take its toll.

                                                      Vowed to never take that site seriously again.

                                                      1. 1

                                                        It was done in a mostly polite manner, but the amount of time and energy wasted in discussing just the first sentence with barely any technical discussion of the internals, was a form of pathological bikeshedding that I was surprised to see. It was just that “nipping at his ankles” as you’ve described, which can take its toll.

                                                        Agreed. Yet here we are- arguing about arguing. I need a life… xD

                                                        1. 1

                                                          Right, in my experience, HN often attracts uninteresting, unhelpful, or even mean-spirited commentary. Sometimes I am surprised by the opposite, though. In any case, understanding the dynamic really helps. A lot of commentary, seems to me, are upset at some level in some way and take it out in their commentary.

                                                        2. 3

                                                          The author thanked them and described the feedback as constructive. So if they feel like they’ve taken something away from it, who are we to decide otherwise? My own hopefully constructive feedback here is that this subthread strikes me as projecting conflict into an interaction between two parties who themselves seem to have had a positive experience with it.

                                                          1. 2

                                                            Yeah, I get where you’re coming from and I don’t really disagree.

                                                            But I also think that the person who offered the criticism is just trying to help the author get more views.

                                                            It’s fair to suggest that we all should consider our criticisms carefully, though. Because you’re right- if the criticism isn’t that important, we may just be disincentivizing someone from future contributions.

                                                            I also wonder if you’re maybe reading a little too hard into the choice of the word “exclude” used by the criticizer, though… I think that term has a little bit of extra charge and connotation in today’s social environment and I don’t believe the criticizer meant it in that way. I think they simply meant that a person who isn’t writing enterprise software might pass over the article because they believe they aren’t the target audience. I agree with that conclusion as well, because I do write enterprisey software and I thought the article was going to be about that specific point of view- I thought I would see arguments about productivity and developer costs and cross-platform support and other less-sexy stuff. But, it was really- as you said, just a love letter to everything about Rust.

                                                        3. 8

                                                          I felt this lead-in made it a friendly suggestion and not harsh:

                                                          If the author is here and open to changing the post title

                                                          1. 4

                                                            FWIW first third of those thousands of words is irellevant chitchat. The First actual claim on why is rust good is rust makes me giddy. I’m not sure “giddy” describes profesionals. It’s not no, but for me definitely not a yes either - giddy is just…giddy. Then all the technical points, borrow checkers, race conditions and whatnot - none of that tells me why is it a thing for professionals.

                                                            What I mean is, I don’t know if rust is for pros or not, I just think that the title is a bit click-baity, and “rust is good for everyone, even pros” like alilleybrinker suggested would work much better.

                                                            1. 7

                                                              The First actual claim on why is rust good is rust makes me giddy. I’m not sure “giddy” describes profesionals.

                                                              There’s a layer of extra irony here in that the word “amateur” comes from a root meaning “love”; in other words, amateurs are people who do something because they love it. So taken literally, this is very unprofessional!

                                                          2. 18

                                                            It seems relevant to note that the author does address this in the post itself:

                                                            The statement Rust is for Professionals does not imply any logical variant thereof. e.g. I am not implying Rust is not for non-professionals. Rather, the subject/thesis merely defines the audience I want to speak to: people who spend a lot of time authoring, maintaining, and supporting software and are invested in its longer-term outcomes.

                                                            1. 10

                                                              Yes, except the title doesn’t have a disclaimer, and will be taken in the way they say they don’t want. Rather than leaving it ambiguous, they could change the title to remove the ambiguity.

                                                              1. 27

                                                                This side-steps the issue “people don’t read past the title” - which is the real problem. It’s bad, and unrealistic, to expect every person who writes on the internet to tailor each individual sub-part of an article (including the title) to an audience that is refusing to read the (whole) article itself before making judgements or assumptions. That’s purely the fault of the audience, not the writer, and changing the article title is merely addressing the symptoms, instead of the root problem, which will allow it to just become worse.

                                                                We have an expression “judging a book by its cover” specifically for this scenario, and in addition to that, any reasonably-thoughtful reader is aware that, once a sufficient amount of context has been stripped away, any statement loses its meaning - which logically implies that full context must be absorbed before the reader has any chance of understanding the author’s intended meaning.

                                                                People should not have to write hyper-defensively on the internet, or anywhere, because civil discussion collapses when your audience isn’t acting honestly.

                                                                Reading the title and judging before reading the content itself is not acting honestly.

                                                                1. 4

                                                                  Thank you for writing this. I’m sick of how much culture is warped by toxic social media sites.

                                                                2. 7

                                                                  Agreed. It’s a poor choice for a title, even with a disclaimer. In fact, that he knew he needed a disclaimer should have been a big clue that it wasn’t a good title.

                                                                  A better title would be: “Professional devs should love Rust”, or “Rust isn’t just for enthusiasts and hipsters”

                                                                  1. 0

                                                                    I don’t disagree.

                                                                3. 18

                                                                  Responses like this make me hesitant to try Rust, because they make me feel that I’d have to tiptoe around every word I put into a chat room, issue tracker, or mailing list.

                                                                  1. 10

                                                                    I’m not sure this is a Rust issue as much as a general issue of recent years. Be delicate and excessively sensitive about everything because everyone’s an egg shell. It’s contrary to anti-fragility which I would suggest is a far better approach; and the opposite approach. “Rust is for professionals” would have had me targeting Rust so that I could level up, not scare me away. Show me a challenge,

                                                                  2. 5

                                                                    I used rust for three years outside of work, but I’m afraid I stopped last year because I find it too big for a hobbyist. If I used it all day every day - no problem. It’s a great language, but I agree with the title.

                                                                    1. 2

                                                                      This was my first thought, as well, before even reading the article. Obviously I should read before judging, but the author may want to consider that the title could turn away potential readers.

                                                                      I made the same mistake in my own My staff engineering reading list. There was no reason for me to needlessly exclude people earlier in their careers from my list.

                                                                      And it’s good feedback that the author of this piece may not want to unintentionally exclude people from their article.

                                                                    1. 18

                                                                      Is this his first public apology since resigning? If so, it’s kind of shocking that this comes a year and a half later, and after he has re-joined the FSF. My sense is the message here is supposed to “I’ve learned from this”, but the timing belies that for me. And that’s without even touching the substance of the letter…

                                                                      1. 23

                                                                        based on the timing it’s clear that the idea behind this apology is transactional.

                                                                        in exchange for him writing out the correct key words he expects to be entited to his position again.

                                                                        1. 19

                                                                          It saddens me that you need to deride what seems an honest attempt at introspection. Sometimes we don’t learn our lessons fast, especially when our brains keep getting in the way.

                                                                          1. 8

                                                                            Sometimes we don’t learn our lessons fast

                                                                            Not like he had years to do so.

                                                                            1. 2

                                                                              He had the years but he didn’t have the motivation. From this latest development, I would say that the only good thing that came out of this bullying attempt by the internet, is that rms stopped to introspect the way his behaviour affected others.

                                                                              1. 5

                                                                                A few things:

                                                                                • Empathy, not shame or transaction, is the natural “motivation” for reflection. Once a person is made aware of their action’s adverse effect on others, the reflection has to come from within.
                                                                                • Even if it were motivated by “bullying” — and I don’t agree with your characterization — but even if public pressure were the root cause of this statement, again, that all happened 1.5yrs ago, and so if that were the true motivation, as you claim, this statement would have been released a long time ago
                                                                                • RMS’s post was made on the FSF website around the same time he was placed back on the board, again 1.5yrs after the drama unfolded

                                                                                Believe me, I’m not interested in the culture war or cancelling or being unkind on the internet. It’s just really hard to see this post as anything other than a condition for RMSs return. And I think it’s important to make these distinctions and hold public figures to account when considering the virtue of their actions, especially in the case of RMS, when his whole public persona is about virtue and principle.

                                                                                1. 1

                                                                                  I disagree strongly with all of your points. However everything I’m saying has no real basis, it’s all conjecture, so please feel free to call me a naive idiot. Still even if RMS is full of shit, dismissing his words as untruthful or politically motivated, in my opinion, goes against everything that his existing persona has lead us (at least me) to believe.

                                                                                  If we take RMS’ “I was always different” statement to mean that he has some sort of Asperger’s, I believe that one of the main characteristics is a de-prioritization of “empathy” vs “being right”. So it’s not empathy towards the people he wronged that makes him to want to change, but an intellectual decision that sometimes being nice is more important than being right.

                                                                                  Bullying is exactly what it is when media and people on the internet call for your resignation because they are taking things out of context, exacerbate disagreements based on lack of empathy towards his condition, and falsehoods plain and simple. Even if he would be all the things that have been said against him, the amount of vitriol that has been directed his way makes me despair at the lack of understanding for one another. Honestly I hate to be a part of the same internet where these things happen on a regular basis.

                                                                                  The “drama”, as you say, unfolded 1.5 years ago, but also in the past weeks when the FSF decision to reinstate him was made public. I suspect that it was the mass of people and companies took position against him again what triggered this. Having indeed one and a half years to percolate the idea that even if he would be technically right about the things that people raised against him, maybe they were right too.

                                                                                  I don’t know. I give the benefit of the doubt. I try to empathize with the people whose actions I don’t fully understand. I would like that more people did that.

                                                                                  PS Sorry for the rambling, and I believe I’ll stop here. I don’t think I have more to say on this.

                                                                                2. 3

                                                                                  If he truly changed he should have the motivation by himself and not after a controversy.

                                                                              2. 3

                                                                                As I mentioned I’m not poking primarily at the content of the letter, but the context in which it was made. In fact, to the degree that RMS is learning, and to the degree that his comments repair relations with anyone who was alienated by his previous actions, I’m genuinely glad. My point was: while late is better than never, “late” in this instance does materially impact the weight of the statement, especially since he got his position back right before its released, which isn’t great for appearances to put it lightly.

                                                                                1. 4

                                                                                  To me, that’s better for appearances. If he’d gotten his position back after it’s released, it would seem like a term of surrender rather than actual introspection. I don’t see how anyone could take it seriously in that case.

                                                                                  1. 2

                                                                                    I don’t really distinguish between a few weeks before or a few weeks after. The letter was posted directly to the FSF website at roughly the same time he was reinstated. To me, it gives the same appearance either way.

                                                                            1. 39

                                                                              My take on this is that RMS recognizes that his behaviour is troubling, but doesn’t see fit to apologize for it, unless he’s doing so in private (which I assume we’d have heard about if that were the case). An acknowledgement without an apology or amends isn’t even worth the time it took to read it. I’m no less disappointed in him than I was when I first learned of his harassing behaviour towards women in his orbit, and I’m no less disappointed in the FSF today than I was when they reinstated him (and yes, I have read the FSF statement as well as Stallman’s).

                                                                              As an industry, we need to learn that nobody is so great at their job that they can be given a pass for harassing.

                                                                              1. 12

                                                                                isn’t even worth the time it took to read it.

                                                                                Which you clearly didn’t take….

                                                                                And I quote verbatim…

                                                                                I apologize to each of them.

                                                                                1. 6

                                                                                  That sentence applies to the people to whom he’s been intemperate, not to the many others he’s offended or hurt or creeped out over the years. Try harder.

                                                                                  1. 5

                                                                                    Ah.

                                                                                    You are taking the apology as only applying to offenses mentioned in that paragraph, I’m taking as applying to that paragraph and the preceding paragraph, indeed, the whole statement.

                                                                                    I suppose by the letter of english grammar you are correct.

                                                                                    My interpretation from context is still the broader apology.

                                                                                    This is why written communication is hard… it goes out and feedback as to what actually was communicated is delayed or lost.

                                                                                    I have read a fair bit of RMS “in his own words” and even had one or two email exchanges over the years. I’m incline to interpret his apology in the broader sense.

                                                                                    1. 1

                                                                                      It can be read from different viewpoints. What he wrote sounds sincere to me, but I don’t think it’ll come across as an apology when read by people he offended. In the eyes of someone who’s been offended, the piece may sound as if he started with “I’m sorry that I have offended you through no fault of mine, and even though the fault was all yours, I’ll try harder not to repeat that in the future” and then bickered with reviewers to find compromise wording.

                                                                                2. 21

                                                                                  I for one am not super interested in the spread of struggle sessions.

                                                                                  If you’re troubled by RMS…go fork FSF! Go fight the good fight! Give a meaningful and useful alternative to an organization that frankly has been kinda off in the weeds for a while!

                                                                                  If people spent half the ink on, you know, user freedom as they did on libeling Stallman we as a community could be a lot farther ahead.

                                                                                  1. 31

                                                                                    I for one am not super interested in the spread of struggle sessions.

                                                                                    Right. Computer programmers voicing the opinion on the internet that maybe we can do better than RMS is literally the same thing as Maoist revolutionaries physically torturing political rivals.

                                                                                    If you’re troubled by RMS…go fork FSF!

                                                                                    You don’t simply “fork” a social structure and get a carbon copy of it for free like you do with version control. Forming a competitive alternative to the FSF would not only be a massive undertaking, but it’s also more plainly not the only way of engaging in activism. A much more straightforward approach is to campaign for a change in leadership.

                                                                                    If people spent half the ink on, you know, user freedom as they did on libeling Stallman we as a community could be a lot farther ahead.

                                                                                    And what makes you think that “they” don’t spend even more resources on digital rights efforts than “they” spend posting against RMS? The landscape of digital rights activism may not be as broad as we’d like but it’s certainly bigger than just the FSF and GNU.

                                                                                    1. 17

                                                                                      literally the same thing as Maoist revolutionaries physically torturing political rivals.

                                                                                      Verbal and physical abuse–and as many seem found of asserting these days, speech is violence so I don’t really think the difference is relevant. If you don’t think there are people being harassed because they aren’t apologizing hard enough, you must have a much better version of social media than I do.

                                                                                      A much more straightforward approach is to campaign for a change in leadership.

                                                                                      Stealing and imperialism is a lot more straightforward than building a new, distinct thing. My approach would yield at least two different groups moving in hopefully good directions, whereas the “let’s punt RMS because reasons” approach would not. It’s also entirely possible that the success of the FSF (such as it is) is actually linked to either RMS’ quirks or the sorts of people who deal with those quirks; we don’t know this for sure, but a fork seems like a safer hedge.

                                                                                      And what makes you think that “they” don’t spend even more resources on digital rights efforts than “they” spend posting against RMS?

                                                                                      Which do you think gets more brownie points right now–defending free software, or signalling that “hey i’m totally in the same tribe as you all (please don’t get me fired)”? Depending who you believe online, there are people who want to step away from struggles over copyleft and licensing entirely to focus on more social aspects that may or may not actually have any strong basis in legally protecting user freedom–and that crowd requires RMS’ head before they could go into digital rights stuff (which again, they don’t care about).

                                                                                      That’s my reasoning, anyways.

                                                                                    2. 15

                                                                                      That is totally unrelated. No one is forcing RMS into admitting something he didn’t do!

                                                                                      There are already so many alternatives to FSF with many being more transparent and welcoming to all kinds of people.

                                                                                      1. 17

                                                                                        And just imagine how much further we could be ahead if we cultivated all of the developers, lawyers, writers, and thinkers who were driven away by RMS. And before you say “we can’t know that they exist” you might want to consider that, yes, in fact, we can; there is ample evidence of people who’ve left the FSF or the Free Software movement over him. And those are just the ones who’ve talked about it, leaving aside all the ones who looked at the landscaped and, apparently wisely, noped the fuck out.

                                                                                        1. 9

                                                                                          If they are sufficiently troubled by RMS for whatever reason–over behavior or slights real or imagined–I’m glad they’ve found a better place to spend their efforts. It’ll be good to have other people trying to advance free software in other ways.

                                                                                          1. 11

                                                                                            You assume that people put off by rms keep working on free software (or nearby). I personally know someone who didn’t. A talented person and a great gain for the organisation he switched to (which does good work for the world but has nothing to do with free software).

                                                                                            Of course he could be an exception. Or not; I see that the use of the GPL continues to decline so maybe rms puts off more people than he persuades.

                                                                                            1. 6

                                                                                              Why assume? rms-open-letter signers include ten Debian Project Leaders. Say whatever about Debian, but Debian is a dedicated free software organization as any, perhaps more than FSF.

                                                                                        2. 5

                                                                                          That’s not how it works. If a situation calls for anodyne statements in public and perhaps something else behind the scenes, and one spokesperson acts wisely while rms speaks in 72pt boldface, then rms’ choice of how to react is the effective average of the two.

                                                                                          1. 5

                                                                                            You can’t fork FSF. That’s the exact problem.

                                                                                            In my opinion, Software Freedom Conservancy is a much better software freedom organization than FSF. To me, FSF has no value at all as a software freedom organization except for one: it holds copyright of GCC. Forked FSF won’t hold copyright of GCC, and other aspects of FSF I don’t care about at all. So FSF can’t be forked.

                                                                                            1. 2

                                                                                              So … fork GCC too? I don’t see the problem here, unless you want to relicense.

                                                                                        1. 1

                                                                                          The author doesn’t really present material supporting their argument. I agree that some automated tests are poorly written or low-value, and I also agree that some end-to-end tests are very high leverage when testing manually, and very low leverage (high cost, flaky, etc) when automated. And sure, some projects may require significantly less automated testing than others based on the cost of failure. But these are such broad generalized anecdotes as to not really be all that useful IMO.

                                                                                          1. 17

                                                                                            Back when they ousted RMS I felt lost. Here was one of the most morally consistent people I knew of, with all that that implies, having to step down as the head of a movement he embodies. While I found the mob justice extremely dishonest and opportunistic, it was uncomfortable to realize that so many around me were OK – or even in favour of it.

                                                                                            I actually feared for the FSF and their integrity, as such a forced resignation could never ensure a proper transition. They could have easily devolved into something like the Mozilla, which would be a terrible loss. Even if he is not the president of the FSF, I feel better if he continues to play a part in the organisation.

                                                                                            That being said, and as others have pointed out, he won’t be here forever. It doesn’t have to be death, just age that makes it difficult for him to do his job. While he is back, I think an effort should be made to future-proof the FSF and make sure it stays the FSF. I was hesitant to join the FSF(e) after what had happened, but I’m considering it again now.

                                                                                            1. 29

                                                                                              While I found the mob justice extremely dishonest and opportunistic, it was uncomfortable to realize that so many around me were OK – or even in favour of it.

                                                                                              As someone who follows many communities in the FOSS space, I have a problem with the characterisation of this as mob justice (or maybe we’re disagreeing on a fuzzy term). RMS has been criticised for his opinion pieces on just about everything for a long time and in RMS case, particularly on things he directly wrote on his blog. We’re not even talking about heresay! Those were things like support for necrophilia (on previous consent by the dead), supporting the abortion of people with trisomy 21 (and in passing saying that people should get a pet instead, a statement he later apologised for, to be fair) and other stuff.

                                                                                              But for a long time, that was rather niche (which also speaks to how many people actually read is blog or just put those statements off). So, to get to my point: if you were not following these things along, it’s easy to say that the people dropping by and making statements are a random and quick mob. But that is not the case: it’s more like the water level has been rising for a long time and suddenly, this criticism breaks into main stream. But of course, year long critics won’t be silent there - for what reason should they? So suddenly, you see a hundred angry voices. But we tend to forget that the day before, we had 99 critics who were ignored for years.

                                                                                              1. 10

                                                                                                I don’t think we disagree on what happened, just on our sentiments. Yes , “mob” is a fuzzy term, but I’m specifically referring to the tactics used by Twitter to quickly popularize one side of a story, and force organisations to respond as fast as possible. From my perspective, it felt like a Coup d’état, without any room for debate or compromise.

                                                                                                Of course a lot of these people were not neutral, but managed to channel their distaste for RMS at the strategically right time, in the right way. Hence “opportunistic”

                                                                                                Personally, I don’t think that RMS and his position were the best combination. He is a very particular person, that a lot of people are not used to. The paedophilia controversy demonstrates this: While most people accept it to be immoral in principle, he wanted to know why. After all, accusations of paedophilia were used in the same way as accusations of terrorism to infringe on civil rights. I would add that as a culture we have a weird fixation on just-over-18-year-olds that is suspiciously contradictory.

                                                                                                Any meaningful criticism must start from the actual situation. Simply “banning” him is a one-sided approach that has necessarily lead to disagreement, as one side says it was long overdue, while the others view the action as illegitimate. The fact that those opposed to him did not care about this fact is something I find very disturbing. Hence “disturbing”.

                                                                                                1. 18

                                                                                                  I think you missed an important part of the comment you replied to. It wasn’t “quick” or “as fast as possible” or a sudden “coup d’état” – the pressure had been there for years, from many many people. It had been building and building and building. If someone has been unaware of that or not taking it seriously, it can seem sudden, but the only thing that was sudden was the collapse of the network that had supported and protected him from criticism and consequences during all those years (largely due to the Epstein scandal finally breaking into wide public knowledge, which was another case of something building for years and only seeming “sudden” to people who didn’t previously know about it), not the criticism itself.

                                                                                                  1. 4

                                                                                                    Considering the section “A short overview of references in chronological order” from this article, the first event in this specific issue happened on September 12., when “Remove Richard Stallman” was published. On September 16. RMS had to resign. That is quick if you ask me.

                                                                                                    Of course: RMS wasn’t born on September 12., 2019, things happened before, but a coup d’état is not a spontaneous uprising either, but a well thought through, swift plan to change some state of affairs. Hence why it felt like one (to me).

                                                                                                    1. 11

                                                                                                      A dam that bursts also tends to fail “suddenly”. Nothing about this surprised me - apart from the fact that RMS didn’t weather this particular storm.

                                                                                                      In fact, I was vaguely aware of how RMS was viewed by many, many people for years before this. But it took reading the examples in your linked article to really bring it home how weird many of his stated views were.

                                                                                                      Although to be fair, it’s to his credit that he has not gone back and removed them retroactively.

                                                                                                      1. 5

                                                                                                        A dam that bursts also tends to fail “suddenly”.

                                                                                                        Yes, but a social order inspired on the physics of dams doesn’t seem attractive. Nobody can take all the blame, RMS and the FSF had to see something like this was coming. But if nobody is interested in resolving a conflict, the result will almost always be unsatisfactory.

                                                                                                        1. 10

                                                                                                          The testimonies after RMS left were full of examples of people trying to talk to him, trying to reason with him, trying to make him understand that his actions were on the scale from making people very uncomfortable to actively harming people. He didn’t listen - or at least, he did not modify his behavior.

                                                                                                          That’s what I meant by a dam bursting. It was only surprising to those that saw the edifice as strong and unyielding, but the engineers had been warning about cracks and subsidence for years.

                                                                                                          1. 2

                                                                                                            I’d be curious to read these, do you have any links or archives?

                                                                                                            As I’ve said, my impression has always been that RMS is open to reasoned arguments, but I might be wrong.

                                                                                                            1. 4

                                                                                                              Here is a link that’s included in the discussion last year.

                                                                                                              https://medium.com/@thomas.bushnell/a-reflection-on-the-departure-of-rms-18e6a835fd84

                                                                                                              1. 2
                                                                                                              2. 2

                                                                                                                And finally, this post which I remember reading but not bookmarking, but has shown up again now

                                                                                                                http://ebb.org/bkuhn/blog/2019/10/15/fsf-rms.html

                                                                                                                Firstly, all these events — from RMS’ public comments on the MIT mailing list, to RMS’ resignation from the FSF to RMS’ discussions about the next steps for the GNU project — seem to many to have happened ridiculously quickly. But it wasn’t actually fast at all. In fact, these events were culmination of issues that were slowly growing in concern to many people, including me.

                                                                                                    2. 19

                                                                                                      Of course a lot of these people were not neutral, but managed to channel their distaste for RMS at the strategically right time, in the right way. Hence “opportunistic”

                                                                                                      What do you expect of people who have been heavy critics for a long time? Wait until the news cycle is somewhere else again? Sure, this can be seen “opportunistic”, but to be opportunistic, you need to have something ready for the opportunity and that group was on very solid footing. Politics is all about seizing opportunities. And RMS could have addressed all those things over years, or at least not have given people more ammunition.

                                                                                                      I think it’s illegitimate to ask for enemies with a serious and documented concern (again, the primary source is stallmans website itself), to not follow through on opportunity.

                                                                                                      I think it’s easy to blame it all on Twitter: 20 years ago, RMS was the only loud voice in the room. What he missed is that he is not the only loud voice in the room anymore and a lot of those voices are not on his side anymore.

                                                                                                      RMS is not accused of pedophilia. He is accused of questioning the harm caused by it: https://www.stallman.org/archives/2006-may-aug.html#05%20June%202006%20%28Dutch%20paedophiles%20form%20political%20party%29 (EDIT: I don’t pull the quote in here, follow if you want)

                                                                                                      He does not give reason how consent with a small child is even possible. He’s basically concern-trolling.

                                                                                                      After all, accusations of paedophilia were used in the same way as accusations of terrorism to infringe on civil rights.

                                                                                                      Ignoring the stuff around this sentence (tons to unwrap there), I disagree with this fully. People were taking offense with statements such as the above. This has nothing to do with terrorism. This is a false equivalence.

                                                                                                      No one has “banned” him. But people have been seriously questioning over the years whether he is the right person to take this seat, especially when there’s better ones available. It’s not like that’s a zero sum game: a seat as a director of the FSF is also a seat taken for someone else.

                                                                                                      1. 5

                                                                                                        What do you expect of people who have been heavy critics for a long time?

                                                                                                        I don’t imply I it is surprising. It would be stupid for them to not go through with it, given their goals.

                                                                                                        And RMS could have addressed all those things over years, or at least not have given people more ammunition.

                                                                                                        I’m sceptical of this, as many people have already made up their minds about him, either because they do not like his ideas of free software or his other view. After all, he does change his mind, but that was not important. No matter what he does, you can always come up with an accusation that it was too little, too late.

                                                                                                        He does not give reason how consent with a small child is even possible. He’s basically concern-trolling.

                                                                                                        I don’t care much for neologisms like “concern-trolling”, and we will probably disagree here, but I think that a virtue of his is honesty. He isn’t hiding any position, he isn’t preparing a different argument. He just says that he doesn’t understand something, and doesn’t insist on it as a dogmatic point. All he wants to here is a reasoned argument, which should always be possible, but instead all people throw back at him are insults and accusations.

                                                                                                        People were taking offense with statements such as the above. This has nothing to do with terrorism. This is a false equivalence.

                                                                                                        I am elaborating an argument, I would be very grateful if you stopped reading me in bad faith. If something I wrote is confusing or hard to understand, ask, don’t guess.

                                                                                                        1. 7

                                                                                                          I’m sceptical of this, as many people have already made up their minds about him, either because they do not like his ideas of free software or his other view.

                                                                                                          Occam’s Razor. What is the simpler explanation: personal vendetta against the guy, or honest disapproval of his stated positions?

                                                                                                          1. 1

                                                                                                            Of yes, most will probably not have cared or just dislike him. Without any further evidence, claims like a Vendetta shouldn’t be made. But I know of people like that who do exist. Sahra Mei, a Twitter complains about RMS all the time, and she absolutely loathes RMS and the FSF:

                                                                                                            I’ve been a diehard free & open source software user, contributor, and backer since college in the 90s. But at this point, I would rather run proprietary software that I can NEVER see or change if the alternative is to run software licensed by the FSF.

                                                                                                            I am not sure, but I believe that Coraline Ada Ehmke (the author of the Hippocratic License) also has a history with RMS, but I couldn’t find anything on that right now.

                                                                                                            These kinds of people have made up their mind, and have classified RMS as unsalvageable.

                                                                                                            1. 5

                                                                                                              These kinds of people have made up their mind, and have classified RMS as unsalvageable.

                                                                                                              Everyone who looks into this finds stories of people close to Stallman telling him that his personal behavior is a large problem. Over and over. For years. And always the story ends with Stallman not changing at all, because he believes it won’t ever matter – nobody ever held him accountable or made him face consequences before, and so he doesn’t expect anyone ever will in the future.

                                                                                                              At what point is it OK to just say “yeah, people have tried for years to ‘salvage’ here, given second chances, third chances, hundredth chances, and nothing changed, so let’s move on”? At what point, in your view, is it acceptable for everyone else to decide to be done with trying to explain and get him to change when he has made it abundantly clear that he has no intention of ever being receptive to that? Do we have to give him a thousand chances? Ten thousand? A million? Does everybody get that many chances, or just him? Do we ever stop to weigh against the cost of people who might be driven away from the movement by this one dude? And why is it literally every other living human’s job (seemingly) to be endlessly willing to re-re-re-re-re-re-re-re-re-re-re-re-re-re-re-re-re-explain to him and give him the two hundred quintillionth chance, rather than his job to either figure out how to behave like a decent person, or else face people not wanting anything to do with him?

                                                                                                              The Free Software movement is actively held back by Richard Stallman and by the the need of some people to focus the movement on him personally rather than on a philosophy. Stallman at this point is effectively only able to preach to the already-converted, and even struggles with that – plenty of people will say things like what you quoted above, about agreeing with the ideals but being turned off by the person. And he has made it abundantly clear that he will never voluntarily change or step back. So the only way forward for Free Software is to leave Stallman behind.

                                                                                                              1. 6

                                                                                                                The Free Software movement is actively held back by Richard Stallman…So the only way forward for Free Software is to leave Stallman behind.

                                                                                                                Not one of my non programmer friends knows who RMS is. The Civil Rights movements had thousands of leaders. There are many organizations fighting the #imaginaryProperty system. We don’t need RMS or FSF to lead anything. We need them to be the best versions of RMS and FSF they can be.

                                                                                                                I can tell you there is a ton of money that has been actively trying to turn people against RMS for decades. If I was him it would be very hard to tell which people to trust, and perhaps I wouldn’t have changed potentially bad habits either. Sometimes being an early leader is very lonely.

                                                                                                                One of my great regrets in life was not doing more to support aarsonsw when he was being attacked. I should have done more but I didn’t. As the saying goes, freedom isn’t free. It takes people of courage like RMS and aarsonsw and AE who stand up to a great evil that 90% of people don’t think about it and 9% of people actively are paid to promote. That’s gotta be a lonely place to me, especially in the early days.

                                                                                                          2. 3

                                                                                                            I just want to say I found your comments really well put! Some good conversation in this thread.

                                                                                                            I’ve read RMS’ writings and software for years. As far as I remember it is 99% about free software, and 1% about random stuff. To judge him on a fraction of the random stuff is not fair, IMO. I want to see any critic of his on these issues do an honest text data analysis to figure out how much of his writing is truly about the things they accuse him of. My guess is it will round to zero (but I could be wrong and would give an honest read if anyone truly cared about this as evidenced by actually doing any hard work).

                                                                                                            The one point that does concern me is if women who have worked around him have not felt it to be a comfortable work environment. That is something I’ve found to be true at nearly every tech organization, and I would be surprised if FSF was different, and I hope they can do an audit and serious investigation on how to make huge improvements on that front, if that is the case. I read a relevant article recently with some tips: https://www.forbes.com/sites/kendalltucker/2019/04/26/startup-accelerators-contributing-to-or-working-against-tech-diversity/ (and I’m always looking to read more if people have suggestions!)

                                                                                                            1. 6

                                                                                                              Stallman writes about politics every single day on his personal website. He probably writes more about non-free-software politics than anything else these days.

                                                                                                              1. 1

                                                                                                                Thank you. I was wrong, he certainly does write a lot about non software stuff. I guess I was viewing a biased sample (I was always reading his content about software). Appreciate you pointing that out.

                                                                                                              2. 2

                                                                                                                As @hungariantoast says, a lot of his day-to-day writing is regular politics. But I think that you are right that only an extreme minority of his posts are the controversial ones. For the most part, he appears to be a regular social democrat, advocating for healthcare, climate protection, women’s rights, etc.

                                                                                                                I have never met RMS in person, though we have communicated, and I understand what people mean. The crux of my problem is the matter in which he was treated and the issues that raises for the free software movement and their legitimacy as a whole.

                                                                                                                Edit: And thank your for your compliment, I was worried my comments were badly written.

                                                                                                      2. 10

                                                                                                        Back when they ousted RMS I felt lost. Here was one of the most morally consistent people I knew of

                                                                                                        RMS is really the only reason I began to care about Free Software. His personality, consistency, and unwavering resiliency in the face of everything that opposes the movement is impressive and, to a teenager interested in software, enthralling; Free Software really set a foundation for some of my later views on ethics, justice and philosophy, and I feel for many other people he did just the same.

                                                                                                        1. 9

                                                                                                          And yet when others take a stance of unwavering resiliency on what they see as justice, you seem to think (based on your comments here) it is unfair. Which is logically inconsistent – if it is acceptable for one person to be so unforgivingly harsh in the pursuit of their moral system, it is acceptable for another person to do the same.

                                                                                                          In ethics, this is usually when we break out Kant and the categorical imperative, and ask someone to consider “how would the world look if everybody – including people with different ideas of what’s right/just/etc. – were to adopt this way of acting”. If you do not like what you see, then it’s an argument against that way of acting.

                                                                                                          1. 4

                                                                                                            I don’t think it’s unfair they take a stance on something (that’s their right imbued unto them by nature’s creator), I simply don’t believe they are fighting for anything just.

                                                                                                            1. 3

                                                                                                              You’re going to have to be a bit more specific about who “they” are and “what” they are fighting for that you believe is unjust while free software is just.

                                                                                                              I find it really dissonant, the fact that people get amped up on the social justice movement that is free software, which nominally represents equal opportunity / autonomy / freedom of expression, and then turn around and fight against longer lived social movements that advocate for the exact same set of core values, and that have paved the way for free software.

                                                                                                              1. 5

                                                                                                                I’m not sure what you think I believe, nor is lobste.rs the place to have a discussion about politics tangential to the discussion at hand.

                                                                                                      1. 3

                                                                                                        Much appreciation towards those who keep equitable business models for software alive at a time where most products are moving towards eternal subscription models, DRM, planned obsolescence, etc.

                                                                                                        1. 7

                                                                                                          I see nothing wrong with open-source software using a subscription-based service as a business model (managed hosting, pay-for-binaries, support etc.).

                                                                                                          The eternal subscription model is really bad for proprietary software because when you stop paying or when the vendor discontinues the software, you are left without the software, and possibly even without access to your data.

                                                                                                          There’s no such problem if the software is open-source though: you can keep using and hacking it regardless of what the vendor is doing.

                                                                                                        1. 37

                                                                                                          I wonder what folks think about the irony of this being the top post on a site which requires an invitation to join.

                                                                                                          1. 13

                                                                                                            I wish we could flavor our upvotes instead of only our flags (because this was funny).

                                                                                                            1. 14

                                                                                                              I’m glad it came across that way; that was the main intent. But it was also somewhat of a serious question because the post talks about how gatekeeping isn’t an all-or-nothing binary and that it can be useful in some situations, but the criteria it uses are not the same criteria that this site uses.

                                                                                                              I honestly feel very conflicted about the site’s policies because while it does seem to be quite successful at what it aims to achieve (avoiding turning into a reddit-type shitshow over a period of nearly a decade running!) I know it does have less-visible downsides of excluding people whose input would make the site better. It’s easy to ignore those downsides that don’t affect you but …

                                                                                                              1. 3

                                                                                                                I’m conflicted too. I make a conscious effort to check my biases when it comes to invitations, but I’m not always successful.

                                                                                                            2. 4

                                                                                                              As with many things in life, toxicity is determined by the dose. I’ve previously posited that any group has a minimum gatekeeping threshold necessary for maintaining group identity

                                                                                                              I think that applies here

                                                                                                              1. 2

                                                                                                                There’s a parallel with animal cell walls: The organism can’t survive unless its cells can allow nutrients in, exude toxins, and keep pathogens out. Without those calls, the organism would lose coherence and die. The same goes for communities.

                                                                                                                1. 11

                                                                                                                  I don’t want to say you’re wrong, but I’m suspicious of this line of reasoning because it’s exactly what I would say if I wanted to dismiss the concerns and not think too hard about it. It seems like too convenient of an answer to me.

                                                                                                                  “You need the right amount of gatekeeping” sure “which just happens to be exactly the amount we currently have” now hold on a minute… (I’m not trying to put words in your mouth so please imagine that both sides of this conversation are me!)

                                                                                                                  1. 5

                                                                                                                    I’m with you on this. Analogies can be really useful for generating quick understanding, but many of them are sort of coincidentally true. I catch myself making this mistake often. I doubt this is what the OP meant at all, and I also don’t want to put words in their mouth, but to illustrate the point, one can imagine the same cell wall analogy used to make cruel political arguments (and in fact many such arguments were made using reductive nature-based analogies as reasoning). Just because good phenomenon X can be argued an analogy to phenomenon A, doesn’t make A transitively good.

                                                                                                                    1. 1

                                                                                                                      I appreciate the concern about potential misinterpretation. Conversely, these replies feel like a lot of specific projection onto a general observation. Such critiques work the best when applied to arguments that were actually made. :)

                                                                                                                      1. 1

                                                                                                                        Analogies are very dangerous, because people often think they’re tools of reasoning. However, analogies are wildly inappropriate for reasoning, they’re only good for communication. If two subjects have 60% of their structure that can be mapped to each other with an analogy, that’s a great tool if you want to describe that structure. But with only 60% commonality, there’s 0% chance that any reasoning can be transferred between those domains. I.e it’s a type error to use an analogy after “because”.

                                                                                                                2. 2

                                                                                                                  The problem I see is, problems and solutions in gatekeeping aren’t technological, they’re more sociological, and that is out-of-scope for Lobsters. While there’s a lot of overlap (which OP discusses in their post), Lobsters’ technology restriction has always made it difficult to “peer behind the curtains” of governance here. Ironic in that, this position is itself gatekeeping.

                                                                                                                1. 18

                                                                                                                  I’ve marked this as off topic as about half of the article is a rant about reddit moderation (?) which is not really computing-related.

                                                                                                                  1. 23

                                                                                                                    I’m not sure what the point is of even having the “culture” tag, if this post is off-topic for the site. How does this not count?

                                                                                                                    1. 7

                                                                                                                      Can you find me another culture tagged submission that’s about the mods of a subreddit being assholes? Most of the recent ones I’ve seen are about computing.

                                                                                                                      1. 22

                                                                                                                        No, but neither is the thing I wrote about the mods of a subreddit being assholes. It’s about toxic gatekeeping in the tech community.

                                                                                                                        1. 4

                                                                                                                          It’s not about these mods in particular but moreso the fact that a place like r/netsec could be like this, and this is used as a starting point to have the reader think about technical gatekeeping issues as a whole. Correct me if I’m wrong though @soatok.

                                                                                                                      2. 6

                                                                                                                        Oh, sweet irony…

                                                                                                                        1. 6

                                                                                                                          aha, I see what you mean, but (as stated in the post) gatekeeping is important to most communities to maintain quality. r/askhistory may “gatekeep” bad history takes, but it makes the sub so much better for it.

                                                                                                                          1. 1

                                                                                                                            It depends on active definitions. In recent years, people seem to critically invoke “gatekeeping” in order to describe needlessly controlling access to a social system based on some sort of arbitrary social measure. That’s the definition used in this post as far as I can tell.

                                                                                                                            So filtering out ahistorical takes from a history forum is not something I’d personally be reaching for “gatekeeping” to describe. And I think that mixing up good-faith content moderation with bad-faith social gatekeeping does harm to both definitions. That is for example, unless the moderator were to post a rude comment attributing the quality of the post to a perceived lack of a college degree. Then that would be gatekeeping. Definitions are fluid though, and the use and connotations of this word have changed over time.

                                                                                                                            1. 7

                                                                                                                              Restricting access is categorically gatekeeping.

                                                                                                                              I chose to contrast this with toxic gatekeeping (two word noun), and describe how gatekeeping can become toxic gatekeeping, rather than e.g. narrowly define gatekeeping for the purposes of the blog post.

                                                                                                                              1. 2

                                                                                                                                This might be one of those rare times more words is better. Something like “the specific kind of gatekeeping that becomes toxic.” A lot of people seem to have trouble parsing phrases without considering each word independently, especially when it comes to identity and interests.

                                                                                                                      1. 2

                                                                                                                        Does anyone have useful resources about good hiring practices? Hiring soon at work and I’m involved in the process, and we’re trying to do the obvious–not list a ton of mandatory formal qualifications, avoid the prototypical algorithms-hazing interview since that’s not very relevant to the job–but I would especially like anything that’s more “do do this” than “don’t do this” to help us be able to look in a bigger pool/not miss good folks that don’t fit the typical mold.

                                                                                                                        1. 4

                                                                                                                          The sockpuppet.org hiring post I linked to from mine is a good resource for what worked for them if you need an affirmative, positive argument.

                                                                                                                          1. 3

                                                                                                                            That is helpful. On the bias towards the confident and subjective qualities, I did revise our job description to emphasize that we want people who can help us implement X, Y, and Z priorities where before there was more-generic stuff about smart disciplined people etc. We did use a work-sample test last time (though also learned some bits were not clear or predictive enough in that round). One new, doable thing I took from that post is to tell people in precisely what to expect to minimize surprises so the process isn’t just testing how candidates handle surprises (or whether they’ve done this enough not to be surprised).

                                                                                                                            I also liked this recent post about red flags from the perspective of a candidate who had done a lot of interviews, and this earlier post by the same author might also have material. It’s not specifically about gatekeeping and not phrased as a set of things to do, but worth reading about how it looks from not-my perspective and thinking a bit.

                                                                                                                            1. 2

                                                                                                                              One new, doable thing I took from that post is to tell people in precisely what to expect to minimize surprises so the process isn’t just testing how candidates handle surprises (or whether they’ve done this enough not to be surprised).

                                                                                                                              My neurodivergent and anxious friends will seriously thank you for this. Let me know if you want me to point candidates your way, btw!

                                                                                                                          2. 3

                                                                                                                            How about “do lean towards over-clarification in your interview questions so as not to advantage candidates who happen to be well practiced at the game of technical interviews”.

                                                                                                                            1. 2

                                                                                                                              Well, technically this is not a good practice, because I believe research has shown that people like to hire people that resemble themselves, but seeing all the shitty recruitment processes out there I’d like to coin the method of… actually talk to the candidates.

                                                                                                                              My process has always been very simple. The first thing you must remember is that an interview is a lot more stressful for the candidate than it is for the hiring party. The second thing you must remember is that people will show more of their true self when they feel comfortable with the situation. So with that in mind, your goal is to let them feel comfortable and let them just talk. Ask about a project they liked working on. Ask them why they liked it, what they would different in hindsight, etc Just get them to talk about something they are enthusiastic about. The rest will come naturally.

                                                                                                                              You just have to trust yourself that you will recognize that someone is a good fit. You need to have the confidence that you will come up with some tough questions that push the candidate into the technical details far enough to detect whether they are actually smart, or that they are just blabbing out some buzzwords. Whatever the topic is. It is something they brought up themselves, so if you are the interested, curious person that likes to know more about it, there is no other way than that they tell more and more about the intricate details of this particular problem. And in doing so, it will become clear if they match the way your team works or not.

                                                                                                                              Hiring people is.. a people thing. So there is not “system”, or “set of rules” that will guide you to the right answer. It is about people working with other people. So you can be genuinely interested, or you can be a robot. My experience tells me that being genuinely interested yields better results. It does take some time and energy though.

                                                                                                                            1. 10

                                                                                                                              There’s a good discussion to be had around gatekeeping (and I think that anybody with a little experience should be able to make a reasonable case for either position), but most of this essay seemed to be about either Reddit drama, furry drama, or Reddit drama involving furries. It’s not good for the signal to noise ratio.

                                                                                                                              1. 16

                                                                                                                                but most of this essay seemed to be about either Reddit drama, furry drama, or Reddit drama involving furries. It’s not good for the signal to noise ratio.

                                                                                                                                Put another way: Most of this essay about toxic gatekeeping behavior was about my lived experiences with toxic gatekeeping behavior.

                                                                                                                                I can see how you’d view that as an SNR depletion, but without some personal experiences the essay would just sound like the typical ivory tower pontificating that’s common to tech blogs.

                                                                                                                                1. 6

                                                                                                                                  Grounding things too thoroughly in lived experiences can make it hard if others don’t share those same experiences. A lot of folks probably have some experience with some isomorphism of the “X years of PHP experience” that you mentioned in the beginning of your essay–furries are a sufficiently small subset of the population of even technical people (themselves a small subset of the general population) that your lived experiences just aren’t as compelling a rhetorical point as the stuff you led with.

                                                                                                                                  It should be possible to avoid “typical ivory tower pontificating” without grounding things so thoroughly in a niche experience that others have trouble relating.

                                                                                                                                  1. 15

                                                                                                                                    You have a fair point, but I do worry about the structure of the argument (“this is too niche to be relatable” is also true of any minority experience).

                                                                                                                                    I’ve added a small aside to clarify that the point isn’t about being a furry, and that a lot of people face similar or worse treatment for other reasons (especially trans people!), but rather about the “punish the victim” reaction being commonplace in tech forum moderation (although I’m happy to say that Lobste.rs has been a sterling counterexample).

                                                                                                                                    1. 4

                                                                                                                                      Thanks for the update!

                                                                                                                                      And indeed, the argument itself leads to some interesting and weird places, but further exploration is off-topic for here.

                                                                                                                                    2. 8

                                                                                                                                      Grounding things too thoroughly in lived experiences can make it hard if others don’t share those same experiences.

                                                                                                                                      I gotta say, describing the context of a niche or marginal experience is something that writers do specifically in order to communicate more readily to a wider audience.

                                                                                                                                      1. 9

                                                                                                                                        Grounding things too thoroughly in lived experiences can make it hard if others don’t share those same experiences.

                                                                                                                                        It’s only hard for people who lack empathy.

                                                                                                                                        1. 4

                                                                                                                                          If you want to maximize your audience, you have to communicate in a way that minimizes the bar that must be cleared in order to receive your message. This might mean picking simpler vocabulary, using more general lived experiences, code-switching, or giving affordance to people who may not have the same experience, intelligence, or empathy.

                                                                                                                                          Doing otherwise excludes people–gatekeeping, if you will.

                                                                                                                                          1. 7

                                                                                                                                            You would hopefully agree, though, that right now we are communicating in English, which excludes a fair amount of the world, and using the Web, which also excludes a fair amount of the world. So clearly we don’t always want to maximize our audiences, simply by accounting for our current behavior.

                                                                                                                                            Rather, we want to communicate in inclusive ways; we want to maximize the insight that can be gained from aligning our concepts. We can clarify our language, pick common examples, or reach out to marginalized cultures, but we must always do it in the service of inclusion.

                                                                                                                                    3. 12

                                                                                                                                      The term “drama” implies a value judgment on the importance of whatever issue is underlying the conflict being dismissed, namely that it’s unimportant or silly. The phrase is often used when discussing issues in niche communities or communities predominantly populated by minoritized people.

                                                                                                                                      When you have a minoritized identity or are in a niche community, there often are not many substitute forums for discussion and interaction. The rules, norms, and practices of those communities directly affect the degree to which people feel safe and are able to participate and express themselves.

                                                                                                                                      These issues are not “drama,” and claiming they are is an exclusionary rhetorical move which says to people with those identities or in those communities: “your problems are not important here,” or one step further “you are not valued here.”

                                                                                                                                      1. 15

                                                                                                                                        As an aside, if we could go one whole Soatok blog post discussion without someone maligning or dismissing furries, that’d be great. Soatok’s coverage of furry culture here is incidental to the core topic of this post, and it’s already been an issue (as mentioned in the post!) on previous Lobsters threads.

                                                                                                                                        1. 9

                                                                                                                                          One cannot help but notice how that charity is never extended to, say, Urbit discussions.

                                                                                                                                          1. 22

                                                                                                                                            Urbit is literally a technical manifestation of Moldbug’s belief in a return to feudalism. Moldbug’s ideology is central to the design of the system. Not to mention that his ideology (Neoreaction) is an extremist ideology which advocates for authoritarian feudal or fascistic (depending on who you’re reading) control over individuals, anti-feminist subjugation of women, white supremacy, and (again, depending on who you’re reading) the re-institution of slavery. Supporting the techno-political projects of supporters of this violent extremist ideology serves to legitimize and promote their stature and thus their ability to spread their beliefs. Supporting a furry writing about cryptography and gatekeeping in programmer culture is not even a little bit the same thing.

                                                                                                                                            1. 12

                                                                                                                                              I believe your analysis is incorrect, but I know I won’t convince you (or the other folks upvoting you) otherwise. Good day.

                                                                                                                                            2. 7

                                                                                                                                              Moldbug and his ideology are a clear and present danger to me and to the people I love, whereas furries are no threat whatsoever. If you want no-holds-barred free speech, there are places on the net for that, like 4chan. As for me, I refuse to be tolerant of intolerance.

                                                                                                                                      1. 10

                                                                                                                                        Want to call an async function blockingly from a sync function? -> Throw it on an executor!

                                                                                                                                        This is colored, no? If it wasn’t you would just call the async function without needing an executor. Cannot you do something like this in every language that has futures-based async?

                                                                                                                                        1. 6

                                                                                                                                          The key part is blockingly.

                                                                                                                                          You can fire-and-forget async functions in any language with “colors”, but you can’t block synchronously until they finish.

                                                                                                                                          In JS there’s no way to get a result of a Promise without unwinding your stack first (microtasks are processed only after the entire call stack unwinds, so no return, no results).

                                                                                                                                          In Rust you can block a thread waiting for anything async that you want. That’s not even a feature of async executors, but merely the fact that you’re in full control OS threads, so you can always build on top of that.

                                                                                                                                          1. 4

                                                                                                                                            No, it’s typed. Rust, like C# and others, avoid the color mess by just unifying it with the type system. It has special syntax but under the hood it’s all the same. It’s simpler (no separate color checker needed) and more powerful (eg sync manipulation of async functions).

                                                                                                                                            1. 4

                                                                                                                                              Just because Rust and C# hardcodedasync/await into the language doesn’t mean their functions aren’t colored anymore.

                                                                                                                                            2. 2

                                                                                                                                              Calling async functions from sync code in javascript is no easy feat

                                                                                                                                              1. 4

                                                                                                                                                Wait, what? It’s much easier than Rust:

                                                                                                                                                // "async" color
                                                                                                                                                async function a() {
                                                                                                                                                  return "hello";
                                                                                                                                                }
                                                                                                                                                
                                                                                                                                                // not "async" color, but calls an async-color function
                                                                                                                                                function b() {
                                                                                                                                                  a().then(greeting => console.log(`${greeting} world`));
                                                                                                                                                }
                                                                                                                                                

                                                                                                                                                You can also easily return values calculated in sync functions that depend on data from async functions, because an async function is just syntax sugar for returning a Promise, and so your non-async function can just return a Promise as well:

                                                                                                                                                // "async" color
                                                                                                                                                async function a() {
                                                                                                                                                  return 1;
                                                                                                                                                }
                                                                                                                                                
                                                                                                                                                // not "async" color
                                                                                                                                                function b() {
                                                                                                                                                  return a().then(x => x + 1);
                                                                                                                                                }
                                                                                                                                                
                                                                                                                                                // not "async" color
                                                                                                                                                function c() {
                                                                                                                                                  b().then(val => console.log(val));
                                                                                                                                                }
                                                                                                                                                
                                                                                                                                                c();
                                                                                                                                                // prints 2
                                                                                                                                                

                                                                                                                                                Or, since await is just syntax sugar for waiting for a Promise, you could even mix and match, e.g. c could be rewritten as:

                                                                                                                                                async function c() {
                                                                                                                                                  const val  = await b();
                                                                                                                                                  console.log(val);
                                                                                                                                                }
                                                                                                                                                

                                                                                                                                                Even though b was never explicitly tagged with the async color marker.

                                                                                                                                                1. 11

                                                                                                                                                  If you’re using promises (via then, etc) the function is async, not sync, no matter which syntax you’re using…

                                                                                                                                                  1. 2

                                                                                                                                                    Well, it really depends what you mean by “async”, and I think precision matters, as this topic is trickier in JS than some give it credit for. This might be pedantic on my part, but just to be super clear here, a function “is async” in JS when it uses the “async” keyword – that’s it. The only thing that the async keyword does is:

                                                                                                                                                    1. It makes the function return a promise
                                                                                                                                                    2. It enables the use of await and try/catch/finally as syntactic sugar for .then/.catch/.finally.

                                                                                                                                                    As a result, when an async function is desugared, it decomposes into an outer function which chains together a number of callbacks. This is what makes the async function feel async; any one statement within the async function body could belong to a number of different callbacks after desugaring.

                                                                                                                                                    If you’re using promises (via then, etc) the function is async, not sync, no matter which syntax you’re using…

                                                                                                                                                    I don’t think “the function” is precise enough to be meaningful because it could mean two things:

                                                                                                                                                    • this function composes and returns a promise chain, and the process by which that chain runs to completion is asynchronous with respect to other work happening in the event loop
                                                                                                                                                    • this function constructs a value, calls a method on it, and then returns that value; the value may be a promise but that’s neither here nor there when it comes to each statement in the outer function body getting executed synchronously
                                                                                                                                                    1. 4

                                                                                                                                                      Pedantry noted. I should have said if your function returns a promise it is async.

                                                                                                                                                  2. 2

                                                                                                                                                    To get a Promise in JS, not returning it and neither handling any rejection of it is dangerous, as that will swallow any exceptions thrown within that Promise chain.

                                                                                                                                                    It also won’t execute the content of the Promise chain synchronously, so any code depending on that execution won’t be able to wait for it to be done.

                                                                                                                                                    This is a real issue in JS that’s been discussed in the context of eg CLI tools, where a sync execution can be preferable from a simplicity view point.

                                                                                                                                              1. 11

                                                                                                                                                I enjoy a minimal (if well designed) UI as much as the next person, but I feel that these posts tend not to present a persuasive argument that would be likely to have a material impact on UI that it perceives as bloated. And I think that this may be a result of our understanding of “software” or “the web” more broadly.

                                                                                                                                                I think that programmers, especially hobbyists and those that frequent this type of forum, tend to see their work as a creative artifact and to that degree an expression of their ideals. If software is an ideal or an expression of the values of the developer, why you want to build something bloated, ugly, or distracting?

                                                                                                                                                But it seems unlikely that CNN dot com is a visual abomination because the designers and developers don’t appreciate minimalism and the practice of restraint. CNN isn’t a website but a business, and since they’re in the business of converting attention into profit, why would they design around principles that would otherwise help the user easily locate contend and decide when they’ve had enough? I’m using CNN here as an example but you can make a similar point about most internet businesses that profit by advertisement.

                                                                                                                                                Every single example of “small web” design presented in the article is a tech website with a preexisting minimal brand for likeminded creative tech hobbyist types who presumably already appreciate that design in the first place. If sir dot hat were to use “excessive” javascript or too many colors or busy-up the UI, it would alienate its users and the business would plausibly suffer as a result.

                                                                                                                                                I don’t really know what to think about these pieces anymore. Like, the web works better when it’s less complicated and more cleanly designed, and it’s frustrating in general when UI works poorly and distracts from the stated function of the tool. I’m just having trouble seeing how programmers are going to improve things by advocating for design ideals. The “small web” isn’t a question of aesthetics but of function.

                                                                                                                                                1. 13

                                                                                                                                                  Famous programmers bashing projects because they dislike their presentational style is not technical content. This is off topic.

                                                                                                                                                  It’s okay to not like things

                                                                                                                                                  1. 2

                                                                                                                                                    Seems to me that this post genre has been quite popular here recently, modulo “famous”.

                                                                                                                                                  1. 1

                                                                                                                                                    🥱