1. 7

    There seems to be more “intermediate” level Rust posts recently. OP is a good example.

    1. 8

      It’s true, and great to see! It might be in response to the Rust 2018 roadmap, which specifically highlights:

      One of the strongest messages we’ve heard from production users, and the 2017 survey, is that people need more resources to take them from understanding Rust’s concepts to knowing how to use them effectively. The roadmap does not stipulate exactly what these resources should look like — probably there should be several kinds — but commits us as a community to putting significant work into this space, and ending the year with some solid new material.

      <plug shameless=true> For example, I’ve been doing Rust live-coding sessions where we build non-trivial (and useful) Rust crates (e.g., I recently did one on writing an asynchronous SSH client), and those have been pretty well received. It seems like we’re getting more and more Rustaceans who want to try Rust for “real things”, and that’s pretty exciting! It’s good to see the supply meeting that demand.

      1. 6

        (OP) I think it’s a virtuous cycle. I got into Rust because I read some good entry level posts that talked about how it was ready for prime time.

      1. 5

        Results here. Thanks for your patience, @jonhoo, I was traveling.

        SELECT ROUND(upvotes + downvotes, -2) AS bucket, COUNT(id), RPAD('', LN(COUNT(id)), '*') FROM stories GROUP BY bucket
        
        +--------+-----------+------------------------------+
        | bucket | COUNT(id) | RPAD('', LN(COUNT(id)), '*') |
        +--------+-----------+------------------------------+
        |      0 |     40286 | ***********                  |
        |    100 |       360 | ******                       |
        |    200 |         2 | *                            |
        |    300 |         2 | *                            |
        +--------+-----------+------------------------------+
        4 rows in set (0.30 sec)
        

        SELECT ROUND(comments_count, -2) AS bucket, COUNT(id), RPAD(’’, LN(COUNT(id)), ‘*’) FROM stories GROUP BY bucket;

        +--------+-----------+------------------------------+
        | bucket | COUNT(id) | RPAD('', LN(COUNT(id)), '*') |
        +--------+-----------+------------------------------+
        |      0 |     40482 | ***********                  |
        |    100 |       165 | *****                        |
        |    200 |         3 | *                            |
        +--------+-----------+------------------------------+
        3 rows in set (0.29 sec)
        

        SELECT ROUND(counted.cnt, -2) AS bucket, COUNT(user_id), RPAD(’’, LN(COUNT(user_id)), ‘*’) FROM ( SELECT user_id, COUNT(id) AS cnt FROM votes GROUP BY user_id) AS counted GROUP BY bucket;

        +--------+----------------+-----------------------------------+
        | bucket | COUNT(user_id) | RPAD('', LN(COUNT(user_id)), '*') |
        +--------+----------------+-----------------------------------+
        |      0 |           4439 | ********                          |
        |    100 |            562 | ******                            |
        |    200 |            206 | *****                             |
        |    300 |            131 | *****                             |
        |    400 |             92 | *****                             |
        |    500 |             45 | ****                              |
        |    600 |             28 | ***                               |
        |    700 |             31 | ***                               |
        |    800 |             29 | ***                               |
        |    900 |             32 | ***                               |
        |   1000 |             14 | ***                               |
        |   1100 |             23 | ***                               |
        |   1200 |             18 | ***                               |
        |   1300 |             18 | ***                               |
        |   1400 |             13 | ***                               |
        |   1500 |             10 | **                                |
        |   1600 |              3 | *                                 |
        |   1700 |              7 | **                                |
        |   1800 |              8 | **                                |
        |   1900 |              6 | **                                |
        |   2000 |              3 | *                                 |
        |   2100 |              3 | *                                 |
        |   2200 |              4 | *                                 |
        |   2300 |              6 | **                                |
        |   2400 |              4 | *                                 |
        |   2500 |              2 | *                                 |
        |   2600 |              3 | *                                 |
        |   2700 |              2 | *                                 |
        |   2800 |              2 | *                                 |
        |   2900 |              3 | *                                 |
        |   3000 |              2 | *                                 |
        |   3100 |              3 | *                                 |
        |   3200 |              2 | *                                 |
        |   3300 |              2 | *                                 |
        |   3400 |              1 |                                   |
        |   3600 |              1 |                                   |
        |   3800 |              1 |                                   |
        |   3900 |              1 |                                   |
        |   4000 |              1 |                                   |
        |   4100 |              3 | *                                 |
        |   4200 |              1 |                                   |
        |   4300 |              6 | **                                |
        |   4400 |              1 |                                   |
        |   4500 |              2 | *                                 |
        |   4600 |              1 |                                   |
        |   4800 |              1 |                                   |
        |   5000 |              1 |                                   |
        |   5100 |              1 |                                   |
        |   5400 |              1 |                                   |
        |   5500 |              1 |                                   |
        |   5800 |              2 | *                                 |
        |   5900 |              1 |                                   |
        |   6000 |              1 |                                   |
        |   6400 |              2 | *                                 |
        |   6800 |              1 |                                   |
        |   7100 |              1 |                                   |
        |   7700 |              1 |                                   |
        |   8400 |              1 |                                   |
        |   8700 |              1 |                                   |
        |   8900 |              1 |                                   |
        |  10100 |              1 |                                   |
        |  10900 |              1 |                                   |
        |  13500 |              1 |                                   |
        |  14500 |              1 |                                   |
        |  15100 |              1 |                                   |
        +--------+----------------+-----------------------------------+
        65 rows in set (0.15 sec)
        

        nginx grep:

        This log started 2018-02-11 04:40:31 UTC. I edited some tokens and login information out, replacing with [elided].

        1133494 GET /stories/X/Y
         590907 GET /
          71829 GET /comments
          19150 GET /comments.rss
          12020 POST /comments/X/upvote
           9033 POST /stories/X/upvote
           6126 POST /comments
           4591 GET /login
           3681 GET /comments/X/reply
           1660 POST /login
           1429 GET /comments/X/edit
           1301 POST /comments/X/2.0"
           1174 POST /stories/X/save
           1019 POST /stories
            929 POST /stories/X/hide
            637 POST /comments/X/downvote
            535 GET /comments/X/2
            390 POST /stories/X/2.0"
            224 POST /comments/X/unvote
            202 GET /comments/X/3
            198 GET /comments/X/2.0"
            190 POST /stories/X/downvote
            174 GET /login/forgot_password
            150 POST /stories/X/suggest
            148 POST /stories/X/unvote
            148 GET /login/2fa
            132 POST /login/2fa_verify
            109 POST /login/reset_password
             96 GET /comments/X/4
             94 POST /stories/X/unsave
             63 POST /comments/X/delete
             55 POST /logout
             54 GET /comments/X/5
             37 POST /stories/X/unhide
             34 GET /comments.rss?token=[elided]
             29 GET /comments/X/6
             27 POST /login/set_new_password
             19 POST /comments/X/1.1"
             19 GET /comments/X/7
             19 GET /comments/X/1.1"
             12 POST /
             12 GET /comments/X/3170
             10 POST /comments/X/undelete
              9 GET /comments/X/8
              8 GET /comments/X/9
              8 GET /comments/X/10
              7 GET /logout
              5 GET /login/reset_password
              5 GET /comments/X/11
              4 GET /comments/X/
              2 POST /stories/X/1.1"
              2 POST /comments?RzVI%3D3496%20AND%201%3D1%20UNION%20ALL%20SELECT%201%2CNULL%2C%27%3Cscript%3Ealert%28%22XSS%22%29%3C%2Fscript%3E%27%2Ctable_name%20FROM%20information_schema.tables%20WHERE%202%3E1--%2F%2A%2A%2F%3B%20EXEC%20xp_cmdshell%28%27cat%20..%2F..%2F..%2Fetc%2Fpasswd%27%29%23
              2 GET /comments/X/5000
              2 GET /comments/X/12
              1 POST /stories/X/do_we_need_move_away_from_elm
              1 POST /login?utf8=%E2%9C%93&authenticity_token=[elided]&email=[elided]&password=[elided]&commit=Login&referer=https%3A%2F%2Flobste.rs%2Fs%2Fcgqz3p%2Fdo_we_need_move_away_from_elm
              1 GET /login/set_new_password?token=[elided]
              1 GET /login/set_new_password?token=[elided]
              1 GET /login/set_new_password?token=[elided]
              1 GET /login/set_new_password?token=[elided]
              1 GET /login/set_new_password?token=[elided]
              1 GET /login/set_new_password?token=[elided]
              1 GET /login/set_new_password?token=[elided]
              1 GET /login/set_new_password?token=[elided]
              1 GET /login/set_new_password?token=[elided]
              1 GET /login/set_new_password?token=[elided]
              1 GET /login/set_new_password?token=[elided]
              1 GET /login/set_new_password?token=[elided]
              1 GET /login/set_new_password?token=[elided]
              1 GET /login/set_new_password?token=[elided]
              1 GET /login/set_new_password?token=[elided]
              1 GET /login/set_new_password?token=[elided]
              1 GET /login/set_new_password?token=[elided]
              1 GET /login/set_new_password?token=[elided]
              1 GET /login/set_new_password?token=[elided]
              1 GET /login/set_new_password?token=[elided]
              1 GET /login/set_new_password?token=[elided]
              1 GET /login/set_new_password?token=[elided]
              1 GET /login/set_new_password?token=[elided]
              1 GET /login/set_new_password?token=[elided]
              1 GET /login/set_new_password?token=[elided]
              1 GET /login/set_new_password?token=[elided]
              1 GET /comments/X/7000
              1 GET /comments/X/6000
              1 GET /comments/X/5700
              1 GET /comments/X/5600
              1 GET /comments/X/5570
              1 GET /comments/X/5559
              1 GET /comments/X/5558
              1 GET /comments/X/5555
              1 GET /comments/X/5550
              1 GET /comments/X/5500
              1 GET /comments/X/20000
              1 GET /comments/X/200
              1 GET /comments/X/20
              1 GET /comments/X/14
              1 GET /comments/X/13
              1 GET /comments/X/10000
              1 GET /comments.rss?token=[elided]
        
        1. 1

          This is fantastic, thank you!

          Looks like my log grepping wasn’t perfect, but we can clean up the remainder pretty easily. Feel free to edit out any lines from the nginx log with a count < 10. I posted a slightly updated command in a comment a few days ago that includes /recent and /u and makes some other fixes – if you could run that one (mostly for the /recent numbers), that’d be awesome.

          It looks like the comment and count numbers are a little smaller than I expected, which makes the distribution hard to infer from the few resulting data points. Any chance you could re-run the first two commands with ROUND(..., -1) instead (rounds to the nearest 10 instead of nearest 100)?

          1. 2

            The updated nginx grep didn’t work. My sed (identifies itself as sed (GNU sed) 4.4) errored on three latter instances of //. I took a stab at correcting it but couldn’t immediately spot what it should’ve been.

            And, sure, here’s the first two with the smaller buckets:

            +--------+-----------+------------------------------+
            | bucket | COUNT(id) | RPAD('', LN(COUNT(id)), '*') |
            +--------+-----------+------------------------------+
            |      0 |     16724 | **********                   |
            |     10 |     16393 | **********                   |
            |     20 |      4601 | ********                     |
            |     30 |      1707 | *******                      |
            |     40 |       680 | *******                      |
            |     50 |       281 | ******                       |
            |     60 |       128 | *****                        |
            |     70 |        60 | ****                         |
            |     80 |        35 | ****                         |
            |     90 |        16 | ***                          |
            |    100 |         4 | *                            |
            |    110 |         4 | *                            |
            |    120 |        10 | **                           |
            |    130 |         1 |                              |
            |    140 |         2 | *                            |
            |    160 |         1 |                              |
            |    210 |         1 |                              |
            |    250 |         1 |                              |
            |    290 |         1 |                              |
            +--------+-----------+------------------------------+
            19 rows in set (0.32 sec)
            
            
            +--------+-----------+------------------------------+
            | bucket | COUNT(id) | RPAD('', LN(COUNT(id)), '*') |
            +--------+-----------+------------------------------+
            |      0 |     33974 | **********                   |
            |     10 |      4831 | ********                     |
            |     20 |      1029 | *******                      |
            |     30 |       401 | ******                       |
            |     40 |       193 | *****                        |
            |     50 |       103 | *****                        |
            |     60 |        50 | ****                         |
            |     70 |        24 | ***                          |
            |     80 |        18 | ***                          |
            |     90 |        10 | **                           |
            |    100 |         5 | **                           |
            |    110 |         1 |                              |
            |    120 |         5 | **                           |
            |    130 |         2 | *                            |
            |    140 |         1 |                              |
            |    150 |         2 | *                            |
            |    170 |         1 |                              |
            +--------+-----------+------------------------------+
            17 rows in set (0.31 sec)
            
            1. 1

              Huh, seems like something weird happened when I copied it. Here, try this one?

              grep -vE "assets|fetch_url_attributes|check_url_dupe|set_new_password|reset_password|forgot_password" lobsters.log
               | sed -e 's/.*\(GET\|POST\)/\1/'
                     -e 's/\/\(s\|stories\)\/[^\/ ]*/\/stories\/X/'
                     -e 's/\/u\/[^\/ ]*/\/u\/X/'
                     -e '/^GET / s/X\/.\+/X/'
                     -e 's/\/comments\/[^\/ ]*/\/comments\/X/'
               | awk '/^(GET|POST)/ {print $1" "$2}'
               | grep -E ' /(stories|comments|login|logout|u/|$)'
               | sort | uniq -c | sort -rnk1,1
              
              1. 2
                1139580 GET /stories/X
                 594323 GET /
                 159959 GET /u/X
                  72320 GET /comments
                  19287 GET /comments.rss
                  12088 POST /comments/X/upvote
                   9081 POST /stories/X/upvote
                   6160 POST /comments
                   4597 GET /login
                   3704 GET /comments/X/reply
                   1663 POST /login
                   1433 GET /comments/X/edit
                   1322 POST /comments/X
                   1188 POST /stories/X/save
                   1022 POST /stories
                    932 POST /stories/X/hide
                    641 POST /comments/X/downvote
                    542 GET /comments/X/2
                    395 POST /stories/X
                    224 POST /comments/X/unvote
                    219 GET /comments/X
                    207 GET /comments/X/3
                    192 POST /stories/X/downvote
                    153 GET /login/2fa
                    150 POST /stories/X/suggest
                    149 POST /stories/X/unvote
                    137 POST /login/2fa_verify
                    101 GET /comments/X/4
                     94 POST /stories/X/unsave
                     63 POST /comments/X/delete
                     55 POST /logout
                     55 GET /comments/X/5
                     37 POST /stories/X/unhide
                     34 GET /comments.rss?token=[elided]
                     29 GET /comments/X/6
                     19 GET /comments/X/7
                     12 POST /
                     12 GET /comments/X/3170
                     10 POST /comments/X/undelete
                
                1. 1

                  Oops, looks like I forgot /recent again in that query :( Could you run:

                  grep -vE "assets|fetch_url_attributes|check_url_dupe|set_new_password|reset_password|forgot_password|token" lobsters.log
                   | sed -e 's/.*\(GET\|POST\)/\1/'
                         -e 's/\/\(s\|stories\)\/[^\/ ]*/\/stories\/X/'
                         -e 's/\/u\/[^\/ ]*/\/u\/X/'
                         -e '/^GET / s/X\/.\+/X/'
                         -e 's/\/comments\/[^\/ ]*/\/comments\/X/'
                   | awk '/^(GET|POST)/ {print $1" "$2}'
                   | grep -E ' /(stories|comments|login|logout|u/|recent$)'
                   | sort | uniq -c | sort -rnk1,1
                  

                  And also let me know the start time of the log and the time you run the query (so I have an idea of the interval)?

                  The workload generator is also shaping up over here :)

                  1. 2

                    Timestamp at the start is 11/Feb/2018:04:40:31 +0000, end is 27/Mar/2018:01:26:49 +0000. I’m glad to see these stats going into your work, and I look forward to seeing your finished work submitted as a story.

                    1615623 GET /stories/X
                     193915 GET /u/X
                     105680 GET /comments
                      27731 GET /comments.rss
                      23155 GET /recent
                      18235 POST /comments/X/upvote
                      13730 POST /stories/X/upvote
                       9141 POST /comments
                       7137 GET /login
                       5572 GET /comments/X/reply
                       2512 POST /login
                       2233 GET /comments/X/edit
                       2055 POST /comments/X
                       1735 POST /stories/X/save
                       1522 POST /stories
                       1422 POST /stories/X/hide
                       1159 POST /comments/X/downvote
                        801 GET /comments/X/2
                        600 POST /stories/X
                        391 POST /comments/X/unvote
                        347 POST /stories/X/downvote
                        340 GET /comments/X
                        314 GET /comments/X/3
                        261 POST /stories/X/unvote
                        212 GET /login/2fa
                        203 POST /stories/X/suggest
                        191 POST /login/2fa_verify
                        156 GET /comments/X/4
                        125 POST /stories/X/unsave
                         99 POST /comments/X/delete
                         94 POST /logout
                         79 GET /comments/X/5
                         60 POST /stories/X/unhide
                         45 GET /comments/X/6
                         30 GET /comments/X/7
                         15 POST /comments/X/undelete
                         14 GET /comments/X/8
                         13 GET /comments/X/9
                         12 GET /comments/X/3170
                         12 GET /comments/X/10
                          9 GET /comments/X/
                    
                    1. 2

                      Yeah, the workload generator is shaping up pretty nicely! FWIW, it looks like the next scaling bottleneck lobste.rs is likely to experience is Ruby at ~100x current load on an 8-core server, followed by MySQL scaling of the transactional update to the traffic stats around ~2000x current load. So still quite a bit of headroom!

                      Also, I made (yet another) stupid with the query above: it now doesn’t include the frontpage, which is arguably quite important, due to a missed |. Try again? O:)

                      grep -vE "assets|fetch_url_attributes|check_url_dupe|set_new_password|reset_password|forgot_password|token" lobsters.log
                       | sed -e 's/.*\(GET\|POST\)/\1/'
                             -e 's/\/\(s\|stories\)\/[^\/ ]*/\/stories\/X/'
                             -e 's/\/u\/[^\/ ]*/\/u\/X/'
                             -e '/^GET / s/X\/.\+/X/'
                             -e 's/\/comments\/[^\/ ]*/\/comments\/X/'
                       | awk '/^(GET|POST)/ {print $1" "$2}'
                       | grep -E ' /(stories|comments|login|logout|u/|recent|$)'
                       | sort | uniq -c | sort -rnk1,1
                      
                      1. 1

                        Nice to hear we should have smooth sailing for some time.

                         870987 GET /
                         193915 GET /u/X
                         105680 GET /comments
                          27731 GET /comments.rss
                          23155 GET /recent
                          18235 POST /comments/X/upvote
                          13730 POST /stories/X/upvote
                           9141 POST /comments
                           7137 GET /login
                           5572 GET /comments/X/reply
                           2512 POST /login
                           2233 GET /comments/X/edit
                           2055 POST /comments/X
                           1735 POST /stories/X/save
                           1574 GET /recent/page/2
                           1522 POST /stories
                           1422 POST /stories/X/hide
                           1159 POST /comments/X/downvote
                            801 GET /comments/X/2
                            606 GET /recent/page/3
                            600 POST /stories/X
                            391 POST /comments/X/unvote
                            347 POST /stories/X/downvote
                            340 GET /comments/X
                            316 GET /recent/page/4
                            314 GET /comments/X/3
                            261 POST /stories/X/unvote
                            212 GET /login/2fa
                            203 POST /stories/X/suggest
                            191 POST /login/2fa_verify
                            187 GET /recent/page/5
                            156 GET /comments/X/4
                            125 POST /stories/X/unsave
                            125 GET /recent/page/6
                            110 GET /recent/
                             99 POST /comments/X/delete
                             98 GET /recent/page/7
                             94 POST /logout
                             83 GET /recent/page/8
                             79 GET /comments/X/5
                             73 GET /recent/page/9
                             60 POST /stories/X/unhide
                             59 GET /recent/page/10
                             47 GET /recent/page/11
                             45 GET /comments/X/6
                             31 GET /recent/page/13
                             30 GET /recent/page/22
                             30 GET /comments/X/7
                             29 GET /recent/page/14
                             28 GET /recent/page/33
                             28 GET /recent/page/21
                             27 GET /recent/page/28
                             26 GET /recent/page/12
                             25 POST /
                             25 GET /recent/page/24
                             25 GET /recent/page/23
                             25 GET /recent/page/18
                             25 GET /recent/page/17
                             25 GET /recent/page/115
                             24 GET /recent/page/40
                             24 GET /recent/page/27
                             24 GET /recent/page/19
                             24 GET /recent/page/15
                             22 GET /recent/page/80
                             22 GET /recent/page/60
                             22 GET /recent/page/16
                             21 GET /recent/page/37
                             21 GET /recent/page/25
                             20 GET /recent/page/95
                             20 GET /recent/page/31
                             19 GET /recent/page/96
                             19 GET /recent/page/39
                             19 GET /recent/page/30
                             19 GET /recent/page/112
                             19 GET /recent/page/104
                             18 GET /recent/page/35
                             18 GET /recent/page/20
                             18 GET /recent/page/134
                             17 GET /recent/page/42
                             16 GET /recent/page/67
                             16 GET /recent/page/124
                             15 POST /comments/X/undelete
                             15 GET /recent/page/92
                             15 GET /recent/page/84
                             15 GET /recent/page/77
                             15 GET /recent/page/68
                             15 GET /recent/page/66
                             15 GET /recent/page/57
                             15 GET /recent/page/36
                             15 GET /recent/page/131
                             15 GET /recent/page/125
                             15 GET /recent/page/122
                             15 GET /recent/page/121
                             15 GET /recent/page/116
                             15 GET /recent/page/114
                             15 GET /recent/page/101
                             15 GET /recent/page/100
                             14 GET /recent/page/87
                             14 GET /recent/page/59
                             14 GET /recent/page/45
                             14 GET /comments/X/8
                             13 GET /recent/page/98
                             13 GET /recent/page/82
                             13 GET /recent/page/51
                             13 GET /recent/page/135
                             13 GET /recent/page/133
                             13 GET /recent/page/128
                             13 GET /recent/page/120
                             13 GET /recent/page/108
                             13 GET /comments/X/9
                             12 GET /recent/page/94
                             12 GET /recent/page/93
                             12 GET /recent/page/89
                             12 GET /recent/page/69
                             12 GET /recent/page/65
                             12 GET /recent/page/53
                             12 GET /recent/page/52
                             12 GET /recent/page/49
                             12 GET /recent/page/46
                             12 GET /recent/page/38
                             12 GET /recent/page/34
                             12 GET /recent/page/136
                             12 GET /recent/page/132
                             12 GET /recent/page/130
                             12 GET /recent/page/117
                             12 GET /recent/page/102
                             12 GET /recent/page/
                             12 GET /comments/X/3170
                             12 GET /comments/X/10
                             11 GET /recent/page/90
                             11 GET /recent/page/88
                             11 GET /recent/page/79
                             11 GET /recent/page/71
                             11 GET /recent/page/64
                             11 GET /recent/page/129
                             11 GET /recent/page/123
                             11 GET /recent/page/118
                             11 GET /recent/page/109
                             11 GET /recent/page/105
                             10 GET /recent/page/85
                             10 GET /recent/page/78
                             10 GET /recent/page/74
                             10 GET /recent/page/70
                             10 GET /recent/page/63
                             10 GET /recent/page/61
                             10 GET /recent/page/55
                             10 GET /recent/page/43
                             10 GET /recent/page/41
                             10 GET /recent/page/26
                             10 GET /recent/page/126
                             10 GET /recent/page/119
                        
                        1. 1

                          Hehe, yeah, I think you should be good ;)

                          Hmm, now there’s no entry there for GET /stories/X? Did you perhaps miss the first line when copying? Looks like the data is all from the same logging period though, so I can just manually combine them :) Thanks!

                  2. 1

                    I also just realized that we’re missing the vote distribution for comments, which’d be super handy!

                    SELECT ROUND(counted.cnt, -1) AS bucket,
                           COUNT(comment_id),
                           RPAD('', LN(COUNT(comment_id)), '*')
                    FROM (
                        SELECT comment_id, COUNT(id) AS cnt
                        FROM votes WHERE comment_id IS NOT NULL
                        GROUP BY comment_id
                    ) AS counted
                    GROUP BY bucket
                    
                    1. 1
                      +--------+-------------------+--------------------------------------+
                      | bucket | COUNT(comment_id) | RPAD('', LN(COUNT(comment_id)), '*') |
                      +--------+-------------------+--------------------------------------+
                      |      0 |             89907 | ***********                          |
                      |     10 |             27614 | **********                           |
                      |     20 |              2825 | ********                             |
                      |     30 |               637 | ******                               |
                      |     40 |               177 | *****                                |
                      |     50 |                61 | ****                                 |
                      |     60 |                29 | ***                                  |
                      |     70 |                 6 | **                                   |
                      |     80 |                 5 | **                                   |
                      |     90 |                 5 | **                                   |
                      |    100 |                 3 | *                                    |
                      |    150 |                 1 |                                      |
                      +--------+-------------------+--------------------------------------+
                      
          1. 15

            Hey folks,

            Jon messaged me a day or two ago. I gave him the standard answer about these sorts of inquiries: I’m happy to run queries that don’t reveal personal info like IPs, browsing, and voting or create “worst-of” leaderboards celebrating most-downvoted users/comments/stories, that sort of thing. I can’t volunteer to write queries for people, but the schema is on GitHub and the logs are MySQL and nginx, so it’s straightforward to do.

            A couple years ago jcs ran some queries for me and I wanted to continue that especially as the public stats that answered some popular questions have been gone for a while. It’s useful for transparency and because it’s just fun to investigate interesting questions. I’ve already run a few queries for folks in the chat room (the only I can remember off the top of my head is how many total stories have been submitted; we passed 40k last month).

            I asked Jon to post publicly about this because it sounded like he had significantly more than one question he was idly curious about, to help spread awareness that I’ll run queries like this, and get the community’s thoughts on his queries and the general policy. I’ll add a note to the about page after this discussion.

            I’m going offline for a couple hours for a prior commitment before I’ll have a chance to run any of these, but it’ll leave plenty of time for a discussion to get started or folks to think up their own queries to post as comments.

            1. 3

              Wasn’t the concept of Differential Privacy developed to allow for exactly the purpose of querying databases containing personal data while maintaining as much privacy as possible? Maybe this could be employed?

              1. 3

                In this particular case I don’t think the counts are actually sensitive, so it’s unclear that applying DP is even necessary. But I’ll ping Frank McSherry who’s one of the primary proponents of DP in academia nowadays and see what he thinks :) Maybe with DP we could extract what is arguably more sensitive information (e.g., by reducing the bin widths).

                1. 1

                  That seems doable, but I have the strong suspicion that if I wing it I’ll screw something up and leak personal info. So hopefully Frank can chime in with some good advice.

                  1. 4

                    I’m here! :D I’m writing up some text in more of a long-form “blog post” format, to try and explain what is what without the constraints of trying to fit everything in-line here. But, some high-level points:

                    1. Operationally queries one and two are pretty easy to pull off with differential privacy (the “how many votes per article” and “how many votes per user” queries). I’ve got some code that does that, and depending on the scale you could even just use it, in principle (or if you only have a SQL interface to the logs, we may need to bang on them).

                    2. The third query is possibly not complicated, depending on my understanding of it. My sed-fu is weak, but to the extent that the query asks only for the counts of pre-enumerable strings (e.g. POST /stories/X/upvote) it should be good. If the query needs to discover what strings are important (e.g. POST /stories/X/*) then there is a bit of a problem. It is still tractable, but perhaps more of a mess than you want to casually wade into.

                    3. Probably the biggest question mark is about the privacy guarantee you want to provide. I understand that you have a relatively spartan privacy policy, which is all good, but clearly you have some interest in doing right by the users with respect to their sensitive data. The most casual privacy guarantee you can give is probably “mask the presence / absence of individual votes/views”, which would be “per log-record privacy”. You might want to provide a stronger guarantee of “mask the presence absence of entire individuals”, which could have a substantial deleterious impact on the analyses; I’m not super-clear on which guarantee you would prefer, or even the best rhetorical path to take to try and discover which one you prefer.

                    Anyhow, I’m typing things up right now and should have a post with example code, data, analyses, etc. pretty soon. At that point, it should be clearer to say “ah, well let’s just do X then” or “I didn’t realize Y; that’s fatal, unfortunately”.

                    EDIT: I’ve put up a preliminary version of a post under the idea that info sooner rather than later is more helpful. I’m afraid I got pretty excited about the first two questions and didn’t really do much about the third. The short version of the post is that one could probably release information that leads to pretty accurate distributional information about the multiplicities of votes, by articles and by users, without all of the binning. That could be handy as (elsewhere in the thread) it looks like binning coarsely kills much of the information. Take a read and I’ll iterate on the clarity of the post too.

                    1. 1

                      To follow up briefly on this: yes, it would be useful to avoid the binning so that we could feed more data to whatever regression we end up using to approximate the underlying distribution.

                2. 2

                  For those who are curious, I’ve started implementing the workload generator here. It currently mostly does random requests, but once I have the statistics I’ll plug them in and it should generate more representative traffic patterns. It does require a minor [patch](https://github.com/jonhoo/trawler/blob/master/lobsters.diff to the upstream lobste.rs codebase, but that’s mostly to enable automation.

                1. 1

                  @pushcx seems I missed /recent and /u in that list, which would be a little unfortunate. Here’s a fixed command:

                  grep -vE "assets|fetch_url_attributes|check_url_dupe" lobsters.log
                   | sed -e 's/.*\(GET\|POST\)/\1/'
                         -e 's//\(s\|stories\)\/[^\/ ]*//stories\/X/'
                         -e 's//u\/[^\/ ]*//u\/X/'
                         -e '/^GET / s/X\/.\+/X/'
                     -e 's//comments\/[^\/ ]*//comments\/X/'
                   | awk '/^(GET|POST)/ {print $1" "$2}'
                   | grep -E ' /(stories|comments|login|logout|u/|$)'
                   | sort | uniq -c | sort -rnk1,1
                  
                  1. 4

                    From an sysadm pov, that kind of metrics are very interesting for monitoring purposes (I’d just add the latency with it).

                    1. You can quickly see when there is an issue after a deployment (or something else). For example if the number of upvote/hour is at 0 since your last deployment.
                    2. You can see which routes are the slowest/more used so you can improve them
                    3. See when a new deployment kills the performances
                    4. Correlate with other metrics …

                    In my previous and current jobs we’ve been using Prometheus for that and it’s SUPER useful. Although I recon that it’s probably too huge for just a Lobsters app.

                    1. 1

                      It’s a little bit trickier to extract latency measurements from the nginx logs + the db without additional instrumentation. I agree with you though, those kinds of numbers would be very useful for system monitoring. For my purposes, they’re not particularly interesting, as I’d use the resulting workload generator to generate load and then measure system performance.

                    1. 5

                      It’s 3 AM here so I haven’t thought super hard about the data you’re suggesting retrieving, but offhand it seems okay. I do have one clarifying question; this:

                      It could also be extremely useful to other researchers who may want to build solutions for “real” web applications.

                      seems to imply that the data might be shared. How? Will it be fully public? From what I see here I’m pretty sure I’d be fine with that, I’m just wondering :)

                      Also, as a side note, I assume you’ll submit your paper to Lobste.rs when you’re done ;)

                      Those performance results sound super interesting, checking out the links you posted is on my todo list now.

                      1. 5

                        I was imagining that the results of running these queries would be posted publicly by @pushcx, or whomever ends up running them. If you or others are concerned about that, I could just use them directly myself, but I think it’d be advantageous to just make them public :)

                        Hehe, yes, the paper will appear here when it is (hopefully) published.

                      1. 6

                        Shouldn’t this metadata be public (or, at least available to all lobste.rs members), or not given to any 3rd parties at all? If there’s a reason for it not being public, then there’s risk involved with giving it to 3rd parties. (Who may have best data security ever, but lose data for reasons beyond their control)

                        Personally I’d love to see stats that could be generated by scraping the site anyway available to everyone, all the time, it’s interesting to see these kinds of distributions and things.

                        Hit counts which are only available from web server logs seems more sensitive / private and less interesting to me.

                        1. 4

                          Oh, sorry, I wasn’t implying that this data needed to be sent to me specifically; I’d be happy for the metrics to be posted somewhere public. I think there is an argument against making the entire db public though:

                          • Password hashes shouldn’t be public
                          • User e-mail addresses shouldn’t be public
                          • Who voted for/against what shouldn’t be public
                          • “Hidden” lists shouldn’t be public
                          • Private messages shouldn’t be public

                          etc., One option would be to anonymize the database dump before posting it, but I think having some well-defined metrics defined instead will get us quite far with less of a potential for accidentally leaking something.

                          As for scraping the site, I completely agree with you. It would be super useful to get a dump of all stories + comments + vote counts for the purposes of re-constructing (or even just backing up) lobste.rs elsewhere.

                          In my particular case, hit counts are important for a couple of reasons:

                          • It shows which pages are more frequently accessed, which in turn tells me how often different queries are accessed.
                          • If story IDs aren’t masked out, it tells us the popularity distribution of stories (i.e., key skew in database terms).
                          • It tells us access patterns over time – how quickly does the popularity of particular stories wax and wane.
                          1. 7

                            One option would be to anonymize the database dump before posting it

                            What has to be factored in here is that what’s publicly on the site can be compared to what’s in the dump to deanonymize quite a bit of users. That a bit easier given a relatively-small number of commenters and submitters whose votes are already visible on main site.

                            1. 3

                              Related to public backups of the site, a few months ago Archive Team scraped the entire site. I don’t know where to find the archive they made (maybe it all just went into the Wayback Machine?) or if they’re continuing to pick up new stories.

                          1. 1

                            It doesn’t allow people to customize the UI or turn off tracking does it?

                            1. 2

                              Fwiw you can rearrange the ui elements in the browser and write custom CSS to style it if you really want to get deep into things.

                              As for manually injecting elements into the XUL interface, AFAIK your only option is using an addon to hook into the webextensions api.

                              1. 1

                                My understanding is that there is no more XUL interface, or at least that they’re removing access to it with the intent to remove it entirely soon.

                                1. 2

                                  The chrome is still XUL - try debugging the browser with the browser toolbox and you’ll see the XUL elements that make up UI components. afaict they’re just removing the capability for extensions to modify the ui directly.

                                2. 1

                                  Related to this, do you know of a way (using custom CSS) to move the tab bar to the bottom of the window? That’s the feature I’d miss the most from Vivaldi/Opera/older Firefoxes…

                              1. 1

                                I have attempted to write up a comment summarizing the discussion, as well as proposing next steps at https://github.com/jcs/lobsters/issues/376#issuecomment-315805596. Feedback welcome. /cc @pushcx @mcheely @angersock @peter @nickpsecurity @alynpost @orib @hwayne etc.

                                1. 2

                                  I think the problem with this is that everyone defines hostile and abusive differently. There would have to be a clear definition of what this is. It might also help if it was possible to show voting histories of people so there is more transparency and over sight.

                                  1. 1

                                    I agree. See also the discussion of better alternatives further up.

                                  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. 1

                                                                            This is a good post, thanks!

                                                                          2. 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. 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. 3

                                                                                                                    Based on several of the comments in this thread, I think my initial (pessimistic) response to this proposal may have been valid; “inappropriate”, “hostile”, and “abusive” are all dogwhistles for various forms of moralizing censorship.

                                                                                                                    At face value, all of these words have a negative connotation, so the obvious response is “yes, I too dislike bad things and we should get rid of them”. Unfortunately, when people actually go to use these downvote buttons, they’re going to unify the more general concept that we can all agree is bad with something much more specific that we won’t. In particular, “innapropriate” is literally just a stand-in for “violates my social conventions”, which could be anything from blaspheming the prophet to speaking out of turn. “Hostile” often just means “disagrees with me emphatically enough” or “has an opinion which could make someone feel bad about themselves”. I’ve seen “abusive” abused relentlessly over the last few years, mostly with similar connotations to “hostile”. Other dogwhistle generic-negative words include “violence”, “hate”, “problematic”, “disrespect”, etc.

                                                                                                                    We should be extremely careful in allowing these words to become acceptable rationalizations for policing comments. Whether you’re blaspheming against a god or using “her” instead of “xer”, explicit moral judgments shouldn’t be the basis for downvotes. All the other categories are at least somewhat objective.

                                                                                                                    1. [Comment removed by author]

                                                                                                                      1. 1

                                                                                                                        I also found “troll” to be a somewhat odd and vague tag when I first saw it. alynpost had a pretty good summary here that helped give some perspective, though I think you’re right that the label could be improved. I like “low-effort”, though I think that makes the tag cover much less than it does today (and perhaps for good reason), which would make it even more important to introduce a separate tag for content with an unnecessarily hostile or inflammatory tone (though again, making sure that that tag also isn’t too vague or wide).

                                                                                                                      2. 1

                                                                                                                        I agree that all the words used in the title are overly pessimistic and tied to subjective opinion. The goal of this tag should not at all be to mark comments that you disagree with, or that you personally find offsensive. There’s some good discussion near the top with alternatives that I think do a better job of communicating that it’s about the tone of the comment more so than its content. Someone also made the observation that it’s likely hard to be “politely hostile toward a group and simultaneously provide actual constructive criticism”, which I think is a good point: if we require comments to be “civil”, better and more productive discussion is likely to ensue without there having to be any kind of censorship of content.

                                                                                                                      1. 3

                                                                                                                        while there may be a bit more .. bad? .. comments recently, i think it can be handled either with the current voting system or just by ignoring them. maybe we just need a “hide” flag for comments.

                                                                                                                        and: if someone says something vaguely offensive, maybe it’s just a communication issue? talk to each other, please. just “be nice”. and listen.

                                                                                                                        1. 2

                                                                                                                          I completely agree that the site (and the world for that matter) would be a better place if people were nice and listened. And it’s true that the current voting scheme works pretty well, and that in the majority of cases you can simply choose to ignore comments that you disagree with. However, I think the community should strive to improve where it can, and I believe there is still a fraction of comments that fall through the cracks in the current scheme: comments that are written in an overly aggressive, hostile, unconstructive, and/or inflammatory tone. As pointed out in the OP, these are not well covered by existing tags (“troll” comes closest, but isn’t really appropriate), and I believe the community would be better off if something like that were to be added.

                                                                                                                        1. 3

                                                                                                                          It seems to me it is working as intended. You have a knee jerk reaction to somebody you disagree with, try to mark it as troll or incorrect, and feel guilty knowing that it is neither.

                                                                                                                          1. 2

                                                                                                                            I’m not sure where you get the impression that any of this is about knee-jerk reactions? As evidenced by this thread, this is clearly something I spent some time debating (both with myself and others). If it were a knee-jerk reaction to something I disagreed with, I personally wouldn’t downvote (as stated elsewhere, I don’t believe that’s what downvotes are for), but I certainly wouldn’t spend time and effort on trying to improve the community by suggesting changes to how downvotes of this particular nature should be handled.

                                                                                                                          1. 8

                                                                                                                            There’s only one rule that I know of, babies—God damn it, you’ve got to be kind.

                                                                                                                            In honor of Kurt Vonnegut, I propose we add an “unkind” tag. It feels like it encompasses the types of interactions that aren’t constructive.

                                                                                                                            1. 3

                                                                                                                              “unkind” is a good sentiment, though I worry that “unkind” could also be applied to content that shouldn’t necessarily be downvoted. :/

                                                                                                                              1. 5

                                                                                                                                If someone wants to downvote something for a reason that isn’t “accepted,” then they’re not going to give up because the exact sentiment they feel isn’t in the tag list. Already, I assume the default is gonna be “troll” for those situations.

                                                                                                                                If we want this to be a kind place, then maybe we ought to have an “unkind” flag.

                                                                                                                                1. 4

                                                                                                                                  An “unkind” flag seems like a good idea, and makes more sense to me than “unkind” as a reason for downvoting.

                                                                                                                              2. 1

                                                                                                                                “Big meanie”

                                                                                                                              1. 1

                                                                                                                                Would you link some example comments you find difficult to classify using the current categories?

                                                                                                                                  1. 7

                                                                                                                                    The first link you posted being an example of something that you think should be downvoted is exactly why I’m against this proposal. Maybe it’s rude, but it’s a perfectly valid point if you don’t buy into the “make up your own pronouns and then everyone else has to to humor them or face social punishment” thing. It’s similarly rude to criticize religious dogma, but it’s important that people feel free to do it.

                                                                                                                                    1. 5

                                                                                                                                      Regardless of how valid or invalid it is, it’s still a very rude and obnoxious post. “I don’t think people should decide their own pronouns” is something I strongly disagree with but wouldn’t downvote for that. But “schmer ideological agenda from the fact that now paxer is complaining about supposed ‘injustice’ that occurred during xomer time at github” is dragging the discussion down to playground bullying.

                                                                                                                                      1. 4

                                                                                                                                        Can you see how <moral system> setting the terms for how you’re allowed to criticize <moral system> is inherently contradictory to productive debate?

                                                                                                                                        Religions usually forbid making fun under a variety of moral proscriptions like blasphemy, rudeness, or disrespect. However, making fun is one of the best ways to criticize religion. The same is true for the idea that there are 57 genders (or whatever number/cardinality you happen to believe) and that people should have to remember which one every person they know identifies with. It is natural that a stable belief system finds excuses to cut off opposition. In this case, the excuse is that effective opposition is mean/rude/bullying. While I’m sure you earnestly believe that, hopefully you can see that externally to your belief system, this is just the same old defensive censorship we’ve seen for time eternal.

                                                                                                                                        1. 5

                                                                                                                                          Okay, I think I’m approaching this as a question of degree, while you seem to be arguing an existential, that “rudeness should be discouraged” is categorically a threat to productive discussion. If that’s not your stance, we’re arguing logistics. If it is, I’d ask you to compare the following.

                                                                                                                                          “There’s no concrete studies showing static typing meaningfully reduces bugs. As for your examples, there are several reasons they don’t work:…”

                                                                                                                                          vs

                                                                                                                                          “That’s the stupidest fucking shit I’ve ever had to read. There’s no evidence static typing does anything for bug reduction and your examples have more mistakes than they have words. Honestly the fact you’re defending it tells me just how bad a ‘programmer’ you are. Why are you even here?”

                                                                                                                                          Should we, as a community, discourage the latter? Why our why not?

                                                                                                                                          1. 5

                                                                                                                                            The latter conveys very little information despite using many words. I would discourage it on the grounds that inefficient communication wastes my time. On the other hand, “you’re wrong. Studies show static typing sucks.” is no doubt rude by some measure, but at least it’s brief. I’m fine with it, though it’s exactly the kind of remark that draws complaints about meanness.

                                                                                                                                            1. 7

                                                                                                                                              Arguably that isn’t good because it doesn’t specify why static typing “sucks”, but that’s more a quibble. Personally, I’m fine with “you’re wrong, here’s why”. I’m not fine with “you’re wrong, here’s why, fuck you, fuck off. “

                                                                                                                                              Communicating is hard and there’s a lot of grey area.

                                                                                                                                            2. 3

                                                                                                                                              The latter, in my opinion, clearly falls under “troll”, whereas (for example) using the wrong pronoun would not. I think that is a preferable state of affairs to having “not nice” be its own much broader category.

                                                                                                                                              1. 3

                                                                                                                                                My issue with that categorising is that often, the latter is not trolling; full of references, deconstructions, counterpoints, etc. It’s just slathered in insults and venom.

                                                                                                                                                Look, I’m not saying “everyone’s polite” is the perfect community and there’s absolutely nothing wrong with it. You do lose something by enforcing civility. But the rudeness is okay niche is already filled by HN, proggit, and Facebook, and I think keeping lobsters “nice” is more in line with it’s unique values than not.

                                                                                                                                                1. 3

                                                                                                                                                  If it’s designed to provoke a flamey response then it’s trolling, even if it’s true, well-referenced and so on.

                                                                                                                                    2. 3

                                                                                                                                      The one that made me consider this was https://lobste.rs/s/js3pbv/antisocial_coding_my_year_at_github#c_fjbnyx, but I’m sure there are others. I don’t think it’s a widespread problem, but it does seem like there’s a hole in the current list of categories.

                                                                                                                                      1. 5

                                                                                                                                        What is wrong with that comment, besides the fact that you disagree with it politically?

                                                                                                                                        1. 2

                                                                                                                                          If you had to pick from the existing downvote categories, which one-or-two categories best describes your reason for wanting to downvote that comment?

                                                                                                                                          1. 2

                                                                                                                                            I would choose “Troll”, though I don’t believe the user is trolling in this particular instance. It’s not exactly off-topic, because it is related to the issue brought up by the original post. It’s not “incorrect” in any technical sense. It’s also clearly not a “me too” post or spam.

                                                                                                                                            1. 4

                                                                                                                                              Given that you’re inclined to downvote the comment but can’t find a suitable category to justify that act, do you think you could write a reply articulating your disagreement instead?

                                                                                                                                              1. 3

                                                                                                                                                I personally believe that the original post and its associated discussion would be better off without that comment there, rather than another follow-up comment, and the fact that I can’t find an appropriate category is the reason I posted this meta in the first place. I believe the comment should be downvoted because it is unproductive and overly hostile, and it is unclear that a follow-up comment would be any more constructive to the overall discussion of the post. Since the comment is subjective and not based in fact, it is likely that any follow-up would also simply be a subjective response, and that probably wouldn’t help anyone.

                                                                                                                                                1. 17

                                                                                                                                                  For what it’s worth, I think that @nickpsecurity there maintained a polite if heated tone–I don’t agree completely with their viewpoint, but that doesn’t matter since they didn’t attack any of the users here directly in the comments.

                                                                                                                                                  They argued earnestly and in good-faith (see the subthread with @meskarune) and ceded points in a place or two.

                                                                                                                                                  You seem to be arguing for a downvote category for “I don’t agree with this person”, which is not something that we want or need here.

                                                                                                                                                  1. 3

                                                                                                                                                    I agree with you. I would also hate to see this becoming a cencorship-type ordeal. This is also why I only linked to that one comment, as some of the others made in the same thread seemed mostly fine as far as tone is concerned. I object specifically to the linked comment, in particular because it seemed purely inflammatory, and did not contribute positively to the conversation, and I think that’s what such a new downvote category should be limited to. As mentioned elsewhere, I have very rarely seen comments worthy of such a categorization on lobste.rs, but that doesn’t mean it will never happen, nor that the category shouldn’t exist.

                                                                                                                                                  2. 10

                                                                                                                                                    I believe the comment should be downvoted because it is unproductive and overly hostile

                                                                                                                                                    Since the comment is subjective

                                                                                                                                                    The comment does indeed express a strong subjective opinion, at the very least. I do not see what is wrong with that. Fortunately subjective opinions are (nearly) an inherent element of discourse. And not all statements like “I think this.” need to be productive. Exchange of opinion is just that, exchange of opinion.

                                                                                                                                                    Your perception that the comment is hostile is also subjective. I prefer that downvotes are reserved for objectively undesirable material. So if someone holds a subjective opinion you do not like, you can ignore that comment and move on. There is no need to attack it with comments or downvotes.

                                                                                                                                                    1. 5

                                                                                                                                                      If I understand what you’re after here, you’d like something that in this instance fits between troll and off-topic, but aren’t comfortable with any label you’ve come up with to describe the difference. Given the categories you’ve got today you would categorize the comment troll and replies to it (including yours) off-topic.

                                                                                                                                                      The term troll has a long history of use online, I’d encourage you to become more comfortable with the label as a description of acting in bad faith. The nature of abuse online, particularly in technical communities, is that strictly operational (objective) definitions of the behavior will lead to bickering over irrelevant details. It can all be described as trolling and the issue then put aside.

                                                                                                                                                      1. 15

                                                                                                                                                        a description of acting in bad faith

                                                                                                                                                        I think a people get hung up on this idea that their motivation matters with the word “troll”. It’s come up every time someone gets called on trash behavior on the site or in the chat, they always say “nuh-uh, I’m not trying to be a jerk” (with varying levels of believability). I’m not particularly interested whether someone is deliberately trolling or just really so clueless/incendiary. I don’t need a Turing test for what’s in a troll’s heart.

                                                                                                                                                        1. 3

                                                                                                                                                          That seems reasonable.

                                                                                                                                                          1. 2

                                                                                                                                                            is that strictly operational (objective) definitions of the behavior will lead to bickering over irrelevant details. It can all be described as trolling and the issue then put aside.

                                                                                                                                                            That’s a good point. There’s scores of people that do that on purpose on any moderated forum, esp Facebook, They constantly contrive stuff in any grey areas specifically to incite readers or moderators. Articles on moderation say it’s a constant time-sink on big sites.

                                                                                                                                                        2. 2

                                                                                                                                                          I for one do not know how to reply! And I am acutely aware that the thread is part of a culture war, or something… A successful rebuttal would end up on some MRA’s whiteboard, where a team of pros would dissect it and develop an effective counter-rebuttal.

                                                                                                                                                          *sigh*

                                                                                                                                                          1. 6

                                                                                                                                                            Once a conversation has devolved in to talking points between opposing teams the conversation has wandered firmly in to off-topic territory and should be taken to another website that caters to that audience.

                                                                                                                                                            1. 3

                                                                                                                                                              Agreed. And are downvotes the appropriate mechanism to encourage that? (Note: I don’t know if the thread in question got all the way there. I’ve buried that tab for later; it is long.)

                                                                                                                                                              1. 7

                                                                                                                                                                Downvotes are an appropriate mechanism for comments that “aren’t even wrong.” If I were going to do more than downvote comments as first troll and then off-topic (should a belligerent user persist) it would be to clarify which part of the article they’re replying to. Folk should comment on the material presented, not parrot a talking point that could be trotted out for any article discussing a controversial topic.

                                                                                                                                                                If they can’t stay on-point, speak to the material presented, and help all of us make sense of what we’re reading then demonstrate that ability for them or upvote other users that are.

                                                                                                                                                                1. 3

                                                                                                                                                                  I personally just use the hide button to mute the entire story & all of its comments when that kind of thing starts happening, because I don’t want to see the comments continue to show up in my view of /comments.

                                                                                                                                                                  1. 3

                                                                                                                                                                    Well, whether it got too bad or not, I’m still glad you dropped your Trump supporter comment as it made me broaden my use of the term. It was also funny to read when they were summarized so well with same style I labeled SJW’s. The counterpoints in the thread did get me thinking. It’s one of the reasons I participate in them.

                                                                                                                                                                    That said, I already told jcs and others I’d prefer political stuff to not be on Lobsters at all. Just avoids this stuff entirely since there’s only so many ways a political flamewar can come out of a discussion on algorithmic generation of game content as an example. People would have to work at it to point where they’d be undeniably obvious and easy to filter.

                                                                                                                                                              2. 1

                                                                                                                                                                A successful rebuttal would end up on some MRA’s whiteboard, where a team of pros would dissect it and develop an effective counter-rebuttal.

                                                                                                                                                                The irony of that statement is you’re doing it to me w/ sizeable group of people. I was pretty sure it would happen, too, when I wrote the first comment w/ same worry you express. Odds increased the more I wrote. The good news for you is that, if you supported downvoting that stuff, the a lot of this thread agrees with your position. You don’t have to worry about anything. Only dissenters to a popular belief have to worry. You can relax. :)

                                                                                                                                                                Note: I’m relatively relaxed, too, given people are being reasonable. It’s been a discussion of community norms more than an attack. Impressively civil and fair, too.

                                                                                                                                                                EDIT: It just popped into my head this might be seen as an attack or something. Think of it more like me doing an eye roll and then adding perspective to your comment. Maybe worth thinking on what your doing vs what your worried about people doing to you when considering whatever might come out of such situations.

                                                                                                                                                    1. 2

                                                                                                                                                      Interesting – this sounds very similar to a tool I built for MIT 6.852, a class on Distributed Algorithms. Mine is probably a bit more hacky, but does the same job: https://github.com/jonhoo/simio

                                                                                                                                                      1. 1

                                                                                                                                                        https://frinklang.org/ - “Frink is a practical calculating tool and programming language designed to make physical calculations simple, to help ensure that answers come out right, and to make a tool that’s really useful in the real world. It tracks units of measure (feet, meters, kilograms, watts, etc.) through all calculations, allowing you to mix units of measure transparently, and helps you easily verify that your answers make sense. It also contains a large data file of physical quantities, freeing you from having to look them up, and freeing you to make effortless calculations without getting bogged down in the mechanics.”

                                                                                                                                                        This might provide answers closer to what many here in the comments would expect, including throwing an error for the non-time example.

                                                                                                                                                        $ frink

                                                                                                                                                        Frink - Copyright 2000-2015 Alan Eliasen, eliasen@mindspring.com.

                                                                                                                                                        2 min + 3 hours

                                                                                                                                                        10920 s (time)

                                                                                                                                                        2 min + 3 hours -> hours

                                                                                                                                                        91/30 (approx. 3.0333333333333333)

                                                                                                                                                        2 min * 3 hours

                                                                                                                                                        1296000 s^2 (unknown unit type)

                                                                                                                                                        I’ve not looked at insect in depth, but I wonder if the authors are aware of frink as prior art.

                                                                                                                                                        1. 1

                                                                                                                                                          The biggest downside of Frink is that it’s only available as a Java applet, making it pretty inconvenient to quickly access it in a shell (or even through a web browser now that Java is disappearing there too).

                                                                                                                                                          1. 1

                                                                                                                                                            All you need to do is create an alias or a simple script:

                                                                                                                                                            rlwrap java -server -Xmx500M -classpath frink.jar frink.gui.FrinkStarter “$@”

                                                                                                                                                            I totally forgot it was Java, actually. Wall clock time for a null result is reported as 1.2s on a semi-modern VPS using OpenJDK 8, making startup performance not much less painful than, say, Julia.

                                                                                                                                                        1. 2

                                                                                                                                                          Hmm, I feel like there should be an algorithms tag…