1. 2

    The only one group we know has made a concerted effort to poison beer, was in fact the government.

    1. 4

      That is only true if you don’t count the many cases of businesses prior to things like the FDA using wood alcohol to make their alcohol, leading to ‘beer’ with poisonous amounts of methanol in it.

      1. 2

        Do you have sources for this? Sounds like something from before we knew better or maybe prohibition incentivized such production.

        It’s never on a vendor’s best interest to kill their clientele, though Big Tobacco and such do it slowly enough that they can be more apathetic about it. Then there’s also the casual users who suffer few ill harms.

        It’s the same BS as with newer Gnome UIs and all that privacy stuff; if the governments actually wanted something illegal (or the mainstream Gnome-based distros something usable), it would just happen.

        Comparisons to assault rifles and implicitly purposefully poisoned alcohol are just weird, and hoping the deus ex machina of the state will make everything alright is even weirder.

        1. 2

          Tainted food has been around for as long as food has been sold in markets, and only abates when governments or equivalent non-market bodies step in with regulation. For a non-prohibition related example in the US, https://www.usdeadlyevents.com/1919-dec-25-30-wood-alcohol-poisoning-esp-chicopee-ma-hartford-ct-nj-128-136/ which also references previous cases of wood alcohol sold for drinking in the US, which were only stopped by state intervention.

          1. 1

            That’s a sad list indeed. Good to see manslaughter and murder charges in there, but another theme that seems to pop out is bootlegging. Toxic bootleg moonshine will probably always be a thing, as much as warning labels on over-the-counter impure alcohols.

            So maybe pressing charges against careless sellers of wood alcohol and the adding of warning labels helped, but even before that regulation, murder charges probably also helped.

            And branding. Never buy bootleg booze or a brand known to kill its customers!

            1. 1

              The murder charges are literally a part of the regulation. Without some kind of regulation, you don’t get the murder charges, you only have whatever corrective force the market brings to bear. And without regulation, you don’t know that something branded as being from a trustworthy brand is actually from that brand, rather than a counterfeit; anti-counterfeiting is a regulation thing too.

              1. 1

                IANAL but in usual parlance regulation states what kind of operation your distillery is allowed to run, while brand protection falls under something else and homicide under criminal law.

                Of course I agree some mechanisms for these should exist, but we’re still seeing shitty choices in Linux distros and governments making complete messes with regulation, so I stand behind the point that the dei (correct plural?) ex machina doesn’t work too great.

                How governance can be handled in a society more anarchic is an interesting topic, but I can’t think of cool FLOSS analogies to keep it on topic, so I think it’s about time to wrap this up.

                Thanks for the link, I never knew that part of American history!

      2. 1

        During Prohibition?

        1. 1

          Yes, the hysterics about how terrible drunks are reached a point the government figured they could get away with just poisoning such undesirables instead. It’s their own fault for breaking the law anyway, right?

      1. 4

        During the day, I’m working on my dayjob. At nights, I’m working on adding peripherals to my fantasy emulator, starting with ideas for how I want sound to work.

        1. 4

          I don’t necessarily agree with Brooks either, but the two specific examples in the article are things that at the time Brooks wrote the essay wouldn’t have been considered programming tasks at all. So it doesn’t seem like a very convincing refutation to me.

          1. 3

            In 1986 both of the listed problems were considered programming tasks. The first would be considered a data warehousing, business intelligence, and networking project, which intense amounts of programming were done for. As to the second problem, inventory management projects were often gigantic software projects, and RPG III was a major programming language around then specifically designed for reports, and if you want to be pedantic about it computer visualization of data (like automated plotting) existed but was way more of a big deal.

          1. 6

            Purely from a career perspective, if you have been able to land (and do well in) your first programming job, there is no point in education at all, not even high school. If you do not care about computer science itself enough to want to spend years on learning it for its own sake, and are looking for things to optimise your lifetime salary instead - then I would recommend looking in to things like ‘learning to write better emails’ or ‘spending more time networking’ or ‘learning some skills related to whichever field of business you see yourself doing programming in’ or ‘learning how to do salary negotiation’ - there are many options here.

            There are two exceptions to this that I am aware of. The first is that if you want to emigrate to another country and work there, many of them are easier to get residence in if you have an advanced degree. The second is that there are companies (and even entire subfields in some countries, eg supposedly automotive programming in Germany) that have an expectation that you have a particular degree in order to work there. My degrees were in logic, and that not being ‘Computer Science’ was a sticking point for a particular european company that I was looking in to. I have also heard of large Japanese companies that only employ programmers who have PhDs in Comp Sci, for example. But this is a very company/region specific thing.

            1. 1

              My career is well established at this point. I’ve been working as a developer of some sort for over a decade now. I think your advice is still solid though. Thanks.

            1. 40

              I seem remember a time when people were very insistent that non-code or minor contributions were just as important and valid as major code contributions, and that using social coding sites like Github instead of email patch lists or whatever was an unalloyed good. Many folks were mocked or shunned for being “gatekeepers” or being unwelcoming to new developers who–frankly–were often just padding their profiles with forks and trivial PRs.

              I am not too big a sock to admit some amusement, then, upon reading about this situation. :)

              (More seriously, there is a balancing act to be had in setting community norms around participation when there are in fact bad or just inconvenient actors in sufficient numbers to cause harm. Hopefully this sort of thing encourages people to reflect more on the philosophical underpinnings and practical weakpoints of open source as is practiced today.)

              1. 47

                There is kind of an easily understandable difference between:

                • a non-code minor contribution - eg correcting a link or some spelling in a readme, a non code non-minor contribution - eg writing good documentation, a minor code contribution - eg any actually minor bugfix
                • bad faith spam non-contributions (nontributions?), like what was talked about in the article

                The former is what people were clearly very insistent was important and valid; the latter is what people are complaining about now as obvious spam. Conflating the two serves as gatekeeping, which, given your pro-gatekeeping statement, seems like it might be deliberate? It might also be just that it was a throwaway comment that you haven’t thought through though, so I might be reading too much in to it. My apologies for the aggressive tone of my previous version of this post.

                Edit: Edited for civility, clarity.

                1. 10

                  No offense taken, and I rather like the nontributions coinage. :)

                  The thing is that a lot of that is in the eye of the beholder…some of these comments tweaking readability or fonts or adding emphasis or whatever are kinda at the same level as fixing typos. The mechanism is the same, the only differences being the (arbitrary) decision in validity and the motives behind the contribution (free t-shirts versus whatever else).

                  The problem with saying “well some of these are nontributions and clearly are in bad faith” is that in the past things like Code of Conduct proposals, switches to code styling, changes to vocabulary, and whatever else have been objected to by project maintainers who have then been pilloried.

                  Even the concern of “well, these people are bad faith because they’re just doing it to get a free t-shirt” can be made to draw parallels to the (apparently acceptable) motives of people on web working groups and standards committees and commercially-backed projects like React or docker.

                  I bring these things up specifically because I think the objections to Hacktoberfest are a good chance to reflect on what’s become of our culture and practices, and to wonder if maybe the things that irk us here are not worse but somehow given a pass elsewhere.

                  1. 23

                    If you look at the examples in the repo, they are all nontributions. Find me the person defending this PR for example.

                    I extremely dislike sort of “raise the level of abstraction”-style discourse when someone here has clear, empirical examples of a thing being annoying not because it’s “not code” but because it’s spam (lots of these are code changes!)

                    I think we all like having good docs, and people who send in contributions to docs that improve them… I mean who objects to that?

                    Maybe you have a problem with people claiming they work on a thing without touching the main codebase (which is… I mean that’s you), but that’s pretty offtopic here tbh. (EDIT: leaving this here but I mean this in the least accusatory way possible, not trying to be dismissive of that topic as a whole)

                    1. 8

                      If you assume the person making the PR waa doing so in good faith (albeit without sufficient skill) then this exercise in “abstraction” gives us a really good chance to say “okay, shit, how do we deal with eternal September in software projects, and how do we deal with new users that just kinda suck without turning them off”?

                      If you assume the people opening PRs are doing so in bad faith, then the question becomes “what features of modern open source are ripe for abuse and how do we manage that without losing our souls (more)?”.

                      1. 2

                        You want to have this conversation, fine, but it’s absolutely not what is being discussed right now. It comes across as derailing the conversation about bad-faith contributions like the ones linked obviously are.

                        1. 3

                          What’s the “conversation” about the bad-faith contributions, other than acknowledging what is effectively open source drama and whinging about a publicity stunt that went wrong? Rubbernecking at bad PRs?

                          I think a derail is order, because the current tracks lead nowhere interesting.

                    2. 5

                      Right. My reply to this kind of thing is that the faculty of judgment is needed (even if only a little bit) on an individual basis even when things are easy to see as a group, because we don’t yet have an easily understandable general philosophical treatment of ontology and what you might call ‘thing-ness’ - the Platonic Man argument basically showed the problems with naive attempts to draw categorisations thousands of years ago.

                      As it turns out, the thing we want to know is ‘is this a contribution or a nontribution’ (similar to the ‘spam vs ham’ test) which does not in any way boil down to bright lines that don’t require the faculty of judgment. Sometimes a minor doc change can be really really helpful (eg in the installation instructions for newbies!). But as part of contributing, we can reasonably expect contributors to think ‘hey, is this a contribution?’ and if it isn’t, to not send a PR, in exactly the same way we can expect people to think ‘hey, is this spam?’ and not send spam if it is.

                      Edit: Like, with spam, we might ask things like ‘is this addressed to me?’ ‘Is this grammatically well formed?’ ‘Are there gratuitous spelling mistakes?’ ‘Does this ask me to send money?’ but none of those things actually make something spam or ham - in fact, no contents of an email mechanically definable with a simple rule will definitionally make it spam or ham, so we can’t say ‘Answering the wrong way to these definitionally makes it spam, otherwise ham’. But the person sending it knows, and if the person receiving it has the mental bandwidth to think about it, they know too.

                      Second edit: One of the things that makes the formal sciences so interesting to me is that when something is properly, fully in the domain of a formal science this does not apply. We know what a triangle in some axiomatic system we put together is, because we define what it is.

                  2. 25

                    I don’t think “minor contributions” are the problem here; I went through some of the PRs and many are indeed 100% pointless:

                    • Change font-size: 25px to 24px in some CSS file, with only “Update styles.css” as a description. What’s the point of this?

                    • Change 404 Not Found to 404 error found. Pointless change and awkward English.

                    • Change font-style: normal to bold on the main body text, again with no description of why. There are actually two PRs which do this.

                    • A PR with “Improve indentation and add some comments” sounds like a promising and useful “minor change”, but if you look at the actual diff it’s just adding some really weird and pointless comments and newlines. Another promising “improve docs” PR just adds ### Great Work, hmkay?

                    • “Add files via upload” sounds promising as well, but it adds 2MB of images which don’t seem used and makes some CSS changes which seem pointless and are unexplained.

                    • One PR just adds <h1> misbah </h1>. Wut?

                    In short, none of these are “minor contributions”. Labelling them as “spam” and closing them without comment is perhaps rather harsh, but to be honest all of these PRs are just complete garbage so it’s not really an unfair classification.

                    1. 19

                      I also though some of the PRs in the screenshot looked reasonable, but I implore you to actually go through the PRs closed as spam.

                      Here’s the first I clicked on from the openstreetmap-website repo: https://github.com/openstreetmap/openstreetmap-website/pull/2866/files - add “made with love” to the readme.

                      Here’s the first PR I clicked on to whatwg/html: https://github.com/whatwg/html/pull/5991/files - add “thankyou” to the readme.

                      Here’s another PR: https://github.com/whatwg/html/pull/5981/files - replace “404 Not Found” with “404 Error Not Found”.

                      Another one: https://github.com/whatwg/html/pull/5990/files - decrease the font size of a particular element from 25px to 24px (no description which argues why 24px is better than 25px, just the smallest visual change you can make).

                      This one is nice: https://github.com/whatwg/html/pull/5975/files - add ‘i += 1 // Increment i’ style comments to the CSS and add newlines.

                      All the PRs marked as spam are like this. No effort put into the code change, no effort put into the description or presentation of the PR. Most just leave the PR template untouched, with no attempt to fill out the relevant fields or argue why the fields in the PR template don’t apply. These are actually spam PRs. They’re not just good faith “non-code or minor contributions”.

                      1. 19

                        non-code or minor contributions

                        FWIW the PRs are spam because they aren’t improvements, not because they are changing things other than code.

                        Browsing through some of the example spam PRs people linked, it doesn’t look too me like spammers are particularly shy about putting their non-tributions to code files rather than markdown does.

                        1. 1

                          s/markdown does/markdown docs/

                          This is what I get for using a phone keyboard carelessly

                        2. 14

                          I seem remember a time when people were very insistent that non-code or minor contributions were just as important and valid as major code contributions, and that using social coding sites like Github instead of email patch lists or whatever was an unalloyed good.

                          I think these two can be separated. Non-code and minor contributions are important - just look at Rust, which has gained a great deal of popularity in the language-hacker community due to the easy and approachable process of contributing to the compiler, the core libraries, and the documentation thereof (which is superb, in my opinion).

                          There are real issues with the way many mailing lists are run: mandating formats that are difficult to achieve with the software most people use for e-mail, for instance. As much as we might wish that all e-mail clients had a good plain-text mode, most don’t. But, again, these are separate issues; and, indeed, your implication that not using social coding sites like sr.ht or GitHub or Gitea or whatever makes it less likely to get these spam contributions does reinforce the idea that it raises the barrier to entry for contribution. If that’s an explicit goal, perhaps with the intention to avoid these kind of spam contributions, that’s fine; but being snarky about being called a gatekeeper is incompatible with that goal.

                          Any open system with many participants is going to have spam. Here, DigitialOcean is purposely exacerbating that through either malice or incompetence, but I have to say, I don’t think that means that lowering the barrier to contribution isn’t a positive thing in general. Anecdotally, I’ve received many, many more useful contributions to repos hosted on social coding sites with many users like the GNOME GitLab and GitHub itself than to, for instance, my hardware enablement libraries on my personal Gitea.

                          1. 7

                            I think these two can be separated. Non-code and minor contributions are important - just look at Rust, which has gained a great deal of popularity in the language-hacker community due to the easy and approachable process of contributing to the compiler, the core libraries, and the documentation thereof (which is superb, in my opinion).

                            Thanks for highlighting that! This is indeed a conscious project strategy and IMHO also a useful driver of a) growing small contribution into larger or b) the problem that many projects are facing around cleaning the dust out of the corners. Relying on small contribution also means people leaving is not as hard. And that builds a special base to talk to: the Rust project is capable of doing things finding 10 translators for our survey in a week.

                            The problem is indeed the incentive system that Hacktoberfest has built.

                          2. 7

                            There are already many examples in sibling comments, but here’s another collection that one of my repos was hit with this morning:

                            Look at the recent commits of this user: https://github.com/Cha7410?tab=overview&from=2020-09-01&to=2020-09-30

                            Every single one of them is a negative contribution (negtribution?), where the change is factually/grammatically/syntactically incorrect.

                            All of the PRs have an empty body with no explanation and use the same boilerplate commit message. These are not contributions by any metric.

                          1. 2

                            It makes me think of the “skin in the game” idea. While it’s not a bad thing the person is doing, and they probably mean well. Many, if not most, of these contributors don’t have any “skin in the game”, so there involvement becomes a nuisance. It was meant to get more people involved in open source projects, but it really is about the t-shirt once a year because otherwise you would have already gotten involved with the project, right?

                            Maybe there are some people that have helped with projects in the past who could make a meaningful contribution in October just for the t-shirt. That wouldn’t be a bad thing.

                            1. 4

                              When you look at the PRs though, they clearly don’t mean well, any more than a spammer clearly means well. “Skin in the game” isn’t really a useful way to look at it either. Whether the thing is actually a good faith attempt at a contribution is a better thing to ask

                            1. 15

                              Obligatory reference to Urbit’s creator: https://en.wikipedia.org/wiki/Curtis_Yarvin.

                              Platforms are designed around their founders’ beliefs, so when a platform wants to “win” computing it may be a good idea to understand what “winning” means. More information is here.

                              1. 8

                                Please, please criticize the tech and not the developer.

                                Urbit developed by Mother Theresa or Obama or Mao would still be just as clunky.

                                And like yes, the obtuseness of Urbit makes it hard it read enough to actually engage with its technical shortcomings, but ugh.

                                It’s all so tiresome.

                                1. 6

                                  Guess we’ll have to agree to disagree on this – I think these positions are too extreme to push aside regardless of how good the technology is. Imagine trying to give a presentation on the technological innovations of ReiserFS without mentioning anything about Hans Reiser. If the technology really is useful and politically agnostic it’ll show up elsewhere without the toxicness attached.

                                  1. 6

                                    This is one of those things where I think that ‘Death of the Author’ is actually really useful. It is commonly misunderstood as meaning that the author is irrelevant, when what it really means is that when we are analysing a thing, we don’t have to automatically defer to what an author claims, especially when they seem to be acting in bad faith, and sometimes the totality of an author is useful to show why a particular interpretation makes sense, though at the same time the faults of the author are not necessarily present in the thing.

                                    For a timely example, there had been some discourse in the analysis of the Harry Potter books about transphobic messages (primarily around the character Rita Skeeter), as well as antisemitic and homophobic stuff. When the author publicly went mask off as a terf (as well as (debatably) a homophobe and a believer in antisemitic conspiracy theories), it really strengthened the analysis of the work. But it isn’t enough to go ‘JKR bad, so work bad’ - for it to be useful to the analysis you have to tie it to stuff in the work.

                                    For an example of not being able to tie it to stuff in the work, you have the Haber process. Fritz Haber was involved in the invention of chemical warfare, a crime against humanity. His life is useful to contextualize the invention of the Haber process, but it doesn’t taint it or make it ‘morally unusable’, as chemical warfare is not somehow present in (or encoded into) the work.

                                    I think that Curtis Yarvin’s beliefs are relevant here in a way that Hans Reiser’s crimes are not, because we can tie them to the structure of the work in the critique. For a few example:

                                    • Purposeful obscurantism
                                    • A system of hierarchy (while claiming no hierarchy)
                                    • Too few ‘real person’ nodes by design for everyone to be a real person in the system
                                    • A totalising feudal system structure which combines elements of fascism and feudalism
                                    • Gibberish syncretic occultism, most obviously the way Urbit stuff uses things like ‘functional programming’ ‘determinism’ etc - Nock for example is in no sense a functional substrate with a formal analysis and a proof theory in the way they state it is - they don’t give either a denotational nor an operational semantics, there are way too many rules and reductions which are redundant and overlapping, there is no proof of progress or proof of consistency, no proof theory, etc etc etc.
                                    • Constant lies about history especially about historic conditions, which ties in to the constant lies in the Urbit literature about the history of computing especially about performance comparisons - actually comparing Urbit’s throughput and reliability to DNS or the Visa payment network is illustrative here
                                  2. 2

                                    Urbit is an attempt to create a kind of digital feudalism. It /is/ a polittcal project at its heart: you can’t have an honest review of the project that ignores the political goals that the project embodies & you can’t really talk about that without talking about the politics of its founder(s).

                                1. 13

                                  I love how Urbitters will just blithely claim they have magic and move on as if they had not claimed anything incredible. Easy example from the post:

                                  exactly-once messaging: this is enforced at the network protocol level, which means you can have an app mirror another ship’s state and it “just works”

                                  General exactly once messaging is impossible, and it is a key part of Urbit. Not sure why people keep posting this snake oil promotion on here.

                                  1. 2

                                    Section 9.6 of the Urbit whitepaper explains the level of abstraction at which urbit can guarantee exactly-once messaging, and the assumptions and tradeoffs involved.

                                    1. 9

                                      Did you actually read it? I have read a number of Urbit ‘papers’ - every one of them (including this one) makes sense if one does not actually read it, but when you actually read it it falls apart immediately. The scheme that is proposed is trivial and only works if magic is real.

                                      Like, they completely fail at understanding the problem, and think that the problem is that no one else has ever thought of retries, or thought of version numbers, or thought of opening a new socket when your socket unexpectedly closes, or thought of logs and replaying on node restart.

                                      There are real schemes that look superficially similar - like, on possible network partition immediately die and lose all data, rebuild from scratch every time. This works if you have short lived clusters and you don’t mind blowing them up and losing everything several times a day.

                                      Or only send idempotent messages, and keep retrying forever until you get an ack - but this only works directly if you can rework everything you are doing into semilattices, which is not a general solution - for example LVars.


                                      1. 8

                                        Indeed; Section 9.6 begins:

                                        Protocol design is much easier with the assumption of uniform persistence. In a protocol designed for uniformly persistent nodes, we can assume that no node involuntarily loses state.

                                        The same is true for other problems in distributed computing; if we assume failures can’t happen, the solutions become simpler (or in this case, possible at all).

                                        This is for example why Leslie Lamport published Time, Clocks and the Ordering of Events in a Distributed System in 1978, where he details a distributed state machine in a system that has no failures, and it took twelve years until the writing of The Part-Time Parliament in 1990 to figure out how to do the same in the face of component failures. (And even then, only in the face of so many failures. And it took eight years for the paper to be published. And no one understood it for years. And people invented other distributed algorithms to avoid having to understand the paper.)

                                    1. 2

                                      Just got instruction decoding generation for my emulator kit working, this weekend I’m going to work on instruction encoding generation.

                                      1. 1

                                        Finished instruction encoding with ~ 7 usable hours in the weekend left; going to start on writing a pipeline stage description language + generator, needed so I can actually describe what each instruction does.

                                      1. 118

                                        I don’t see users submitting their own content as a problem, as long as it’s on-topic.

                                        Thus I don’t support this proposal.

                                        1. 1

                                          Is there a limit?

                                          1. 12

                                            In the absence of mod action, certainly. But the site/community will have degraded beyond salvage before that happens.

                                            To prevent this sad state of affairs, flagging submissions as “spam” or “off-topic” suffice.

                                            1. 3

                                              The limit is when you notice it and flag it. You being anyone that would like to see fewer self serving posts.

                                              I don’t have an issue with someone posting their own blog. Full disclosure I’ve done it myself.

                                              I do however flag things like this when I begin to notice them. If I’ve noticed it then it’s too much in my opinion.

                                              1. 2

                                                At some point I think @pushcx was talking about tom sawyering someone else into writing some kind of sliding window rule where if you submitted your own posts or from a single site more than a certain number of times in the window either it would be brought to mod attention or you might be blocked from posting it (though I have not been able to find the post in question through search). The suggestion that I have seen come up in previous discussions has been something like at most half of the links you submit can be from your own stuff, and if you are submitting links to your own stuff you should actually be interacting with the wider forum, not just commenting on your own posts.

                                                Edit: Once I finally pop enough things off my yak stack to have a working blog, I intend to submit things from it from time to time, so I obviously think that non-spam good faith links to your own stuff is good.

                                            1. 2

                                              During the day, some pretty boring work looking at planner (fast downward) run traces, trying to see whether the instrumentation I have put together can actually show the things I want it to show.

                                              During the night, I’ll be working on my emulator writing project. Currently writing code to generate a decoder from bits to instruction enum values automatically from an instruction description. Dealing with extracting non-power-of-2 signed fields from unaligned positions in a stream of bits is revealing problems with my naive solution.

                                              1. 3

                                                I’m writing an emulator for a fantasy ISA/system that I am also writing.

                                                In past attempts I ended up bouncing off because making any nontrivial changes eg to the encoding, to register organization, to bitwidths and so on required huge changes all over the emulator, which made any kind of design revision or exploration agonising. I tried using code generators for a while, but they were super brittle. My current approach is writing procedural macros in Rust that transform descriptions of the various things that are very rote, but also have linkage all over the place, eg the instruction representation, encoding/decoding, some giant but fairly rote match statements and so on, so that if I want to change instruction width or word size or instruction encoding I can make targeted changes to the description and have this be reflected in all the different instruction enums and structs and so on automatically.

                                                1. 1

                                                  I’m writing an emulator for a fantasy ISA/system that I am also writing.

                                                  ISA as in the ISA bus?

                                                  IMO that kind of hardware emulation is super interesting. I love all the work happening around chip accurate emulation of systems like the C64.

                                                  1. 3

                                                    ISA as in Instruction Set Architecture for a CPU. The macro code I am working on this weekend is here: https://github.com/flaviusb/fantasy-cpu-emulator/tree/master/fantasy-cpu-emulator-macros and there is an example of the beginning of what I mean by the description of an ISA here https://github.com/flaviusb/fantasy-cpu-emulator/blob/master/fantasy-cpu-emulator-macros/tests/chip.rs#L6-L29

                                                1. 4

                                                  My 2 cents - tone policing is actually a really useful term of art, but you do have to flesh out what it means a bunch more if you are going to use it in a community that isn’t already familiar with it. There is a habit that I have observed (not exclusively) amongst programmers to take some unfamiliar term and just make up a meaning for it in their heads without ever bothering to check, as some of the commenters here have done.

                                                  The clearest explanation that I can think of (and this would need to be fleshed out even more if used as part of the moderation policy) is that ‘tone policing’ is when you avoid engaging with someone’s point by making a big deal about how they made the point, often involving suggesting changes to their message that actually serve to get rid of the point entirely. For example, if I were to say ‘C is a badly designed language because it is unsafe by virtue of x y z and I am angry that people still recommend it to people’ and someone was to reply ‘Why are you so angry? I’m not going to listen to that. But maybe if you had said “C is a language for experts, because x y z, and should be used by experts and people who want to be better programmers” then I would listen.’ then that would be tone policing, as it avoids engaging with the point while suggesting a change that gets rid of the point in the original comment.

                                                  Edited to add: Replying ‘I actually think x y z is good’ or ‘x y z is a problem, but as long as you are in a b c environment you don’t have much choice but to use it’ isn’t tone policing, it is engaging with the point of the thing.

                                                  Even if you ban tone policing, you can still tell people that they are being too aggressive or even controversial - for instance if I posted about ‘tabs v spaces’ or ‘best editor’ seriously presupposing that the community already agreed with me, a reply about how I was being too controversial might help me to understand the flood of ‘Incorrect’ flags on my post :-). And more seriously, occasionally there are flamey replies, and telling the poster something like ‘hey that was too aggressive’ can sometimes be useful in pushing people to keep lobste.rs less flamey.

                                                  1. 3

                                                    Yet another instance of a common trope used against Elm:

                                                    1. It doesn’t do what I want (almost always “native JS”)
                                                    2. I asked to have it included
                                                    3. (optional) and I even wrote a patch for it
                                                    4. And even though I’m right, the maintainer won’t budge

                                                    We understand: Elm doesn’t jive with your style. That’s not an indictment of Elm, just as it’s not an indictment of you. You can move on without disrespecting how someone else wants to run their project.

                                                    1. 36

                                                      As a potential user of Elm, this “disrespect” is helpful to me. It tells me not to use Elm to write anything that might ever need to call an unpopular library, because those libraries will probably never be written. As a potential open source project leader, it also told me of a failure mode to avoid in my leadership. So I am glad the author didn’t just move on and stay silent.

                                                      You suggestion to move on without saying anything would make more sense if Elm prominently advertised that it has its own “style” that is different from most other open-source languages. Like if the Elm home page had this:


                                                      • No runtime exceptions.
                                                      • Purposely-limited JS bindings, incentivising the community of Elm developers to recreate JS libraries as safe, pure-Elm libraries.
                                                      • Opinionated core devs who don’t accept feedback or patches, allowing Elm’s design to be completely coherent.

                                                      But Elm’s website doesn’t advertise that. So I think you can’t blame a user for assuming that Elm works like most other open source languages, then feeling bait-and-switched when it doesn’t.

                                                      1. 3

                                                        For anyone acquainted with JS, I think “no runtime exceptions” pretty well implies your second bullet point (after the “…”), and then the third sort of naturally follows. So, OK, not everybody can read between the lines or read up on third-party opinions about a language before adopting it, but I think I can detect a double standard here. Maybe it’s because of all the effort that the Elm devs put into making the language beginner-friendly?

                                                        For what it’s worth, I’m glad that Elm is run the way it is, and I don’t agree that politely not accepting paradigm-breaking contributions is a “leadership failure” let alone “aggressively authoritarian”. There are no lack of alternative languages in this space!

                                                        1. 16

                                                          For what it’s worth, Elm being run this way means it will never be a consideration for me for anything but the silliest of side projects. I can’t in good conscience encourage anyone at work to use a language like this in production.

                                                          I think the most scathing indictment here is not “politely not accepting paradigm-breaking contributions,” it’s the swiftness with which contrary arguments are not tolerated. It’s one thing to grumble out shit-posting or people who argue for the sake of argument. But banning people for suggesting a way to get around single-channel package management or DRM-ed library wrappers? Human endeavor is rife with geniuses and their brilliant ideas getting lost in pursuit of pure paradigms.

                                                          And yet, the Elm core team are free to do whatever they want. I’m just never going to make the mistake of using it for something important to me.

                                                          1. 2

                                                            So, Elm has always had the ‘no runtime exceptions’ promise, and up until 0.19 it also always allowed Kernel code (or equivalent native javascript) to be written as an escape hatch. Furthermore, the ports method does not involve any kind of subprocess isolation, so there can still be runtime exceptions propagated from the javascript dealt with through ports to the ‘elm process’. So, clearly there is no implication there in the way you want there to be.

                                                        2. 12

                                                          It’s not really a trope though, as the author says, it is hobbled by design.

                                                          I evaluated Elm for a side project a few years ago and ultimately made the decision that I didn’t feel comfortable shipping code in it, due to these sort of community horror stories. Continuing to inform people so they can re-evaluate if the community has adopted a more nuanced stance on glaring issues is important.

                                                          It doesn’t do what I want (almost always “native JS”)

                                                          I don’t think support for localStorage is a unrealistic expectation for production, which is defended with the same sort of nonsense these articles say pervades the community:

                                                          Programmers may store important information on thousands of computers out in the world, and losing that data could hurt their business.

                                                          If you are storing mission-critical information that needs resiliency in localStorage which can be reset or cleared by browser vendors, you have bigger problems than if you got your localStorage-wrapping API correct or not.

                                                          The argument made against having an API for localStorage is exactly the kind of stuff I see these posts talking about. It doesn’t have the “blessing” so it shall not pass.

                                                          1. 2

                                                            I think you may have missed some important context from your quote. With the preceding sentence:

                                                            If a library like this is released, it will need to be supported forever because we cannot just switch to a better API when we figure it out. Programmers may store important information on thousands of computers out in the world, and losing that data could hurt their business.

                                                            No nonsense here. They aren’t saying that localStorage is somehow unworthy of blessing, but rather that they’ve put a bunch of work into supporting it, don’t think it’s ready yet, and won’t release a half-baked version that they don’t want to support. Meanwhile you can use the ports to do all of this kind of stuff. I have, it worked fine.

                                                            1. 8

                                                              localStorage has been around since IE8, the API is small, and the type signatures are simplistic; keys and values are both strings.

                                                              The only “tricky” issue that runs counter to their guarantee of no runtime errors I’ve encountered would be certain browsers (looking at you Safari) throw an exception when interacting with localStorage in an incognito context, the other errors, like QuotaExceededError are generally well documented.

                                                              There are significantly more difficult browser APIs to encapsulate, so the argument does really hold water when you inspect it.

                                                              This sort of argument made in the README is the same sort of civil aggression noted by others many times over at this point, which makes the ecosystem hard to use in reality.

                                                              Don’t get me wrong I think the compiler messages elm offers are the best i’ve ever seen and I wish other languages would follow suit, but unfortunately the project has many well enumerated issues at this point.

                                                              1. 1

                                                                Fair enough. I think all parties agree that Elm isn’t for everybody, and its culture is pretty different than most language projects of its size. I think it’s a refreshing difference, myself, but I’m not invested enough to get emotional about it. I also haven’t seen any of this “aggression” in person, so perhaps I shouldn’t judge.

                                                              2. 5

                                                                Even that context doesn’t really make sense–why would programmers lose their data if Elm were to remove the old localStorage API and ship a better one?

                                                                1. 1

                                                                  Presumably, the new one wouldn’t be backward-compatible, just because they don’t want to support that. The way I read it, it’s just about who’s responsible when the API breaks. Roll your own using ports (as they suggest), and it’s not their problem.

                                                                  1. 1

                                                                    If they break the API you can still roll your own using ports or just use plain JS to access you existing localStorage data, you don’t lose the data.

                                                          1. 12

                                                            Kind of interesting that his name does seem to show up in the linux man git repo at all. That is, http://git.savannah.gnu.org/cgit/man-db.git/log/?qt=author&q=esr (and every other permutation I have tried) return no commits. Also, reading the followups, it seems clear that esr lacks the ability to engage with reality - eg, as a typical example, when bugs in his suggested tool chain are mentioned here: https://lists.gnu.org/archive/html/groff/2014-02/msg00109.html his reply is basically ‘you are lying, these are not bugs, and also there are no bugs, and bugs are impossible because I would know if there were bugs’.

                                                            Also, as seen here https://lists.gnu.org/archive/html/groff/2014-02/msg00106.html when someone directly refutes his core claims (that this code of his is in Linux and all *BSDs) he simply does not respond.

                                                            1. 1

                                                              Bleh, the first sentence should have been ⌜Kind of interesting that his name does not seem to show up in the linux man git repo at all.⌝. Posting while tired etc.

                                                            1. 1

                                                              I don’t understand the opposition to this idea. Having command line documentation that opens up a HTML page in a browser is reasonably common. For instance, this is exactly what rustup docs does, which I use all the time. I agree that there’s something to be said for having documentation that is completely console-friendly and has no connection to a graphical screen, but it’s also the case that the entire linux command line ecosystem is old and adheres to a lot of conventions that made sense on machines of ~30-40 years ago (in some cases emulating even older terminals). I think it’s a good thing to consider ways to make the command line experience better by taking advantage of the graphical facilities that even the cheapest general-purpose computers have had for decades now.

                                                              1. 5

                                                                Almost all of my servers are headless, and a bunch of them are in DMZs where they cannot access the internet, and yet I still find myself needing access to the documentation that corresponds exactly to what is installed when I am doing sysadmin stuff fairly frequently. I don’t want to have to install X, a desktop environment, a graphical browser, and open the server up to the internet; to make esr’s suggestion work as he has claimed it is implemented requires all of those things. Also the suggested toolchain seems to be problematically buggy, according to the mailing list replies.

                                                                1. 1

                                                                  What is a server? Is that something that runs my “serverless functions” and my containers?

                                                                  1. 2

                                                                    no, those run in the cloud

                                                                  2. 1

                                                                    I don’t want to have to install X, a desktop environment, a graphical browser, and open the server up to the internet

                                                                    to be replaced by HTML browsed from within Emacs

                                                                    I suppose you do get that anyway…

                                                                  3. 1

                                                                    the problem is deciding on a standard. this proposal is particularly bad because it invites documentation writers to assume their users will have the latest firefox/chrome/ie/safari installed, which kills compatibility with older, lower power computers that still function perfectly fine but for their interaction with the modern web. that is an immediate practical concern, then there is the general principle of code simplicity, which esr seems to be flaunting his defiance of.

                                                                  1. 4

                                                                    plt feels pretty obscure as an abbreviation. I don’t have a convincing longer suggestion, but maybe langtheory or languagetheory?

                                                                    1. 4

                                                                      ‘plt’ pretty much is the standard abbreviation though. In the ‘submit’ and ‘filter’ sections and in tag tooltips we can have it spelled out that this is for ‘programming language theory’.

                                                                    1. 23

                                                                      compsci would be appropriate. If there’s a significant number of people reading about compsci who don’t want to read about plt or vice-versa, speak now or forever hold your whitepapers.

                                                                      1. 3

                                                                        I’d like to see compsci used for something that is theoretically focused but used in conjunction with a “modifier”, like ai, or networking, or plt, or algorithms. But maybe I just think of tags differently than others…

                                                                        1. 3

                                                                          I, too, would love me a plt tag. It would nicely complement formalmethods.

                                                                          1. 3

                                                                            What this tells me is I need to find and post more compsci articles that aren’t also about plt.

                                                                            1. 3

                                                                              Yes please.

                                                                              (I’m a computer scientist by day)

                                                                              1. 2

                                                                                I’d love a specific PLT tag.

                                                                                1. 1

                                                                                  For clarity, do you mean reply to this post to say ‘yes please’ (in which case: ‘yes please’), or do you mean reply and/or upvote the OP?

                                                                                  1. 1

                                                                                    Anything, really.

                                                                                  2. 1

                                                                                    There have been a couple people people asking for this - if you see this, could you expand on why you want a tag that’s specifically separate from compsci?

                                                                                    1. 7

                                                                                      Here are some highly-rated Lobsters posts about compsci but not plt:

                                                                                      Here are some highly rated posts where plt may be a good fit:

                                                                                      The way I see it, practices, programming, and compsci are very broad catch-alls for cases where we don’t have enough density to make a dedicated subtopic. python, networking, and ai are all subtopics of programming. compilers and formalmethods are subtopics of compsci. I think there’s probably more people interested in PLT than Formal Methods here, so plt would be a useful subtopic.

                                                                                      1. 3

                                                                                        I’ve added a plt tag with the description “Programming language theory, types, design”.

                                                                                  1. 3

                                                                                    The title is weirdly misleading. Like, this post simply states that developers spend more than 20% of their work week doing production debugging (what?), says that this is all wasted time, and lists out five steps of production debugging as the ‘five ways’. Then it advertises an ‘automated bug fixer’ product.

                                                                                    1. 3

                                                                                      I think the implication is that their tool will make developers so much more productive at bughunting that debugging will be reduced to 5% of their time, but the article doesn’t explicitly connect the two figures.

                                                                                      I have already messaged @talisoroker to recommend the rule of thumb that half of one’s submissions be of other people’s work, and tried to Tom Sawyer @talklittle into writing some monitoring for this rule of thumb.

                                                                                    1. 12

                                                                                      I thought it is pretty obvious that we’re trying to suppress wages. However, that’s where my agreement ends. What we need is dramatically higher taxes for income and inheritance above a certain threshold. I’m thinking like 90% tax (progressive) on individual income exceeding 100x 2000x minimum wage per hour (a nice $3M at $15 an hour) and twice that for inheritance (also progressive). We will need broad agreement to make sure no one has “attractive” tax regime. We then fund basic income with this money and do something which we’ve needed to do for a long time: cut costs.

                                                                                      We need to cut costs in education. We need to cut costs in healthcare. We need to cut costs in real estate. Cutting costs is very important for this plan to succeed. No more nimbyism. We make sure nobody starves or dies from simple diseases but no more tax credits or deductions for anything. There well be some pain but it will be worth it.

                                                                                      1. 1

                                                                                        Well, I agree with increasing efficiency.

                                                                                        1. -5

                                                                                          Wow.. I know I shouldn’t bother but you’re just too much..

                                                                                          You’re basically suggesting that governments everywhere rob “overly wealthy” people super fucking hard, and prevent them from being able to escape that robbery anywhere, and.. somehow you expect them to keep working hard so that the ass-raping can continue indefinitely so that you can sit at home and.. pursue your lifelong dream of finger-painting abstract art, for the betterment of mankind?

                                                                                          Look at your country’s budget numbers and do some basic math on what it would cost to give everyone “free money forever”.

                                                                                          Then think about things from a productive person’s perspective. If 100% of the fruits of your labour are forcefully taken away, you’re an outright fucking slave. If 50% are taken away, you’re like a 50% slave.

                                                                                          You are not the arbiter of how much money is “enough” for anyone else. You can decide how much money is enough for you, personally, but other people are their own, separate, living, breathing individuals.

                                                                                          Wake the fuck up from your socialist stupor.

                                                                                          1. 9

                                                                                            Could we please not use terms like “ass-raping” so lightly? This is a forum for adults and professionals, and at the very least I’d hope we can all be respectful to each other.

                                                                                            1. -5

                                                                                              Oh gosh golly gee, someone has a potty mouth!

                                                                                            2. 5

                                                                                              Then think about things from a productive person’s perspective. If 100% of the fruits of your labour are forcefully taken away, you’re an outright fucking slave. If 50% are taken away, you’re like a 50% slave.

                                                                                              You probably need to define what you mean by a productive person. And it’s not “forcefully taken away”, “robbery”, “ass-raping”. You declare your taxes and pay them. Most levels of remuneration rise/fall based on effective tax rates. The rules are well understood. Don’t want to pay so much, tough luck.

                                                                                              You are not the arbiter of how much money is “enough” for anyone else. You can decide how much money is enough for you, personally, but other people are their own, separate, living, breathing individuals.

                                                                                              What about consensus and rules that are aimed at leveling the playing field in terms of opportunity? If you went out for pizza with 3 friends and 1 of them took 9 slices because he decided that was enough for him, would the rest of you be cool with that?

                                                                                              1. -3

                                                                                                And it’s not “forcefully taken away”, “robbery”, “ass-raping”.

                                                                                                Sure it is.

                                                                                                You declare your taxes and pay them.

                                                                                                You seem to be overlooking the “.. or else!” part, which is what makes it robbery, and to be more precise: extortion.

                                                                                              2. 5

                                                                                                The super wealthy aren’t generally that way because they ‘work hard’ or ‘are productive’, they are generally that way because of theft* or inherited wealth. So yes, we should tax their income, their wealth itself, inheritances, and so forth, and make sure that there is nowhere they can escape it. Also, taxation isn’t even vaguely similar to slavery.

                                                                                                *: Theft here meaning everything from colonial plunder to corrupt self dealing to rentiership to exploiting workers, and so forth.

                                                                                                1. 1

                                                                                                  what you mean by ‘super wealthy’ or ‘generally’? You should be more specific with some references.

                                                                                                  The only millionaire I know personally, worked hard, but also efficiently, and was very intelligent in the way he did business. He doesn’t work 1000 times harder than others, but he never exploited anyone or stole anything to my knowledge. More importantly, there was nothing stopping another person from doing what he was doing.

                                                                                                  1. 2

                                                                                                    I think 100x minimum wage is generous enough. I’m sorry but I didn’t mean it to sound like taxation as a punishment. I apologize for my poor choice of words. Yes, taxes are involuntary for the individual but it isn’t about taking from Peter to give to Paul.

                                                                                                    I oppose the current plan for “free college” in New York. I think no government program should have a ceiling for income.

                                                                                                    I think we need better propaganda around taxation. We should try to make people feel proud for paying taxes. This is why I want to reduce government spending (the administrative overhead). I don’t think it will be easy or straightforward but I believe it is possible.

                                                                                                    1. -2

                                                                                                      For your sake, I hope you’re trolling.

                                                                                                2. 4

                                                                                                  The business takes a percent of my surplus labor that is likely much higher than 50% because they have money, higher taxes would help remedy that. You’ve focused on the government taking your money and have blindly ignored the individual taking your money.

                                                                                                  1. 4

                                                                                                    somehow you expect them to keep working hard so that the ass-raping can continue indefinitely so that you can sit at home and.

                                                                                                    Many poor people are working very hard as well. Working 3 or 4 jobs and not making it out of poverty. The idea that people are rich because of hard work doesn’t seem to have much evidence behind it and there is some evidence that many rich people are there because of luck. That isn’t to say they don’t work hard but rather that taxing them doesn’t mean their hard work is being taxed but rather their luck.

                                                                                                    1. -1

                                                                                                      People don’t seem to realize that tax is letting someone else spend your money in terribly inefficient ways, or they will lock you up. Also, the threshold for ‘wealthy’ is always higher than the person suggesting it earns.