1. 14

    I have to disagree, at least partially. A couple years ago I started learning the norman layout on a columnar keyboard (Ergodox, then Planck). I crashed from ~100 wpm to 9 wpm and it took weeks to crawl above 30 wpm (I took regular typing tests). I absolutely was a less productive programmer, and I had plenty of time to think about it as I crawled my way through the days. I think there are two main factors this doesn’t take into account.

    First, I think this back-of-the-envelope calculation is roughly accurate, but it’s about lines of finished code. Producing 100 lines of production code can require producing more than ten times that much in drafts, tests, debugging, typos, and intermediate forms. We’ve all had that day (…or week…) debugging that ends with a one-line fix, right?

    Second, this only accounts for code. A significant amount of my work is communicating with coworkers and users on Slack/email/tickets or writing documentation. That all greatly outweighs the raw code I produce, and I would not be an effective programmer if I wasn’t doing it.

    More subjectively, it’s a distraction to not be able to type quickly. Not just if you’re crawling along at 10 wpm and have to consciously think about each key, but when I was only typing at 40 or 50 wpm I couldn’t get down thoughts as fluidly as I could think them. Above 60 or 70 wpm this faded away and I’d agree that it’s not a bottleneck, but it is a loss of performance.

    1. 8

      More subjectively, it’s a distraction to not be able to type quickly.

      I can’t agree more. I didn’t think text input speed was an issue until I started trying to type code on a phone keyboard. The speed of doing that is just unbearably slow.

      1. 5

        I see what you’re saying, but I think it misses the spirit of the argument in the article, which is probably better summarized as “For developers who can touch-type, the amount of code required to be typed is not a programming bottleneck” We could probably soften the statement a bit more and still get to the heart of what the author saying which is “Exchanging verbosity for functional simplicity and reliability is a net win.” I agree with both of those statements. I don’t think the argument about wpm is even necessary. I’ve failed to ship plenty of features on time, and never once was the problem that I couldn’t type the code in fast enough. That’s never even been close to being a concern. On the other hand, chasing down runtime type errors, shared mutable state, isolated data in invalid states, and similar issues have often cost myself and teammates quite a bit of time. Of course, poor organization and planning can outweigh any of those factors, but when it comes to the actual code, I’ll take verbose stronger guarantees over terse weak contracts any day of the week.

        1. 2

          Notice that the author presents a class with a builder that’s 78 lines alongside the mythical man month finding that programmers produce 10 lines a day.

          Something tells me he would not be ok taking an entire day, or even 8 days(!) to produce it. Reasoning about averages has a lot of pitfalls.

        1. 3

          Whenever I read posts like this, I find myself wishing for more specifics about why these changes were intractable for the author. In this case, the author is clearly unhappy about the ability to compile features that include a direct JS implementation, but the post says nothing about what problem that was actually solving in practice. It’s only in the comments that you find out the author was using a direct JavaScript implementation to avoid having to write JSON dcoders. His comment on decoders/encodes is that:

          For us encoders and decoders are an intractable solution which creates at least hundreds of lines of redundant/difficult code to maintain.

          I’d really like some more insight into that. Personally, I like Elm’s encode/decode strategy for dealing with JSON, and while they can take a while to write by hand initially, I’ve never found them particularly difficult to maintain. I’m not going to claim that my experience there is definitive, but I’d really like to understand what it is about their data model that makes decoders and encoders hard for them to maintain. Or maybe it’s just a matter of preference and they just don’t like the way decoders work? As it is, I don’t have a way to translate their experience into something I can think about in terms of how I evaluate technical solutions and the problems I have to solve.

          1. 27

            I’d like to provide a more sympathetic outside perspective.

            There are a few common complaints about Elm and Elm community:

            • Blocking discussion (locking threads etc.)
            • Insufficient communication about Elm development
            • Things getting removed from the language.

            With regards to blocking discussion, I think the logic is something like this:

            • The core developers have a roadmap for Elm development and they want to stick to it
            • They tried including more developers but haven’t found an effective way to deal with more contributors
            • Therefore, they have limited time
            • They can spend this time rehashing the same arguments and debating half-baked ideas, or they can spend this time following their roadmap, but not both.

            I would prefer that the discussions weren’t removed or locked, but on the other hand, it’s got to be grating to deal with the same entitled, uninformed or complaining comments all the time. I’ve read most of these discussions, and other than people venting, nothing is ever achieved in them. My reflexive reaction is to be uncomfortable (like a lot of other people) but then, there is also a certain clarity when people just say that they will not engage in a discussion.

            With regards to insufficient communication, I think the main things to understand is that Elm is an experiment in doing things differently, and it’s causing a clash with conventional understanding. Elm is about getting off the upgrade treadmill. So, for example, when a new release like Elm 0.19 comes out, it happens without a public alpha and beta phases, and it’s not actually the point where you go and immediately migrate your production code to it! It’s only the point to start experimenting with it, it’s the point where library and tool authors can upgrade and so on. (There was quite a bit of activity prior to release anyway, it just wasn’t advertised publicly.)

            Finally, the most contentious example of a “feature” getting removed is the so called native modules (which basically means the ability to have impure functions written in JS in your Elm code base). As far as I can tell (having followed Elm since 0.16), native modules were always an internal implementation detail and their use was never encouraged. Nevertheless, some people started using them as a shortcut anyway. However, they were a barrier to enabling function-level dead code elimination which is the main feature of the 0.19 release, so the loophole was finally closed. Sure, it’s inconvenient for people who used them, but does anyone complain when, say, Apple removes an internal API?

            Ultimately, Elm is just an open source project and the core maintainers don’t really owe anybody anything - no contracts are entered into and no funds are exchanged. They can do whatever they want.

            Of course, there is a question of the long term effects this approach is going to have on the community. Will it alienate too many people and cause Elm to wither? Will Elm remain a niche language for a narrow class of applications? That remains to be seen.

            1. 23

              but on the other hand, it’s got to be grating to deal with the same entitled, uninformed or complaining comments all the time.

              Over the years, I have come to believe this is a vital part of building a community. Using draconian tactics to stomp out annoying comments is using power unwisely and worse yet – cripples your community in multiple ways.

              The first thing to remember is that when a comment (entitled, uninformed or otherwise) comes up repeatedly – that is a failure of the community to provide a resource to answer/counter/assist with that comment. That resource can be a meme, a link, an image, a FAQ, a full on detailed spec document, whatever. This type of thing is part of how a community gets a personality. I think a lot of the reason there are a bunch of dead discourse servers for projects is too stringent policing. You should have a place for people to goof off and you have to let the community self police and become a real community. Not entirely, obviously, but on relevant topics.

              This constant repetition of questions/comments is healthy, normal, it is the entrance of new people to the community. More importantly, if gives people who are just slightly deeper in the community someone to help, someone to police, someone to create resources for, even to a degree someone to mock (reminding them they aren’t THAT green anymore) – a way to be useful! This is a way to encourage growth, each “generation” of people helps the one that comes after them – and it is VITAL for building up a healthy community. In a healthy community the elders will only wade in occasionally and sporadically to set the tone and will focus on the more high minded, reusable solutions that move the project forward. Leave the minor stuff be done by the minor players, let them shine!

              Beyond being vital to build the community – it is a signal of where newcomers are hurting. Now if documentation fixes the problem, or a meme… terrific! But if it doesn’t, and if it persists … that is a pain point to look at – that is a metric – that is worth knowing.

              1. 5

                Yeah, each one of these people gives you a chance to improve how well you communicate, and to strengthen your message. But shutting down those voices then run the risk of surrounding yourself with ‘yes people’ who don’t challenge your preconceptions. Now, it’s entirely up to the Elm people to do this, but I think they are going to find it harder to be mainstream with this style of community.

                Note that I’m perfectly fine with blocking and sidelining people who violate a CoC, or are posting hurtful, nonconstructive comments. You do have to tread a fine line in your moderation though. Being overly zealous in ‘controlling the message’ can backfire in unpredictable ways.

                Anyway, I continue to follow Elm because I think the designer has some excellent ideas and approaches, even if I do disagree with some of the ways the way the community is managed.

                1. 5

                  even if I do disagree with some of the ways the way the community is managed.

                  I don’t think the two jobs (managing the community and managing the project) should necessarily be done by the same person. I actually think it probably shouldn’t. Each job is phenomenally challenging on its own – trying to do both is too much.

                  1. 2

                    Yeah, completely agree! I think it would take a huge weight of that person’s shoulders too! :)

                    1. 1

                      I don’t think Evan personally moderates the forums. Other people do it these days.

                      1. 3

                        But, they do it on his behalf? This policy of locking and shutting down discussions comes from somewhere. That person directly or indirectly is the person who “manages” the community, the person who sets the policies/tone around such things.

                        I personally have no idea, I am not active in the Elm community.

                        1. 1

                          I’m not sure who sets the policy and how.

                  2. 2

                    That’s a very interesting perspective, thanks.

                  3. 12

                    I’ll add the perspective of someone who loved Elm and will never touch it again. We’re rewriting in PureScript right now :) I’m happy I learned Elm, it was a nice way of doing things while it lasted.

                    In Elm you may eventually hit a case where you can’t easily wrap your functionality in ports, the alternative to native modules. We did, many times. The response on the forum and other places is often to shut down your message, to give you a partial version of that functionality that isn’t quite what you need, to tell you to wait until that functionality is ready in Elm (a schedule that might be years!), or until recently to point you at native modules. This isn’t very nice. It’s actually very curious how nice the Elm community is unless you’re talking about this feature, in which case it feels pretty hostile. But that’s how open source rolls.

                    Look at the response to message linked in the story: “We recently used a custom element to replace a native modules dealing with inputs in production at NoRedInk. I can’t link to it because it’s in a proprietary code base but I’ll be writing an speaking about it over the next couple months.”

                    This is great! But I can’t wait months in the hope that someone will talk about a solution to a problem I have today. Never mind releasing one.

                    Many people did not see native modules as a shortcut or a secret internal API. They were an escape valve. You would hit something that was impossible without large efforts that would make you give up on Elm as not being viable. Then you would overcome the issues using native modules which many people in the community made clear was the only alternative. Now, after you invest effort you’re told that there’s actually no way to work around any of these issues without “doing them the right way” which turns out to be so complicated that companies keep them proprietary. :(

                    I feel like many people are negative about this change because it was part of how Elm was sold to people. “We’re not there yet, but here, if we’re falling short in any way you can rely on this thing. So keep using Elm.”

                    That being said, it feels like people are treating this like an apocalypse, probably because they got emotionally invested in something they like and they feel like it’s being changed in a way that excludes them.

                    You’re right though. Maybe in the long term this will help the language. Maybe it will not. Some people will enjoy the change because it does lead to a cleaner ecosystem and it will push people to develop libraries to round out missing functionality. In the short term, I have to get things done. The two perspectives often aren’t compatible.

                    I’m personally more worried about what will happen with the next major change where Elm decides to jettison part of its community. I don’t want to be around for that.

                    1. 2

                      If people encouraged you to use native modules, then that was unfortunate.

                      I’m not sure I understand the issue with custom elements. Sure, they’re a bit complicated and half baked but it certainly doesn’t require a research lab to use them (in fact, I’ve just implemented one now).

                      I would agree, however, that the Elm developers have a bit of a hardline approach to backward compatibility. Perhaps there is a misunderstanding around the state of Elm - ie whether it’s still an experiment that can break compatibility or a stable system that shouldn’t.

                      I’m not sure how I feel about backward compatibility. As a user, it’s very convenient. As a developer, it’s so easy to drown in the resulting complexity.

                    2. 10

                      I would prefer that the discussions weren’t removed or locked, but on the other hand, it’s got to be grating to deal with the same entitled, uninformed or complaining comments all the time. I’ve read most of these discussions, and other than people venting, nothing is ever achieved in them. My reflexive reaction is to be uncomfortable (like a lot of other people) but then, there is also a certain clarity when people just say that they will not engage in a discussion.

                      I’ll go one further and say I’m quite glad those discussions get locked. Once the core team has made a decision, there’s no point in having angry developers fill the communication channels the community uses with unproductive venting. I like the decisions the core team is making, and if those threads didn’t get locked, I’d feel semi-obligated to respond and say that I’m in favor of the decision, or I’d feel guilty not supporting the core devs because I have other obligations. I’m glad I don’t have to wade through that stuff. FWIW, it seems like the community is really good at saying “We’re not going to re-hash this decision a million times, but if you create a thread about a specific problem you’re trying to solve, we’ll help you find an approach that works” and they follow through on that.

                      I don’t have a lot of sympathy for folks who are unhappy with the removal of the ability to compile packages that include direct JS bindings to the Elm runtime. For as long as I’ve been using Elm the messaging around that has consistently been that it’s not supported, it’s just an accidental side effect of how things are built, and you shouldn’t do it or you’re going to have a bad time. Now it’s broken and they’re having a bad time. This should not be a surprise. I also think it’s good decision to actively prohibit it. If people started using that approach widely, it would cause a lot of headaches for both the community and hamstring the core team’s ability to evolve the language.

                      1. 6

                        I’m quite glad those discussions get locked

                        and

                        I like the decisions the core team is making

                        Do you believe your perspective would change if you didn’t agree with the developers decisions? Obviously I have a different perspective but I am curious if think you would still have this perspective if you were on the other side?

                        Additionally, just because the core team has “made a decision” doesn’t mean it wasn’t a mistake, nor that it is permanent. Software projects make mistakes all the time, and sometimes the only way to really realize the mistake is the hear the howls of your users.

                        1. 3

                          I’m pretty confident I wouldn’t change my position on this if I wasn’t in agreement with the core team’s choices. I might switch to PureScript or ReasonML, if I think the trade-offs are worth it, but I can’t see myself continuing to complain/vent after the decision has been made. I think appropriate user input is “I have this specific case, here’s what the code look like, here’s the specific challenge with any suggested alternative” If the core team decides to go another way after seeing their use cases, it’s clear we don’t have the same perspective on the trade-offs for those decisions. I can live with that. I don’t expect everybody to share my opinion on every single technical decision.

                          As an example, I use Clojure extensively at work, and I very much disagree with Rich Hickey’s opinions about type systems, but it’s pretty clear he’s thought through his position and random folks on the internet screaming differently isn’t going to change it, it’ll just make his job more difficult. I can’t imagine ever wanting to do that to someone.

                          sometimes the only way to really realize the mistake is the hear the howls of your users

                          It’s been my experience that the folks who can provide helpful feedback about mistaken technical decisions rarely howl. They can usually speak pretty clearly about how decisions impact their work and are able to move on when it’s clear there’s a fundamental difference in goals.

                          1. 2

                            It’s been my experience that the folks who can provide helpful feedback about mistaken technical decisions rarely howl.

                            We fundamentally disagree on this point (and the value of the noisy new users), and I don’t think either of us is going to convince the other. So, I think this is a classic case of agree to disagree.

                      2. 10

                        I think what bothers me the most about the core team’s approach to features is not that they keep removing them, but that for some they do not provide a valid alternative.

                        They’ll take away the current implementation of native modules, but coming up with a replacement is too hard, so even though the core libraries can use native code, us peasants will have to do without.

                        They won’t add a mechanism for higher rank polymorphism because coming up with a good way to do it is hard, so even though the base library has a few magic typeclasses for its convenience, us peasants will have to make do with mountains of almost duplicated code and maybe some code generation tool.

                        So where does that leave Elm right now? Should it be considered a production-ready tool just by virtue of not having very frequent releases? Or should it be regarded as an incomplete toy language, because of all the breaking changes between releases, all the things that haven’t been figured out yet, and how the response to requests for ways to do things that are necessary in real code is either “you don’t need that”, which I can live with most of the time, or “deal with it for the moment”, which is unacceptable.

                        I think Elm should make it more clear that it’s ostensibly an unfinished project.

                        1. 3

                          They’ll take away the current implementation of native modules, but coming up with a replacement is too hard

                          They won’t add a mechanism for higher rank polymorphism because coming up with a good way to do it is hard

                          I don’t think this is a fair characterization of the core team’s reasons for not supporting those features. I’ve read/watched/listened to a lot of the posts/videos/podcasts where Evan and other folks discuss these issues, and I don’t think I’ve ever heard anyone say “We can’t do it because it’s too difficult.” There’s almost always a pretty clear position about the trade-offs and motivations behind those decisions. You might not agree with those motivations, or weigh the trade-offs the same way, but it’s disingenuous to characterize them as “it’s too hard”

                          1. 4

                            I exaggerate in my comment, but what I understood from the discussions around rank n polymorphism I’ve followed is basically that Evan doesn’t think any of the existing solutions fit Elm.

                            I understand that language design, especially involving more complex features like this, is a hard issue, and I’m sure Evan and the core team have thought long and hard about this and have good reasons for not having a good solution yet, but the problem remains that hard things are hard and in the meantime the compiler can take an escape hatch and the users cannot.

                          2. 2

                            Should it be considered a production-ready tool just by virtue of not having very frequent releases? Or should it be regarded as an incomplete toy language

                            I always struggle with this line of questioning because “incomplete and broken” describes pretty much all of the web platform in the sense that whenever you do non-trivial things, you’re going to run into framework limitations, bugs, browser incompatibilities and so on.

                            All you can do is evaluate particular technologies in the context of your specific projects. For certain classes of problems, Elm works well and is indeed better than other options. For others, you’ll have to implement workarounds with various degrees of effort. But again, I can say the same thing for any language and framework.

                            Is it good that it’s so easy to bump up against bugs and limitations? No. But at least Elm is no worse than anything else.

                            Taking a tangent, the main problem is that Elm is being built on top of the horrifically complex and broken foundation that is the web platform. It’s mostly amazing to me that anything works at all.

                            1. 10

                              Is it good that it’s so easy to bump up against bugs and limitations? No. But at least Elm is no worse than anything else.

                              Having worked with ClojureScript on the front-end for the past 3 years, I strongly disagree with this statement. My team has built a number of large applications using Reagent and whenever new versions of ClojureScript or Reagent come out all we’ve had to do was bump up the versions. We haven’t had to rewrite any code to accommodate the language or Reagent updates. My experience is that it’s perfectly possible to build robust and stable tools on top of the web platform despite its shortcomings.

                              1. 4

                                I have the opposite experience. Team at day job has some large CLJS projects (also 2-3 years old) on Reagent and Re-Frame. We’re stuck on older versions because we can’t update without breaking things, and by nature of the language it’s hard to change things with much confidence that we aren’t also inadvertently breaking things.

                                These projects are also far more needlessly complex than their Elm equivalents, and also take far longer to compile so development is a real chore.

                                1. 6

                                  Could you explain what specifically breaks things in your project, or what makes it more complex than the Elm equivalent. Reagent API had no regressions in it that I’m aware of, and re-frame had a single breaking change where the original reg-sub was renamed to reg-sub-raw in v 0.7 as I recall. I’m also baffled by your point regarding compiling. The way you develop ClojureScript is by having Figwheel or shadow-cljs running in the background and hotloading code as you change it. The changes are reflected instantly as you make them. Pretty much the only time you need to recompile the whole project is when you change dependencies. The projects we have at work are around 50K lines of ClojureScript on average, and we’ve not experienced the problems you’re describing.

                                2. 2

                                  I think the ease of upgrades is a different discussion. There is a tool called elm-upgrade which provides automated code modifications where possible. That’s pretty nice, I haven’t seen a lot of languages with similar assistance.

                                  My point was, you cannot escape the problems of the web platform when building web applications. Does ClojureScript fully insulate you from the web platform while providing all of its functionality? Do you never run into cross-browser issues? Do you never have to interoperate with JavaScript libraries? Genuinely asking - I don’t know anything about ClojureScript.

                                  1. 3

                                    My experience is that vast majority of issues I had with the web platform went away when my team started using ClojureScript. We run into cross-browser issues now and then, but it’s not all that common since React and Google Closure do a good job handling cross-browser compatibility. Typically, most of the issues that we run into are CSS related.

                                    We interoperate with Js libraries where it makes sense, however the interop is generally kept at the edges and wrapped into libraries providing idiomatic data driven APIs. For example, we have a widgets library that provides all kinds of controls like data pickers, charts, etc. The API for the library looks similar to this to our internal widgets API.

                                    1. 1

                                      Sounds like a great development experience!

                                      Let me clarify my thinking a bit. For a certain class of problems, Elm is like that as well. But it certainly has limitations - not a huge number of libraries etc.

                                      However, I think that pretty much everything web related is like that - limitations are everywhere, and they’re much tighter than I’d like. For example, every time I needed to add a date picker, it was complicated, no matter the language/framework. But perhaps your widgets library has finally solved it - that would be cool!

                                      So I researched Elm and got a feel for it’s limitations, and then I could apply it (or not) appropriately.

                                      I would agree, however, that the Elm developers have a bit of a hardline approach to backward compatibility. Perhaps there is a misunderstanding around the state of Elm - ie whether it’s still an experiment that can break compatibility or a stable system that shouldn’t.

                                      I’m not sure how I feel about backward compatibility. As a user, it’s very convenient. As a developer, it’s so easy to drown in the resulting complexity.

                                      1. 3

                                        Yeah, I agree that the main question is around the state of Elm. If the message is that Elm isn’t finished, and don’t invest into it unless you’re prepared to invest time into keeping up, that’s perfectly fine. However, if people are being sold on a production ready language that just works there appears to be a bit of a disconnect there.

                                        It’s obviously important to get things right up front, and if something turns out not to work well it’s better to change it before people get attached to it. On the other hand, if you’re a user of a platform then stability is really important. You’re trying to deliver a solution to your customers, and any breaking changes can become a serious cost to your business.

                                        I also think it is important to be pragmatic when it comes to API design. The language should guide you to do things the intended way, but it also needs to accommodate you when you have to do something different. Interop is incredibly important for a young language that’s leveraging a large existing ecosystem, and removing the ability for people to use native modules in their own projects without an alternative is a bit bewildering to me.

                                3. 7

                                  To me the problem is that Elm is not conceptually complete. I listed those issues specifically because they’re both things that the compiler and the core libraries can do internally, but the users of the language cannot.

                                  But at least Elm is no worse than anything else.

                                  No, Elm is a language, and not being able to do things in a language with so few metaprogramming capabilities is a pretty big deal compared to a missing feature in a library or a framework, which can easily be added in your own code or worked around.

                                  1. 1

                                    But how is this different from any other ecosystem? The compiler always has more freedom internally. There are always internal functions that platform APIs can use but your library cannot. Following your logic, we should condemn the Apple core APIs and Windows APIs too.

                                    1. 3

                                      No, what I meant is that the core libraries use their “blessed” status to solve those problems only for themselves, thus recognizing that those problems effectively exist, but the users aren’t given any way to deal with them.

                                      1. 2

                                        But there are actually solutions on offer: ports and custom elements. What’s wrong with using them?

                                        1. 4

                                          Ports are very limiting and require much more work to set up than a normal library, and I haven’t used custom elements so I can’t speak for those.

                                          There’s also no workaround for the lack of ad-hoc polymorphism. One of the complaints I hear the most about Elm is that writing json encoders and decoders is tedious and that they quickly become monstrously big and hard to maintain; often the json deserialization modules end up being the biggest modules in an Elm project.

                                          This is clearly a feature the language needs (and already uses with some compiler magic, in the form of comparable, appendable, and so on).

                              2. 2

                                I was hoping to read other points of view on that matter, thanks for taking the time writing down yours!

                              1. 16

                                To quote another HN comment:

                                LIDAR aside, computer vision and a raw video feed is more than enough to have prevented this collision.

                                Exactly! Engineers designing autonomous cars are required to account for low-visibility conditions, even way worse than what this video shows (think hail, rain, dust, etc.). This was easy! And yet the car made no signs of slowing down.

                                EDIT: twitter comments like this pain me. People need to be educated about the capabilities of autonomous cars:

                                She is walking across a dark road. No lights even though she has a bike. She is not in a cross walk. Not the car’s fault.

                                Yes it was the car’s fault. This is shocking, extraordinary behavior for an autonomous car.

                                  1. 9

                                    In reality, both the pedestrian and the car (and Uber) share some responsibility. You shouldn’t cross a four lane road at night wearing black outside of a crosswalk. A human driver is very unlikely to see you and stop. Not blaming the victim here, just saying it’s easier to stay safe if you don’t do that. However, the promise of autonomous cars with IR and LIDAR and fancy sensors is that they can see better than humans. In this case, they failed. Not to mention the human backup was very distracted, which is really bad.

                                    From the video I don’t think a human would have stopped in time either, but Uber’s car isn’t human. It should be better, it should see better, it should react better. Automatic collision avoidance is a solved problem already in mass-market cars today, and Uber failed it big time. Darkness is an excuse for humans, but not for autonomous cars, not in the slightest.

                                    She should still be alive right now. Shame on Uber.

                                    1. 18

                                      You can’t conclude that someone would not have stopped in time from the video. Not even a little. Cameras aren’t human eyes. They are much much worse in low visibility and in particular with large contrasts; like say those of headlights in the dark. I can see just fine in dark rooms where my phone can’t produce anything aside from a black image. It will take an expert to have a look at the camera and its characteristics to understand how visible that person was and from what distance.

                                      1. 9

                                        From the video I don’t think a human would have stopped in time either, but Uber’s car isn’t human.

                                        Certainly not when distracted by a cell phone. If anything, this just provides more evidence that driving while distracted by a cell phone, even in an autonomous vehicle, is a threat to life, and should be illegal everywhere.

                                        1. 9

                                          Just for everyone’s knowledge you’re 8 times as likely to get in an accident while texting, that’s double the rate for drinking and driving.

                                          1. 6

                                            He was not driving.

                                            He was carried around by a self driving car.

                                            I hope that engineers at Uber (and Google, and…) do not need me to note that the very definition of “self driving car” is a huge UI flaw in itself.

                                            That is obvious to anyone who understand UI, UX or even just humans!

                                            1. 5

                                              She was driving . The whole point now of sitting in a driver seat for a TEST self driving car is for the driver to take over and overcome situations like this.

                                              1. 6

                                                No, she was not.

                                                Without this incident, you would have seen soon a TV spot precisely with a (hot) business woman looking at the new photos uploaded on Facebook by her family. With a voice saying something like: ’we can bring you to those you Like”.

                                                The fact that she was paid to drive a prototype does not mean she was an experienced software engineer trained to not trust the AI and to keep continuous control of the car.

                                                And indeed the software choosed the speed. At that speed the human intervention was impossible.

                                                Also the software did not deviate, despite the free lane beside and despite the fact that the victim had to traversate that lane, so there was enough time for a computer to calculate several alternative trajectories or even simply to alert the victim via light signaling or sounds.

                                                So the full responsibility must be tracked back to people at Uber.

                                                The driver was just fooled to think that he could trust the AI by an stupidly broken UI.

                                                And indeed the driver/passenger reactions were part of the Uber’s test.

                                                1. 2

                                                  Looking at your phone while riding in the drivers seat is a crime for a reason. Uber’s AI failed horribly and all their cars should be recalled, but also the driver failed. If the driver had not been looking at their phone literally any action at all could have been taken to avoid the accident. It’s the responsibility of that driver to stay alert with attention on the road not looking at your phone or reading a book or watching a film, plane pilots do it every single day. Is their attention much more diminished? Yes of course it is. Should we expect literally 0 attention from the “driver”, absolutely no we should not.

                                                  1. 5

                                                    Do you realize that the driver/passenger reactions were part of the test?

                                                    This is the sort of self driving car that Uber and friends want to realize and sell worldwide.

                                                    And indeed I guess that the “driver” behaviour was pretty frequent among the prototypes’ testers.

                                                    And I hope somebody will ask Uber to provide in court the recording of all the tests done so far to prove that they did not know drivers do not actually drive.

                                                    NO. The passenger must not be used as a scapegoat.

                                                    This is an engineering issue that was completely avoidable.

                                                    The driver behaviour was expected and desired by Uber

                                                    1. 4

                                                      You’ve gotta stop doing this black and white nonsense. Firstly stop yelling. I’m not using the passenger as a scapegoat so I don’t know who you’re talking to. The way the law was written it’s abundantly clear that this technology is to be treated as semi autonomous. That does not mean that Uber is not negligent. If you are sitting in a driver’s seat and you’re watching harry potter while your car drives through a crowd of people you should be found guilty of negligence independent of any charges that come to both the lead engineers and owners of Uber. You have a responsibility to at least take any action at all to prevent deaths that otherwise may be at no fault of your own. You can’t just lounge back while your car murders people, and in the same respect when riding in the drivers seat your eyes should not be on your phone, period.

                                                      Edit: That image is of a fully autonomous car, not a semi-autonomous car. There is actually a difference despite your repeated protestations. Uber still failed miserably here, and I hope their cars get taken off the road. I know better than to hope their executives will receive any punishment except maybe by shareholders.

                                                      1. [Comment from banned user removed]

                                                        1. 3

                                                          I guess you are not an engineer, Nor a programmer.

                                                          This isn’t the first time you’ve pulled statements out of a hat as if they are gospel truth without any evidence and I doubt it will be the last. I think your argument style is dishonest and for me this is the nail in the coffin.

                                                          1. 0

                                                            I’m not sure I understand what you mean…

                                                            The UI problem is really evident, isn’t it?

                                                            The passenger was not perceiving herself as a driver.

                                                          2. 2

                                                            If there is “no way” a human can do this, then we’ve certainly never had astronauts pilot a tiny spacecraft to the moon without being able to physically change position, and we certainly don’t have military pilots in fighter jets continuously concentrating while refueling in air on missions lasting 12 hours or more… or… or…. truck drivers driving on roads with no one for miles…or…

                                                            Maybe Uber is at fault here for not adequately psychologically screening, and training its operators for “scenarios of intense boredom.”

                                                            1. 0

                                                              You are talking about professionals specifically trained to keep that kind of concentration.
                                                              And even a military pilot won’t maintain concentration on the road if her husband is driving and she knows by experience that his trustworthy.

                                                              I’m talking about the actual Uber’s goal here, which is to build “self driving cars” for the masses.

                                                              It’s just a stupid UI design error. A very obvious one to see and to fix.

                                                              Do you really need some hints?

                                                              1. Remove the car’s control from the AI and turn it into something that enhance the driver’s senses.
                                                              2. Make it observes the driver’s state and forbid to start in case of he’s drunk or too tired to drive
                                                              3. Stop it from starting if any of its part is not working properly.

                                                              This way the responsibility of an incident would be of the driver, not of Uber’s board of directors (unless factory defects, obviously).

                                                              1. 4

                                                                You’re being adversarial just to try to prove your point, which we all understand.

                                                                You are talking about professionals specifically trained to keep that kind of concentration. And even a military pilot won’t maintain concentration on the road if her husband is driving and she knows by experience that his trustworthy.

                                                                A military pilot isn’t being asked (or trained) to operate an autonomous vehicle. You’re comparing apples and oranges!

                                                                I’m talking about the actual Uber’s goal here, which is to build “self driving cars” for the masses.

                                                                Yes, the goal of Uber is to build a self driving car. We know. The goal of Uber is to build a car that is fully autonomous; one that allows all passengers to enjoy doing whatever it is they want to do: reading a book, watching a movie, etc. We get it. The problem is that those goals, are just that, goals. They aren’t reality, yet. And, there are laws in which Uber, and its operators must continue to follow in order for any department of transportation to allow these tests to continue–in order to build up confidence that autonomous vehicles are as safe, or (hopefully) safer than already licensed motorists. (IANAL, nor do I have any understanding of said laws, so that’s all I’ll say there)

                                                                It’s just a stupid UI design error. A very obvious one to see and to fix.

                                                                So, your point is that the operator’s driving experience should be enhanced by the sensors, and that the car should never be fully autonomous? I can agree to that, and have advocated for that in the past. But, that’s a different conversation. That’s not the goal of Uber, or Waymo.

                                                                The reason a pedestrian is dead is because of some combination of flaws in:

                                                                • the autonomous vehicle itself
                                                                • a distracted operator
                                                                • (apparently) a stretch of road with too infrequent cross walks
                                                                • a pedestrian jaywalking (perhaps because of the previous point)
                                                                • a pedestrian not wearing proper safety gear for traveling at night
                                                                • an extremely ambitious engineering goal of building a fully autonomous vehicle that can handle all of these things safely

                                                                … in a world where engineering teams use phrases like, “move fast and break things.” I’m not sure what development methodology is being used to develop these cars, but I would wager a guess that it’s not being developed with the same rigor and processes used to develop autopilot systems for aircraft, or things like air traffic controllers, space craft systems, and missile guidance systems…

                                                                1. 2

                                                                  … in a world where engineering teams use phrases like, “move fast and break things.” I’m not sure what development methodology is being used to develop these cars, but I would wager a guess that it’s not being developed with the same rigor and processes used to develop autopilot systems for aircraft, or things like air traffic controllers, space craft systems, and missile guidance systems…

                                                                  Upvoted for this.

                                                                  I’m not being adversarial to prove a point.

                                                                  I’m just arguing that Uber’s board of directors are responsible and must be accountable for this death.

                                                                  1. 3

                                                                    Nobody here is arguing that the board of directors should not be held accountable. You’re being adversarial because you’re bored is my best guess.

                                                                  2. 2

                                                                    Very well-said on all of it. If anyone is wondering, I’ll even add to your last point what kind of processes developers of things like autopilots are following. That’s things like DO-178B with so much assurance activities and independent vetting put into it that those evaluated claim it can cost thousands of dollars per line of code. The methods to similarly certify the techniques used in things like deep learning are in the protoype phase working on simpler instances of the tech. That’d have had to do rigorous processes at several times the pace and size at a fraction of the cost of experienced companies… on cutting-edge techniques requiring new R&D to know how to vet.

                                                                    Or they cut a bunch of corners hacking stuff together and misleading regulators to grab a market quickly like they usually do. And that killed someone who, despite human factors, should’ve lived if the tech (a) worked at all and (b) evaluated against common, road scenarios that could cause trouble. One or both of these is false.

                                                    2. 2

                                                      I don’t know if you can conclude that’s the point. Perhaps the driver is there in case the car says “I’m stuck” or triggers some other alert. They may not be an always on hot failover.

                                                      1. 11

                                                        They may not be an always on hot failover

                                                        IMO they should be, since they are testing a high risk alpha technology that has the possibility to kill people.

                                                2. 4

                                                  The car does not share any responsibility, simply because it’s just a thing.

                                                  Nor does Uber, which again is a thing, a human artifact like others.

                                                  Indeed we cannot put in jail the car. Nor Uber.

                                                  The responsibility must be tracked back to people.

                                                  Who is ultimately accountable for the AI driving the car?

                                                  I’d say the Uber’s CEO, the board of directors and the stock holders.

                                                  If Uber was an Italian company, probably the the CEO and the boars of directors would be put in jail.

                                                  1. 3

                                                    Not blaming the victim here

                                                    People often say this when they’re partly blaming the victim to not seem overly mean or unfair. We shouldn’t have to when they do deserve partial blame based on one fact: people who put in a bit of effort to avoid common problems/risks are less likely to get hit with negative outcomes. Each time someone ignores one to their peril is a reminder of how important it is to address risks in a way that makes sense. A road with cars flying down it is always a risk. It gets worse at night. Some drivers will have limited senses, be on drugs, or drunk. Assume the worst might happen since it often does and act accordingly.

                                                    In this case, it was not only a four lane road at night the person crossed: people who live in the area on HN said it’s a spot noticeably darker than the other dark spots that stretches out longer. Implication is that there are other places on that road with with more light. When I’m crossing at night, I do two to three things to avoid being hit by a car:

                                                    (a) cross somewhere where there’s light

                                                    (b) make sure I see or hear no car coming before I cross.

                                                    Optionally, (c) where I cross first 1-2 lanes, get to the very middle, pause for a double check of (b), and then cross next two.

                                                    Even with blame mostly on car & driver, the video shows the human driver would’ve had relatively little reaction time even if the vision was further out than video shows. It’s just a bad situation to hit a driver with. I think person crossing at night doing (a)-(c) above might have prevented the accident. I think people should always be doing (a)-(c) above if they value their life since nobody can guarantee other people will drive correctly. Now, we can add you can’t guarantee their self-driving cars will drive correctly.

                                                    1. 2

                                                      Well put. People should always care about their own lifes.
                                                      And they cannot safely assume that others will care as much.

                                                      However note that Americans have learned to blame “jaywalking” by strong marketing campaigns after 1920.

                                                      Before, the roads were for people first.

                                                      1. 2

                                                        I just saw a video on that from “Adam Ruins Everything.” You should check that show out if you like that kind of stuff. Far as that point, it’s true that it was originally done for one reason but now we’re here in our current situation. Most people’s beliefs have been permanently shaped by that propaganda. The laws have been heavily reinforced. So, our expectations of people’s actions and what’s lawful must be compatible with those until they change.

                                                        That’s a great reason to consider eliminating or modifying the laws on jaywalking. You can bet the cops can still ticket you on it, though.

                                                    2. 3

                                                      In reality, both the pedestrian and the car (and Uber) share some responsibility.

                                                      I’ve also seen it argued (convincingly, IMO) that poor civil engineering is also partially responsible.

                                                    3. 3

                                                      And every single thing you listed is mitigated by just slowing down.

                                                      Camera feed getting fuzzy ? Slow down. Now you can get more images of what’s around you, combine them for denoising, and re-run your ML classifiers to figure out what the situation is.

                                                      ML don’t just classify what’s in your sensor feeds. They also give you numerical measures for how close your feed is to the data they previously trained on. When those measures decline,, it could be because the sensors are malfunctioning. It could be rain’/dust/etc. It could be a novel untrained situation. Every single one of those things can be mitigated by just slowing down. In the worst case, you come to a full stop and tell the rider he needs to drive.

                                                    1. 2

                                                      I can see what the author’s getting at here - RemoteData doesn’t capture more complex use cases, but I don’t think it’s intended to. RemoteData models a single loading event. Dropping it completely for more complex use cases strikes me a bit as throwing the baby out with the bathwater. I suspect a cleaner option would be to compose RemoteData with additional state and data structures to build up to the use cases he describes.

                                                      For existing data and a refresh request, that might look something like:

                                                      type RefreshableData
                                                           = Refreshable a (RemoteData e a)
                                                      

                                                      For a large number of requests, you could do something like:

                                                      type alias RequestGroup e a = List (RemoteData e a)
                                                      

                                                      And it becomes pretty easy to derive the states from the list:

                                                      {- This can be optimized, but if you have enough data
                                                          on the page for it to be an issue, you probably have bigger UX problems -}
                                                      
                                                      isPartialLoading requestGroup =
                                                          (List.any RemoteData.isLoading requestGroup)
                                                              && (not (List.all RemoteData.isLoading requestGroup)) 
                                                      

                                                      Of course, in these examples, the states aren’t represented as union types, so you lose come compiler checking that you’ve handled all states. That said, I’ve worked on some pretty complex interfaces, and I have never needed or wanted something that would validate that we had code to handle all of:

                                                      • empty, general error, and request pending
                                                      • empty, general error, and request pending for a subset of the data
                                                      • empty, error for a subset of the data, and request pending
                                                      • empty, error for a subset of the data, and request pending for a subset of the Data
                                                      • data cached and general error
                                                      • data cached and error for a subset of the data
                                                      • data cached and request pending
                                                      • data cached and request pending for a subset of the data
                                                      • data cached, general error, and request pending
                                                      • data cached, general error, and request pending for a subset of the data
                                                      • data cached, error for a subset of the data, and request pending
                                                      • data cached, error for a subset of the data, and request pending for a subset of the data

                                                      That said, if you really wanted it, you could take put your composition of RemoteData with additional state into it’s own module, make it an opaque type and enforce correct transistions between states by limiting the exposed API.

                                                      I think all of this would be clearer with a specific use case in mind. The exercise in the article strikes me as a case of premature generalization. It seems like it’s trying to solve all possible problems rather than anything specific.

                                                      I also have questions about what kind of cache is being referenced in the article, as I have some fairly strong opinions about caching data in client-side applications. (TL;DR: Don’t, the browser can already do this for you.)

                                                      1. 3

                                                        I also have questions about what kind of cache is being referenced in the article, as I have some fairly strong opinions about caching data in client-side applications. (TL;DR: Don’t, the browser can already do this for you.)

                                                        I would love to hear more about this, because two problems have me stuck with client-side JS data caches in my apps. And I love deleting code.

                                                        1. Embedded documents. Every app I’ve worked on denormalizes the data we fetch to cut down on HTTP requests. Is it cheap enough with HTTP/2 to send lots and lots of requests? Even then, it would mean a bunch of sequential round-trips for each child document that depends on its parent.

                                                        2. Consistency. If two parts of the app load the same data at different times, we can get different responses, and have weirdness in the UI. With a JS cache, when we update a document, we can have every dependent piece of UI re-render and be consistent.

                                                        1. 3

                                                          You should take this all with a big grain of salt, because I have not had the bandwidth to implement most of these ideas in practice, due to the usual constraints around priorities and limited time. I’ve just been increasingly bothered by the complexity of implementing caches in the client, or alternatively the ugly behavior that results when they’re implemented naively, and on reflection, I think it’s mostly unnecessary. I have probably missed some corner cases and I suspect there are many apps where some amount of specific, targeted caching might still be useful for a subset of APIs or pages.

                                                          With all of that in mind, I will say that #1 is probably the best reason I’ve seen for having a client side cache. I think in that case it’s worth looking at usage patterns to be sure it’s really providing benefit. If the individual requests your app is making in between big de-normalized requests don’t overlap much with the de-normalized data, the client side cache isn’t going to buy you much, although neither is the browser cache. Or if you’re always making large de-normalized requests, you’re still probably not getting a caching win, unless you have a way of structuring those requests to specify what you already have data on.

                                                          I think there’s a lot of promise with HTTP/2. The single TCP connection is nice on it’s own, but there’s also the potential to do interesting things like make a request for a de-normalized structure that only contains the relationships between resources, and then have the server push the actual data from the resources individually. That way they’re cached individually, and the browser will actually cancel the push for resources it has already cached. Running some experiments with that is somewhere medium-high on my TODO list.

                                                          #2 is tricky. If you data doesn’t change often, it’s not as big of a deal, or if you don’t often/never show the same data twice on the same page. One thing you can do if it’s still a problem after taking both of those into consideration is to track ongoing requests at the API layer. If you’re using something like promises, that means when a request comes in while another is still outstanding, you should be able to return the promise from the first request to the second caller, and just share the API call. If the first request has completed already, the browser should have the data in it’s cache (assuming the data has a time-based cache rather than something like etags).

                                                          1. 2

                                                            This is awesome, thank you so much for taking the time to share your thoughts @mcheely!

                                                            Solving the round-trip part of #1 with HTTP/2 server push seems like it could be so damn magical and cool. In my most common case of hard-to-cache embedding – “load a list of items” and then “load a detailed view of one item” – it seems like a drop-in solution.

                                                            For #2, I actually hadn’t thought about races! I was thinking more about the case where data rendered on one part of the screen becomes stale, but there’s no way for the browser cache to tell that part of the UI to re-render, so it stays stale. I guess, since we hope it to be cached, maybe I just need to adjust my thinking to re-render more things more often. Cheap most of the time, since it’s cached, and expensive when it should be expensive anyway. Huh.

                                                            (solving the races by having a client API layer managing promises across the whole app starts to feel like a dangerously tempting place to add new features like… caching :P )

                                                            I think in that case it’s worth looking at usage patterns

                                                            I think it all comes back to this, for me. Building an app usually feels like a process of discovery to me; top-down plans don’t survive long. The usage patterns can be pretty unstable, and it can get painful surprisingly quickly to be completely naïve about loading data.

                                                            …It’s appealing to imagine that a client-side cache, made hopefully robust through explicit modeling of all the possible states of each piece of data, can provide a 90% solution in a general way. Coupled with things like graphQL or PostgREST, you just build stuff and it works reasonably well, for free-ish.

                                                        2. 2

                                                          Thanks for reading and thanks for the feedback.

                                                          I think all of this would be clearer with a specific use case in mind. The exercise in the article strikes me as a case of premature generalization. It seems like it’s trying to solve all possible problems rather than anything specific.

                                                          As I say in the post, “States, events, and transitions should reflect the needs of the application”. I listed those states as an example because the last four applications I’ve built have needed all of these states. I tried to use RemoteData for two of those applications and ran into the problems I describe in the post. These apps do not strike me as complex and three years of dealing with these states led me to assume they were common. One example is an app that lists financial transactions. The app periodically refreshes the list. A loading icon is shown next to the list header during each refresh. Error messages are shown above the list if a refresh fails. That’s half of the states in that list already. On top of that, the user can make inline edits to the transaction details. When the updates are committed, a loading icon displays next to the transaction title. Errors related to the update (e.g. network failure) are displayed under the transaction title. That’s all of the states in that list. But the point of the article is not to dictate states to the reader. Again, “States, events, and transitions should reflect the needs of the application”. The point is that you cannot oversimplify the problem just because the result of that oversimplification looks nice in a blog post or a tweet.

                                                          RemoteData models a single loading event. Dropping it completely for more complex use cases strikes me a bit as throwing the baby out with the bathwater.

                                                          I agree that these states map closely to the HTTP request/response lifecycle. As I said in the post, “RemoteData models a stateful cache of data in terms of a stateless transfer of data, REST.” The original RemoteData post clearly states that the pattern is intended to model the cache, not the request/response lifecycle. That is why that post starts by evaluating existing patterns for modeling cached data and then offers RemoteData as an alternative. Notice that these posts place RemoteData in the model and that the view functions consume RemoteData - cache state, not request state.

                                                        1. 30

                                                          This is pretty wonderful. I’m happy to help you run stats like these for a quantitative post, but the moral of this story is the importance of human connections, I think you have captured here most of what there is to learn.

                                                          I still was routinely downvoted as “troll”.

                                                          This surprises me a bit. I hope the incidence was much lower, but perhaps it can be explained as reputation carrying over, people read comments in your old tone. Then perhaps we’d see them on posts a sentiment analyzer judged as ambiguous or intermediate. Hm.

                                                          1. 16

                                                            but perhaps it can be explained as reputation carrying over, people read comments in your old tone

                                                            I’m guilty of doing this. I thought the friendlysock name change was one big troll. It wasn’t until reading this post that I even knew it was an earnest attempt to be nicer. Sorry @friendlysock :-(

                                                            1. 9
                                                              I still was routinely downvoted as “troll”.
                                                              

                                                              This surprises me a bit. I hope the incidence was much lower, but perhaps it can be explained as reputation carrying over, people read comments in your old tone. Then perhaps we’d see them on posts a sentiment analyzer judged as ambiguous or intermediate. Hm.

                                                              At first blush this surprised me too, but honestly I think there are some people who mis-understand what “troll” is for and are a bit too quick to pull this particular trigger.

                                                              1. 12

                                                                I get downvoted as troll most often in contexts where I’m replying earnestly and constructively. It doesn’t get used well and the only way to avoid it is not to disagree with anyone and avoid posting in threads where people you disagree with might be reading.

                                                                1. 3

                                                                  I would love to see downvotes only when commenting (so you can explain downvotes). Sometimes I see totally valid comments (for my point of view) being downvoted, and as a reader I don’t know why… it’s probably frustrating for the commenter and the readers.

                                                                  1. 5

                                                                    I’m not sure that’s a good idea. If I disagree with someone or maybe I don’t understand their position, I write a comment, and don’t downvote.

                                                                    Requiring a comment for a downvote can lead to the following undesirable behaviors:

                                                                    • Trolls feed on attention, someone actually sitting down and writing a disagreement will only ensure they have been succesfull.
                                                                    • It attaches a username to a disagreement, possibly leading to harassment, retaliatory downvotes, etc.
                                                                2. 4

                                                                  I still was routinely downvoted as “troll”.

                                                                  This surprises me a bit. I hope the incidence was much lower, but perhaps it can be explained as reputation carrying over, people read comments in your old tone.

                                                                  Could have been me. I’ve downvoted @friendlysock and other’s posts as troll before when I thought they were politely defending/promoting caustic attitudes, discrimination, or other behavior damaging to a community. I realize there are a lot of folks who prefer a written explanation, but I rarely have the bandwidth to sit down and compose a response.

                                                                  That said, I do appreciate @friendlysock’s reflection and change in communication style despite our differences in perspective on other subjects.

                                                                1. 15

                                                                  This is one of my pet peeves, and as an end user I feel web apps are one of the worst things to happen to computer software in a long time.

                                                                  One place the difference is really noticeable is comparing Google Docs to the standalone Microsoft Office applications. Google Docs is missing 90% of the features and the interface is terrible. Whenever I need to create a document I jump to my Macbook and use Pages (which isn’t great either, but beats Google by a mile).

                                                                  Another place where the difference is really noticeable is comparing Outlook in Office 365 to standalone Outlook. The features are very limited, there’s no ability to customize it, features that existed for 15 years in Outlook aren’t there any more, etc. It’s a mess.

                                                                  Even the promise of cross-platform compatibility doesn’t work out in practice, because the larger web apps inevitably end up only working on specific browsers.

                                                                  1. 17

                                                                    The most striking thing in my eyes is the fact that millions of dollars by multiple vendors have been poured into making the web a viable app platform and yet it hasn’t produced much in the way of complex apps that support professional workflows. Some may regard this as a feature (think 37 Signals aka Basecamp), but the fact that it Gmail and Gmaps remain the most technically sophisticated webapps out there is damning.

                                                                    It just goes to show you that no amount of money and wishful thinking can paper over a conceptual impedance mismatch.

                                                                    1. 5

                                                                      one counterexample: Salesforce.com

                                                                      Sure, it’s a CRM. But it’s also an extremely pluggable environment. Third parties work to offer pluggable functionality, there’s “remote debugging” if your client has issues. There’s entire VMs working on huge sets of data.

                                                                      It’s very close to being a Smalltalk-style image per user. The web-y-ness allows working with various data sources in interesting ways, allowing third parties to set up stuff within your own environment. It’s an extremely connected environment, and essentially impossible without the web.

                                                                      1. 4

                                                                        I don’t imagine that it’s impossible for there to be a web application that is strictly better than a desktop one, for some given set of tasks, but by the time the platform mutates into one that enables said application, the platform will not look anything like the pig’s breakfast we see today. It won’t be within a million billion miles of elegant, but somehow more layers of abstraction will be piled on and we’ll muddle through, because Google’s gotta keep those ad dollars flowing.

                                                                        I hate it. I hate it all so, so, so much.

                                                                        1. 2

                                                                          For all the advances, the web has become an execrable platform commandeered by ad agencies and data brokers. I keep javascript locked down pretty tightly using NoScript whitelisting sites I visit often, mainly to avoid a lot of the egregiously bad ideas. Some pet peeves - scroll jacking, unreadable, ultra low-contrast designs, having to load multiple javascripts frameworks just to read some fucking text with a few pictures.

                                                                        2. 2

                                                                          …it hasn’t produced much in the way of complex apps that support professional workflows

                                                                          I’m not sure this is true, unless we have very different definitions of complexity and professional workflows. In the past decade some of the web apps I’ve worked on were:

                                                                          • A self-service telephony configuration app with features like group rign, follow-me, etc.
                                                                          • An ERP system for the flooring industry, including shipping, receiving, accounts payable/recievable, etc.
                                                                          • An app for designing & formatting physical books for print-on-demand self publishing

                                                                          Currently I’m working on a web-based contact center and communications platform that supports routing of calls/chats/tweets/email/voicemails to agents, review and quality analysis of agent interactions, real-time stats in the browser for contact-center management, workforce planning, agent script editing and display, telephony administration, company directory, chat & telephony for non-contact-center users, and probably a bunch of other stuff I’m forgetting. It’s nothing if not complex and professional.

                                                                          Like most projects, all of these applications had their fair share of issues, but the problems were not specific to the web, and would likely have been issues in any desktop application built by the same companies. Mismanagement of projects, insufficient time to deal with technical debt, poor business decisions, legacy tech that must be accomodated - those problems are not specific to any platform.

                                                                          I’m speaking mostly from personal experience, but it may be possible that apparent lack of “complex webapps supporting professional workflows” is primarily due to those apps existing in niche markets that don’t get publicity in the same way social media platforms and end-user tools like email/office software do.

                                                                          1. 1

                                                                            Gmail and Gmaps remain the most technically sophisticated webapps out there is damning.

                                                                            In the consumer space, sure. But there are some reasonably complex enterprise-y web apps. MS Office (and even the Mac productivity suite) historically weren’t “free” applications, so it’s not entirely fair to compare them against “free” web apps.

                                                                            That being said, web apps are mostly crap and I use them because of factors other than quality (convenience largely).

                                                                        1. 15

                                                                          I was disappointed that there were no demographic questions - that’s a vital area which the Rust survey creators put a lot of work into. I expect it was due to the survey creators not seeing it as important enough to justify the effort of doing it right, which I know is considerable. I understand that decision, but it’s frustrating, because it’s very important to some of us.

                                                                          1. 16

                                                                            I agree that demographics are important! I definitely want to include them in next year’s survey. This is the first survey I’ve ever published. I didn’t want to get the demographic questions wrong or otherwise mishandle them. That’s why I decided to focus on the technical questions. The survey was developed in the open (see this issue); next year’s will be too. I would be delighted to have you help out with the demographic questions.

                                                                            1. 13

                                                                              Just copy ours :).

                                                                              Jest aside, we’re cool with anyone taking these questions like all our other open source output.

                                                                              Also, there’s a huge problem currently: most languages don’t run these kinds of surveys and then many don’t share a common core. It’s hard to read a lot from them.

                                                                              In case of Rust, we’re in the lucky position to actually have run two of them, so we can at least put this year’s number in relationship to last year’s.

                                                                              But for the rest? Are we doing better then language X? Worse? Only gut feeling.

                                                                              I don’t see this as a competition, there’s rarely been a structured approach to mapping communities.

                                                                              In any case, if you’d like to exchange experiences, please feel free to contact community-team@rust-lang.org

                                                                              1. 8

                                                                                I’m happy to hear that! And I’m also happy to be contacted to comment on concrete proposals, when next year’s survey is at that stage; I don’t have the bandwidth to be involved more than that.

                                                                                I suspect the team that did the Rust survey will also be happy to advise about these topics. I know they’ve talked about it a bunch here on lobste.rs, and those old discussions are still in the archives somewhere.

                                                                              2. -2

                                                                                You mean the part about “underrepresented groups” or whatever on the Rust survey? Why do you think that is important?

                                                                                One of my favorite things about the Haskell community is that everyone is too busy doing actual technically impressive stuff to worry about e.g. how many gay people happen to be using it.

                                                                                To be blunt, I think that sort of thinking (obsessing over whether an organic community follows one’s arbitrarily constructed ideals for what it should look like) is a cancerous mind-suck that detracts from actually productive work.

                                                                                To be a little more blunt, I think the fact that Haskell has a reputation as being extremely technical has actually helped the community a great deal, at least just by virtue of the fact that it scares away people who are primarily involved in software as a means to push some political agenda.

                                                                                Late edit: feel free to respond instead of just downvoting, would be happy to be wrong here.

                                                                                1. 33

                                                                                  This is downvoted already, I’ll bite anyways. First of all, I think your comment shows that you have no idea what we are doing there.

                                                                                  Gathering demographics questions is much more then what you narrow it down to. It’s telling that the only thing you can come up with is “how many gay people happen to be using it”? It’s also: where do people live, would they want to travel to a conference, etc… It cuts out the guesswork. You know what? When you measure, you also sometimes find out that things are just okay. No need to do something. Great! Sometimes, you find something odd. Then you might want to investigate. It’s a community survey. We want to know about people, not about technology. But social groups are also a thing to check.

                                                                                  The Rust community also does production user surveys, which are die-hard technical and very detailed, usually specific in certain areas like embedded and or gaming. We seek out users willing to do that and set up meetings to figure out the issues.

                                                                                  To be blunt, I think that sort of thinking (obsessing over whether an organic community follows one’s arbitrarily constructed ideals for what it should look like) is a cancerous mind-suck that detracts from actually productive work.

                                                                                  To be blunt too: It’s shit that you call my work “not productive”. Here’s a thing: I don’t want to contribute to rustc or Servo. Why? I code all day, I don’t want to code at night. I’m happy that other people want to. I still want to contribute to FOSS. In the last 5 years, I’ve set up 2 foundations, 11 conferences and managed around 250000 Euros to run all these things. I signed leases that could have bankrupted me. I managed to find ways to run 2-days conferences that cost 100EUR and still cover all expenses of speakers, attendees and those that cannot pay 100 Euros. I love that work. People are indeed very fair about this. Those that have more give, those that don’t, don’t. And I want everyone to benefit from that. My whole work revolves around the question “Who’s not here, and why?”. It’s my hack. Nothing of that is fundamentally special, other people could have done it.

                                                                                  And you know what? We measure. We don’t go out “hey, please do X because I think it works”. No, we go “hey, we did X and metric Y improved”.

                                                                                  It’s also amazing how many people just need a “have you considered programming might be something for you?” and then just head of and learn it. But the question needs to be asked a couple of times.

                                                                                  It’s shitty to go on an concern troll around people doing precisely that to better do “productive work”.

                                                                                  There’s no way to get me to work on other things without paying me. And you know what I like about the Rust community? They don’t concern troll me. They go: cool, if that’s what you want to do, please do it for us. It’s not like I bind a lot of resources. Community work works best if you don’t have many cycles. We align on a goal and then we do a lot of footwork.

                                                                                  Sure, there are cases where issues arise and social work becomes focus, but that’s fine. Interestingly, the work of community workers is often to talk about issues before they come a trashfire, go to reddit and subsequently to 4chan.

                                                                                  There’s also the “fixed cake” fallacy at work here: The belief that if we expand our community beyond a certain group, another group has to take the impact. That isn’t the case. The cake is not fixed. The market for programming languages is growing in absolute terms, also our communities are growing in absolute terms. These are effect to be appreciated and taken into consideration.

                                                                                  Different folk need to be addressed in different fashion and thats fine. These surveys give us a bearing in where we want to invest our time or where things just work.

                                                                                  If you absolutely want to talk in programming terms, we’re profiling our work. I find it amazing that there is so much pushback when we actually check on our successes.

                                                                                  It’s shitty of people to devalue that work. A work, which has to be said, is more often done by women and people of color in many communities. Many of which are masters of it.

                                                                                  There’s two options here: I do this work within a community or I don’t. It’s as simple as that. No “more productive” trolling.

                                                                                  I structured work on these issues is still “cancerous mind-suck” for you, then go ahead. But say it to my face when you meet me.

                                                                                  To be a little more blunt, I think the fact that Haskell has a reputation as being extremely technical has actually helped the community a great deal, at least just by virtue of the fact that it scares away people who are primarily involved in software as a means to push some political agenda.

                                                                                  I just leave this here:

                                                                                  So I just met Simon Peyton Jones (creator of Haskell) and chatted with him for a bit. Asked him his thoughts on Rust and he said he thinks it seems exciting and he was jealous of the great community we have. Just thought I would let you guys know :)

                                                                                  (From: https://www.reddit.com/r/rust/comments/5yo24a/meta_rust_jealousy/)

                                                                                  This was, by the way, the best compliment I ever saw, I respect Simon very much.

                                                                                  We have an awesome many people primarily interested in software working in the Rust community. But they don’t throw the community workers under the bus like you do. That’s why I run a 6-monthly Rust conference and not a 6-monthly Haskell conference.

                                                                                  I love Haskell, but there’s reasons I’m not active there. Still, for anyone that wants to learn techniques and procedures, by all means get in touch.

                                                                                  Communities don’t happen at random. They work through network effects and feedback and these can be moderated and improved.

                                                                                  Finally, to be very blunt: you just cost me 45 minutes of community work, which I’d have preferred to fill with something productive.

                                                                                  But I also think it’s worth putting it out for others to read.

                                                                                  EDIT: I’d also like to state that I know quite some people in the Haskell community caring very deeply about this. haskell-cafe is still one of my inspirations for a cool space to make. But that space is intentional, not organic.

                                                                                  1. 10

                                                                                    Thank you very much for writing this. It will serve as a great resource the next time I spot a similar comment in the wild.

                                                                                    1. 4

                                                                                      Found this thread late, but wanted to say thanks @skade for the consistently insightful commentary on community here, and for you work in the Rust community. I don’t work with Rust much, but on the occasions when I’m working on community-building, the Rust community is one of the first places I go to for examples of how to do it well.

                                                                                      1. 1

                                                                                        Thanks for responding.

                                                                                        It’s telling that the only thing you can come up with is “how many gay people happen to be using it”?

                                                                                        That’s the only demo data you put on https://blog.rust-lang.org/2017/09/05/Rust-2017-Survey-Results.html

                                                                                        Please, tell me how you thought that was “telling”.

                                                                                        But social groups are also a thing to check.

                                                                                        Check and… what?

                                                                                        The Rust community also does production user surveys,

                                                                                        Do you see me objecting to those?

                                                                                        To be blunt too: It’s shit that you call my work “not productive”.

                                                                                        Sorry you feel that way. I think a lot of things aren’t productive, including some things I do, so you shouldn’t take it personally.

                                                                                        In the last 5 years, I’ve set up 2 foundations…

                                                                                        Cool, but you don’t need to justify your relevance because I called one of your interests into question.

                                                                                        It’s shitty to go on an concern troll around people doing precisely that to better do “productive work”.

                                                                                        Actually, I wouldn’t say anything if I just thought you were just wasting your own time; further than that, I think obsessing over demos is actively counterproductive. The utility to the community is negative, not zero.

                                                                                        There’s also the “fixed cake” fallacy at work here: The belief that if we expand our community beyond a certain group, another group has to take the impact.

                                                                                        It’s not so much “taking the cake” as “ruining the cake”. If you “expand your community” to include demo-obsessed identity politicians, the community is going to become actively worse.

                                                                                        A work, which has to be said, is more often done by women and people of color in many communities.

                                                                                        Why did you feel this comment was relevant to the conversation? I have several hypotheses, but I’d prefer not to assume your motivations.

                                                                                        I structured work on these issues is still “cancerous mind-suck” for you, then go ahead. But say it to my face when you meet me.

                                                                                        Sure. I don’t have an aversion to arguing about the social costs of different activities in person any more than I do online.

                                                                                        That’s why I run a 6-monthly Rust conference and not a 6-monthly Haskell conference.

                                                                                        Right, that’s what I said earlier; something about Haskell pushes away people with demographic planning aspirations, which I like a lot.

                                                                                        Communities don’t happen at random… these can be moderated and improved.

                                                                                        This is just fundamentally untrue; most of the best communities are more or less spontaneous. Many communities I love (such as lobsters) are good precisely because they’re minimally moderated.

                                                                                        haskell-cafe is still one of my inspirations for a cool space to make. But that space is intentional, not organic.

                                                                                        The list is, afaik, unmoderated, and the Haskell IRC (one of the best chats on freenode) is also totally unmoderated. Your example is evidence against your claims.

                                                                                        1. 6

                                                                                          Communities don’t happen at random. They work through network effects and feedback and these can be moderated and improved.

                                                                                          This is just fundamentally untrue; most of the best communities are more or less spontaneous. Many communities I love (such as lobsters) are good precisely because they’re minimally moderated.

                                                                                          This is false for Lobsters, both historically and currently.

                                                                                          Speaking historically, you cut out the key phrase “network effects” from the quote. The Lobsters of early 2014 was a very different, nearly empty place. The current state of Barnacles is quite similar: low activity by any metric you care to measure (traffic, stories posted, comments, votes, etc.) and a negligible sense of community. Online communities start as failures and have to overcome the chicken-and-egg problem that it’s a waste of an individual’s time to participate until quite a lot of other people are already participating.

                                                                                          And on an ongoing basis, Lobsters requires daily attention to moderation and maintenance. Most of it is design, small edits, comments, and private messages. The rare, exciting things like deleted comments and banned users are the tip of an iceberg. It’s all the small, constant attention that keeps the positive feedback loops working to power a successful community instead of killing it. This is also true of Haskell-cafe.

                                                                                          The theme I take from your comments seems to be that the work you are unaware of doesn’t exist and, if it does, it must be worthless. I don’t understand that dismissive cynicism well enough to respond meaningfully to it, so all I can do is point out these surface-level inaccuracies.

                                                                                          1. 2

                                                                                            Lobsters requires daily attention to moderation and maintenance.

                                                                                            I seem to recall jcs saying that he never deleted anything if he could avoid it, and indeed that seemed to be the case. It seems that you are now taking a somewhat more active stance, but historically lobsters has had very little/none of what I would call active moderation.

                                                                                            Most of it is design, small edits, comments, and private messages… This is also true of Haskell-cafe.

                                                                                            SPJ sending out an email about being nice isn’t community moderation or management. Neither is general site maintenance. I’m not sure how you would conclude that I disagreed with any of these things unless we’re using very different definitions for a number of words.

                                                                                            The theme I take from your comments seems to be that the work you are unaware of doesn’t exist

                                                                                            I’m aware of all the examples you gave; they just aren’t the kind of obsessive, inorganic micromanagement I was objecting to.

                                                                                          2. 4

                                                                                            That’s the only demo data you put on https://blog.rust-lang.org/2017/09/05/Rust-2017-Survey-Results.html

                                                                                            I don’t get it. That page contains a bar chart with all sorts of demographic categories on it, just above “Diversity and inclusiveness continue to be vital goals for the Rust project at all levels.”

                                                                                            1. -2

                                                                                              Me:

                                                                                              e.g. how many gay people happen to be using it.

                                                                                              Guy who responded to me:

                                                                                              where do people live, would they want to travel to a conference, etc…

                                                                                              What kind of demo data do you see them sharing on that page? I’m not really sure what you’re confused about; you seem to be agreeing with me.

                                                                                              1. 7

                                                                                                The blog post is an editorialised overview, the 2016 one covers that. https://blog.rust-lang.org/2016/06/30/State-of-Rust-Survey-2016.html#survey-demographics

                                                                                                There have not been notable changes, so it wasn’t mentioned again.

                                                                                            2. 4

                                                                                              As the person who started the Haskell IRC channel and as an active moderator of said channel, moderation happens often. There’s a team of motivated users on the #haskell-ops IRC channel and we have to step in more than I’d prefer.

                                                                                              Good communities require much work and regular feedback.

                                                                                      1. 20

                                                                                        I’ll just leave one of many quotes from Scott Adams below, in which he details just how hard it is for white men to make it in corporate america.

                                                                                        Adams has said, his professional advancement was thwarted by diversity hires. “There was no hope for another generic white male to get promoted any time soon,” he wrote in Dilbert 2.0: 20 Years of Dilbert. (Later in the book, he noted that his Dilbert TV show was canceled after “the network made a strategic decision to focus on shows with African-American actors.”)

                                                                                        https://www.bloomberg.com/news/features/2017-03-22/how-dilbert-s-scott-adams-got-hypnotized-by-trump

                                                                                        That sort of mindset makes me extremely uninterested in his business ventures. I assume this is just his next bright idea now that he’s done with his “Dilbertos” (Dilbert Burritos) venture.

                                                                                        1. 12

                                                                                          That only made me think of “Quotas aren’t anathema to meritocracy: they increase competence levels by displacing mediocre men” http://blogs.lse.ac.uk/businessreview/2017/03/13/gender-quotas-and-the-crisis-of-the-mediocre-man/

                                                                                          I didn’t mention Adams’ interesting personal views in this article, but his admitted track record of mostly-failure in business was brought up by one of his fans.

                                                                                          I’ll give him credit on Dilberitos for his description of their failure mode: “The mineral fortification was hard to disguise, and because of the veggie and legume content, three bites of the Dilberito made you fart so hard your intestines formed a tail.”

                                                                                          1. 6

                                                                                            That article is insane rambling. It doesn’t put forward a single salient point; it just keeps repeating the same tag line over and over again in the hope that it will overpower whatever rational faculties the reader has.

                                                                                            Let’s start with this ridiculous, arbitrary definition of “competence” that sounds like it was almost certainly generated by data dredging:

                                                                                            A competent politician, we argue, is a person who makes more than the median amongst politicians with similar characteristics

                                                                                          2. 4

                                                                                            Iirc, he said thought it was probably necessary and a good thing to help even the playing field and probably good for business. In fact he never even said he thought it was a bad strategic decision.

                                                                                            regardless, better to hear the exact story from his own mouth instead of comments that don’t really reflect his opinion:

                                                                                            https://youtu.be/4AMV6SLT9KI?t=8m37s

                                                                                            My opinion is if you attribute malice (instead of self interest and being eccentric) to Scott Adams it is from a position of propaganda. He seems like a rational person who sometimes does dumb things like anyone else.

                                                                                            1. 21

                                                                                              I used to follow his blog, but then it got… weird, to pick one word. My take is any post in isolation you can probably explain as misunderstood, but not the whole. Listen to him if you like, but I wouldn’t conclude that anyone deciding to tune out Adams is in the wrong.

                                                                                              1. 3

                                                                                                I think it is fine to dislike him. I just don’t understand what shanemhansen meant by “That sort of mindset”. If Scott Adams was told this in direct terms, like he said, then I don’t think it is a mindset. Of course it’s totally possible Scott Adams is faking this story to gain support from his trump leaning audience (Especially after everything he has said about ‘exaggerations’ in the correct direction). Who knows.

                                                                                                1. 6

                                                                                                  He’s stuck by this story for years and I see no reason to doubt him.

                                                                                            2. 1

                                                                                              Wow, that article was some crazy stuff to read except a little bit about Trump’s skill. He’s clearly smart about manipulation and shock politics given how much further he advanced than others that use similar tactics. The quote you mentioned is something I’ve experienced plus seent happen esp for H1-B or minority-controlled environments. That I know that means I also saw they’re uncommon to rare events versus the norm where a white male would have an advantage (privilege) if presenting themselves well in a white or mixed organization (esp big companies). Him writing that says more about his skewed perspective than anything. He almost certainly didn’t get jobs due to his work, people skills, or places he chose to work.

                                                                                              1. 0

                                                                                                maybe things were significantly different then but given the state of things in the tech world I find it hard to summon much incredulity for that statement

                                                                                                1. 3

                                                                                                  Every company I have worked for scrambled to hire women (I was in the interview teams and part of the discussions), just not enough applied for us to accept them. So from my perspective I totally believe what he said. Maybe this is not the typical experience for everyone though.

                                                                                                  1. 10

                                                                                                    No disrespect/indignation intended, but I believe it’s a bit rude/off putting for many women to see themselves referred to as “females” instead of “women”. It’s a minor point, and I don’t want to instigate a flame war, but I think small acts of courtesy can go a long way towards building a welcoming community.

                                                                                                    1. 2

                                                                                                      I don’t understand, I would refer to myself as a male, I’ll edit my post even though I’m not sure why you want me to.

                                                                                                      1. 9

                                                                                                        Thanks for the edit! I wasn’t intending to explicitly ask for that, but I really appreciate you giving me the benefit of the doubt.

                                                                                                        I don’t understand…

                                                                                                        That’s fair. If I’m going to make a suggestion, I should be able to justify it. I’ll do so to the best of my abilities, but like much in human communication, it’s wrapped up in a fair bit of nuance and connotation. My apologies in advance if this gets a bit long as a result.

                                                                                                        To avoid potential confusion, I think it’s specifically the noun form that’s problematic: refering to a woman as “a female” or women as “females”.

                                                                                                        I know you say you’d refer to yourself as “a male”, but at least in American English, that’s a fairly unusual phrasing. It’s far more common to refer to oneself or someone else a “a man”, or possibly “male”, but “a male” is relatively rare. Choosing an uncommon phrasing for something is often a signifier of a different contextual meaning.

                                                                                                        However, there is a context where the noun form is more common, and that’s when talking about non-human animals. That of follows naturally from the broader meaning of female vs woman. Any animal can be a female, but only a human can be a woman. As a result, the term woman is strongly associated with people and humanity, and the term female is loosely associated with non-human animals.

                                                                                                        The first two points together create a slightly dehumanizing connotation, but I’ve also heard from women that being referred to as “females” is more common when the speaker is expressing a grievance or disdain toward them. That’s an that indicator at least some people are making use of the dehumanizing connotation in practice, whether via conscious or unconscious choice.

                                                                                                        I want to make it absolutely clear that my intent was not and is not to suggest that you specifically intended to be rude in your word choice. I’ve never seen anything to suggest that you had any ill intent.

                                                                                                        I suspect someone may show up in the thread to ask for hard data on word usage and connotation, or to suggest that we should only interpret words based on their literal meaning. On the first point I will say that even without data, this is a very reasonable explanation that lines up well with what we know about human cognition and communication in general. I also can’t see any compelling reason for people to be lying about their subjective experience on this point. For me, that’s good enough for me to slightly modify my word choice if it helps women feel more welcome. On the second point, human communication has always relied heavily on subtext and connotation. It’s a natural part of our biology as social animals and ignoring that truth is counterproductive in a social setting.

                                                                                                        1. 4

                                                                                                          I suppose that makes sense. In my head I think female engineer, or female developer and I shortened it.

                                                                                              1. 4

                                                                                                This article was really disappointing - it did not point to any in depth studies - either at a point in time or longitudinally.

                                                                                                In a 2014 study, University of Pennsylvania researchers imaged the brains of 428 male and 521 female youths — an uncharacteristically huge sample

                                                                                                A sample of 949 people is not huge - it’s not even 4% of the student population at the University of Pennsylvania.

                                                                                                While these studies might uncover some interesting ideas to research, they all appear to qualitative and not quantitative.

                                                                                                The science in this article was lacking good science.

                                                                                                1. 1

                                                                                                  A more quantative study I posted a while back. N>5000 Britons, and the visualizations in the paper are really good.

                                                                                                  1. 3

                                                                                                    I don’t have the bandwidth to read a paper right now, but from the abstract and a brief skim it appears that it’s primarily a study of gross brain anatomy and fMRI. When interpreting papers like this, it’s crucial to recognize that links between brain anatomy and brain function are poorly understood, and fMRI as a research tool can be problematic, as in the famous “dead salmon” fMRI study.

                                                                                                    Also, it’s a pre-print, so it hasn’t been peer-reviewed.

                                                                                                1. 10

                                                                                                  I really want to like Firefox, but it feels increasingly clear that Mozilla doesn’t seem to consider anyone who wants to adapt any of the choices Mozilla made for him/her to be part of their target audience anymore.

                                                                                                  I don’t really know what their target audience actually is to which they are trying to pull off a Gnome-like pivot, but given the fall in market-share it’s baffling that retaining existing users doesn’t seem to play a more important role.

                                                                                                  Having tried the nightlies of Firefox 57, Mozilla has basically reset my browser usage to a vanilla install. All my extensions will stop working (marked as “legacy” – and I only have three: mouse gestures, an ad-blocker and tree-style tabs) and my theme causes tabs to crash on load (which I only use because the default theme keeps gradually eating more and more screen space).

                                                                                                  While I’m positive that a solution can be found for mouse gestures and ad-blocking, it seems that tree-style tabs (or any kind of UI customization) is thoroughly dead. Even if they addressed the dozen of bugs that were filed to get tabs working again, it’s quite clear that the required level of visual integration to avoid making it look like a second-class citizen will not be supported anymore with WebExtensions.

                                                                                                  The whole switch to WebExtensions feels like going from a positive, user-empowering stance of helping and encouraging users and extension developers to adapt their browsing experience to their liking, to a model where the possibilities of customization and extension is severely limited to protect the users from potential harm that seems to lurk behind every extension.

                                                                                                  1. 21

                                                                                                    It’s not just about protecting users from harm, it’s also about:

                                                                                                    1. Performance. By restricting extensions to APIs we can ensure they will run silky smooth.
                                                                                                    2. Compatibility. Old style extensions broke anytime the random internal thing they depended on changed, so developers would constantly have to be updating their addons. Web extensions are one last major breaking change for addon developers, and then they never have to worry about compatibility again.
                                                                                                    3. Portability. Web extensions can be shared across browsers, so developers don’t need to write multiple versions of their addons anymore just to support Firefox+Chrome. Given a choice between supporting only one of Firefox or Chrome, 95% of developers were already choosing Chrome (I made that number up, but probably). This equalizes the gap.
                                                                                                    4. Security. Like you mentioned, it will be very hard to write malware when that malware is restricted to known APIs.

                                                                                                    There are a lot of really good reasons to make this switch. And while it will be frustrating to a lot of loyal users and developers, I think it will be the right decision in the long term. I’m feeling the pain too, a bunch of my extensions no longer work either. But I’m confident I’ll either find replacements in due time, or adapt my workflow to live without them.

                                                                                                    Btw, u-block origin already has a web extension posted to their AMO dev channel.

                                                                                                    1. 19

                                                                                                      Since I don’t see many people sharing this sentiment, I just want to chime in as a long-time Firefox user and say that I’ve been really pleased with the work in Firefox over the past several years. Performance has improved massively, and it seems like every time I open the developer tools, I find some cool new thing I didn’t know about before. I’ve also gotten a lot of mileage out of several of the experiments in TestPilot. All in all, I’m quite pleased.

                                                                                                      Keep up the great work!

                                                                                                      1. 3

                                                                                                        Thanks! Much appreciated :)

                                                                                                        1. 2

                                                                                                          As another random data point, I don’t remember ever even having a real problem with Firefox.

                                                                                                          But now the new version worries me because there might not be a good mouse gesture plugin available.. soooo if you wouldn’t terribly mind implementing mouse gestures the way Opera v12 had them, that would be nice :)

                                                                                                          1. 2

                                                                                                            As another random data point, I don’t remember ever even having a real problem with Firefox.

                                                                                                            But now the new version worries me

                                                                                                            Likewise, Firefox has always been great for me, but only because I use an extension which allows me to rebind the keys. This extension doesn’t exist for Chrome because Chrome hard-codes ctrl-n to “open a new window” for security theater reasons. (I can’t remember the last time I opened a new browser window on purpose, but it wasn’t in the past decade.) If Firefox starts copying Chrome in that regard I’ll be forced to choose between staying on the old version forever or spending half my day closing those seventeen windows that just opened because I was trying to scroll down.

                                                                                                            1. 1

                                                                                                              I found this: https://addons.mozilla.org/en-US/firefox/addon/foxy-gestures/

                                                                                                              Not sure if it solves your use case or not though.

                                                                                                              1. 2

                                                                                                                Just tried it, doesn’t really work. (In the sense of “fails to save any changes and crashes reproducibly”.)

                                                                                                        2. 2

                                                                                                          Thanks for the note on uBlock. The dev channel thing was quite hidden, but I found it.

                                                                                                          Well, all I can say is that I think it is sad to see that Firefox is switching from the software repository approach popular on Linux distributions to the walled garden approach of app stores (like on Windows/Mac).

                                                                                                          I can understand why it is more convenient for developers this way, but I don’t try to be a developer of every technology I use. (Ok, I’m still sitting on this reproducible Firefox crasher and I installed the debug symbols to figure out where it comes from … but sometimes I just want to be a user.)

                                                                                                          Currently my only hope is that the official roll-out of WebExtension gets delayed just enough for another Firefox ESR release based on the current code. This would give me another few years out of Firefox, but in the long term I really don’t see a future for me on Firefox. That’s kind of sad because I have been an user since it was called Netscape Navigator.

                                                                                                          It’s kind of clear that vertical tabs will never be a first-class citizen with WebExtensions (even under the assumption that all of the dozen current bug reports get sorted out).

                                                                                                          Firefox’ stance reminds me of the saying “if the government is unhappy with its citizens, it should swap out its citizens” and the CADT that happened with Gnome. (XFCE user ever since.)

                                                                                                          1. 1

                                                                                                            Well, all I can say is that I think it is sad to see that Firefox is switching from the software repository approach popular on Linux distributions to the walled garden approach of app stores (like on Windows/Mac).

                                                                                                            Would you mind clarifying? The distribution model for WebExtensions is the same as for non-WebExtensions. Or are you referring to the use of sandboxing?

                                                                                                            1. 1

                                                                                                              Having to beg Firefox developers to allow me to make the changes I want to my browser feels counter to everything Mozilla stood for in the past.

                                                                                                              1. 1

                                                                                                                I see. On the other end, every API exposed to extensions becomes something that Mozilla has to commit to maintaining into the future, imposing architectural constraints. This was most painfully evident in the long process of the e10s (multiprocess) roll-out.

                                                                                                        3. 5

                                                                                                          There is a tree style tabs in “Firefox Testpilot”, that’s not going to break because of the API changes

                                                                                                          1. 2

                                                                                                            Are you talking about Tab Center? That’s sadly not a tree style tabs extension, merely a vertical tabs extension. But yes, the point remains that you can write functional alternative tab bars with the new API.

                                                                                                            1. 3

                                                                                                              From what I have seen, the UI from tab center will not be supported with official WebExtensions.

                                                                                                              For instance, the obnoxious sidebar header will be mandatory: https://github.com/Croydon/vertical-tabs-reloaded/issues/13#issuecomment-294589274 That’s a killer for me, right there.

                                                                                                              This is what I currently have: http://imgur.com/a/OemGy

                                                                                                              This is what I’d like to have: http://imgur.com/a/cWEsE

                                                                                                              This is probably the best I will get with WebExtensions: https://addons.cdn.mozilla.net/user-media/previews/full/185/185415.png

                                                                                                              Thanks, but no, thanks.

                                                                                                            2. 1

                                                                                                              The test pilot has ended, and I can’t find a way to install the add-on now. Which is a shame, because they had one feature that would have actually improved my experience: Tabs taking the whole area on the left side, instead of being under the location bar. https://testpilot.firefox.com/static/images/experiments/tab-center/details/tab-center-1.ceef2f45.jpg

                                                                                                              I’d love to have a tab extension doing that.

                                                                                                            3. 4

                                                                                                              holy hell, another tree-style-tabs-er - people don’t understand us. - I moved to vivaldi cos chrome had no capability to do vertical tabs (and always felt strangely icky on chrome). Vivaldi has vertical tabs but not tree style :(, is all chrome under the hood but with plenty of customizability and most of the “i wish i hads” from firefox. It started out buggy when i was using it but has generally gotten better. not OSS is the only thing that mildly annoys me.

                                                                                                              I personally jumped away from firefox when i eventually got sick of it regularly slowing down after a few hours of use (to the point of barely scrolling while rendering another tab i had just middle clicked on)

                                                                                                              that said, none of the news coming out of the ff camp is making me think “wow i should totally give it another shot”. Your comment only reinforces that - I hate not having control over other people’s stupid decisions on my system.

                                                                                                              1. 6

                                                                                                                There are dozens of us using tree-style-tabs.

                                                                                                              2. 3

                                                                                                                https://addons.mozilla.org/en-US/firefox/addon/tree-tabs/ is the Tree Style Tabs replacement. It’s not as good, but it’s improving.

                                                                                                                I switched to https://addons.mozilla.org/en-US/firefox/addon/tab-center-redux/ and it’s pretty great.

                                                                                                                1. 2

                                                                                                                  I tried them all. They are quite restricted in what they can do, and the mandatory tab header makes it pretty clear that stuff like this will always be a second-class citizen under WebExtensions.

                                                                                                                  Think about it: Why doesn’t the “official” tab bar get one of these headers, too? Because it is completely jarring and obnoxious. Firefox devs know it sucks, so they don’t follow these rules, but everyone else has.

                                                                                                                  1. 4

                                                                                                                    and the mandatory tab header makes it

                                                                                                                    It’s not “mandatory”. There are bugs open for a webextension API for removing it, and Firefox devs seem to be open to adding one. This API doesn’t exist now, but you’re painting it as if it will never exist.

                                                                                                                    This stuff is still new, and will improve over time as new APIs get added. Like I said, “it’s not as good, but it’s improving”.

                                                                                                                    Please assume good faith.

                                                                                                                    1. 3

                                                                                                                      It seems like from Mozilla’s perspective the sidebar header is not a bug, but desired behavior: https://github.com/Croydon/vertical-tabs-reloaded/issues/13#issuecomment-294589274

                                                                                                                      I’d love to see the tickets though, because I couldn’t find anything in the official bug tracker (but maybe I used the wrong search terms).

                                                                                                                      And that’s not the only issue: it seems like the place is fixed to be beneath the location bar, either at the left or right side, falling way short of Tab Center.

                                                                                                              1. 2

                                                                                                                Also, there is a new Wiki link at the bottom which goes to the Wiki on GitHub. This is intended for the community to create and maintain to add all the things I’m too lazy to document, such as site policies/norms and whatever else.

                                                                                                                I’m a bit confused about this. The wiki can be edited by anyone, how can I be sure that any policies/norms written down there are actually representative?

                                                                                                                1. 5

                                                                                                                  Yeah, this seems odd. Are angersock’s downvote guidelines somehow official now that they’re on the wiki? https://github.com/jcs/lobsters/wiki/DownvoteGuidelines It certainly gives them even more of an air of authority than was presumed in the original post.

                                                                                                                  If some people aren’t on board with that, what happens? Edit war?

                                                                                                                  1. 1

                                                                                                                    I put that there, though I don’t think I really added stuff to imply it was an unofficial set of recommendations. I do suppose it does mean a discussion on what the wiki is for though.

                                                                                                                  2. 4

                                                                                                                    do you use wikipedia? what level of confidence has it for you?

                                                                                                                    1. 4

                                                                                                                      This is in no way comparable, sorry. Wikipedia has huge structures built around precisely that problem.

                                                                                                                      1. 1

                                                                                                                        Actually the structures built around wikipedia are small if existent.

                                                                                                                  1. 3

                                                                                                                    If you’re interested in using something more template like with Elm that doesn’t require port glue, maybe check out elmx. I haven’t used it, but it’s designed to be the Elm equivalent of React’s jsx, letting you write HTML directly in your .elm files.

                                                                                                                    One thing to keep an eye on with external rendering is that you might lose some of the optimizations in Elm’s rendering pipeline, like the ability to leverage requestAnimationFrame. Check out this blog post for some general information on the sort of optimzations Elm does that other frameworks don’t/can’t do: http://elm-lang.org/blog/blazing-fast-html-round-two.

                                                                                                                    I couldn’t find the source for your performance benchmarks, but for the pure Elm one, you’ll want to make sure you’re using Html.keyed and lazy in the right spots, which uh… I don’t actually know much about those other than that they’re recommended to make rendering fast. I haven’t had much need to optimize anything in Elm yet. You might check out how they’re used in this repo: https://github.com/krausest/js-framework-benchmark, or maybe look at the PR’s from evancz and manlon in that repo: https://github.com/krausest/js-framework-benchmark/pulls?utf8=%E2%9C%93&q=is%3Apr%20elm

                                                                                                                    Apologies if any of this is old news to you. If so, hopefully it will be useful for someone else!

                                                                                                                    1. 2

                                                                                                                      That’s actually very useful, thank you. I’ll check out those resources.

                                                                                                                      Regarding elmx, I’m not really a fan of JSX because mixing logic with templates still doesn’t feel right to me. More specifically, I find it’s easier for designers to work in the project when template files are clearly separated. Mixing everything opens the door for merge conflicts and the like. Of course, I do think elmx it’s a great solution for people coming from React and already used to this syntax.

                                                                                                                      1. 1

                                                                                                                        Glad to be of help! I don’t particularly care for jsx or elmx either. Although to your point about working with designers, you could still put elmx views in a completely separate set of modules to keep them clearly separated from other code. That said, I haven’t had a workflow where I was paired with a designer generating HTML in quite a while, so what do I know?

                                                                                                                        Personally, after working with standard Elm view functions for a bit, I don’t really miss HTML templates. There’s so many fewer typos and weird corner cases to consider that I count it a win overall. I never have to hunt around for typos in the markup, and I don’t get into scenarios where I want a newline in the template for readability, but I don’t want the resulting textual white space between elements when rendered. Essentially, using code makes all intent in the template explicit, hiding everything else. In a templating tool, my intent ends up getting mixed with formatting concerns.

                                                                                                                    1. 10

                                                                                                                      I fee like, purposely or not, the title of this post is misleading as is, even with the caveat in the text that it’s simply one user’s opinion. That should have been made clear in the title IMO.

                                                                                                                      Additionally it’s worth noting that this particular interpretation of downvotes leaves a lot of room for unfriendly, hostile, and ugly behavior provides that it can be plausibly denied as an opinion.

                                                                                                                      The idea that opinions cannot be subject to downvotes coupled with the admonitions against “badthink” leave room for things like:

                                                                                                                      In my opinion, women are generally inferior programmers than men.

                                                                                                                      Black people are genetically pre-disposed to be good slaves (author will present “evidence” to back up their “opinion”.)

                                                                                                                      Etc.

                                                                                                                      More broadly, the idea that social interactions can only be mediated by some objective set rules in order to be fair is a peculiar oddity of the internet that runs counter to meatspace human behavior and often enables, intentionally or not, abusive and exclusionary behavior.

                                                                                                                      1. 5

                                                                                                                        That’s the core of it, though–what’s wrong with expressing those opinions?

                                                                                                                        If an opinion is actually totally bonkers, ignore it. If an opinion might be based on incorrect facts, a polite discussion–followed, perhaps, by an agreement to disagree–is an adult way to handle it. The mere gut reaction of “this person says that they feel like about and so must be punished” is just tribalism, pure and simple.

                                                                                                                        If the opinion is, say, “I think that angersock should be violated with a rake for being such an argumentative shithead”, that’s something that falls under our usual civility guidelines. Something like “I think that angersock is ill-suited to public discourse because of their race” is something that can either be engaged with (and nuked once civility is dropped) or ignored entirely. And even in that latter case, usually the off-topic flag becomes relevant. We have mechanisms in place to deal with this, we just need to use them.

                                                                                                                        As an aside, your second example is stated as a fact and not as an opinion (is similar to the borderline example in my original post).

                                                                                                                        1. 10

                                                                                                                          Because they create a hostile environment. I’m entirely uninterested in reading bonkers racist statements, but I am interested in reading technical content from people who won’t put up bonkers racist statements. You have to decide what audience/participants you want.

                                                                                                                          1. 5

                                                                                                                            I think that angersock is ill-suited to public discourse because of their race

                                                                                                                            I don’t think racist arguments of any kind fall inside the realm of civil discourse. I would downvote as troll.

                                                                                                                            1. 9

                                                                                                                              Racist comments would be moderated.

                                                                                                                              1. 4

                                                                                                                                Given the other comments downthread, I think it would be more accurate to say that overtly racist comments would be moderated, which is not quite the same. I’m not suggesting we ask moderators to make decisions about where the line is for overt / implicit / accidental racism, but additional ways of downvoting would let the community draw those line, which we should expect to be somewhat fuzzy and subjective, but should still exist.

                                                                                                                                Modern racism (and other isms) rarely takes the form of explict denigration and demonization of minorities. It’s typically framed as believed to be true (honestly or not) “facts” or “i’m just saying” opinions, and we have a terrible habit of building rule systems that excuse any behavior that can’t be proven to be malicious (which is extremely difficult), regardless of how negative the actual outcome of that behavior is.

                                                                                                                                In this case, both @grumpyoldman and @tm knew that their position would be considered racist, which means they should also know that going out of their way to express and defend those opinions here would create an environment hostile to PoC. No matter how much they believe their statements to be true, I think it’s reasonable to expect them to know that their personal belief in the truth and meaningfullness of something does not make it objectively so, and that expressing those particular beliefs creates an environment of hostility.

                                                                                                                                This sort of behavior is counter-productive to community building, IMO, and is not exclusive to social topics of race. It’s entirely possible to generate unwelcoming hostiliy by ranting about systemd or non-constructively dismissing technical work as useless. In general, I think it’s reasonable ask people to consider the effect of their behaviors on the community and give the community an easier way to speak to damaging behavior that’s independent of intent.

                                                                                                                                1. -1

                                                                                                                                  No matter how much they believe their statements to be true, I think it’s reasonable to expect them to know that their personal belief in the truth and meaningfullness of something does not make it objectively so, and that expressing those particular beliefs creates an environment of hostility.

                                                                                                                                  Finding something uncomfortable or “offensive” doesn’t make it false either.

                                                                                                                                  For example, we all know that on average, black men have larger penises than white men. In other words, being white kind of sucks in that regard. We’d all much prefer having big penises, just like we’d all prefer being smart.

                                                                                                                                  But somehow talking about the differences in penis size is perfectly fine, but anyone who brings up the differences in IQ just absolutely needs to be shouted down for being “racist”. It’s a double standard.

                                                                                                                                  Facts are not racist. Everyone on this forum is certainly smart enough to understand that, and we’re all capable of discussing and debating things. So why the irrational, extreme hostility to some ideas then? It makes no sense.

                                                                                                                                  Unless.. the larger problem here is that the world is allergic to the truth.

                                                                                                                                  Not only that, but just like when something seems “too good to be true”, when someone seems “too irrational to be true”, it’s probably not true!

                                                                                                                                  So basically people are just pretending to be outraged by some uncomfortable truths being mentioned.. but not others, like penis size.

                                                                                                                                  I have no idea why this is happening, but it is. And it’s incredibly destructive to our societies as a whole. In fact, it’s almost like there’s a concentrated effort to drive Western civilization into the ground.

                                                                                                                                  We’re all up shit creek, sans paddle, and a large percentage of us “little folks” is busy drilling holes in the boat as best they can.

                                                                                                                                  The mind boggles..

                                                                                                                                  1. 1

                                                                                                                                    Yes, if expressing a true statement which is supported by objective and evidence and fact and not subjective opinion “creates a hostile environment” then a community that holds that viewpoint is itself toxic to humanity. I hope that isn’t the case here.

                                                                                                                                    If certain facts and truths cannot be mentioned and falsehoods are upheld because they aren’t what people want to hear, then that creates an entire layer of falsehood I have have to view everything else through if the community norm is decided to be a standard which supports and encourages deliberate dishonesty.

                                                                                                                                    “Offensiveness” is about the worst criteria for moderation or self- censorship imaginable in a world where everyone is offended by anything and everything, reasonably or unreasonably.

                                                                                                                                    Heck, I’m highly offended and consider it disgustingly ‘racist’ that minorities and PoC are being effectively ignored and are suffering lost opportunities because instead of seeing our differences as mere differences (or strengths) we choose to shut our eyes or claim they don’t exist. This is absolutely toxic, hostile, and ignorant.

                                                                                                                                    In the end we need to decide what sort of culture we support and want sort of world we want to live in. Monocultures can be fragile and diversity can be our strength, and to claim these differences simply aren’t real and don’t exist is ignoring the elephant in the room. The unintended consequence of such hyperbolic political correctness is that it hurts the very people it claims to be supportive of.

                                                                                                                                    1. 0

                                                                                                                                      I hope that isn’t the case here.

                                                                                                                                      That’s the case everywhere.

                                                                                                                                      For example, speak certain uncomfortable truths on Hacker News, and you’ll be shadowbanned. It’s happened to me several times.

                                                                                                                                      The same will/would probably happen here too. This post might do it! Not that I really care.

                                                                                                                                      If certain facts and truths cannot be mentioned and falsehoods are upheld because they aren’t what people want to hear, then that creates an entire layer of falsehood

                                                                                                                                      The world we live in is a massive pile of falsehoods. As a random example, we’re told that 2% is a good rate for our income, savings and pensions to be losing their purchasing power, i.e. that 2% inflation is somehow good for us.

                                                                                                                                      But in reality, there’s no good rate for a bad thing to be happening. How fast would you like gangrene to spread through your body? How about not at all?

                                                                                                                                      We’re also led to believe that being ruled over is in our interest, instead of say, our rulers’.

                                                                                                                                      In the end we need to decide what sort of culture we support and want sort of world we want to live in.

                                                                                                                                      There’s two sides to “we”: psychopaths and humans. The former run the world and are turning it into shit, and the latter have no clue what’s going on and are abused and exploited by the psychopaths.

                                                                                                                                      But hey, there’s a pretty decent chance that you’re a psycho too, so I’ll just stop here. In fact, posting on the Internet is mostly a waste of time, because I’m mostly talking to a psychopath anyway.

                                                                                                                                      It’s just a bad habit I picked up before finding out what’s going on.

                                                                                                                              2. 2

                                                                                                                                I am hard-pressed to think of a reason that such a line of discussion should ever come up here, unless in maybe cogsci or culture threads. I’d trust our mods to crack down the second it strayed from reasonable science.

                                                                                                                                (On a related note, that’s why submissions that lend themselves to that sort of bile are cancer.)

                                                                                                                                1. -2

                                                                                                                                  I don’t think racist arguments of any kind fall inside the realm of civil discourse

                                                                                                                                  Even if someone actually made an argument, instead of just running his mouth?

                                                                                                                                  On a related note, there are studies that find different races to have different average IQs. But if someone brings that up to support a related claim, lots of people will shout him down as a “racist”.. and that’s bullshit.

                                                                                                                                  1. 3

                                                                                                                                    Actually that is not bullshit. People who claim race influences IQ are racist and I’m 100% uninterested in their odious opinions.

                                                                                                                                    1. 4

                                                                                                                                      Sure, but the point being referenced above refers to correlation and not causation.

                                                                                                                                      Anyways, in some cases, it’s basically impossible to talk about policy issues without noting biological differences. Like, there are other cases (alcohol flush reaction) where we could talk science and biology and be having a strictly racist but civil conversation.

                                                                                                                                      The problem is that people often go off on dumb tangents and assert policy choices that should be made, or that they go and overgeneralize when things are complicated.

                                                                                                                                      1. 0

                                                                                                                                        Yay, I’ve absolutely prepared and resigned myself to be down-voted to oblivion, but here goes.

                                                                                                                                        The claim that race influences IQ isn’t “bullshit” - it’s the accepted scientific consensus and if you’ve chosen to wholly disregard a truth because you don’t want to hear it, then I might be 100% uninterested in your odious opinions as well. I’ve hesitated on commenting in these meta-discussions, and I won’t be down-voting any comment as “Incorrect” because it’s not helpful to do so, but it would be absolutely correct in this case.

                                                                                                                                        See https://doi.org/10.3389/fpsyg.2016.00399 for good recent meta-study that appears in a high impact peer-reviewed journal. I could literally provide you with hundreds and hundreds of similar articles, but what would be the point, as you’ve already decided that you are going to ignore both reality, scientific consensus, and the accepted views of most scientists working in this (controversial) field, all because they don’t fit your preconceived ideas of the way things should be?

                                                                                                                                        Just my $0.02, but I’m venting that this is even a topic on lobsters at all. It shouldn’t be and if there is any strict moderation necessary, it should be to keep these political posts off this site and away from this community. If lobsters is going to start allowing this sort of discussion - is it “uncharitable” or to start marking Incorrect statements as incorrect even if I would be perceived as some sort of racist and start a whole circus?

                                                                                                                                        The truth here is complicated and not what people want to hear. It is absolutely incorrect to state that race and IQ are not correlated and to claim otherwise is to ignore decades of data. Does this mean science is racist? I wouldn’t make that argument. I actually would agree with vyodaiken, if he said that it is “bullshit”, if the argument presented was that race can be seen as the causative factor and used an indicator of innate superiority or directly linked to ability; that sort of thing is not supported by data and while never argued seems to be what was inferred.

                                                                                                                                        I’ve never down-voted in a meta topic and usually avoid this sort of discussion because it is so far off the scope of this community I would argue it doesn’t belong anywhere near this site. I absolutely understand that people will be offended when they think they are being attacked based on their gender or race.

                                                                                                                                        Simply discussing the scientific findings in this field is upsetting to many people and makes them feel uncomfortable or unwelcome. That is an unfortunate truth. But, using false statements to defend against perceived racism is just as intellectually bankrupt as using false statements to support racism - and none of it has anything to do with technology.

                                                                                                                                        Where does it end? Are we going to add “fact checkers” to support or overturn “Incorrect” down-votes? Is it “uncharitable” to down-vote a factually incorrect statement that is being used in an argument defending minorities - a righteous position? Would it be not “uncharitable” to down-vote the same sort of factual incorrectness being used by a racist to support their argument?

                                                                                                                                        With that said, I’ve hidden the “meta” tag going forward, because these recent threads are so far off-topic I don’t care to see any more of them. I appreciate being allowed in this community, outside of the meta threads, it is generally civil and tightly focused, but if we start mixing in subjective down-voting rationales and having threads about controversial topics of self-identity, race, or religion, it is my opinion that will greatly diminish this community and I probably won’t want to participate any longer, especially if we are going to accept hostility to facts and reality.

                                                                                                                                        Edit: A good related piece - http://www.politico.com/story/2013/08/opinion-jason-richwine-095353 - Why can’t we talk about IQ?

                                                                                                                                        1. 4

                                                                                                                                          I do sympathize with your position, but I will observe that blocking meta threads means that you’re going to be subject to rules and norms that you will not have any warning of or input into.

                                                                                                                                          1. 1

                                                                                                                                            So the unintended consequence is that I will likely end up contributing much less and commenting much less than I might otherwise, which would be unfortunate.

                                                                                                                                            I’ve enjoyed that what makes the front page here has generally been free of politics. I’ve not noticed any recent outbreak of uncharitable behavior here. I’ve actually found lobsters to be a rare gem of an online community with some cohesion and civility absent elsewhere. It’s a refreshing retreat, especially since we live in a world that is politically polarized on a global scale. The extremists on both sides not only claim they have the sole moral high ground - they share so little common ground and finding their opposites so abhorrent that civility is purposely abandoned, often to the point where violence often rationalized.

                                                                                                                                            I’ll reconsider filtering meta - for now - but if lobsters starts to get political and new subjective down-voting reasons are added where ‘feels’ have the same weight as facts, I’ll probably have find somewhere else to get my tech links from.

                                                                                                                                          2. 3

                                                                                                                                            The claim that race influences IQ isn’t “bullshit” - it’s the accepted scientific consensus

                                                                                                                                            Only to racists. This is not a debatable question. There is not even a scientific definition of race. IQ is not known to measure anything at all. The only people who keep pushing this phrenology level bullshit have an axe to grind and their pretense of dispassionate scientific interest is transparent. The fake plea for civility doesn’t fly either.

                                                                                                                                            1. 1

                                                                                                                                              Then feel free to consider me a racist and ignore my further commentary and I’ll do the same.

                                                                                                                                              Edit: I’m not going to do it, but this absolutely Trolling here - as well as Incorrect. I guess I’d much rather be called racist because it’s a laughable term that has no sting when it’s thrown around in response to a refusal to accept facts and reality. Also, that you decide that you know my intentions and think I have some axe to grind without knowing me is just pure trolling. Enjoy, I’m done with it because I have no need to gain your respect and I’m not going to waste my time defending myself against your personal attacks.

                                                                                                                                              1. 1

                                                                                                                                                So, I’m broadly of the opinion that individual and cultural differences trump (nebulous at best) “racial” differences.

                                                                                                                                                That said, given that complex traits are typically 30-50% heritable, I would be very surprised if any given measurement of intelligence turned out not to be heritable.

                                                                                                                                                The degree to which heritability generalises to racial traits in a multiracial society is arguable (largely hinging on whether race is a useful concept in genetics at all), but is far from settled.

                                                                                                                                                In short, you are making an assertion which isn’t falsifiable (let alone evidence supported) and it adds nothing to the debate.

                                                                                                                                                A more useful question might be: if racial intelligence differences were proven to exist, would that justify racism?

                                                                                                                                                (In my opinion it would not; curious about contrary arguments).

                                                                                                                                                1. 0

                                                                                                                                                  It is a double-edged sword, of course.

                                                                                                                                                  We can use our knowledge of differences to make us stronger and better as a culture or we can use that knowledge to support (or justify) our hateful and unhelpful behaviors. Would such behavior be justifiable? I would argue absolutely not in a civil society.

                                                                                                                                                  The choice of course is ours. What sort of community do we want?

                                                                                                                                                  My point remains that to label certain knowledge as inherently ‘racist’ is absurd and and then to claim only ‘racists’ acknowledge those truths, well, I’m gobsmacked. If this is how it is, I will be ‘proud racist’ in this context as the alternative is to be a proud ignoramus.

                                                                                                                                                  1. 2

                                                                                                                                                    Your representation of the discussion is not correct and what you claim to be “truths” are opinions that are not even posed as scientific questions and are being deceitfully marketed as scientific consensus. Whatever motivates people to insist on bringing up political claims about race/IQ in a discussion forum about computer technology, it’s not science. I am not asserting that scientists should not study genetics and intelligence, I am asserting that the pseudo-science such as that promoted by Richwine is off topic and offensive and has no place in a forum such as this one.

                                                                                                                                                    1. [Comment removed by author]

                                                                                                                                                      1. 1

                                                                                                                                                        (You appear to have double posted)

                                                                                                                                                        On this point we can finally agree.

                                                                                                                                                        While we both likely see our respective viewpoints as repugnant, we are unlikely to ever come to any agreement except that these discussions are off-topic.

                                                                                                                                                        That is a point I’ve been making all along. I absolutely disagree with essentially everything else you’ve said and would gladly continue the discussion but this isn’t the place, is it?

                                                                                                                                                        These “meta” tagged threads are pure cancer.

                                                                                                                                                2. 0

                                                                                                                                                  This is a perfect example of the kind of HN content I come here to escape. A tech forum is the wrong place to express your plaintive cry that you need more social experience.

                                                                                                                                                  1. 0

                                                                                                                                                    argument presented was that race can be seen as the causative factor and used an indicator of innate superiority or directly linked to ability; that sort of thing is not supported by data

                                                                                                                                                    If the data shows that there are differences between the average IQs of different races, why wouldn’t the same data support race being a causative factor?

                                                                                                                                                    1. 1

                                                                                                                                                      Ah, simply because correlation does not necessarily imply causation. In this specific case, it should also be noted that due to disagreements on a “scientific” definition of “race” most of these studies use racial self-identity as the criteria.

                                                                                                                                                      There are too many uncontrolled variables to make any reasoned conclusion as to a cause, but to deny these differences exist at all, like some here are trying to do, is insanity.

                                                                                                                                                      (Also, I use “insanity” here as “extreme foolishness or irrationally”. I’m not intending to imply their positions are enough to medically diagnose and label them mentally ill - only that the many of the arguments made in this thread are irrational.)

                                                                                                                                                      1. 0

                                                                                                                                                        The question is what makes some people insist on bringing up this topic in forums like this. Are they truth seeking iconoclasts, unwilling to let irrational mobs limit the scope of their scientific curiosity? Given the quality of the “science” presented in these arguments, that’s impossible to credit. Jonathan Richwine is a professional ideologist who was forced to resign his position at the Heritage Foundation! Charles Murray wrote a book that was roundly denounced by the most prominent genetic scientists as a racist rant - he’s merited his own page in the SPLC directory of hate groups.

                                                                                                                                                        1. -4

                                                                                                                                                          Ah, simply because correlation does not necessarily imply causation.

                                                                                                                                                          Necessarily, huh? :P

                                                                                                                                                          Race happens before IQ tests though, and for some mysterious reason there are people in Africa trying to cure AIDS by having sex with virgins, and living in huts without any plans to change that.. and they’ve had just as much time to develop as we have.

                                                                                                                                                          Go figure.

                                                                                                                                                          1. 2

                                                                                                                                                            I am waiting for the defenders of free and open scientific inquiry to explain how this stuff about Africans living in huts fits into their brave defense of rationality. To me, it’s just racist nonsense, but perhaps that’s just me.

                                                                                                                                                  2. 1

                                                                                                                                                    I find interesting highly entertaining that I was just shouted down for being a “racist” for merely trying mentioning the scientific consensus on the matter. I wish there was a way to ignore these people but sometimes, like a train wreck, it’s too crazy to turn away from.

                                                                                                                                                    New Scientists’ Ethics Special issue out now actually has a debate that science itself may be “unethical” to practice going forward because of its potential to be dangerous/destructive/racist! What fragile and special snowflakes we all have become these days!

                                                                                                                                                    I wonder if a better option would be when clicking down-vote, you are given the option to ignore the user.

                                                                                                                                                    Seems like it could be a mature choice, but possibly it would just fragment the site and make echo chambers?

                                                                                                                                                    I guess a Greasemonkey script could collapse the comments automatically as well.

                                                                                                                                                    1. 0

                                                                                                                                                      That racist babble is not even close to the scientific consensus . That political hacks claim a scientific consensus doesn’t make it so.

                                                                                                                                                    2. 1

                                                                                                                                                      To quote a small (fair-use) bit from that now famous “Why can’t we talk about IQ?” article, emphasis mine:

                                                                                                                                                      For people who have studied mental ability, what’s truly frustrating is the déjà vu they feel each time a media firestorm like this one erupts. Attempts by experts in the field to defend the embattled messenger inevitably fall on deaf ears. When the firestorm is over, the media’s mindset always resets to a state of comfortable ignorance, ready to be shocked all over again when the next messenger comes along.

                                                                                                                                                      At stake here, incidentally, is not just knowledge for the sake of knowledge, but also how science informs public policy. The U.S. education system, for example, is suffused with mental testing, yet few in the political classes understand cognitive ability research. Angry and repeated condemnations of the science will not help.

                                                                                                                                                      What scholars of mental ability know, but have never successfully gotten the media to understand, is that a scientific consensus, based on an extensive and consistent literature, has long been reached on many of the questions that still seem controversial to journalists.

                                                                                                                                                      Apparently accepting the scientific consensus, based on extensive and consistent literature, which has long been reached by the relevant researchers in the field, is still a struggle for many computer scientists and otherwise very smart and reasoned individuals as well, especially when the science doesn’t support their preconceived notions.

                                                                                                                                                      I’m not sure if I should laugh or cry anymore these days.

                                                                                                                                                      http://www.politico.com/story/2013/08/opinion-jason-richwine-095353 for the original article.

                                                                                                                                                      1. 6
                                                                                                                                                        1. Richwine is not a scientist.

                                                                                                                                                        Jason Matthew Richwine is a conservative public-policy analyst[2] and commentator[3] best known for his controversial views on immigration and IQ. Wikipedia

                                                                                                                                                        1. Richwine’s dissertation was not in science, not in social science, but in public policy

                                                                                                                                                        2. Richwine’s dissertation made claims that are unsupported in science about the genetic basic of IQ and tied them to public policy recommendations.

                                                                                                                                                        Richwine appears to not understand what it was about his dissertation that disturbed people. He argued for a clear and persistent genetic basis to IQ, used that to argue for an immigration system based on IQ tests, and then provided political advice on how to hide the intent of that system. https://www.washingtonpost.com/news/wonk/wp/2013/08/09/jason-richwine-doesnt-understand-why-people-are-mad-at-him/?utm_term=.4f44ca32a804

                                                                                                                                                        1. In his Politico article, Richwine attempts to rehabilite the widely debunked Bell Curve and its racist political program

                                                                                                                                                        “As a consequence, the interesting policy implications explored by Herrnstein and Murray were lost in the firestorm.” http://www.politico.com/story/2013/08/opinion-jason-richwine-095353

                                                                                                                                                        Here’s an example of Murray from Bell Curve: “The professional consensus is that the United States has experienced dysgenic pressures throughout either most of the century (the optimists) or all of the century (the pessimists).” - from https://www.splcenter.org/fighting-hate/extremist-files/individual/charles-murray

                                                                                                                                                        There is no credible argument here that dispassionate scientific research is being shouted down. People who persist in bringing up this claim create a hostile environment for the targets of Richwine and Murray’s and others racist remarks and political program.

                                                                                                                                                        1. 7

                                                                                                                                                          I wanted to comment that this sort of clear, crisp disagreement/refutation with minimal quotes and links to sources is exactly the sort of thing I like to see more of.

                                                                                                                                                          That said, let’s drop the subthread for now.

                                                                                                                                                  3. 5

                                                                                                                                                    In practice skepticism about Rust or Haskell nets more troll ratings than racist babble. Tells you something.

                                                                                                                                                1. 65

                                                                                                                                                  I feel like the last few weeks have had a rash of sneering, rude, or hostile comments. Even a very little of that tells every reader this isn’t a friendly place to collaborate and learn things. I’m not going to link to those comments, I’m going to link to the good stuff from just the last 24 hours:

                                                                                                                                                  I want to see people excited for learning, admitting ignorance, thinking it’s worth their time to deep dive, sharing resources, building context, basically this whole thread.

                                                                                                                                                  This serious conversation where collaborators think it’s worthwhile to give and feel it’s safe to ask, it takes vulnerability and care. Scorn, showing off, and put-downs shut people down fast, especially the newbies and minorities. Kindness is the fuel of a good community.

                                                                                                                                                  I would like this downvote category to be added.

                                                                                                                                                  1. 17

                                                                                                                                                    I feel like I’ve been seeing the same thing, and I’ve been trying to come up with a consistent way to categorize it. I think what bothers me mostly boils down to seeing posts that are primarily nonconstructive anger/hostility. It’s the posts that don’t do anything except complain about something someone did, or the state of some tech they don’t like, or the way some project is run. Whether it’s bitching that systemd isn’t unix or that a trans woman felt betrayed by her employer, if your only idea is destructive (e.g. this project is useless, this person shouldn’t be employed, this code shouldn’t exist, everything in web-dev is crap) I don’t really want to hear about it, and I don’t think it contributes to the quality of discussion on the site. There are perhaps a few other things that don’t fall into that category, but that seems to capture a lot of it.

                                                                                                                                                    I’m not sure if that’s the basis for a useful construct for categorization though, as it may be possible to re-structure such comments in a way that seem constructive on their face. Colloquially speaking I’d like a place to discuss technology with significantly less bellyaching and a lot more goodwill.

                                                                                                                                                    1. 9

                                                                                                                                                      Regrettably, not all comments can be constructive and positive, “yes and” tricks notwithstanding.

                                                                                                                                                      I think that it’s sufficient to use the tools we already have, especially if the alternative is a nebulous “hostile” flag that is basically going to be used to silence viewpoints folks don’t agree with.

                                                                                                                                                      Using your own example, right, it’s trivially easy to just paint a disparaging brush over criticisms about, say, “a trans woman feeling betrayed” when the context surrounding it is actually kinda interesting–not that the article should’ve been here in the first place, mind you, but here we are.

                                                                                                                                                      That kneejerk reaction and othering to oversimplify the opposition’s points is not as constructive as saying, say, “@nickpsecurity you have some valid points perhaps but jesus christ write shorter posts”.

                                                                                                                                                      1. 17

                                                                                                                                                        I think this is an uncharitable interpretation of what mcheely, myself and others are saying in this thread. We’re not (well, at least I’m not; I can’t speak for everyone) arguing that all comments need to be positive — dissent and disagreement is vital to good discussion — but rather that when a comment is negative, it should aim to be constructive, non-hostile, and tolerant. I don’t see how any of those would stifle dissenting voices, nor remove the context that you correctly point out is so vital. Nor am I arguing that posts should be penalized for being complex or long. In fact, the specific example I highlighted is very short; as pointed out elsewhere, it’s only that one comment that I feel like deserves a downvote.

                                                                                                                                                        1. 12

                                                                                                                                                          I think this is an uncharitable interpretation

                                                                                                                                                          I’d like a place to discuss technology with significantly less bellyaching and a lot more goodwill

                                                                                                                                                          I think uncharitable should be a new downvote flag. I’m okay with dissent, I’m okay with people being assholes, I’m even somewhat okay with outright negativity, as long as the comment is also charitable to the other viewpoint. Because nothing makes my blood boil like comments (online or face to face) that outright misinterpret or ignore what someone else is saying. It always feels like it’s done out of malicious dishonesty, arrogance, and spite, all at the same time. Uncharitable arguments tend to make me leave a discussion immediately with an intense desire to strangle someone.

                                                                                                                                                          I believe everyone on this site has the intellectual capacity to be charitable in their comments. And if someone consistently refuses to do so, I think they should be banned. Not as a punishment, but to keep a strong community of healthy communicators. The uncharitable downvote itself would serve as a reminder to be charitable before you vote, and perhaps make us all a little more charitable to each other.


                                                                                                                                                          And now I’m going to be salty. So if you get the point then feel free to stop reading, because the above 2 paragraphs were by far the most important.

                                                                                                                                                          Being directly uncharitable to another commenter’s point of view is obviously frustrating, but so are uncharitable top level comments. Lets take systemd for example, because for some reason no one can discuss the topic charitably. If you want to discuss specific disagreements with some aspect of systemd, be my guest. But if you say, e.g., Lennart Pottering is a moron, or systemd is terrible software, or complain about how systemd is killing Linux, then

                                                                                                                                                          <deeply-aggressive-language>

                                                                                                                                                          you should shut the hell up and meditate on why you have nothing better to do than express such mundane and idiotic generalizations.

                                                                                                                                                          </deeply-aggressive-language>

                                                                                                                                                          Is that uncharitable to say? Maybe. It’s hard to be charitable to uncharitable comments. I did my best to speak against expressing negative generalizations without addressing anything specific. Generalizing is the easiest way to be uncharitable, because a negative generalization automatically dismisses anything positive. If some people can’t find the time to phrase something charitably, then I want a way to tell them that I expect better. I expect some fucking intellect.

                                                                                                                                                          Let’s examine how these each are uncharitable, regardless of whether you or I agree:

                                                                                                                                                          “Lennart Pottering is a moron.” Ok first, he clearly isn’t. If you disagree with his design decisions that does not automatically make you smarter than him. I would challenge you to do better. If you legitimately could then you have a lot more value to contribute to the discussion than personal attacks, otherwise you’re an arrogant child who deserves downvotes for wasting everyone’s time.

                                                                                                                                                          “Systemd is terrible software.” This is a legitimate opinion, but the expression has all the same same problems as insulting Lennart Pottering. To comment, you should enough relevant knowledge that you can frame your opinion charitably and legitimately discuss some aspect of systemd. If you don’t you should post a question at most, or at least refrain from being an asshole when expressing your opinions.

                                                                                                                                                          “Systemd is killing Linux.” This is my key example. It’s also a legitimate opinion, but it’s still an opinion, and one that’s terribly hard to prove. By expressing such an unprovable (and in this case polarized) opinion, you’re being uncharitable to the reader. There is no way to argue with you, the point is simultaneously undefendable and undefeatable. The reader hasn’t even tried to talk to you and you are already being preemptively uncharitable to their very thoughts. At best you provide the root of a comment tree that isn’t worth reading, and can be collapsed in one click. And for everyone who agrees with you, you’ve inflicted your negative emotions on them, trapped them into feeling uncharitable as well until they can distract themselves from the subject.

                                                                                                                                                          I never click on systemd threads anymore, because they’re so predictably awful. And it all comes down to people being uncharitable. I don’t want that in my life. And it’s sad, because I actually would like to discuss systemd. Lennart Pottering probably feels the same. Can you blame him?

                                                                                                                                                          1. 6

                                                                                                                                                            Thanks for these examples, they are top! It’s these kinds of unsupported and unsupportable statements that get me railed up frequently.

                                                                                                                                                            1. -1

                                                                                                                                                              “Lennart Pottering is a moron.” Ok first, he clearly isn’t. If you disagree with his design decisions that does not automatically make you smarter than him. I would challenge you to do better. If you legitimately could then you have a lot more value to contribute to the discussion than personal attacks

                                                                                                                                                              I’d say that to do nothing is to do better than aggressively pushing software that acts as a DDoS relay, breaks sound output, and/or renders systems unbootable - and then pushing other OSS applications to break compatibility with OSes that don’t adopt your buggy software.

                                                                                                                                                              The reader hasn’t even tried to talk to you and you are already being preemptively uncharitable to their very thoughts. At best you provide the root of a comment tree that isn’t worth reading, and can be collapsed in one click. And for everyone who agrees with you, you’ve inflicted your negative emotions on them, trapped them into feeling uncharitable as well until they can distract themselves from the subject.

                                                                                                                                                              So what’s the constructive thing to do here? If other people want to run Pottering software that’s their lookout - as far as I’m concerned he’s had his three strikes on my systems. But how do I stop the creeping hard-dependency making its way through the ecosystem?

                                                                                                                                                              What would it take to get program maintainers to stop adopting systemd-isms? At least “systemd is killing linux” gives them one datapoint, maybe a reason to think twice. I’m open to anything more positive I could do in the cause of keeping running my programs and not having updates break my computer (which really doesn’t seem like so much to ask).

                                                                                                                                                              it’s sad, because I actually would like to discuss systemd. Lennart Pottering probably feels the same. Can you blame him?

                                                                                                                                                              Yes I can. I never wanted systemd, never asked for it, but it still broke my computer.

                                                                                                                                                              1. 3

                                                                                                                                                                So what’s the constructive thing to do here?

                                                                                                                                                                I can think of a lot of potentially constructive things to do:

                                                                                                                                                                • Engage in reasonable discussions with project maintainers about possible alternatives to hard dependencies.
                                                                                                                                                                • Fork a project to remove systemd dependencies
                                                                                                                                                                • Use a distro that doesn’t rely on systemd
                                                                                                                                                                • When posting on lobsters about systemd try something like “If you’re not a fan of systemd’s design, check out fooproject from bardude. It does x, y, and z better, and refrains from p and q. It’s optionally available as part of the wankelrotary distribution, and I’ve found it works pretty well, except that the only font color I can pick in gnome is dark purple. I’m willing to live with that.”
                                                                                                                                                                • If you don’t have the experience or information to do any of those things, start building it.

                                                                                                                                                                What would it take to get program maintainers to stop adopting systemd-isms? At least “systemd is killing linux” gives them one datapoint

                                                                                                                                                                That might be true, but I would argue that those maintainers probably have dedicated forums for that sort of feedback, making re-hashing it here unnecessary. It may be that you’ve said your piece in those forums and the maintainers have opted to adopt systemd anyway. If that’s the case, I don’t think re-hashing the arguments here is going to change their mind, and I agree with @peter that doing so detracts from the quality of discussion and discourages the participation of folks who do have constructive ideas to contribute.

                                                                                                                                                                1. 1

                                                                                                                                                                  Fork a project to remove systemd dependencies

                                                                                                                                                                  Use a distro that doesn’t rely on systemd

                                                                                                                                                                  Done/doing, but it feels like holding back the tide. I can’t fork everything I use.

                                                                                                                                                                  When posting on lobsters about systemd try something like “If you’re not a fan of systemd’s design, check out fooproject from bardude. It does x, y, and z better, and refrains from p and q. It’s optionally available as part of the wankelrotary distribution, and I’ve found it works pretty well, except that the only font color I can pick in gnome is dark purple. I’m willing to live with that.”

                                                                                                                                                                  But it’s not about having something else to do the things, because the things aren’t useful in the first place. It’s not users who are pushing systemd, it’s distributions, and while Debian at least had the discussion loundly and publicly, I don’t see any realistic chance of moving them away from systemd now.

                                                                                                                                                                2. 3

                                                                                                                                                                  Systemd wasn’t the point of my comment at all, but you have demonstrated that I picked a good hot button example.

                                                                                                                                                                  I’d say that to do nothing is to do better than aggressively pushing software…

                                                                                                                                                                  Sure. But that doesn’t make him a moron. And does he even aggressively push the software? Did he personally direct the majority of distros to adopt systemd? As far as I know he just developed systemd for Red Hat, and other people jumped on board. I particularly remember Arch Linux was excited to move to systemd, proud that they were so ahead of the curve. But now people uncharitably retcon history, pretending Arch was coerced to make the move by the changing ecosystem. It’s fine to criticize his choices, it’s uncharitable to attack his intelligence, and it’s uncharitable to rewrite history against him.

                                                                                                                                                                  as far as I’m concerned he’s had his three strikes on my systems

                                                                                                                                                                  This is a alright response—I certainly wouldn’t call this uncharitable. If you don’t like the software personally on your systems, that’s your prerogative.

                                                                                                                                                                  But how do I stop the creeping hard-dependency making its way through the ecosystem? What would it take to get program maintainers to stop adopting systemd-isms?

                                                                                                                                                                  Good question. I have a few ideas but they’re beyond the scope of what I’d like to talk about. But I guarantee you making uncharitable attacks against the developers will not help. It just prevents your feedback from being heard, and I think it’s fairly intuitive why. There are many posts from OSS maintainers describing their growing resentment with their community, just from a small minority of uncharitable people. I think anyone who doesn’t like systemd is pretty boned for the foreseeable future, because the community has poisoned its ability to sound rational when criticizing systemd. Perhaps permanently.

                                                                                                                                                                  At least “systemd is killing linux” gives them one datapoint, maybe a reason to think twice.

                                                                                                                                                                  No. It gives them one more reason to think the community is nothing but assholes who aren’t worth interacting with.

                                                                                                                                                                  I’m open to anything more positive I could do

                                                                                                                                                                  Be charitable. Encourage others to be charitable and stop poisoning the developers against the OSS community.

                                                                                                                                                                  Beyond that, voice your use of alternatives. Spread the word. Lead by example. If you just bitch about systemd, you’re teaching anyone around you that there is no better option than to whine and be miserable. Instead I encourage anyone who doesn’t like systemd to consider runit (which I find delightfully simple), or consider BSD if they’re up for a bigger change. Otherwise you kinda have to accept that people aren’t going to build whatever software best suits you because you asked for it. You don’t even get that for software you pay for.

                                                                                                                                                                  Can you blame him? Yes I can.

                                                                                                                                                                  Now this is certainly uncharitable. I asked if you could blame him for not wanting to interact with a community that vilifies him. And you blatantly respond by vilifying him further. If you weren’t just uncharitably ignoring what I was actually asking, and you truly blame him for not appreciating people who hate him, then I must ask you why you hold him to such a high empathetic standard while shamelessly holding yourself at such a low one? However based on your subsequent sentence, it seems far more likely that you just ignored my actual question.

                                                                                                                                                                  1. 0

                                                                                                                                                                    does he even aggressively push the software? Did he personally direct the majority of distros to adopt systemd? As far as I know he just developed systemd for Red Hat, and other people jumped on board.

                                                                                                                                                                    I might believe that if it were the first time this happened, but it isn’t; his projects show this pattern, and other people’s don’t.

                                                                                                                                                                    There are many posts from OSS maintainers describing their growing resentment with their community, just from a small minority of uncharitable people.

                                                                                                                                                                    If resentment is what it takes to get the systemd pushers to go away, I’m ok with that. Like, I don’t want to upset people, but I’d take upset people and working software over the converse.

                                                                                                                                                                    Now this is certainly uncharitable. I asked if you could blame him for not wanting to interact with a community that vilifies him. And you blatantly respond by vilifying him further. If you weren’t just uncharitably ignoring what I was actually asking…

                                                                                                                                                                    So much for your charitability. If that was what you meant to ask then you weren’t clear about it; certainly it wasn’t the question I understood you to be asking.

                                                                                                                                                                    No, I can’t blame him for not wanting to interact with the OSS community; on the contrary, if he would stop doing so I would have no further issue with him.

                                                                                                                                                                    1. 2

                                                                                                                                                                      If resentment is what it takes to get the systemd pushers to go away, I’m ok with that.

                                                                                                                                                                      80% of my post was describing the opposite of that interpretation.

                                                                                                                                                                      If that was what you meant to ask then you weren’t clear about it

                                                                                                                                                                      I said “it’s sad, because I actually would like to discuss systemd. Lennart Pottering probably feels the same. Can you blame him?” You quoted that exact piece of text, and responded to it. How could I have better phrased it for you to understand what I was asking?

                                                                                                                                                                      So much for your charitability.

                                                                                                                                                                      As I said before, it’s difficult to be charitable to uncharitable people. In each of my responses to you I’ve felt the need to question why you’ve uncharitably interpreted something I said.

                                                                                                                                                                      1. 1

                                                                                                                                                                        I said “it’s sad, because I actually would like to discuss systemd. Lennart Pottering probably feels the same. Can you blame him?” You quoted that exact piece of text, and responded to it.

                                                                                                                                                                        Yes I did. I understood that exact piece of text to say something quite different from “I asked if you could blame him for not wanting to interact with a community that vilifies him.” Rereading it I still think it says something quite different from that.

                                                                                                                                                                        Were you asking: “can you blame him for wanting to discuss systemd?” (which I think is the obvious interpretation of your line, and what I initially responded to), “can you blame him for feeling sad?” (not an interpretation I considered), or something else (as your response suggests)?

                                                                                                                                                                        As I said before, it’s difficult to be charitable to uncharitable people. In each of my responses to you I’ve felt the need to question why you’ve uncharitably interpreted something I said.

                                                                                                                                                                        Again that cuts both ways. Throwing around accusations of uncharitability is itself uncharitable, and I think your very first bringing up of systemd fails the charitability bar.

                                                                                                                                                              2. 1

                                                                                                                                                                I couldn’t be arsed to read through those threads, as it was obviously going to be a shitstorm from which nothing good can emerge.

                                                                                                                                                                I read the one comment without context.

                                                                                                                                                                Someone has an open mind for unpopular thoughts and considers all discrimination equal.

                                                                                                                                                                Some other examples have been proper shitposts, but this one really isn’t. It’s just unpopular.

                                                                                                                                                              3. 11

                                                                                                                                                                I like nickp’s long posts :)

                                                                                                                                                                1. 6

                                                                                                                                                                  Appreciate it. I gotta figure out a balance. I think those that are long for references are justifiable for discovery process. Opionion write-ups are where I could improve the most.

                                                                                                                                                                  1. 7

                                                                                                                                                                    Agreed. Especially when you go into long historical stuff the walls-of-text are justified–other more opiniony stuff could probably stand to be bullet-points and hyperlinks to relevant background material.

                                                                                                                                                                    Thanks for thinking on it though. :)

                                                                                                                                                                    1. 3

                                                                                                                                                                      I find it helps to reread my opinion posts, identify the key ideas, and find a way to bubble them all to the top. That way the reader knows up front if they want to continue reading. It seems to me to be the right thing to do in almost every type of technical or intellectual communication.

                                                                                                                                                                      For example, when teaching, putting the main idea up front lets the student know what they’re supposed to be learning. Do it the other way, and they have to try to buffer everything you’re saying indiscriminately and hope to tie it together at the end.

                                                                                                                                                                      1. 2

                                                                                                                                                                        I have noticed I put too much info in front of the main point sometimes when it wasn’t strictly necessary to do so. Part of the reason is I treat this as an informal forum where I’m just talking to people free-style. Possibly adding a bit of formality or structure to it using something like you describe could bring them more value. So, yeah, that good advice.

                                                                                                                                                                  2. 3

                                                                                                                                                                    Lmao. I get that a lot. Yeah, I should take another stab at concise writing.

                                                                                                                                                                    1. 2

                                                                                                                                                                      Regrettably, not all comments can be constructive and positive

                                                                                                                                                                      I don’t have the bandwidth for a longer reply, but this assertion is going to need some backing up. Simply asserting it’s impossible to be constructive does not make it true.

                                                                                                                                                                  3. 7

                                                                                                                                                                    I appreciate people being willing to voice unpopular opinions that can be taken as hostile. I don’t like a community of people who tiptoe around my statements, and aren’t willing to tell me that I’m saying something stupid when I say stupid things. I don’t like communities where people feel the need to paste on a fake smile while talking to me, and avoid saying anything confrontational.

                                                                                                                                                                    If there is a category that’s added, I’d want it to be specifically for deliberate distortions, misinterpretation, and blowing statements out of proportion. Possibly call it, “Bad faith”. But if that is added, I think it should be a superset of troll. If it’s added, troll should be removed.

                                                                                                                                                                    1. 2

                                                                                                                                                                      I completely agree that it’s important not to silence opinions just because they are unfavorable, dissenting, or disagreeable. And I think the amount of discussion that’s been going on in this thread shows that most other users of lobste.rs also care about this. It is precisely for the reason you state that I think it’s vital to pick the right word for such a category. It needs to be something that doesn’t convey merely “I disagree” or “I found this offensive”, but rather “this content has no place in the comment section of this story, and is only inflammatory/hostile/unconstructive”.

                                                                                                                                                                      While “troll” captures some of that sentiment, I think there is room for two different categories here (though there may also be a word that captures both without also pulling in too much else): “troll” to me indicates a comment intended to get a rise out of others (although alynpost had a good and wider definition further down), whereas I want this new category to cover statements that are written in such a way that they are either unproductive or hostile. It’s not so much about the content of the comment as much as it is the tone (a comment without content is more likely to be marked as “troll”). The distinction is definitely tricky though, and I don’t claim to have any answers here.

                                                                                                                                                                      1. 1

                                                                                                                                                                        unproductive or hostile

                                                                                                                                                                        Some ideas deserve hostility, and one person’s idea of productive may not be shared with another.

                                                                                                                                                                        Again, I think that the goal is to indicate that a comment is made in bad faith. That is to say, a comment is not written with the intent of discussing a genuinely held belief of the author, nor to expore new ideas, nor to discuss an important weakness in a previous comment. Instead, the comment may be made in order to derail discussion, to make people angry, or to belittle others, or to stroke the poster’s ego.

                                                                                                                                                                        Trolling is one instance of this category of comment, but it seems like this would cover most of the other instances as well.

                                                                                                                                                                        Finally, as someone mentioned, turning the downvote into a process, where the reasons for the downvote are described in detail may be a great idea.

                                                                                                                                                                        1. 3

                                                                                                                                                                          “Some ideas deserve hostility” — while I agree with you in the very general case, I think it’s rare for ideas expressed in comments on this site to deserve hostility. If you can’t make your argument in a civil and constructive way, then I strongly suspect your argument is not particularly strong. You are of course right that two people’s definition of “productive” can vary widely, which is why “unproductive” is probably a poor name for this theoretical tag. However, there are some pretty good other suggestions above that I think do a much better job of communicating that this is much more about tone than it is about content. Take “uncharitable” for example — I believe it fits your description of “bad faith” pretty well, and yet many comments that I would not consider “trolling” could still be considered “uncharitable”. A long rant that clearly took the person a while to write, and which they have put thought into, is likely not trolling (at least I wouldn’t think about it that way), but could certainly be “uncharitable” in the sense of its tone being unnecessarily inflammatory/aggressive/disrespectful.

                                                                                                                                                                    2. 4

                                                                                                                                                                      I closed the GitHub issue following alynpost’s comment at https://lobste.rs/s/wei3a9/downvote_category_for_inappropriate#c_pryqvi. Do you agree with their reasoning that “troll” may be appropriate after all, or do you think we should re-open the GH issue?

                                                                                                                                                                      1. 15

                                                                                                                                                                        I’m using “troll” in the meantime, but I would like to see an explicit “unkind”, “abusive”, “uncharitable”, “jackass”, something.

                                                                                                                                                                        1. [Comment removed by author]

                                                                                                                                                                          1. 2

                                                                                                                                                                            I also like “uncharitable” more the more I think about it. The one hesitation I have is that it doesn’t really capture comments that are hostile or unnecessarily inflammatory in tone while still being written in such a way that they address the thing they are commenting on. Perhaps that’s a smaller category of posts, but I do think that category may be worth covering…

                                                                                                                                                                          2. 3

                                                                                                                                                                            Some thoughts from a side-discussion with alynpost that I thought I’d share: I like the sentiment expressed by “not even wrong”, but I worry that it’s a tag that can fairly easily be misunderstood or misused. “pointless” is a decent approximation, but unfortunately also has hostile associations. Perhaps “unnecessary” is better? Alternatively, “not germane” and “wanton” are both somewhat accurate, but also pretty obscure.

                                                                                                                                                                            1. 1

                                                                                                                                                                              Maybe “gratuitous”?

                                                                                                                                                                            2. 2

                                                                                                                                                                              My vote is for shenanigans. Mostly because I like the word and thing it would fit very well in this situation.

                                                                                                                                                                              1. 2

                                                                                                                                                                                I’ll contribute ‘profane’ and ‘taboo’ to your word salad.

                                                                                                                                                                                1. 5

                                                                                                                                                                                  I’ll proffer ‘snark’.

                                                                                                                                                                                  1. 3

                                                                                                                                                                                    snarky comments can be “good” if they aren’t overly offensive. sometimes they are a good tool to show another point of view.

                                                                                                                                                                                  2. 4

                                                                                                                                                                                    Taboo is an interesting choice. Are some topics taboo? (Yes, I think so.) Will voters be willing to specify taboo as a reason? I wonder if having the option available would cause voters to reconsider.

                                                                                                                                                                                    1. 5

                                                                                                                                                                                      The word taboo in the context of moderation was introduced to me via the article It’s Time For a Class Action Against Facebook to Force Remedies The Government Has Not. I’ll quote the relevant passage. It’s not entirely, well, germane, to how lobste.rs would use the label, but it’s a good survey of the space:

                                                                                                                                                                                      In user interface similar to the selection of other ‘interests’ Provide for the user-selected option of participating in discourse on Sensitive Topics (“Taboos”), and limit the distribution of all user-created ‘Posts’ or their equivalent, to those who have selected to participate in that same Taboo.

                                                                                                                                                                                      • Absolutely Prohibited Taboos: Believable threats of interpersonal physical or sexual harm. Pedophilia.
                                                                                                                                                                                      • State Regulated Taboos: Criticism of the state. Criticism of Political Individuals.
                                                                                                                                                                                      • Religious Taboos: Advocacy of or criticism of any major world religion.
                                                                                                                                                                                      • Political Taboos: Advocacy of or criticism of any political ideology, philosophy, or party. Tolerance for advocacy or criticism of
                                                                                                                                                                                      • Psychological Taboos: Race, Gender, Disability
                                                                                                                                                                                      • Sexual Taboos: Erotica
                                                                                                                                                                                      • Purity Taboos: Gore.
                                                                                                                                                                                      • Honesty Taboos: Ridicule, Shaming, Rallying;
                                                                                                                                                                                      1. 3

                                                                                                                                                                                        I like the honesty of this list. It says what the US Supreme court has said for a long time. You can’t throw out the bath water without throwing out the baby. They, of course, said it better: 1 2 and so on.

                                                                                                                                                                                        Now, online fora are not covered by free speech laws but whenever you govern speech you find the conflict you find in this list - fortunately lobste.rs is not our sole outlet for political views. In fact lobste.rs is not an outlet for political views at all, so how did we get here?

                                                                                                                                                                                        What we need is a personalizable, trainable spam filter that will allows us to auto-hide all this junk and just let us learn about the high drama in the world of algebraic data types.

                                                                                                                                                                              2. 4

                                                                                                                                                                                Which word would you use to describe the category? I’ve seen these proposed:

                                                                                                                                                                                • Abusive
                                                                                                                                                                                • Destructive
                                                                                                                                                                                • Hostile
                                                                                                                                                                                • Inappropriate
                                                                                                                                                                                • *sigh*
                                                                                                                                                                                1. 2

                                                                                                                                                                                  “Inappropriate” sounds like “off-topic” to me, but any of the rest or these work for me.

                                                                                                                                                                                2. 1

                                                                                                                                                                                  Comments that fit that description should be straight up deleted/filtered. If deletion isn’t kosher here, maybe a moderator powered “-∞” vote that also prevents further notifications? People would probably take it seriously if it reset their karma to zero (internet points!).

                                                                                                                                                                                  1. 7

                                                                                                                                                                                    You’re letting the vocal mobs win in that case. Better to drop them to bottom of thread hidden by default with a plus or profile setting that can display them. That keeps them out of sight with votes but avoids total censorship where people can still read what was said.

                                                                                                                                                                                    1. 4

                                                                                                                                                                                      That seems excessive. I think we want to be very careful about this kind of downvote which could easily be misused. It’s also possible that a user makes one comment like this, but has other valuable comments and contributions, and the one bad should probably not undo all the good.

                                                                                                                                                                                  1. 6

                                                                                                                                                                                    Today I learned that downvoting a comment requires you to pick a category. I guess I’ve never tried to do that here before.

                                                                                                                                                                                    The comment provided as an example is the first comment I tried to downvote here on Lobste.rs…

                                                                                                                                                                                    And indeed, none of the available categories fit.

                                                                                                                                                                                    If there was a ‘destructive’ category, I’d pick that one. Meanwhile, I’ll use ‘troll’, which is clearly not correct. AFAIK.

                                                                                                                                                                                    [EDIT: uh-oh, it looks as if I’ve committed a “me-too”!]

                                                                                                                                                                                    1. 5

                                                                                                                                                                                      I only learned that downvotes require a category today as well. And I was pleasantly surprised both because I realized that I haven’t needed to downvote a comment here before, and because I really like that lobste.rs requires a reason for a downvote. I feel like your comment had value beyond just a me-too, so you’re fine :)

                                                                                                                                                                                      1. 5

                                                                                                                                                                                        Interestingly, gave me an opportunity to upvote that comment. Don’t know why someone’s personal feelings, which is what they are describing there should be less valid because of the color of their skin. I thought that was what we were all striving for.

                                                                                                                                                                                        1. 4

                                                                                                                                                                                          People reading that comment who missed the thread might not know it was very context-sensitive. Remember that the context (OP) is specific people pushing a specific set of political views on everyone asking that all disagreement be censored. They say they benefit minorities but wont allow them to have a say if they have different beliefs. Coraline et al are uncompromising in that the options are (a) agree with them pushing same things or (b) shut up and leave every public space they take over.

                                                                                                                                                                                          With that backdrop, I read the various Github articles and the OP. She constantly talked about extreme negative reactions she got as if it’s incidental to being a minority. She was a minority, did some work, and piles of hate emerged. She never mentions when doing so that she aggresively evangelizes, insults, and coerces FOSS projects usually with a pile of likeminded people behind her. I kept bringing that behavior up since I think her showing up at people’s doorsteps insulting them and telling them to do her bidding in their projects might be why people dont like her. That pisses all types of people off here in the Mid-South, including minorities. Consistently. I imagine some in other areas, too.

                                                                                                                                                                                          Anyway, in the thread you linked, my main comment on that article was judged by site as follows:

                                                                                                                                                                                          +73 yes -4 incorrect -1 off-topic -8 troll

                                                                                                                                                                                          It means the main post got overwhelming support esp considering how few upvotes I normally get. The others were peripheral supporting it as part of a larger debate. Anyone trying to judge the linked one should probably look at OP and first comment to get context:

                                                                                                                                                                                          https://lobste.rs/s/js3pbv/antisocial_coding_my_year_at_github#c_h8znxo

                                                                                                                                                                                          Im just a political moderate calling out hypocrisy/deceit of an article’s source (i.e. source integrity) and protecting right to dissent as usual. I do it on all topics. Even my favorites on occasion. On political ones, people tend to have strong emotional reactions that clouds judgment or just evokes strong reactions. Im not saying whose right or wrong so much as disagreement they take personally, get disgusted/angry, and will hit any button to make that person or post disappear.

                                                                                                                                                                                          I think I warned of that in either linked thread or Community Standards discussion. Both then and now, people started calling out others that should disappear with often opposite views of what should be allowed. There was no consensus except against comments that are blatantly harmful where there is a consensus by most peeple that it’s abusive. The same thing I see play out in person every day. So, I oppose comment deletions or bans in political situations without consensus so long as people keep it civil and about specific claims with supporting evidence. And if one side can speak, the other parties better be able to as well.

                                                                                                                                                                                          And a minimum of politics on Lobsters period! Keep it focused on tech and such. Somone had to post something by a decietful activist on politics pushing a mix of truth and propaganda. And that hit my mental button of calling them out staying as civil and factual as I could despite knowing with every word I might be censored for it. Might. The upvotes from my first comment were reason I kept taking the risk of more argument given there was a surge of dissent that needed to be represented. Not just me. I always help the underdogs. :)

                                                                                                                                                                                          Note: That was long as we were just talking about but I wanted context and intent clear given it’s about whether to filter or ban me. I also hold no grudges against anyone who did. It’s their deeply-held, personal beliefs about what’s right and wrong. People will do what you believe is necessary there.

                                                                                                                                                                                          Note 2: Lunch break is over. Darn. I was hoping for tech over politics. Ill do what’s necessary, though, since I value and respect this community. Gotta defend dissent as it’s critical.

                                                                                                                                                                                          1. 3

                                                                                                                                                                                            While I disagree with your positions on the topic of the OP, that’s not really what I wanted to bring attention to in this thread. And, as you correctly point out, the longer post you had there does contribute to the discussion. This is why I specifically linked only to that one comment, because that is the only one I feel is not contributing, constructive, or otherwise meaningful as a part of the larger thread. Under no circumstances do I think any of what happened in that thread is cause for banning or deletion; on that, we are in complete agreement. What I wanted to highlight in this topic is that we should have a way of discouraging comments that are solely inflammatory without carrying other value, and I believe that particular one was of that kind. I did not downvote your other posts despite disagreeing with them, because (as also mentioned elsewhere in this thread), I do not think disagreement should be a reason for downvoting. We can have a whole different discussion about how politics and tech mix, but that does not belong in this thread.

                                                                                                                                                                                            1. 3

                                                                                                                                                                                              This is why I specifically linked only to that one comment, because that is the only one I feel is not contributing, constructive, or otherwise meaningful as a part of the larger thread. Under no circumstances do I think any of what happened in that thread is cause for banning or deletion; on that, we are in complete agreement.

                                                                                                                                                                                              Well, my respect just went up for you quite a bit. Very reasonable position far as critiques go. The selected comment was lower info than the other one and maybe even unnecessary. Likely because it was part of a back and forth on politics where comment quality on all sides (including my own) tend to get lower as it goes on. One of reasons I don’t like political discussions in low-noise sites like Lobsters. They also can have less info since more of the specific points and context is already defined where the replies start just implying that stuff with less info content in general. That one was some combination of those.

                                                                                                                                                                                              In any case, I appreciate you clarifying your position. I at least get why you’d want to see less of that kind of comment than the main one.

                                                                                                                                                                                              1. 4

                                                                                                                                                                                                I’m glad we’ve found common ground. As I’ve said elsewhere (this thread is getting pretty large), I don’t want to see downvotes used as a way to signal disagreement, nor do I want them to be used to “punish” a particular user or otherwise label the user as bad. Downvotes to me are a way of signaling that a particular comment is unwanted, along with the reason why, nothing more, nothing less.

                                                                                                                                                                                                1. 1

                                                                                                                                                                                                  I’m fine with that as long as there’s a consensus across majority of community’s users. That’s really all I ask with these sorts of things even though I’m biased toward free speech or low censorship. Your proposal isn’t a big risk to that esp given it’s mostly a tech-focused forum.

                                                                                                                                                                                            2. [Comment removed by author]

                                                                                                                                                                                              1. 11

                                                                                                                                                                                                If you never mentioned your religion, I would have never found out what kind of person you are. Why would I want to talk tech with you?

                                                                                                                                                                                                See how stupid that sounds?

                                                                                                                                                                                                1. 4

                                                                                                                                                                                                  What’s needed is an expanded signup form with ten or so position statements (“programming in php is ethical”) that one chooses to agree or disagree with. Then all the comments made by anyone who agrees with a statement I strongly disagree with are automatically hidden. Works for okcupid, why not lobsters?

                                                                                                                                                                                                  1. 1

                                                                                                                                                                                                    You’re joking, but I would like, and would make heavy use of that feature.

                                                                                                                                                                                                  2. 0

                                                                                                                                                                                                    So you’re saying that if I find out someone here wants to ship the minorities back to where they came from, I should want to talk tech with them as much as I would my kindly religious coworker?

                                                                                                                                                                                                    1. 14

                                                                                                                                                                                                      You are free to not do whatever you don’t feel comfortable with, but if neither of you brings up minorities because you’re talking about technology, why would that even be relevant? Are you worried about being associated with such a person or do you think their ideas about minorities are going to creep into their ideas about tech?

                                                                                                                                                                                                      1. 11

                                                                                                                                                                                                        I believe the concern is that people holding those views ,and as a result the views themselves will be percieved as welcome in the broader technical community, or in our case specifically in the Lobste.rs community. The result of this will be that minorities will in turn feel unwelcome in the community, and they have every right to feel that way.

                                                                                                                                                                                                        If you own a restaurant and host a nice dinner for a Jewish family celebration while there’s a Nazi convention at the next table, there’s no amount of politeness, courtesy, good intentions or kindness that you can bring to bear that will make them feel welcome.

                                                                                                                                                                                                        Do we have the explicit racist behavior on Lobste.rs that’s equivalent to a Nazi convention? No. But I’ve seen comments on here defending racists, using SJW as a perjorative, using the incorrect gender pronoun for a trans person (in a way that makes it hard to believe it was not purposeful) and a variety of other behaviors that would signal to someone in a minority group that they wouldn’t be welcomed here. Most of these posts did not recieve many downvotes, and when they do, it’s often enough that there’s an outpouring of discussion about what downvotes are for.

                                                                                                                                                                                                        The point of this is that it’s the decision of the person entering a community as to what will make them feel unwelcome. As the hosts, we decide what behavior is acceptable in our community. No matter what we decide, someone will feel unwelcome. So it falls on us to decide how to make trade-offs about who feels unwelcome and why.

                                                                                                                                                                                                        Personally, I think it’s not unreasonable for a minority to look at the Lobste.rs community and say “I see a lot of people there defending racists/sexists/transphobics and their views, and I don’t feel welcome as a result.” On the flip side I think it’s less reasonable to say “I don’t feel welcome at lobsters because I came to the defense of a guy who said slavery was a good idea and I got downvoted a bunch.” Even if you soften it to “I played devils advocate to argue the case for a guy who thought slavery was swell and got downvoted” I think the first position is more reasonable.

                                                                                                                                                                                                        Given that we can only welcome one of those groups in that situation, I’m inclined to welcome the folks with the more reasonable view. I think it would be nice to give the community better tools to make that decision. I think downvotes for “hostility” and “unconstructive” could both work, with a few caveats:

                                                                                                                                                                                                        “Hostility” would be intellectual hostility, not emotinal tenor. It’s pefectly possible to politely and calmly argue that women are inferior to men, or that that’s an acceptable view that has a place in modern discourse, but I’d argume both of those positions are hostile toward women.

                                                                                                                                                                                                        “Unconstructive” is broader in scope and the hope would be that it reduces hostile viewpoints as a side effect, as well as cutting down on the number of pointless technical rants, which I also don’t feel add much to the discussion. I suspect it’s hard to be politely hostile toward a group and simultaneously provide actual constructive criticism. I find it hard to imagine some of the more SJW-hostile folks proposing suggestions that would make both trans/minority folks and the hetero/caucasian men they see as under attack feel more welcome, but I would certainly like to hear about it them if it happens.

                                                                                                                                                                                                        In either case, I think we’ll have to recognize that these judgements are subjective, and that there’s no way to avoid being subjective if we want to consciously set a tone for our community. I’d also suggest that losing ephemeral internet points is not the end of the world. It’s a very mild form of social reprimand and a fairly gentle tool in the larger scheme of things, and isn’t mutually exclusive with open discussion. I understand being cautions in the application of downvotes, but perhaps we have erred too much on the side of caution in the past.

                                                                                                                                                                                                        1. 8

                                                                                                                                                                                                          I think the easiest way to address the concern that the first thing people see when they come here is “hate” (for lack of a better word) is to post more and better comments. You’re fighting a difficult battle, in no small part because there’s little agreement about what constitutes hate. But banning the haters is not the only way to reduce the likelihood a newcomer will see something they don’t like. One can hope they don’t stop at the first comment they read, so work to ensure the next ten comments they read after that are all worthwhile.

                                                                                                                                                                                                          There does seem to be a phenomenon where people will have accounts for months, not post any comments, then one day announce “I’ve had it with this site; I can’t believe somebody in this community wrote that.” If you’re so concerned about what the community is, try being the community. (Not directed at any particular individual.)

                                                                                                                                                                                                          1. 8

                                                                                                                                                                                                            I understand the appeal of the “fight content with content” approach, and I think encouraging folks who are friendly and welcoming, and being the community you want is important. We shouldn’t lose sight of that.

                                                                                                                                                                                                            That said, the issue I have with this approach is that it ignores outside constraints on community members, and cedes the discussion to whoever has more free time and energy. Or in the presence of malicious behavior, whoever puts the most effort into gaming the system. This is a general problem with community moderation, and it seems like people with more hostile views often are willing to devote more effort to spreading their views than more reasonable individuals. I have a number of hypothetical ideas about why that may be which may or may not be correct, but it does seem to be a consistent pattern across many of the communities I’ve participated in, and others have made the observation as well.

                                                                                                                                                                                                            Speaking for myself, I try to participate and be a friendly and welcoming voice as much as I can, but I don’t have time to rebut every mean-spirited comment, or even comment all that often. I’ve got two small children to raise, three-and-a-halfish teams of folks at work to manage, a couple of side projects as well as the very rare occasional social engaement. I literally don’t have the time and energy to put in that some people do, and I don’t think that “whoever has the most time on their hands in aggregate wins” (that sounds snarky - not intended, sorry.) is a good strategy for building a welcoming community. My view is that communities have to make conscious decisions about what they want to be, otherwise the unknown trade-offs we make by not deciding will end up biting us, much they way they would if we were to abdicate making explicit decisions in engineering information systems.

                                                                                                                                                                                                            Additionally, I’ve found that trying to speak up against hostile viewpoints and/or people who defend those views often leads into some pretty gnarly rehtorial weeds that end up being particularly time-consuming. Perhaps I could be better about disengaging when the conversation feels fruitless, but at some point that further discussion is no longer useful and it might just be best to let the community literally “vote on it”.

                                                                                                                                                                                                            I also want to reiterate that I’m not suggeting that anyone should be banned, but that we create a category of downvote for the sorts of behavior we decide want to discourage, so that we can express our collective opinion without always having to engage in extensive (and at times fruitless) discussion in order to make headway toward whatever we decide we ant our community to look like.

                                                                                                                                                                                                            Apologies if this comment is a bit redundant/rambling. I’m running on small amounts of sleep because children, and I’m a bit too tired to proofread. Think it’s time to call it a night.

                                                                                                                                                                                                            1. 3

                                                                                                                                                                                                              There does seem to be a phenomenon where people will have accounts for months, not post any comments, then one day announce “I’ve had it with this site; I can’t believe somebody in this community wrote that.” If you’re so concerned about what the community is, try being the community. (Not directed at any particular individual.)

                                                                                                                                                                                                              I saw this happen in some of the community discussions. It came off to me a bit like the people in FOSS projects using them, not contributing, and then demand the developers are bad people for not doing (feature/fix here) in (time here). Whether that’s valid comparison or not, I just rolled my eyes thinking “yeah, you’d be a big loss…”

                                                                                                                                                                                                          2. 4

                                                                                                                                                                                                            To be clear, I’m for it staying off the site as much as possible. Most of Lobsters and the better parts of HN are a mental break from all that crap for me. I’d rather it not even show up. Also, @Irene made a great point in the last discussion that keeping the articles focused on tech or non-political things in general avoids all this crap as a pleasant, side effect since there’s fewer opportunities for it to show up. I’d rather not even see it on front page. There’s other places where they can talk to folks about it. I’d even support banning such discussions on all sides as off-topic since it’s rare good comes out of them. Or at least the flamewar-level, personal stuff where we can still talk, say, NSA surveillance tech and legal implications. Or copyright/patent law w/ people’s opinions coming in. Those things haven’t been so bad.

                                                                                                                                                                                                            And what led to this thread? People butting heads or getting irritated by a thread about politics. That figures…

                                                                                                                                                                                                            1. 3

                                                                                                                                                                                                              I focused a lot on the issues of social inclusiveness in this sub-thread, partly because of the parent comments, and also because it’s an issue that’s important to me.

                                                                                                                                                                                                              On reflection, I think it’s worth tying it back into the larger conversation. To that end, I want to say that even if we were to only ever discuss technology, I think having an explicit downvote category for nonconstructive / hostile comments would benefit us. I think many of the points I’ve made about the exclusion of specific groups of people also apply in the context of being a welcoming community in general, and improving the general quality of discussion.

                                                                                                                                                                                                              1. 3

                                                                                                                                                                                                                I think we may have seen that keeping it off the site is not really possible in practice, as there’s a strong desire to address these kinds of questions in the community.

                                                                                                                                                                                                                Additionaly, I think that simply by saying that topics of equality and fairness in the tech industry are off limits, we’ll end up excluding some folks that we might be better off hearing from. Perhaps I’m wrong there, but I’d prefer we reach consensus through a more organic process than a blanket moderator-imposed ban on that sort of discussion.

                                                                                                                                                                                                                1. 3

                                                                                                                                                                                                                  I see where you’re going with that. It just hasn’t worked well in practice so far with more problems reported than benefits from what I can tell. There’s all kinds of sites and even private messaging to help people on politics. The unique thing about Lobsters for me was it was very focused on tech, little BS in general, few comments, and they had more signal on average. If I told someone about it, I found @friendlysock’s description in “What Lobsters Is” to reflect the better content:

                                                                                                                                                                                                                  https://lobste.rs/s/oackyq/lobsters_community_standards/comments/sybvqw#c_sybvqw

                                                                                                                                                                                                                  I say leave it for that sort of thing which is how it grew into what it was. The political stuff adds to noise but doesn’t seem to help hardly anyone unless they’re just not searching for information elsewhere. I mean, just Googling a bunch of things would probably get them more information. They’d need to, too, if subject really mattered for them. So, let’s leave it offsite.

                                                                                                                                                                                                                  Of course, I’m just pushing my preference. You’re pushing yours. I’m for whatever jcs decides or if a vote what the consensus is. I’ll just probably ignore them more often. ;)

                                                                                                                                                                                                                  1. 1

                                                                                                                                                                                                                    The unique thing about Lobsters for me was it was very focused on tech, little BS in general, few comments, and they had more signal on average.

                                                                                                                                                                                                                    This is what attracted me as well to the site. There are some good people in here, and I want to hear what they have to say, but after being here for a while I’ve came to the conclusion that it’s full of the same old SJW/PC-rhetoric like on HN and other sites.

                                                                                                                                                                                                                    Some people like to discuss tech, but there’s a strong militia that intervenes when they think you discuss tech the wrong way. Meaningless words like “snark” and “condescending”, and harmful concepts like “this is not constructive” are uttered as justification.

                                                                                                                                                                                                                    In effect I have stopped discussing anything.

                                                                                                                                                                                                                    I must say this is somewhat unexpected to me. Since there are relatively many OpenBSD developers here, and this website was created by an OpenBSD developer I expected (and desired) the atmosphere and discourse here to match the atmosphere on OpenBSD mailing lists, but it’s pretty much the antithesis of that.

                                                                                                                                                                                                                    1. 10

                                                                                                                                                                                                                      To me, the use of SJW or “PC rhetoric” as pejoratives is offensive and never adds anything positive to a discussion. Those labels are an attempt to dress up ad-hominem attacks - attacks that boil down to “your ideas are invalid because you suck” - as something else.

                                                                                                                                                                                                                      1. 6

                                                                                                                                                                                                                        If we’re going to be using pejorative right-wing terms like “SJW”, we could mix it up with some pejorative left-wing terms too. You don’t see someone’s viewpoints denounced as “petty-bourgeois” often enough around here!

                                                                                                                                                                                                                      2. 4

                                                                                                                                                                                                                        after being here for a while I’ve came to the conclusion that it’s full of the same old SJW/PC-rhetoric like on HN and other sites.

                                                                                                                                                                                                                        I’ve only been here a week or two and yeah, I agree that there’s too much anti-SJW/PC rhetoric. The comment thread about Coraline at Github was a garbage fire that needed a strong moderator to step in and say “cut that crap out” but no, they instead got upvoted and now use those upvotes as defensive armour in this thread.

                                                                                                                                                                                                                        1. 1

                                                                                                                                                                                                                          As an outsider, it appears to me that the OpenBSD community has a strong, filtering process on who will get in there and some way of indicating what’s expected. Whereas, Lobsters is more open-ended plus did the mass signup. There’s so many more kinds of people and interests here that you’re going to see really different behavior.

                                                                                                                                                                                                                          It’s interesting how well the site handles the meta-threads, though. I’ve been impressed or even proud of those Lobsters engaging constructively and carefully in this thread. I don’t see it happen that way in a lot of forums. There’s more fighting and mud slinging in those than anything.

                                                                                                                                                                                                                  2. 4

                                                                                                                                                                                                                    There are plenty of non-technical reasons for not wanting to talk shop with someone. Perhaps they have terrible personal hygiene and you can’t be in their presence without gagging. Or maybe at some company event they got drunk and made a pass at your wife and you can’t be in their presence without thinking about it. Or, more relevant to this conversation, they might agitate for politics that have a visceral negative effect on your life. It seems obvious to me that someone might find these scenarios deeply unpleasant and would seek to avoid them, and in such a case it would not be hypocritical for them to be fine with talking to someone who is religious.

                                                                                                                                                                                                                    1. 2

                                                                                                                                                                                                                      Or maybe at some company event they got drunk and made a pass at your wife and you can’t be in their presence without thinking about it

                                                                                                                                                                                                                      What a weird example to use. Surely if it bothers you this much (FYI people probably make a pass at your wife every week, 100% sober), just go talk to that person.

                                                                                                                                                                                                                      I do agree with the rest of your post though. It’s hard to have a discussion about anything if you know the person is advocating against you.

                                                                                                                                                                                                                      1. 2

                                                                                                                                                                                                                        It was an example of something that would bother some people, not an anecdote from my personal life.

                                                                                                                                                                                                                      2. -1

                                                                                                                                                                                                                        Or maybe at some company event they got drunk and made a pass at your wife and you can’t be in their presence without thinking about it.

                                                                                                                                                                                                                        Jesus. What insecurity. So what if someone made a pass at your wife?

                                                                                                                                                                                                                  3. 1

                                                                                                                                                                                                                    I know people have very strong opinions on this subject, and it’s one that is particularly amenable to gut reaction type responses, but surely this could be phrased in a less condescending way?

                                                                                                                                                                                                                  4. 6

                                                                                                                                                                                                                    You still don’t know what kind of person I am. The commenting guidelines of Hacker News and Lobsters don’t allow me to show you what kind of person I am. How I say or do things, esp in high-stakes situations, defines me more than what words you read. The people I work with, especially the black folks, have a lot of respect for me and enjoy my company. Almost everyone fist bumps me or (women) big smile or hugs me even though I’m not popular per se. Infamous, too, for reasons I’ll say in a minute but I’ll avoid doing what bothers them when asked. Online in a low-noise forum, I’m just blunt, try to be informative, help people out, and call out BS with counter-arguments usually with citations. All I can do that matches what subset of my nature is allowed on such forums. I slip up and be more combative or low-info at times usually of high stress, low sleep, or just personal failure in self-control. Usually, though, I’m data driven and civil enough.

                                                                                                                                                                                                                    As you see in this thread and there, I won’t hide when called out. I put myself out there at great risk since I believe in being honest and standing up for your beliefs even when it hurts. So, you want a personal profile? In person, I’m a “nerd” that was ostracized & beat up in kindergarten since I could count without my fingers (a “freak”), that went to black school by 2nd grade, experienced constant discrimination + physical attacks due to skin color (including with concrete! it works, too!), ostracized by white rednecks since I was an intellectual non-hater vs football guru w/ “right” friends, ostracized by white liberals in some places since I was a devout Christian who loved or held to account everyone instead of targeting one group (white males = The Devil), an UU/agnostic later after a lot of reading of Old Testament too much to believe divine inspiration for its evils, a civil rights activist, help people locally (esp society’s outcasts or young workers), a pseudo-union rep defending employees from corrupt/abusive management (including against minorities) for years staying in management’s cross-hairs, gave research/advice on INFOSEC away for no money for years (do that here), and risked my life numerous times to protect strangers that I knew were good people w/ nobody else to help them with no reward expected or given (maybe just sincere appreciation). Plus, unlike imagined “offenses,” watching people suffer from real things makes me feel sick and enraged. I’d probably be richer or popular if I didn’t care.

                                                                                                                                                                                                                    The result of all this, much of which I didn’t ask for, is I have a blunt style w/ plain dress to filter superficial people, a twisted sense of humor that PTSD victims often develop for managing stress, quick to counterpoint any echo chamber where many people aren’t represented (like I lived in for years), avoid most unnecessary fights, don’t back down in necessary ones (perceive as necessary), and I’m great at “checking” with solid, improvised references thanks to years of self-defense at black school in many on one attacks where weakness = maybe beatdown. At work, I mostly just listen to people’s thoughts/gripes, inform them on interesting stuff, or especially make them laugh. I do the heavy lifting plus most unpopular tasks. Exhausted by the time I get home with sleeping problems on top of it. I think I do OK since most people that came from where I’m from (esp whites in black schools) are racists that mostly look after themselves. A mean, practical bunch. They get much worse in hostile environments with low sleep. I do still constantly listen to feedback from everyone to try to improve myself.

                                                                                                                                                                                                                    Now, did you guess any of this based on my Hacker News comments outside maybe race since I’ve brought up white guy in black school/company/city issues before? Or did you see me in a few threads represent some dissenting views personally or as devil’s advocate doing same against an echo chamber where you then projected all kinds of terrible judgments on my life as a whole? And while we’re at evaluating each other’s goodness, how many times have you risked imprisonment or stared at death trying to help strangers born in unfortunate circumstances that just needed a boost in life? I’m guessing you didn’t or rarely did based on your response to what little I say on moderated sites. Armchair quarterbacking or low-risk charity is the default of most people since it’s the safest and easiest to do. I’ll still overall reserving judgment in case you similarly sacrifice regularly at risk for others and simply slipped over-projecting.

                                                                                                                                                                                                                    Note: I’m not even mad in case anyone is wondering. This thread happening after a holiday week and long day at work is just a little more draining… maybe annoying. This one comment just has my focused attention since it opened with a personal attack. Although not easy, years of practice at de-escalation lets me keep it at “lets talk” instead of “lets fight”… most of the time… I’m happy to share what kind of shit produces a walking contradiction like myself with people who may see morality as too binary. Long, tough, complicated life I spent most of helping others with me being in bad circumstances for it esp after Great Recession with lots of layoffs. I’m still recovering from that and bad job I landed but still keep helping folks survive and learn with what resources I have. I learned a lot back from many, too, esp at work, on HN, and on Lobsters. Much appreciation to all for your contributions. I give back what I can.

                                                                                                                                                                                                                2. 1

                                                                                                                                                                                                                  alynpost’s suggestion meets my needs and I withdraw my support for a new category.

                                                                                                                                                                                                                  1. [Comment removed by author]

                                                                                                                                                                                                                    1. 15

                                                                                                                                                                                                                      In that thread @nickpsecurity shared a lot of views I deeply, deeply disagree with. I also shared those views eight years ago. People aren’t all-good or all-bad, and our beliefs aren’t simple or static. Are those arguments stemmed in malice? Ignorance? Circumstance or experiences? I don’t know, but I do know that nick has made many contributions to our community in computing history, formal verification, and software engineering. He’s been nothing but respectful and insightful when I’ve talked with him.

                                                                                                                                                                                                                      Does that mean it’s okay to be hostile and malicious? Definitely not. Does that mean it’s okay to be ignorant or come from a different context? To me, at least, it is. And while I don’t know whether he’s being malicious or ignorant or hurt or what, I’m willing to give him the benefit of the doubt. I’m willing to give everybody the benefit of the doubt.

                                                                                                                                                                                                                      We can’t hold everybody up to every standard. God knows I’d fail that, and I suspect everybody else here would, too. Being human is hard, and being a good human is infinitely harder.

                                                                                                                                                                                                                      1. 8

                                                                                                                                                                                                                        To me, that reinforces the fact that having an appropriate downvote label is the right thing. That way, we could downvote that particular comment with a clear reason, without otherwise penalizing or alienating them. In theory, this could even serve as constructive feedback, though I admit that’s a stretch.

                                                                                                                                                                                                                        1. 8

                                                                                                                                                                                                                          100% agree. I am in favor of a rude/snark/hostile/abuse tag as a means of shaping what we want our community to be. I’m not in favor of banning a person for saying something rude now and then (unless there’s clearly malicious intent and/or they are unwilling to stop being rude).

                                                                                                                                                                                                                        2. 2

                                                                                                                                                                                                                          Off topic: have you written anything about you eight years ago vs you today? I’m curious.

                                                                                                                                                                                                                        3. 13

                                                                                                                                                                                                                          If someone writes a shitty comment but you don’t see it, does it exist? In every thread about downvotes and mean people, there’s a similar comment that somebody is surprised at all the bad things going on. Maybe if we stop collecting and highlighting all the bad things fewer people will be exposed to them? It seems contradictory that people who don’t want to read bad comments are so eager to click on links to bad comments. Maybe you were right the first time, when you didn’t read the thread.

                                                                                                                                                                                                                          1. 2

                                                                                                                                                                                                                            I’m hesitant to support a ban here, as they clearly have contributed a bunch to the site too (4486 karma at time of writing). The particular comment linked, and some other sentiments expressed in that thread, are ones that I disagree strongly with on a personal level, but it’s unclear whether that alone is grounds for banning someone.

                                                                                                                                                                                                                            1. 8

                                                                                                                                                                                                                              Disagreeing should not ever be, much less for the invite tree.

                                                                                                                                                                                                                              Off-topic can be taken elsewhere.

                                                                                                                                                                                                                              Why is this such a problem? Just have someone slap “Here be dragons” on it and hide the thread.

                                                                                                                                                                                                                              There is no way to win online.

                                                                                                                                                                                                                              1. 4

                                                                                                                                                                                                                                Sorry, my comment may have been poorly worded. I was trying to convey that I don’t think disagreeing should be grounds for banning, but my years of living in England may have caused unnecessary understatement.

                                                                                                                                                                                                                              2. 2

                                                                                                                                                                                                                                What about his karma per story/comment? Is it low or something?

                                                                                                                                                                                                                                Let’s compare him to his direct peers.

                                                                                                                                                                                                                                5574, averaging 8.48 per story/comment 
                                                                                                                                                                                                                                5232, averaging 3.90 per story/comment 
                                                                                                                                                                                                                                5191, averaging 2.82 per story/comment 
                                                                                                                                                                                                                                4882, averaging 2.86 per story/comment (moderator)
                                                                                                                                                                                                                                4762, averaging 5.44 per story/comment 
                                                                                                                                                                                                                                4488, averaging 2.45 per story/comment <==
                                                                                                                                                                                                                                4165, averaging 6.35 per story/comment 
                                                                                                                                                                                                                                3863, averaging 4.19 per story/comment 
                                                                                                                                                                                                                                3585, averaging 3.55 per story/comment 
                                                                                                                                                                                                                                3098, averaging 3.03 per story/comment 
                                                                                                                                                                                                                                

                                                                                                                                                                                                                                No, this isn’t data that speaks for itself. I don’t have a conclusion.

                                                                                                                                                                                                                                1. [Comment removed by author]

                                                                                                                                                                                                                                  1. 4

                                                                                                                                                                                                                                    I’m not willing to generalize “they made a comment I found unnecessarily inflammatory” to “the contributions of this user are tainted and should be purged from the site”. I don’t think you should either, but that’s your prerogative. If a user has repeated offensive behavior, then banning becomes something that can be discussed, but I don’t think there’s evidence of this (at least not that I’ve seen thus far). And suggesting that a ban is an appropriate reaction without extended examples to back that up seems unnecessarily provocative in and of itself.

                                                                                                                                                                                                                                    1. 1

                                                                                                                                                                                                                                      Well put.

                                                                                                                                                                                                                                      I’d be thrilled if lobsters turned out to be a place where “the culture war” was more of a heated discussion.

                                                                                                                                                                                                                                      1. 2

                                                                                                                                                                                                                                        I wouldn’t. I already have every other forum to wage the culture war. If this is going to be a place where it’s waged, I’d like it if all culture war links and discussions were regulated to a specific thread that could be easily ignored or hidden.

                                                                                                                                                                                                                                        1. 1

                                                                                                                                                                                                                                          I genuinely fear the fragmentation into two camps who refuse to talk will (in years to come) cause a civil war.

                                                                                                                                                                                                                                          Civil discussion with people whose Overton windows barely intersect ours might yet stop it.

                                                                                                                                                                                                                                          1. 1

                                                                                                                                                                                                                                            You seem to be under the misapprehension that I (and potentially others like me) don’t wish to engage at all in politics or in what we’re calling the “culture war”, because we’re scared or weak or obstinate or have any other set of emotional characteristics that make debate hard.

                                                                                                                                                                                                                                            That’s not the case for me at all. I spend nearly all day every day in it, on the internet and in my personal life. I have plenty of avenues to converse with folks who agree and who disagree with me. Speaking hyperbole about a desire to stay focused on a certain subject leading to civil war is frankly hilarious. Politics are important but they are not the most important, and they don’t need to be involved in every single conversation.

                                                                                                                                                                                                                                            1. 2

                                                                                                                                                                                                                                              You seem to be under the misapprehension that I (and potentially others like me) don’t wish to engage at all in politics or in what we’re calling the “culture war”, because we’re scared or weak or obstinate or have any other set of emotional characteristics that make debate hard.

                                                                                                                                                                                                                                              I apologize for coming off this way; not at all my intent.

                                                                                                                                                                                                                                              My point (poorly made) was that the ‘no culture war here’ boat sailed long ago (we have hundreds of active users on each ‘side’ now and they aren’t about to ignore their differences to talk tech).

                                                                                                                                                                                                                                              The best plausible outcome I can imagine is the discussion remaining civil (if heated).

                                                                                                                                                                                                                                              Speaking hyperbole about a desire to stay focused on a certain subject leading to civil war is frankly hilarious.

                                                                                                                                                                                                                                              Sorry, not really the right parent comment to attach that idea to. The concept stands, however; there is an increasing urban/rural political divide (in the USA, Australia and the UK, at least), and this sort of geographic political divide has been a precursor to civil war elsewhere.

                                                                                                                                                                                                                                              It’d take a decade or more of the trend continuing (and it might reverse in the meantime), but I’d not be so quick to discount it.

                                                                                                                                                                                                                                              1. 1

                                                                                                                                                                                                                                                I appreciate your reply. I agree that the boat sailed a long time ago. My hope is that we can keep the discussion focused in as much of the site as possible, and limit the war to defined spaces. Fostering community (or even disunity) is all fine if it’s sequestered.

                                                                                                                                                                                                                                                And I see now that I misunderstood your comment. I agree about the growing divide. I don’t see as grim a future as you, but I certainly fear for how the disparity in value-sets between the two “sides” grows and festers.

                                                                                                                                                                                                                                                (I had a small worry about it earlier this year, but reading this Quora answer/article changed my mind pretty definitively. Even if the young-to-old doesn’t hold, the sheer number of deaths sustained pre-Civil War compared to now is startling and I can’t imagine a modern-day America (or Great Britain/Australia) waiting until it got that bad.)

                                                                                                                                                                                                                                2. 2

                                                                                                                                                                                                                                  Thanks for pointing me to these great comments I would have otherwise missed. I have upvoted them all.

                                                                                                                                                                                                                                  Oh, and by the way, I think you should be banned because I disagree with you. Apparently that is all that matters?

                                                                                                                                                                                                                                  1. 6

                                                                                                                                                                                                                                    It’s dishonest to reduce their position to “you should be banned because we disagree.”

                                                                                                                                                                                                                                    1. 2

                                                                                                                                                                                                                                      No, this is exactly what it is.

                                                                                                                                                                                                                                      1. 3

                                                                                                                                                                                                                                        “Our forum shouldn’t tolerate posts that I believe denigrate activists fighting for the rights of minorities, therefore we should also ban Gophers who disagree with me on the value of generics.”

                                                                                                                                                                                                                                        Terrible argument. Try engaging with the actual content of the post rather than its broad structural properties (disagreement).

                                                                                                                                                                                                                                        1. 3

                                                                                                                                                                                                                                          that I believe denigrate activists fighting for the rights of minorities

                                                                                                                                                                                                                                          I’m an activist that fights for the rights of minorities. I constantly survey them. Huge chunks of minority members disagree with the political views or expectations of the group I called out. Your categorization makes no sense in light of that. Instead, proper categorization is I pointed out that they represented one group among many that was dictating how minorities would live or be treated despite a lot of disagreement by minority members outside their group. They also have no interest in what those minority members have to say. One commenter here even said there was a denigrating term for the latter where they were considered deluded or brainwashed by society instead of simply having different views.

                                                                                                                                                                                                                                          So, I don’t think that’s denigrating “activists fighting for the rights of minorities” if they’re (a) harming the interests or wishes of a lot of minority members, (b) don’t care what they have to say or want a discussion, and (c) will actively censor them or go after their job if they disagreed since that’s the doctrine of those I called out. If anything, that looks like an uncompromising, political movement forcing its views on everyone with a sizeable chunk of liberal non-minorities or minority members agreeing with them but also plenty in disagreement. That means resistance is fighting political pushes, not minorities’ rights. I’m fighting for the rights of all groups that a few on left and right are trying to control, dominate, or punish for non-compliance with those few’s political views. Instead, each group, including within minorities, should have a say on their future with our laws or policies coming from consensuses or compromises from such discussions.

                                                                                                                                                                                                                                          That isn’t what’s happening. The few are dictating the many including against their wishes.

                                                                                                                                                                                                                                          1. 3

                                                                                                                                                                                                                                            I’m not the person who has a beef with you or called for you to be banned. I was giving what I believed to be a more charitable interpretation of their position than “I disagree with you.”

                                                                                                                                                                                                                                            1. 1

                                                                                                                                                                                                                                              Sorry if I jumped the gun. Quite a few of these were about me then I projected onto a quick read of your comment. Then, let’s consider that one directed at whoever that was if they’re reading.

                                                                                                                                                                                                                                        2. 2

                                                                                                                                                                                                                                          I think that’s a disingenuous interpretation of the opinions expressed in this thread as a whole. If anything, the overall impression I’m getting is that we are all concerned about how to get this right such that it doesn’t cause downvoting and banning just because you disagree with someone. You’re right that the specific comment you replied to did bring up the question of whether the poster of the comment in question could be banned, but as you can see from the subthread below it, this is not something most people seem to agree with. As far as I can tell, your comment is at best unnecessarily inflammatory, if not outright trolling — what constructive discussion were you hoping to initiate with your post that couldn’t also be stated in a much less snarky and passive-aggressive way?

                                                                                                                                                                                                                                          1. 4

                                                                                                                                                                                                                                            what constructive discussion were you hoping to initiate with your post that couldn’t also be stated in a much less snarky and passive-aggressive way?

                                                                                                                                                                                                                                            I believe this type of language police that you are trying to practice here is more harmful to humanity than nuclear weapons, global warming, Donald Trump, and even Google; and I will fight my whole life against all effort to police language and thought.

                                                                                                                                                                                                                                            I speak the way I want to speak and absolutely nobody can tell me I speak the wrong way.

                                                                                                                                                                                                                                            1. 3

                                                                                                                                                                                                                                              I’m baffled that you feel as though any of that advocates policing what you’re allowed to think, or what you’re allowed to speak about. That was not at all my intention. I think there is real value to having a conversation be civil, and especially so if it’s with someone I disagree with, and that’s what I’ve been suggesting here. That the way in which you put your argument into words matters, and that you should take care to make it precise and to-the-point. Otherwise it all reduces to petty shit-posting back and forth, which serves no-one and resolves no disagreements.

                                                                                                                                                                                                                                1. 8

                                                                                                                                                                                                                                  If you enjoy this, you may also like The Tim Tebow CFL Chronicles from the same author.

                                                                                                                                                                                                                                  Jon Bois makes some of the most unique, interesting, and funny web… stories? games? content?… I’m not sure what to call them, but they’re all pretty good.

                                                                                                                                                                                                                                  1. 3

                                                                                                                                                                                                                                    I would think that Breaking Madden would appeal here, too.

                                                                                                                                                                                                                                  1. 5

                                                                                                                                                                                                                                    A runtime exception seems like a symptom of programmer error, but not the cause. Is there evidence the bug density is actually less, or the symptoms of bugs just change?

                                                                                                                                                                                                                                    1. 5

                                                                                                                                                                                                                                      It’s safe to assume they still have bugs.

                                                                                                                                                                                                                                      1. 3

                                                                                                                                                                                                                                        Of course, I’d love some real defect stats though.

                                                                                                                                                                                                                                        1. [Comment from banned user removed]

                                                                                                                                                                                                                                          1. 6

                                                                                                                                                                                                                                            I don’t think that’s a fair characterization of the talk/summary. While i haven’t had a chance to watch the specific talk summarized here, i’ve seen Richard Feldman talk about Elm before and doesn’t claim that there are no bugs in their software. He simply states that certain classes of errors (runtime) don’t occur. He typically also lists a number of other benefits to using Elm, all of which, while anecdotal, are credible.

                                                                                                                                                                                                                                            Speaking from personal experience as someone who has built and maintained large & complex javascript apps and who has also built some smaller things with Elm, opting to ignore the claimed benefits and “move on” is a mistake. I see bugs almost daily that would have been prevented or mitigated by the saftey guarantees Elm offers. It’s also mistake to dismiss Elm’s only advantages as static typing. A lot of work has been put into the tooling an error messages for the language, which shows, and makes a marked improvement in the development experience vs javascript.

                                                                                                                                                                                                                                            On a less Elm-specific note, even if static typing only converted runtime exceptions into an equal number of logic bugs (and I don’t think that’s the case), I’d still gladly take that trade-off. In my personal experience, runtime exceptions often take more time and mental effort to diagnose than a bug in business logic. The latter’s symptops usually indicate something about the root cause, and they’re often easier to reproduce.

                                                                                                                                                                                                                                            1. 0

                                                                                                                                                                                                                                              Personally, I’ve recently become convinced that the benefits of type systems are way overstated.

                                                                                                                                                                                                                                              They’re somewhere between difficult and impossible to quantify too.

                                                                                                                                                                                                                                              1. 1

                                                                                                                                                                                                                                                I don’t know what your type system experience has been, but I had a similar view of strong/static typing when I had only encountered it via Java and similar languages. I still find those type systems to be of minimal benefit, so I won’t make the claim that statically typed languages are inherently better.

                                                                                                                                                                                                                                                What I will say is that an algebraic type system with pattern matching, no null values, immutable data, and managed side effects has been a game changer for me. Particularly when paired with the exceptionally good compiler errors in Elm, which I found to be very helpful in getting comfortable with the type system.

                                                                                                                                                                                                                                                If you have worked with similar type systems and found them lacking, I’d be interested to know more about your experience. It’s certainly possible there are issues I just haven’t encountered.

                                                                                                                                                                                                                                                I agree that any type system benefits seem very difficult to quantify. I suspect the amount of benefit varies from project to project as well.

                                                                                                                                                                                                                                                1. 1

                                                                                                                                                                                                                                                  The biggest benefit to a type system I’ve seen is that IntelliJ IDEA can refactor Java code extremely reliably. I can change something in a class and trust that the corresponding changes will be made all over the codebase.

                                                                                                                                                                                                                                                  That’s certainly valuable, and something I’ve missed when working with Clojure.

                                                                                                                                                                                                                                                  To be fair, I don’t actually have any experience with Haskell or OCaml and so on. But even so, I’ve come to the conclusion that the benefits are overstated. Obviously, I could be wrong, but I’ll take my chances :)

                                                                                                                                                                                                                                                  People keep bringing up the supposed benefits of “safety” and “correctness” but what do they even mean in concrete terms?

                                                                                                                                                                                                                                                  How does a language with a strong type system[1] help make your code more “safe” and more “correct” than one without?

                                                                                                                                                                                                                                                  [1] Whatever a “strong (or algebraic!) type system” might mean in practice.

                                                                                                                                                                                                                                                  I think it was yesterday when I saw someone tell someone else that he just hadn’t experienced the “true” power of a strong type system. But if you actually asked him what that means, I bet he wouldn’t be able to answer. He’d probably talk about “safety” and “correctness” though.

                                                                                                                                                                                                                                                  with pattern matching, no null values, immutable data, and managed side effects

                                                                                                                                                                                                                                                  I like the idea of pattern matching. It looks neat and useful. I’m not concerned about null values.

                                                                                                                                                                                                                                                  In fact, Clojure kind of uses null values to your benefit. There’s a lot of stuff that will just do nothing when given null, i.e. nothing. It’s elegant and intuitive.

                                                                                                                                                                                                                                                  I already have immutable data for free with Clojure, and I don’t know what you mean with “managed side effects”.

                                                                                                                                                                                                                                                  1. 1

                                                                                                                                                                                                                                                    To elaborate a bit on Clojure and nulls, suppose you have a variable that generally contains a list of items, but in some situation it’s null.

                                                                                                                                                                                                                                                    A null value signifies “nothing”, right? So what do you get when you take the first list item of nothing? -You get nothing.

                                                                                                                                                                                                                                                    What do you get when you look up the key “:foo” from nothing? -You get nothing, because nothing doesn’t have any keys and values. It’s just nothing.

                                                                                                                                                                                                                                                    And then when you have nothing, you take out nothing from it, and pass it along to something else, that thing also gets or does nothing, and nothing blows up because everything only works with something.

                                                                                                                                                                                                                                                    So I don’t see a problem with null values being “possible” and around. They’re often useful for working with nothing :)

                                                                                                                                                                                                                                                    1. 1

                                                                                                                                                                                                                                                      Let me start by saying that I’m a big fan of Clojure. I own a couple of back-end services at work that are written in Clojure, and there’s no language I’d rather work with on the JVM. it’s a better language than Java, hands down, IMO. There are also specific problem spaces where it really shines and I’m not sure I’d prefer a ML style language, despite my affinty for them. That said, let me try to describe some of the specific things I like about ML style languages, in comparison to Clojure, since we share that as a common refrence point. Perhaps you’ve heard some of them before, but hopefully they’ll provide some insight on where I’m coming from.

                                                                                                                                                                                                                                                      You are right that idiomatic Clojure, and it’s core functions do a lot right in terms of dealing with null values. Behaviors like the ones you’ve described, and tools like the some-> threading macros go far toward removing the pain of unexpected NPEs.

                                                                                                                                                                                                                                                      From my perspective, Clojure’s treatment of null values is a pretty decent approximation of the Maybe type of Elm/Haskell, which is how those languages represent “nothing.’ Without getting into the weeds on type system details, I’ll say that Maybe allows for the behaviors you’ve described, with the additional protection that the compiler will prevent you from making a mistake in your functions that handle null values, such that you can be confident you get the nice behaviors of Clojure’s core functions in all of your functions as well, even if they were written by the intern who’s just getting a handle on this stuff.

                                                                                                                                                                                                                                                      Confident refactoring is part of the value I get out of a statically typed language. In Clojure or Javascript, if I decide to change the structure of some data, I have to remember all of the places where that data is used and update them accordingly. This can be easy or quite difficult depending on the complexity of the application, and I often have a little bit of a lingering feeling of uncertainty after doing so in a larger project. When I’m working in Elm, the compiler will lead me around the project pointing out all of the bits that need to be updated. This provides improved reliability if the code is big or unfamiliar enough that I’d forget, but it also provides a lot of value in that I’m no longer worried about what I might have missed. That’s pretty valuable to me in terms of development experience.

                                                                                                                                                                                                                                                      When I say managed side effects, I’m talking about a system where any side-effects (database writes, http requests, dom updates) are explicit in the type system. Part of the value there is that it’s easy to see which functions do stuff because it’s part of their type signature. That makes it really hard to accidentally do (or not do) things, which is a class of bug I see often. Aditionally, when every side effect is represented as a value returned by a function, it means you can test your side effects without having to use mocks. That’s a really nice experience. I’d much rather give a function some input and verify something about it’s output than spend a lot of time mocking out function calls.

                                                                                                                                                                                                                                                      A nice thing about algebraic types is that you can model some of the invariants of your logic in the type system. Probably the most straightforward example of that is a list that should never be empty. There are often contexts where some data is well represented as a list, but the list being empty is a degenerate state that has to be avoided. With ML style type systems, it’s pretty straightforward (and often readily available) to create a List-like type that can’t be constructed without providing at least one value, which passes off maintaining the guarantee of non-emptiness from unit tests and developer discipline to a robotic helper (the compiler)

                                                                                                                                                                                                                                                      To sum up, Clojure is really good, no arguments there. ML style type systems provide a nice robot helper in the form of the compiler that can reduce the occurence of some types of errors. This can also make for a nicer developer experience, particularly in Elm, where a lot of thought has been put into compiler messages. I’d never recommend dropping Clojure for Haskell or another ML language at least not without some understanding of the problem space, but I would suggest not dismissing the value of ML style type sytems out of hand. Maybe if you need to write a UI sometime, consider giving both Clojurescript and Elm a try, if you have the time. Elm will probably seem weird at first, but it’s a lot better introduction to ML than something like Haskell.

                                                                                                                                                                                                                                                      Oh, and if you want some pattern matching in your Clojure, I’ve found core.match to be pretty useful.

                                                                                                                                                                                                                                                      1. 1

                                                                                                                                                                                                                                                        Thanks for the thorough response!

                                                                                                                                                                                                                                                        with the additional protection that the compiler will prevent you from making a mistake in your functions that handle null values, such that you can be confident you get the nice behaviors of Clojure’s core functions in all of your functions as well, even if they were written by the intern who’s just getting a handle on this stuff.

                                                                                                                                                                                                                                                        A lot of that can also be achieved with conventions. For example, I tend to wrap things in a (when value <..do stuff..>)

                                                                                                                                                                                                                                                        When I’m working in Elm, the compiler will lead me around the project pointing out all of the bits that need to be updated. This provides improved reliability if the code is big or unfamiliar enough that I’d forget, but it also provides a lot of value in that I’m no longer worried about what I might have missed.

                                                                                                                                                                                                                                                        This is a mild benefit :) Mild because at least in principle, you’ll achieve the same result with good tests.

                                                                                                                                                                                                                                                        In larger projects, you’ll basically have to have the kind of tests that would give you that benefit anyway.

                                                                                                                                                                                                                                                        The compiler will just catch that kind of small bugs a bit sooner than the tests would, because the code needs to be re-compiled before it’s tested :)

                                                                                                                                                                                                                                                        I’m talking about a system where any side-effects (database writes, http requests, dom updates) are explicit in the type system. Part of the value there is that it’s easy to see which functions do stuff because it’s part of their type signature. That makes it really hard to accidentally do (or not do) things, which is a class of bug I see often. Aditionally, when every side effect is represented as a value returned by a function, it means you can test your side effects without having to use mocks

                                                                                                                                                                                                                                                        Functions generally “do stuff” anyway? And you’ll be making your code “functional” in nature anyway, right? But I just don’t understand what that stuff means.

                                                                                                                                                                                                                                                        I’m not planning on writing any mocks anyway, because I think they’re (much?) more trouble than they’re worth. What’s the benefit of testing that your code works against not-real-app-code? :)

                                                                                                                                                                                                                                                        I’d much rather give a function some input and verify something about it’s output than spend a lot of time mocking out function calls.

                                                                                                                                                                                                                                                        Yeah, we’re in agreement there :) But that doesn’t require any magic type sauce, does it?

                                                                                                                                                                                                                                                        A nice thing about algebraic types is that you can model some of the invariants of your logic in the type system. Probably the most straightforward example of that is a list that should never be empty. There are often contexts where some data is well represented as a list, but the list being empty is a degenerate state that has to be avoided.

                                                                                                                                                                                                                                                        That sounds highly unusual. Most apps are basically just CRUD anyway, right?

                                                                                                                                                                                                                                                        I’d never recommend dropping Clojure for Haskell or another ML language at least not without some understanding of the problem space, but I would suggest not dismissing the value of ML style type sytems out of hand.

                                                                                                                                                                                                                                                        Well, you’ve brought up some good points.

                                                                                                                                                                                                                                                        But on the other hand, I bet you’d agree that all that type magic doesn’t come without a cost.

                                                                                                                                                                                                                                                        How would you describe the costs of a Haskell/Elm kind of type system? Obviously there’s more code to write, and presumably you’ll need to spend more time thinking about how stuff fits together.

                                                                                                                                                                                                                                                        You’ll need to do thinking with dynamic typing too, but you’ll be free to explore and iterate faster, right?

                                                                                                                                                                                                                                                        But what else?

                                                                                                                                                                                                                                                        1. 1

                                                                                                                                                                                                                                                          Functions generally “do stuff” anyway?

                                                                                                                                                                                                                                                          Some functions are ‘pure’ (you could run them multiple times, or cache their results for performance, etc without changing behavior) and others have ‘effects’ (eg disk writes, network calls, modification of global variables).

                                                                                                                                                                                                                                                          In most languages when editing code the following can happen:

                                                                                                                                                                                                                                                          • You no longer need something you were getting from a function call.
                                                                                                                                                                                                                                                          • So you remove it.
                                                                                                                                                                                                                                                          • But it was populating a cache / updating a counter / otherwise doing something as a side-effect.
                                                                                                                                                                                                                                                          • You have to be careful to avoid a bug.

                                                                                                                                                                                                                                                          When your type system tracks ‘effects’, you can statically see whether it’s safe to remove the code or not.

                                                                                                                                                                                                                                                          1. 1

                                                                                                                                                                                                                                                            Right. I wasn’t thinking of “doing stuff” involving any side-effects.

                                                                                                                                                                                                                                                          2. 1

                                                                                                                                                                                                                                                            A lot of that can also be achieved with conventions. For example, I tend to wrap things in a (when value <..do stuff..>) This is a mild benefit :) Mild because at least in principle, you’ll achieve the same result with good tests.

                                                                                                                                                                                                                                                            Certainly for most of the advantages provided by a nice type system, you can always say “tests/conventions will cover that”. The issue I’ve found with that is that tests and conventions rely on the discipline of the development team to maintain at that level. As projects grow in complexity and live longer, and the team gets larger, it becomes more and more likely that that discipline will slip somewhere, even on the best teams. Nobody’s perfect, and even the best engineers have bad days. I like to think I’m pretty good at that stuff in general, but when the baby is up all night because baby reasons, work still has to get done, but I’m not going to be at my best. Some of our junior developers are really sharp and have a solid future ahead of them, but they don’t have the experience yet to catch everything. Code review helps, but reviewers have off days too.

                                                                                                                                                                                                                                                            It’s not so much that any individual benefit provided by a good type system and helpful compiler is an incredible revelation. It’s the aggregate effect of having a tireless, unrelenting robot helper that always has your back that makes the difference. It means getting back a lot of the cognitive load the team is expending to maintain testing and convention discipline. Again, for an individaul developer, maybe that doesn’t seem like a lot, but in aggregage, it can be a big win.

                                                                                                                                                                                                                                                            How would you describe the costs of a Haskell/Elm kind of type system?

                                                                                                                                                                                                                                                            It’s a bit difficult to describe trade-offs at that high of a level, in much the same way that it’s difficult to answer the question “How would you describe the trade-offs of a Clojure/Javascript type system” Clojure and Javascript both have their own trade-offs, but only a few of them map to the type systems directly. I’ll give it a shot, but I might need to dig into specific languages for it to be meaningful.

                                                                                                                                                                                                                                                            I think you hit the primary trade-offs. If you just need to get something prototyped in a hurry, or you know the project is small and will stay small, you can probably deliver faster with a dynamic type system. I’d make the case that that speed advantage disappears (and possibly reverses) as a project grows in scope and complexity. At some point there’s too much for a person to keep in their head (or it’s been too long) and having the compiler’s help gains some time back.

                                                                                                                                                                                                                                                            I wouldn’t say that you necessarily have to think more to get the same result in an ML style type system, but you certainly have to think differently. Solving problems becomes more about figuring out how to best represent your problem in the type system. That approach takes some learning, but in my experience it wasn’t any more difficult than getting up to speed on Clojure (specifically in Elm, more on that later).

                                                                                                                                                                                                                                                            Another factor to consider is that the compiler for an ML style type system will force you to handle cases that you can skip in other languages. As an example, if you’re pulling from the head of a list, you’ll have to handle the case where the list was empty, even if you know it shouldn’t be at that point in the code. This can be annoying, but ultimately leads to better code if you lean into it and figure out what really needs to happen in that case. It typically means either making sure you’re providing nice error messages in the case where things go wrong, or representing your data in a way that that problem is impossible. Richard Feldman gave a good talk on this topic.

                                                                                                                                                                                                                                                            Certainly my Elm code is not as concise as Clojure, but Clojure is a very conscise language. In some places this is a win for Clojure, in others the explicitness of the Elm code makes things clearer, I think.

                                                                                                                                                                                                                                                            One thing I’m not sure an ML language would be better for is if you have code that does a lot of data transformation without needing to be particularly smart about the meaning of the data. That’s something that Clojure excels at, and is a big part of why I chose Clojure for the serivices I use it in.

                                                                                                                                                                                                                                                            A few more comments contrasting Elm and Haskell and conciseness vs learning curve, and I think I’ll have said most of what I have to say on the subject.

                                                                                                                                                                                                                                                            Haskell focuses heavily on very high-level abstractions, which are powerful, but can be difficult to tie back to specific use cases. Those abstractions help keep code compact, but the focus on them comes at a learning curve cost. When I first started trying to learn Haskell, I found myself struggling to figure out how to apply concepts like “Monad” and “Applicative Functor” to my specific use cases. That was the wrong approach, but the way that Haskell tends to be presented often leads people into that trap. Evan Czaplicki’s Lets be Mainstream talk contains a good critique of this.

                                                                                                                                                                                                                                                            On the other hand, Elm doesn’t have a facility for that sort of abstraction, instead relying on convention. This comes at a cost in terms of less concise code, but it makes the langague much easier to get a handle on, IMO. If you ever make the decision to experiment with an ML style language and have the option, I’d recommend it over Haskell as a starting point.

                                                                                                                                                                                                                                                            Hope that’s not too much of a wall of text to be useful. Ultimately what I wan’t to suggest is just to be careful about dismissing the benefits of different languages until you’ve at least tried them out a bit. At the very least, working with a ML family language might provide some insights and ideas you can bring back to tools you prefer better. Same with Erlang, or anything else. Well… maybe not PHP.

                                                                                                                                                                                                                                                            1. 2

                                                                                                                                                                                                                                                              Hey thank you for another exhaustive and well thought-out post :)

                                                                                                                                                                                                                                                              It’s not so much that any individual benefit provided by a good type system and helpful compiler is an incredible revelation. It’s the aggregate effect of having a tireless, unrelenting robot helper that always has your back that makes the difference.

                                                                                                                                                                                                                                                              Sure, but on the other hand, the same robot is also a tireless hinderer when you’re just trying to get something done :P It never stops either!

                                                                                                                                                                                                                                                              The way people generally speak about “a good type system” - I’m never quite sure what to call it - sounds more like it’s something you’ll benefit clearly and greatly from.

                                                                                                                                                                                                                                                              That’s what I meant with the benefits being “way overstated”.

                                                                                                                                                                                                                                                              You’ve made a good case for there being benefits to a good type system, but even your assessment of them is very measured :).

                                                                                                                                                                                                                                                              I guess that’s what happens when you’re being objective about it!

                                                                                                                                                                                                                                                              I don’t really have a response to everything you’ve said there. But I found this interesting:

                                                                                                                                                                                                                                                              I found myself struggling to figure out how to apply concepts like “Monad” and “Applicative Functor” to my specific use cases. That was the wrong approach, but the way that Haskell tends to be presented often leads people into that trap.

                                                                                                                                                                                                                                                              Is there a way to briefly summarize “the right approach to Haskell”? :)

                                                                                                                                                                                                                                                              1. 3

                                                                                                                                                                                                                                                                Is there a way to briefly summarize “the right approach to Haskell”? :)

                                                                                                                                                                                                                                                                More or less: writing your program is your top priority, learn to use type system features incrementally and at your own pace.

                                                                                                                                                                                                                                                                My first haskell programs were basically python programs: filled with IORefs, and what most haskellers would call un-elegant. It’s super easy to get started that way!

                                                                                                                                                                                                                                                                The biggest issue people have with learning Haskell (and for that matter anything new), is trying to run before they can walk. This leads to frustration, countless monad blog posts, and a large number of programmers who try to rationalize their avoidance of Haskell: hard to reason about, etc.

                                                                                                                                                                                                                                                                1. 2

                                                                                                                                                                                                                                                                  Sure, but on the other hand, the same robot is also a tireless hinderer when you’re just trying to get something done :P It never stops either!

                                                                                                                                                                                                                                                                  This is a subjective point, I think. I’ll say that for me personally, it rarely feels like a hinderance. Most of the time when I fix a complier error, I find I’m thinking “Ooh, that would have been a bug” or “That could easily become a bug someday.”

                                                                                                                                                                                                                                                                  How it seems to others of course will depend on the nature of the project at hand and the prorities in play.

                                                                                                                                                                                                                                                                  You’ve made a good case for there being benefits to a good type system, but even your assessment of them is very measured :).

                                                                                                                                                                                                                                                                  I try to be measured in my assesment of most things. I’m a “It’s all tools in the toolbox” kind of developer. Different languages and frameworks are good for different things. Different people work differently. Organizations have different cultures and constraints. I’m never going to tell anybody I’ve found the one true path to code enlightenment, or that what works for them is invalid because it’s not what works for me.

                                                                                                                                                                                                                                                                  That said, I’m exited about Elm as a tool for building UI applications. It’s resolving a lot of issues I’ve been struggling for years with, some of which I’ve only recently begun to recognize as problems. I’m sure my co-workers are sick of hearing me ramble on about it.

                                                                                                                                                                                                                                                                  Is there a way to briefly summarize “the right approach to Haskell”? :)

                                                                                                                                                                                                                                                                  I don’t have solid advice to give here, but ec’s comment in this thread rings true. My expeirence with Haskell was that I got comfortable with the basics, started getting a grip on the type system, and then I got lost in the weeds of high-level abstraction and didn’t make much progress beyond that. After working with Elm for a while, I can see better where I went wrong, and I may revisit Haskell or another server-side ML family language in the near future as a result.

                                                                                                                                                                                                                                                              2. 1

                                                                                                                                                                                                                                                                This is a mild benefit :) Mild because at least in principle, you’ll achieve the same result with good tests.

                                                                                                                                                                                                                                                                In larger projects, you’ll basically have to have the kind of tests that would give you that benefit anyway.

                                                                                                                                                                                                                                                                The compiler will just catch that kind of small bugs a bit sooner than the tests would, because the code needs to be re-compiled before it’s tested :)

                                                                                                                                                                                                                                                                IMO the best arguments for the power of type systems don’t come from Haskell or Elm but Python and Javascript. That’s because the latter two have gradual typing, which means they’re dynamically-typed languages with a completely optional typechecker. For python, it’s mypy and function annotations. For Javascript, it’s the Typescript language. Since both are relatively recent, there’s lots of code out there that is completely untyped that can be converted to typechecked code without a huge investment of time or money. So we can see what happens when well-designed, well-tested code adds types.

                                                                                                                                                                                                                                                                Results are still tentative, of course, but there’s at least some signs that it’s pretty effective at finding bugs. Even when you already have good tests.

                                                                                                                                                                                                                                                                1. 1

                                                                                                                                                                                                                                                                  If you like “gradual typing”, I’d recommend trying Clojure.

                                                                                                                                                                                                                                                                  Though with Clojure, type annotations are generally added to make your code run faster, not for correctness.

                                                                                                                                                                                                                                                                  Still, Clojure is a beautifully designed and practical language. It’s very well suited for getting stuff done, but does have a bit of a learning curve.

                                                                                                                                                                                                                                                                  Having used Java would help you come to terms with Leiningen though :)

                                                                                                                                                                                                                                            1. 2

                                                                                                                                                                                                                                              To clarify, only 80% of people who don’t have any addons installed are getting e10s-multi this release. As usual, you can set dom.ipc.processCount in about:config if you want to play around with it before officially available with addons.

                                                                                                                                                                                                                                              1. 2

                                                                                                                                                                                                                                                I don’t think that’s accurate. As I understand it only some addons will prevent e10s from being enabled.

                                                                                                                                                                                                                                                There are a couple of resources for checking add-on compatibility that I know of: https://addons.mozilla.org/en-US/firefox/addon/add-on-compatibility-reporter/ https://www.arewee10syet.com/

                                                                                                                                                                                                                                              1. 14

                                                                                                                                                                                                                                                I think that graph would be a lot more useful with some competitors for context.

                                                                                                                                                                                                                                                Anyways, I mostly submitted to talk about how the “taking over” feels as I’ve been doing React the last month or so. As in this example, adding a first component to a page feels a little clunky until it’s updating, then it’s sort of magical. The second or some sub-components are really a breeze.

                                                                                                                                                                                                                                                But! React is intensely tied to the DOM and hierarchically-oriented. So the moment you want to have two components that interact with each other (perhaps fetching/posting data in bulk), React requires that they share a parent component or one be the parent of the other.

                                                                                                                                                                                                                                                Instead of trying to sync the state between different components, you should rely on the top-down data flow.

                                                                                                                                                                                                                                                Because “The Data Flows Down”, if the two interacting components are widely-separated on the page (say, the row of a message in your inbox and a header indication of new messages), React wants you to have a top-level component owning and directing that data through the entire page. And because a component in a sense is a DOM element, it wants to own the rendering of the page as well. You get a finger-wagging (but informative) error message if you try to have one component update another from its render.

                                                                                                                                                                                                                                                So my React experience has been:

                                                                                                                                                                                                                                                • Week 1: Huh, this is weird. I wish the docs weren’t an afterthought.
                                                                                                                                                                                                                                                • Week 2: OK, this makes sense, and it’s a great solution to jQuery soup.
                                                                                                                                                                                                                                                • Week 4: Damn, either I have a stop-the-world rewrite of everything or a godawful hack.
                                                                                                                                                                                                                                                1. 6

                                                                                                                                                                                                                                                  Week 4: Damn, either I have a stop-the-world rewrite of everything or a godawful hack

                                                                                                                                                                                                                                                  Full disclosure: I am not a pro frontend programmer, but I’ve tried many frameworks and libraries (following their guidelines and philosophies), and I always end up at this stage :-( I just stopped doing frontend for fun and went back to server rendered apps.

                                                                                                                                                                                                                                                  1. 3

                                                                                                                                                                                                                                                    React wants you to have a top-level component owning and directing that data through the entire page.

                                                                                                                                                                                                                                                    You might have tried these by now but the whole idea behind Flux/redux is to decouple app level state from components/DOM.

                                                                                                                                                                                                                                                    What do you think of that approach?

                                                                                                                                                                                                                                                    1. 1

                                                                                                                                                                                                                                                      I’ve done about 18 months of work with react, some with flux and some without.

                                                                                                                                                                                                                                                      I would avoid flux until well after you are sure you need it.

                                                                                                                                                                                                                                                      There are much simpler patterns that solve most of the same problems.

                                                                                                                                                                                                                                                      1. 1

                                                                                                                                                                                                                                                        I’m looking at it and will probably fall into it. I’m reluctant because of the high complexity and generally poor documentation I’m finding, but it looks like the only viable choice for my environment.

                                                                                                                                                                                                                                                      2. 2

                                                                                                                                                                                                                                                        I don’t know what your constraints are, and I don’t want to be the “re-write it in X” guy, but have you looked at Elm at all? I’ve found the process of building out apps in small pieces with it to be much like your description of working with React, but it’s not constrained to the component approach. I haven’t built anything large enough with it to say whether or not it has the same “Week 4” issue, but I’d suspect it’s much easier to go from “godawful hack” to well-structured code thanks to the type system and excellent compiler messages. All told, I’m quite impressed with it so far. It seems to have many of the same advantages as React, without some of the pitfalls that come with JS. All of that comes at the cost of a learning curve that’s a bit steeper, and a less robust set of libraries to draw from.

                                                                                                                                                                                                                                                        Caveat: My React and Elm projects have all been fairly small and narrow in scope.

                                                                                                                                                                                                                                                        1. 2

                                                                                                                                                                                                                                                          My constraints are that I don’t get to pick the technology on this one.

                                                                                                                                                                                                                                                          1. 2

                                                                                                                                                                                                                                                            That’s fair. In that case, I suppose I’ll re-frame my comment to something along the lines of “If you come away from this project mostly liking React, but finding shortcomings with it, maybe look at Elm next time you get to pick the tech.”

                                                                                                                                                                                                                                                            I’d also second @sridatta’s comment below recommending Redux if it’s not something you’re using already. I think it could be a clean path for resolving the issue with disparate components that need to update based on the same logical state. I haven’t tried mixing it with stateful React components, but I think it wouldn’t be too difficult to bring it in for a portion of the app, and gradually grow it out to be the primary manager of application state over time.

                                                                                                                                                                                                                                                          2. 1

                                                                                                                                                                                                                                                            Hijacking this comment to offer another option: https://workiva.github.io/over_react/

                                                                                                                                                                                                                                                            Basically a statically typed wrapper around React using Dart. It’s pretty slick. I can also be used with a Flux-like library (https://github.com/Workiva/w_flux).

                                                                                                                                                                                                                                                            I personally like Dart a lot, not everyone does. I also like Elm. It finally feels like we have “good” choices for front end development :-)

                                                                                                                                                                                                                                                          3. 1

                                                                                                                                                                                                                                                            Sounds like you need better state managing. You should check out redux if you haven’t yet.