Linux kernel drivers in Rust might become an option in the future - <AUTHOR> https://lwn.net/Articles/797828/ <comment><USER2> We're working on it: [https://github.com/fishinabarrel/linux-kernel-module- rust](https://github.com/fishinabarrel/linux-kernel-module-rust)

Check out the demo in PR #122, which lets you create three boolean sysctls and a character device that prints the state of those sysctls in JSON (using serde).

We gave a talk about it last week at Linux Security Summit, I'll submit it once the recording is up :) Slides are at [https://ldpreload.com/p/kernel- modules-in-rust-lssna2019.pdf](https://ldpreload.com/p/kernel-modules-in-rust- lssna2019.pdf) .

<comment><USER3> For those like I was, wondering why a framework is required to write out of tree Linux modules in rust

It's to auto create rust bindings. Link between rust crates and kernel build system

<comment><USER2> Half that, and half to create safe interfaces that feel like native Rust ("ergonomic") and not like you're writing C in Rust.

For instance, the kernel wants you to define a character device by passing a struct with a bunch of C function pointers for how to read, write, seek, ioctl, etc. on the device. Rust has a trait / interface system that's a good match for this use case, so in src/chrdev.rs we define a Rust trait with all these methods, and we have a helper function to create the C struct with FFI- safe function pointers that call the various methods on the Rust trait.

The broad goal is that you don't need to use the "unsafe" keyword to write kernel modules that don't access memory directly themselves (filesystems, network protocols, etc.: device drivers might still need unsafe code where actually talking to the device, but it should be as little as possible). That means the interface used by kernel modules can't involve any unwrapped C functions or raw C pointers.

</comment></comment></comment><comment><USER4> Johannes Lundberg wrote a thesis on doing this with FreeBSD and has a framework [https://github.com/johalun/rustkpi](https://github.com/johalun/rustkpi)

[https://kth.diva- portal.org/smash/get/diva2:1238890/FULLTEXT...](https://kth.diva- portal.org/smash/get/diva2:1238890/FULLTEXT01.pdf%EF%BB%BF)

</comment><comment><USER5> Sounds like the start of something good. Though the comments feel a bit weird. Maybe it's just a strange day for some reason, but I feel like today, I've seen an awful lot of comments from people pushing rewriting things in Rust who know absolutely nothing about the code they're asking about or the problem domain it runs in.

I mean, I personally think Rust is cool and all that, but come on, who does that?

<comment><USER6> > I mean, I personally think Rust is cool and all that, but come on, who does > that?

Some people have an LDS complex (they've found their messiah and want to spread the word). Apparently there's also people who've decided that over-the- top inane "evangelisation" was a good troll and way to turn people off. A significant number of PL threads on /r/programming have a comment attempting this sort of shit-stirring.

<comment><USER7> > _Some people have an LDS complex (they 've found their messiah and want to > spread the word)._

Or, some craftspeople/artisans prefer tools that are a joy for them to use instead of just a means to an end, and have the luxury to choose what they work with.

<comment><USER8> He's referring to people who open issues on random projects asking the project owners to RIIR. These people often don't create much on their own, so they're pushing a "I can't help this cool project because it's not using a language like Rust that would make me capable of contributing, if they rewrote it in Rust then they'd have the reward of my presence in their codebase" when in reality language choice is a small hill to climb

I was recently having someone do this on a web project of mine that's written entirely in ES6 Javascript

</comment></comment></comment></comment><comment><USER9> If I recall correctly, Torvalds already addressed the hype around this ( totally not new ) idea by pointing out that memory errors really make up only tiny part of the intricacies of building a kernel. This idea predates Rust, and for better or worse will probably outlive it.

<comment><USER10> He also said that most of the issues with writing kernels have nothing to do with choice of programming language, but instead hardware compatibility. Neither Rust nor anything else could help this.

<comment><USER9> Here's the source of the original quote: [https://www.infoworld.com/article/3109150/linux- at-25-linus-...](https://www.infoworld.com/article/3109150/linux-at-25-linus- torvalds-on-the-evolution-and-future-of-linux.html) Admittedly, kernel and driver development are different things. The original quote was to do with kernel development.

"That's not a new phenomenon at all. We've had the system people who used Modula-2 or Ada, and I have to say Rust looks a lot better than either of those two disasters.

I'm not convinced about Rust for an OS kernel (there's a lot more to system programming than the kernel, though), but at the same time there is no question that C has a lot of limitations.

...I don't think you actually solve any of the really hard kernel problems with your choice of programming language. The big problems tend to be about hardware support (all those drivers, all the odd details about different platforms, all the subtleties in memory management and resource accounting), and anybody who thinks that the choice of language simplifies those things a lot is likely to be very disappointed."

I disagree with him about Ada, for what it's worth, but the overall point is correct. The real problems of kernel development aren't things a borrow checker will help with. A big part of developing a kernel takes place before management of heap memory is even relevant. All this being said. For user- space applications, Rust has a lot to offer.

<comment><USER11> I read that slightly differently. I read that as: "even after putting the shoes on, the marathon still needs to be run". So yes, lifting reasoning burden away from eg. function interfaces (owning vs uniquely borrowing vs shared borrowing), lifetime problems (and so on), precisely enables everyone to put/spend more "effort" on the remaining difficulties.

</comment></comment></comment></comment><comment><USER12> Yeah, I would not like this becomming required. Now, it's still fairly manageable to keep developing and building my own kernels. You need binutils/gcc for your host platforms, and that's about all. And I have 3 architectures I build for.

If I also need clang and rust for all the platforms, and learn rust, for some questionable benefits... That would make things hard.

<comment><USER13> > If I also need clang and rust for all the platforms, and learn rust, for > some questionable benefits

I can see the arguments against needing 2 different C-compiler toolchains, not to mention how this may limit target platform-support to the minimum subset supported by both compilers...

But to argue that Rust only provides "questionable benefits" is really not reasonable.

Even the hipster Javascript crowd has discovered that providing more information to a/the compiler (Typescript) almost unconditionally provides higher code-quality and better results.

When will the C-crowd do the same? When will they shed their "I know better than any machine"-like elitism?

<comment><USER12> Read it as "Questionable benefits in the context of the kernel."

</comment></comment></comment><comment><USER14> I think we should just evaluate Rust based on its merits. Ignore fanboys and ignore the opposite as well.

In other words, Rust is just another tool. Regard it as one without subjective emotions either way. Be constructive, don't only look for faults, but also ways how to overcome them. But don't close your eyes from them either. Acknowledging weaknesses is the first step to improvement.

Some possible questions and measures to consider below. I'm sure there's a lot more to add on this list.

1) Stability. Other than for development, unstable kernels are a no go. Can possible negative effects be mitigated?

2) Security is often what Rust is expected to bring on the table. So is Rust actually more secure in the environment kernel requires? This could be tested by "clean-room" reimplementing something that is historically known to have many security issues.

3) Are there showstoppers for kernel builds? Interoperability, build performance, architectures unsupported by Rust, etc. If so, could these be mitigated? Conversely, is there something positive Rust could provide?

4) How does it affect runtime performance? Average case. Bloat issues? Any pathologic cases? Any benefits?

5) What other unexpected it brings on the plate? Both benefits and disadvantages. For example, could Rust types also be used to catch errors other than memory related, like invalid states?

6) <Your consideration here or above>

<comment><USER15> > 6) <Your consideration here or above>

"Would C++ fare better or worse than Rust on these fronts?" is the question I would have.

<comment><USER16> I was a C++ developer a long time ago (I've actually used CFront as a professional -- that's how long ago ;-) ). C++ is a fine language. You can write good code in C++. I've worked on large projects that were extremely stable and easy to work with. It can be done.

The one thing I will say about C++ from long ago was that you needed to be skilled at C++. You needed to understand it and you needed to know how to write code that wasn't going to cause you problems in the future. You also needed to work on a team that allowed you to use your skill. The language is so different now that it's practically I different language so I don't know how much of that still remains, but I guess quite a lot.

I've been doing some Rust recently. I like Rust. There are bits I think still need work, but generally it's a fine language. The biggest difference I see between it and C++ from long ago is that Rust helps you _a lot_. It's very convenient and friendly. It also scolds me when I do something stupid, which I appreciate.

However, I don't really feel like I need to know less than I did as a C++ programmer. With Rust, it helps you, but if you start causing problems for yourself you can be in for a world of hurt trying to understand what the compiler doesn't like. It will catch that thing that slips by you, which is awesome, but you _still_ have to understand what's going on under the hood.

So in my book, it feels very much like C++ with a super friendly and super powerful linter. I mean it's really, really nice, but I don't think you could just hire random people off the street and give them a Rust compiler and say "This will protect you".

So to answer your question (finally), I think you won't really fare much better or worse, but the journey seems a little bit more relaxed with Rust.

<comment><USER17> The failure modes of "can't get code to compile" and "something weird and possibly exploitable could happen at runtime" may both be frustrating to developers, but they're worlds apart in practice. Looking at it from the point of view of a kernel maintainer evaluating submissions, the former is not your problem --- in fact it keeps the bad code from ever coming to your attention --- but the latter creates ongoing problems for you.

<comment><USER18> This is true, but there's also a lot of trivial busy-work and confusion that the compiler and language foist on you that isn't security related. Like the fact that you always seem to have a &str when you actually need a String or vice-versa and your code is littered with .to_string() everywhere. Or figuring out what type your iteration is at a particular stage and why you can't call map() on it. Or figuring out the vicissitudes of what collect() will accept and convert for you and what it won't. Or clumsily dealing with a Vec of Results when what you really want is a Result with a Vec

Having a really sophisticated type system means...dealing with types a lot. I love Rust - especially ADTs and everything being an expression - but I wouldn't call it more productive than C++. And I think that was mikekchar's point?

<comment><USER19> Just wanted to make sure you knew, you can use `.collect()` to convert an iterable of results into a Result with an iterable.

See the 6th example here: [https://doc.rust- lang.org/std/iter/trait.Iterator.html#examp...](https://doc.rust- lang.org/std/iter/trait.Iterator.html#examples-24)

</comment></comment></comment></comment></comment></comment><comment><USER20> Check out the HotOS'19 paper from our lab :) [https://danyangzhuo.com/papers/HotOS19-Stone.pdf](https://danyangzhuo.com/papers/HotOS19-Stone.pdf)

</comment><comment><USER21> Some important links that motivated this story...

[https://hub.packtpub.com/rust-is-the-future-of-systems- progr...](https://hub.packtpub.com/rust-is-the-future-of-systems-programming- c-is-the-new-assembly-intel-principal-engineer-josh-triplett/)

[https://lwn.net/Articles/797558/](https://lwn.net/Articles/797558/)

</comment><comment><USER22> Could we have universal standardized hardware interfaces for basic functionality of hardware devices? For example at least get the same programming interface for basic functionality of Wifi chips. Then one could have more accelerated drivers which makes use of all the specific hardware features of chips.

Network chips has started to offer a common programming api as far as I understand Switch Abstraction Interface (SAI). Could one do this for more different than network hardware classes?

</comment><comment><USER23> Existing languages in the Linux kernel - [https://www.openhub.net/p/linux/analyses/latest/languages_su...](https://www.openhub.net/p/linux/analyses/latest/languages_summary)

Unsurprisingly it's mostly C (95.6%) with a bit of C++ (2%) and Assembly (1.6%) and tiny bits of make (0.2%), shell scripts (0.3%), Python (0.1% and Perl (0.2%). I'd guess it'd be at least half a decade before Rust cracks 1% here.

<comment><USER24> > with a bit of C++ (2%)

That sounded strange to me, since the dislike of C++ within the Linux kernel is well-known, so I took a quick look. All uses I found were on user space tools, not in the kernel itself, and all of them (except for a "check if this compiles" test file) are in C++ because they have to call into libraries with a C++-only API (LLVM and Qt).

</comment></comment><comment><USER25> I think setuid executables would be a good place for rust or go, but I have reservations about the kernel itself.

</comment><comment><USER26> Genuine question: who restricts the sourcecode language in which a kernel driver is written?

I'm thinking machine opcodes in a .o file, to be linked wherever, are only of a concern if they're doing function call linkages (and maybe kernel space vs user space transition bookkeeping) improperly?

</comment><comment><USER27> C++ written with -pedantic -Wall, smart pointers, and clang static analysis tools, ASan, valgrind, etc. enabled is just as safe as Rust. Change my mind.

<comment><USER28> Valgrind is runtime... You're not going to catch a double free that you don't hit on the common path.

Not to mention race conditions in memory accesses.

</comment></comment><comment> stef-13013 Did you talk about that to Linus :):) ?

</comment><comment> non-entity I have Rust on a long backlist of things to check out, but the idea of writing kernel drivers in something other than C is interesting to say the least.

</comment><comment><USER29> Give it as an exercise to college grads

</comment><comment><USER30> This is running MO for comp sci: adding loads of complexity for a minor gain.

Compile-time borrow-checking works for self-contained applications--the compiler has a complete picture of what's going on. Move that model inside kernel space--where blobs are being mutated across separately compiled modules, different chipsets (CPU/DMA/GPU), sometimes even in parallel--might as well wrap the whole thing in a big `unsafe` block.

Somebody's going to say " _Oh, you 're exaggerating. It's not that bad in Redox._" Redox doesn't have to integrate with 28 years of kernel written in C.

<comment><USER17> Rust borrow-checking doesn't depend on a closed-world assumption. Federico converted librsvg to Rust and it worked fine.

<comment><USER30> " _Foreign functions are assumed to be unsafe so calls to them need to be wrapped with unsafe {} as a promise to the compiler that everything contained within truly is safe. C libraries often expose interfaces that aren 't thread- safe, and almost any function that takes a pointer argument isn't valid for all possible inputs since the pointer could be dangling, and raw pointers fall outside of Rust's safe memory model._"

[https://doc.rust-lang.org/nomicon/ffi.html](https://doc.rust- lang.org/nomicon/ffi.html)

<comment><USER31> Not sure what you're getting at. Rust can't catch all bugs, so it's not worth having it to catch the ones it can?

<comment><USER30> It is right there in black-and-white: 28 years of C to be interfaced with -> more FFI -> more unsafe blocks -> less that Rust can verify.

I don't think there will be enough left outside of unsafe blocks to justify a second toolchain here. If the kernel were also in Rust, it would be a different story.

<comment><USER32> It's quite the opposite. Wrapping existing C code in Rust FFI can make it safer.

Rust side can add missing type information to C interfaces. Things that are "RTFM" for C, such as thread safety of the types involved and which function arguments are borrowed/owned, can be expressed on the Rust side even for C code, and automatically enforced when it's used via FFI. This adds a layer of safety to existing C code.

<comment><USER30> " _Using C libraries in a portable way involves a bit of work: finding the library on the system or building it if it 's not available, checking if it is compatible, finding C headers and converting them to Rust modules, and giving Cargo correct linking instructions. Often every step of this is tricky..._"

Adding loads of complexity (i.e. more opportunities to screw something up) for a minor gain.

<comment><USER32> Note that this mess isn't created by Rust. The difficulty of building arbitrary C libraries on all platforms _comes from C_.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER33> Pardon the slightly fanboyish comment, but I fail to remember a single negative response regarding Rust. Considering its domain I'm more than impressed.

<comment><USER34> There are two types of languages, those people complain about and those nobody uses, rust is closer to the later at this point in time. Outside a few filter bubbles like HN rust is virtually unknown or little thought about.

I think the biggest issues are reliance on cargo (the systems language that ignores your system libraries) and lack of a stable ABI, this is why it will never replace C. Many people find the borrow checker aggravating. Even rust fans seem to find the compile times far too long. As with all languages some will find it too high level and others too low level, should it throw exceptions or should it use error codes, etc.

And let's not forget the rust fans brigading any disagreement.

edit - do you mean in general or for this specific issue on the LKML, my reply assumed in general.

<comment><USER35> > Outside a few filter bubbles like HN rust is virtually unknown or little > thought about.

It's still pretty new, but it's gaining adoption quicker than what I would have expected. It's now used in Google, Facebook, Amazon, Dropbox and Microsoft. Most of the time it's for some niche or experimental project, but it's still an interesting trend.

> I think the biggest issues are reliance on cargo (the systems language that > ignores your system libraries)

This is not accurate. There is no "reliance" on cargo, you can just use plain rustc and it would work. And you can of course link dynamically to a system's library: by default Rust's binaries are even linked with the system's libc actually, and AFAIK most external C dependencies are linked that way (bindings to openSSL for instance).

> and lack of a stable ABI

Many people would love to have a stable ABI, but it's way too early for that because it would freeze Rust development, while there are still a lot of things that need to be improved in the language.

I agree with you on compile times though and I hope things continue to improve in that regard.

<comment><USER33> > gaining adoption quicker than what I would have expected

Basically that's what I was trying to say but failed somehow.

</comment></comment></comment></comment><comment><USER36> Looking forward to enough Rust adoption that people stop seeing it as a magic bullet. Once it's in large scale use and there are still errors that lead to security problems maybe people will get over themselves.

<comment><USER17> Nothing's ever perfect but there is empirical evidence that Rust code is far less vulnerable than C or C++ code. For example this list of bugs found via fuzzing: [https://github.com/rust-fuzz/trophy-case](https://github.com/rust- fuzz/trophy-case) Almost none of those bugs were security-sensitive. Compare to similar lists for C and C++ projects, e.g. [http://lcamtuf.coredump.cx/afl/](http://lcamtuf.coredump.cx/afl/).

<comment><USER37> I am not exactly sure of the point of this comparison. The OP got it right. There is not enough adoption. Of course you will find less programs with bugs, because there are less programs written in Rust! That, and in case of rewrites, they are almost nowhere complete functionality-wise.

I see that there is one use-after-free bug, and lots of out of range access bugs. How does that happen?

<comment><USER38> > I see that there is one use-after-free bug, and lots of out of range access > bugs. How does that happen?

The use after free [1] is because of unsafe code, specifically, a function that says "trust me, I know what the type of this is."

I only checked a few of the "out of bounds" bugs, and they all are panics [2], which are not memory unsafe. Of course, someone could cause a real one with the use of unsafe.

1: [https://github.com/shepmaster/sxd- document/issues/47#issueco...](https://github.com/shepmaster/sxd- document/issues/47#issuecomment-311688608)

2: [https://github.com/image-rs/image- tiff/issues/28](https://github.com/image-rs/image-tiff/issues/28)

<comment><USER37> I know that I could probably find this out myself but is there a command-line switch that would make the use of _unsafe {}_ a compile-time error? Of course the alternative is just a quick grep for it, but personally I would feel safer if the code did not compile at all in the presence of a compiler switch/flag and unsafe blocks.

<comment><USER38> So, there is, but it only works for _your code_. You can do it via an attribute in the source (#![forbid(unsafe)]) or via a command line flag (cargo rustc -- -D unsafe).

This will not check your dependencies. You can use other tools, like cargo- geiger [https://github.com/anderejd/cargo- geiger](https://github.com/anderejd/cargo-geiger) to check your dependencies.

And of course, at the lowest levels, doing anything useful requires unsafe, since your operating system doesn't expose a Rust API to do tasks.

<comment><USER37> Thank you! I will use that attribute wherever I can.

</comment></comment></comment></comment></comment></comment></comment><comment><USER39> Wouldn't modern C++ be better suited than Rust because it's closer to C?

I know that old C++ got some bad reputation in the past but I think it's time to reconsider that with the changes that started with C++11. The only area where Rust really is better is the management of lifetimes and its associated higher memory safety.

<comment><USER40> I'll bite.

C++ has quite a few powerful features that Rust doesn't have, including better platform support, but Rust has a lot of things going for it that would make it well suited to kernel development:

* no exceptions, and language features and a type system that is set up for explicit error handling - the kernel would need to disable C++ exceptions anyway, making error handling just as cumbersome as in C.

* the ML inspired type system helps to write correct code (eg sum types)

* the language is not riddled with UB and legacy C support induced cruft. You can opt in to unsafety with `unsafe` blocks, but these can be tightly scoped to where it's necessary and can be especially scrutinized

Especially in the context of a kernel, the increased safety guarantees are worth a lot.

<comment><USER41> On the flipside, the kernel developers are a group of people with a detailed understanding of what makes C unsafe, and how to watch out for it in code reviews. I'm not saying that every bug gets caught in code review, not by a long shot, but the kernel developers as a group don't have any experience with reviewing Rust code, let alone reviewing it for unsafe or undefined behavior.

We're still pretty early in Rust's lifecycle, and there is still a lot to be learned about what `unsafe` can really break, especially at-a-distance. The UCG WG is doing this work in [1], but I can understand if the kernel developers want to hold off on using Rust for more central parts of the kernel until this work is farther ahead.

[1] [https://github.com/rust-lang/unsafe-code- guidelines](https://github.com/rust-lang/unsafe-code-guidelines)

<comment><USER23> In my uninformed opinion, it's fairly simple to write Rust code that's easy to review. Write unsafe as little as possible and if you need to, put that unsafe block in as small a module as possible. That's mostly it.

I think it might be at least half a decade before Rust starts being used in more central parts of the kernel (if at all) because adding a second language significantly complicates the build process. Also, it is blocked on Rust supporting _all_ the platforms that Linux supports just as well. It would be disastrous for Linux to drop support for it's long tail of platforms because Linux could no longer be built for those platforms.

<comment><USER41> > Write unsafe as little as possible and if you need to, put that unsafe block > in as small a module as possible. That's mostly it.

I don't have links at hand, but there were already instances where a bug in an `unsafe` block had effects in completely different (and seemingly random) places. Discovering all the ways in which `unsafe` blocks can cause unsafe or undefined behavior in unrelated places is still an active field of research.

> It would be disastrous for Linux to drop support for it's long tail of > platforms because Linux could no longer be built for those platforms.

Which is why driver modules are a good place to start. Drivers are specific to certain pieces of hardware which are oftentimes only used with CPUs of a specific ISA.

<comment><USER6> > Discovering all the ways in which `unsafe` blocks can cause unsafe or > undefined behavior in unrelated places is still an active field of research.

unsafe blocks can cause UB _period_ , UB means the program is broken but the UB can _manifest_ anywhere.

C or C++ don't make this any better, they just make _the entire program_ into a source of UB.

<comment><USER41> Exactly. But many Rust proponents do not communicate that clearly. They often make it sound like unsafe blocks contain the undefined behavior and prevent it from spreading to the rest of the program, which they don't.

<comment><USER6> That's very true. The value of unsafe blocks is that they restrict the number of places you need to inspect / audit for UBs.

They're just places where you're telling the compiler "I know what I'm doing", once an unsafe blocks has created an UB thing can break anywhere.

<comment><USER42> I don't think that's really true, let's suppose that your unsafe code has a presupposition that cause an UB if not met. If this is a bug and you can remove the presupposition, great, but is-it always possible without performance issue? If not, then you have to audit all the usage of the unsafe part.

<comment><USER6> > I don't think that's really true

It is though.

> let's suppose that your unsafe code has a presupposition that cause an UB if > not met. If this is a bug

It is, or the code should not present as being safe.

> but is-it always possible without performance issue? If not, then you have > to audit all the usage of the unsafe part.

If it's not possible to fix it (or if you don't want to fix it) _then the wrapper for that unsafe code should also be unsafe_ , and it should document its assumptions such that callers can know what to look for.

The tautological contract is that _safe rust is safe_. If it's possible to trigger UB by passing the "wrong" value to a rust function then that function is _not_ safe and _must_ be marked as unsafe itself. An unsafe block means the compiler trusts that you know what you're doing, which is different from _lying to the compiler_ , which is what you're apparently advocating / defending.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER43> At the beginning, C was a handy language with some traps and pitfalls. Thanks to standardization committees and insane optimizers, it has become a minefield of undefined behaviors and security issues. Linux is coded in C because of the "C is the desert island language". This should change and I dream to see something that will replace C at least in the kernel.

</comment><comment><USER44> Nice development! Would be interesting to see something like amdgpu rewritten in Rust.

<comment><USER45> Why? Throwing away something useful and reimplementing it again the same from scratch seems like a silly waste of time.

<comment><USER46> Slowly rewriting it to Rust does sound beneficial (I wouldn't be seeing memory leaks) but I don't think the c(++)/Rust interop is good and seamless enough for that?

<comment><USER47> Strictly speaking Rust doesn't prevent memory leaks. You can easily create cycles in reference counted types, or `std::mem::forget` something. No use of unsafe required either.

That said as long as you don't build graphs with reference counted types it's hard to leak memory by accident.</comment></comment></comment></comment>


We got hacked - <AUTHOR> http://www.plumbr.eu/blog/we-got-hacked

<comment><USER2> "my fellow co-founder who just happens to have a lot more experience in the field of hacking and getting hacked"

I see irony in the "getting hacked" part. But seriously, if he is more experienced, then why do they have machines unpatched like that for 6 months?

"it seems it was indeed a kid who did not understand how to install a proper rootkit and cover up his tracks"

It is rather bold to be posting about how _you_ just got hacked by not applying simple patches, and to then bash the "kid" who couldn't install a proper rootkit.

<comment><USER3> That is indeed the case - both players in this match were not careful. We are open about our shortcomings and also think that the other player was not too careful to say the least ...

</comment></comment><comment><USER4> _no customer data was exposed during the attack_

How did you confirm that?

<comment><USER5> That's a good question. Given some of the "fundamentals" of security that were obviously ignored, I'm reluctant to believe that they can make that assertion with any confidence.

</comment></comment><comment><USER6> This whole post reads like "How Not to Use AWS" instruction guide.

If you're running anything important on a single EC2 instance, you're doing it wrong. If you're logging in and manually configuring an EC2 instance, you're also doing it wrong.

<comment><USER7> That's helpful, cheers.

How about letting us lesser plebs know how to do it properly then?

<comment><USER8> This is probably beyond the scope of such a thread, but configuration automation via Chef or Puppet is where you'd start.

<comment><USER9> You really think that's the best place _to start_?

I would begin with a figuring out a more secure, desired configuration before trying to automate it. (Especially given, IMHO, the very steep learning curve for Chef & Puppet)

</comment></comment></comment></comment><comment><USER10> Clear and open about it. Good.

</comment><comment><USER11> Asked my team to review their Jenkins passwords and Jenkins user rights...

<comment><USER12> I don't know if you're doing this, but I think it's a bad idea to leave Jenkins publicly accessible. Indeed, IMHO, it's a bad idea to leave stuff that should not be accessible by the general public publicly accessible. Especially things that have access to your code.

Do ask your team to review passwords and user rights, but also put this service and others like it behind a VPN. Then both the VPN server and Jenkins will have to have holes simultaneously before you get hacked.

<comment><USER13> As the main hero of that story, I can assure you that we are working on VPN setup right now. I guess this is not in top-10 checklist for a startup.

</comment></comment></comment><comment><USER14> "C source named backdoor.h" Why would an attacker leave a file with that name? Seems like misdirection or a mistake. How are you going to verify they did nothing else?

</comment><comment><USER15> Was the original attack via jenkins? all it says some vague privilege escalation was used to upload c file. what?

<comment><USER16> No the author seems to indicate that it was on their application code and an attacker was able to get OS access, and the attacker subsequently replaced the ssh service with one that instead ignores login attempts and harvests the username/password pairs.

It seems to have been a coincidence that their Jenkins service was not secured.

</comment></comment><comment><USER17> First of all, your stupid copy/paste script has completely broken copy-paste. When I copy, I get nothing except the spam you're trying to inject, so congrats on managing to piss me off right off the bat.

Second, why even list A, B, or C? Whoever thought running Jenkins as a passwordless sudo user shouldn't be doing sysops. Why was Jenkins even public facing? At worst, put it behind a VPN.

</comment><comment><USER18> So... if the attacker would not have had deactivated SSH by accident they would not have noticed?</comment>


Stars and "Moving up" - <AUTHOR> Going from individual contributor to "management", you really get a fresh perspective.  I complained for years to get promoted into a management role.  I didn't complain very loudly, so it took a while.
Mainly, I felt like I couldn't grow without it.  A management role would give me a fresh perspective, and I'd have more access to higher ups, who have smarts I don't have.  Important things I can learn.
I found out - I was right.
Useful info about how businesses work and what is really important, is hidden from subordinates.  A little more is concealed, every level you go down from the top.  Nothing fishy - just the way it is.
So now, I manage a pretty big team and when things aren't going right with someone - I get to hear about it, from upper mgmt or clients.   That's a pressure individual contributors don't have to worry about - but I always put so much pressure on myself as an individual contributor my whole life, I don't really notice it too much.  I still believe it's harder to work - than direct someone else's work - IF you're working your ass off - that is, you are a star.
It really boils down to stars.  As a staff member, you should want to be one.  As a manager, you want a team full of them.  Recognizing a star is kinda like obscenity. "I know it when I see it".
I'm older.  Seems the younger/sv area crowd are more into "culture fit".  That seems a little too college fraternity to me.  People say "one asshole can ruin the team".  I suspect that's bullshit.  The stars on the team are going to be stars - they can't even help themselves.
This is one of the reasons why you can't have a totally flat org - you need managers.  Managers (among other things) are there to deal with assholes.  You can cool people out without firing them.
There's lots of managerial advice out there.  It's hard to find any truly useful information out there, I'll say it all comes down to stars.  They are making it happen. <comment><USER2> So a star is a person who is good at their job..

> Going from individual contributor

What did you do?

> This is one of the reasons why you can't have a totally flat org - you need > managers.

Look a Valve, a flat company, who are pretty successful. That proves your point factually incorrect.

> There's lots of managerial advice out there. It's hard to find any truly > useful information out there, I'll say it all comes down to stars. They are > making it happen.

So if it all down to stars, then what is the purpose of the manager?

> Seems the younger/sv area crowd are more into "culture fit". That seems a > little too college fraternity to me. People say "one asshole can ruin the > team". I suspect that's bullshit.

Culture leads to teamwork which leads to project flow. Nothing is better than a project flowing well.

</comment><comment><USER3> Thank you for sharing your perspective. I find some contradiction in your sentences and this question comes up:

As a manager, can you have both a team full of stars _and_ maintain a hierarchy? If yes, how?

The definition of star is also a bit vague: a person with lots of knowledge and experience can stand out as a star, but in my experience a junior person with less experience having the right way of thinking can also be a star.

Hierarchy means having only a few people steering the vessel, the rest need to align with the leadership, or there is no team. What does it mean to be a star in a hierarchy with the top-down approach?

Still, even in a team full of stars they all need to align among one other, or it's not possible to achieve a common goal. Stars are opinionated because they have knowledge, but that usually comes with an ego, so they need to work around that.

<comment><USER4> Eh, in my mind the value of professional managers is to provide a bullshit buffer between the stars. Managing is not as much about steering the vessel as choosing when and where to set your sail before the wind. Individual contributors are the profit centers of any organization. They create the actual product that the customers purchase. While the concept of everyone growing as a person is in vogue right now, that is not the purpose of a company. It is expensive to get the individual contributor to work around their ego, so we use professionals to provide the same result and timeshare them over many employees to lower the unit costs. A manager's primary reason for existence is to remove obstacles from the individual contributors in whatever shape or form that may be. If the manager needs to handle all communication between two prima donna developers, then that is removing an obstacle to generating value for the customer. A manager is like an personal assistant and a parent rolled into one. The manager keeps stars focus on efforts that directly benefit the customer rather than letting them wander off into intellectual rabbit holes of turing tarpits, while also making sure that there is paper in the printer, and pens on the desk. There is a lot more complexity that I am glossing over, but really great managers are the ones that ask the question, "what is preventing my guys from delivering value to the customer?" and then directly and systematically addressing the answers to that question. The really good ones have solved all the big problems and are then worried about the little things like having pens.

Additionally, there is really no need to use force of will to bind together a group of people behind a common vision with the current population and ease of communication offered by the internet. Either everyone is already capable of contributing value to the organization, or they are fired. There are 7 billion people alive now and that number is growing. If you cannot find hordes of people willing to work on challenges in your sector, what does that tell you about the demand for that product?</comment></comment>


Architecture for Apps and Content in React.js - <AUTHOR> https://builtvisible.com/building-content-in-react/

<comment><AUTHOR> N.b., I'm the OP. I'm writing a short set of posts on building a small content piece in React, and how it can be evolved to include routing, stores, more flexible architecture and so on. This is the first one, and if you're just getting in to React, I'd love your thoughts on it, and anything you'd like explained further, so I can make sure the follow-up posts cover everything people want unpacked.

Demo of the actual project available here: [https://builtvisible.com/history- of-humanity/](https://builtvisible.com/history-of-humanity/)</comment>


Computer People for Peace - <AUTHOR> https://eli.naeher.name/computer-people-for-peace/ <comment><USER2> Interesting to see point 3 of the "Resolution' in 1969. "We oppose the establishment of mass data banks which pose a threat to our privacy and concentrate power in the hands of a few."

</comment><comment><USER3> Super interesting to see the 1973 issue featured a database of concentrations of power. From what I can tell, successive projects like Sunlight Foundation came on with such vigour, but these projects have such little mainstream impact, instead all these tools get turned against individuals.

<comment><USER4> Sunlight foundation got the laws passed so GPO could provide legislative data to the public. AFAIK they are the reason GPO/govinfo.gov bill data exists. Congress having an API is their doing.

[https://sunlightfoundation.com/press/success/](https://sunlightfoundation.com/press/success/)

Many people use this data, from consumer non-profits to lobbyists. OpenStates is a spin-off of a Sunlight Foundation project as well.

<comment><USER5> OpenStates is a godsend if you're doing any kind of multi-state action with state legislatures, as each legislature's website is different (obviously), most are horribly broken (obviously), and many are outdated (only slightly less obviously).

</comment></comment></comment><comment><USER6> given the overtly marxist ideological bent and direct, targeted calls to specific actions wouldn't be surprised if this were related

[https://en.wikipedia.org/wiki/Soviet_influence_on_the_peace_...](https://en.wikipedia.org/wiki/Soviet_influence_on_the_peace_movement)

[https://medium.com/@JSlate__/how-the-soviet-union-helped- sha...](https://medium.com/@JSlate__/how-the-soviet-union-helped-shape-the- modern-peace-movement-d797071d4b2c)

queue the downvotes!

</comment><comment><USER7> > the group originated as "Computer Professionals for Peace"; in October 1970 > "Professionals" was replaced with "People" because members "felt that the > 'Professional' label limited the potential scope of the group and smacked of > elitism."

What?

<comment><USER8> I agree with what you quoted completely. What part don't you understand?

<comment><USER9> Why is elitism implied to be a bad thing in this context? Professional standards and ethics are something we should strive for, right? For those to work, you have to discern between people who uphold those standards and people who don't.

There are places where egalitarianism is most appropriate, e.g. in tallying political interests, and where elitism is most appropriate, e.g. no one wants an amateur surgeon.

Even if they want to open the group to hobbyists, as a professional I have more in common with a hobbyist who actively maintains a software project than one who doesn't actively contribute; specifically, if you're having a discussion about software you're largely on the same page with the former. That's ultimately the point of association, it's to improve conversation by gathering people who have a shared understanding.

<comment><USER10> > Professional standards and ethics are something we should strive for, right?

The argument in issue #5 seems to be against ACM's position which they say is that professionalism implies professional detachment. In other words being agnostic to the use to which computers are put.

</comment></comment></comment></comment><comment><USER11> I think every reasonable person should be "for Peace". But not for peace at any cost.

<comment><USER12> It's just hypocritical anyway, just telling people to be peaceful doesn't address the underlying causes at all and the same people aren't "peaceful" in their personal live either. They're confused and in fact reject any clear understandings of what actually causes peace to begin with.

<comment><USER13> This group would have been founded specifically against the Vietnam War, which America entered on the flimsiest of pretexts[1] with no clear national interest beyond "fuck Communists", and which killed tens of thousands of American soldiers and hundreds of thousands of Vietnamese civilians. I don't see how it could possibly be clearer.

[0][https://en.wikipedia.org/wiki/Gulf_of_Tonkin_incident](https://en.wikipedia.org/wiki/Gulf_of_Tonkin_incident)

<comment><USER12> Did they solve peace? AFAIK there have been wars since, and having grown up with these people I know first hand they're anything but peaceful.

<comment><USER13> > Did they solve peace?

Nobody claimed they did.

You seem to be arguing with anecdotal figures from your childhood. I'm sorry the people you grew up with were hypocrites, but if you want to claim that reflects on either Computer People for Peace or the peace movement in general, you'll need to give us more details.

<comment><USER12> The problem is that the core issue is the mind and these "peace" type arguments date back thousands of years, even in 340s AD in China's Annals of Lu Buwei you find these same people not addressing their own minds and preaching "peace" or passivsem. The reality is if you bring up reasonable things they can do, such as not promoting egotism or having a materialistic views of everything which directly lead to a lack of what they feel is "peace", it just goes over their head and they get angry. Again this is has been going on with these people for thousands of years now. So rather than some fake form of peace that doesn't work, how about addressing the underlying causes of suffering for everyone instead and stop rejecting them?</comment></comment></comment></comment></comment></comment>


Must answer questions before posting comments to prove you understand news - <AUTHOR> http://www.independent.co.uk/life-style/gadgets-and-tech/news/nrk-norwegian-news-site-comments-read-story-understand-post-quiz-questions-a7607246.html <comment><USER3> I was under the impression that comments on news sites were mostly to divert the readership from directly contacting the author or the company through channels that _are_ listened to; merely a solution to keep the wacko segment of the readership occupied and satiated. At least in practice, this is how it appears to function; they're almost exclusively 3rd party plugins and nobody that works for the news organizaion seems to ever engage with them.

<comment><USER4> I find the comments most of the time more read worthy than the article.

<comment><USER5> >I find the comments most of the time more read worthy than the article.

What news site is this? For _general_ news sites, I've found them to be of very low quality. I can't remember the last time I gained anything from them.

<comment><USER6> I'd consider HN to be a news source, I typically check the comments on articles first. I'd say I've found this to be true.

<comment><USER7> It's a news aggregator, not a source. In fact, it's only really got two primary functions: allow users to post arbitrary links, and allow users to comment on them.

Most news sources however have three primary functions: Identify, Write, and Publish news.

Commenting in HN is key to its existence; Commenting in news sources just happens to be a thing available.

Saying that comments works in HN is like saying comments work on reddit; it's trivially true, assuming the site is in any way functional/popular. But that doesn't mean comments are useful on NYT; take away comments and there really wouldn't be much lost from its primary goals.

</comment></comment></comment></comment></comment><comment><USER8> > Google announced last week, for instance, that it had built an artificially > intelligent tool that can read through comments and identify whether or not > they are "toxic".

Censorship at its finest.

<comment><USER9> "Censorship + Math != Censorship" evidently.

<comment><USER10> We seem to have a choice between that and S#1T Posting and Spamming. Now, I suppose Poe's law could limit some sarcasm, but I'm not sure that would be a real loss either.

</comment></comment></comment><comment><USER11> This reminds me of a literary test to vote. In this case it's: "Here's our news story. Answer some questions to be sure you understand OUR point of view, the words and ideas WE want you to acquiesce, in order to express your so- called opinion." Ungood.

<comment><USER12> Would you really want illiterate voters, though?

<comment><USER13> are you like totally ignorant of how literary tests (and poll taxes) were used to disenfranchise minorities

<comment><USER12> if all the literate people were male and all the illiterate people were female, requiring literacy would not _necessarily_ be sexism. you're conflating 2 different things. as did they. perhaps it did exclude more recently-emancipated black people. oh well. requiring literacy for something as important as an election is not obstructionist, IMHO

The fee you mentioned, however, is, IMHO.

if I had to hire a scientist for a job and the only applicants that were qualified enough were white males, hiring a white male would not make me a racist sexist.

i look forward to the day when people just stop trying to correlate everything both positive and negative to race, gender, age, and any other attribute other than "are you a good person" and "can you do this job well"

<comment><USER14> If it were universally applied, evaluated identically each time, and then used a clear pass/fail manner, you would be right. For example, the mathematical answer to "1 + 1 = ?" can be evaluated objectively.

But those "literacy" weren't anything even close to similar.

<comment><USER12> People are biased dicks. I know.

</comment></comment></comment></comment></comment></comment><comment><USER15> I've often thought that those who make decisions for society should be required to pass a test to show they understand all sides of an issue. It is absurd to me that politicians are currently allowed to make the wide variety of decisions that they make. I don't think anybody really wants to vote for them to do that. (There was an old episode of Star Trek that had officer candidates use the holodeck to be exposed to a wide variety of situations and outcomes. I would think that whatever we could do to emulate that should be a requirement for making associated decisions.)

<comment><USER16> I've often thought that apart from the very fewest national security issues all government should be conducted in the open: all cabinet meetings should be public, all political areas should be monitored and the results available to all, and all private political discussion between politicians should be banned on pain of imprisonment. If they've nothing to hide they've nothing to fear, right?

<comment><USER17> The problem I see with that proposal is that it would entirely eliminate the ability of Congress to compromise on anything, for fear of a video going viral showing them ceding ground on contentious issues and being used against them next election.

</comment></comment></comment><comment><USER18> I expect there will be some mockery of the questions if they are not careful. Imagine questions written by MSNBC & FoxNews for the same story. I can see the questions setting up an echo chamber effect.

<comment><USER19> > Imagine questions written by MSNBC & FoxNews for the same story.

As far as I can tell from briefly viewing them, the MSNBC and Fox News web sites don't allow comments.

<comment><USER18> I was using them as examples of two groups that would write totally different questions both with a prejudice towards a particular worldview.

<comment><USER20> They would also write articles with a different worldview.

</comment></comment></comment></comment><comment><USER21> Simple fact trivia won't do anything to demonstrate a person has understood the article, merely that he read it.

It's the fundamental difference between functional illiteracy and "plain" illiteracy.

This difference shows up all the time when analyzing data because some jurisdiction will only report the illiteracy number while some other will include the functional illiteracy as well.

<comment><USER22> I think you're ignoring that many people might not even read the article at all. Proving comprehension sounds incredibly hard; proving someone has at least tried would probably be a huge step in the right direction compared to the mayhem which is most comments online.

<comment><USER14> Proving _real_ comprehension would be (is?) hard/impossible in a constrained format such as this would have to be (pointy-clicky multiple choice).

Proving someone "tried* is also [nearly] impossible here: just take standard test-taking strategies for standardized tests of reading comprehension, and apply them to this context (because that's all this is, but not even done by people whose entire job is to make "good" tests)

</comment></comment></comment><comment><USER23> Next in line : voting at elections.

My dream of having people answer 5 simple questions to be allowed to get a voting card would come true.

Example of questions: name three neighbour countries, who is the current president, is France in Europe or Asia, what was the last world war,...

I understand that this will unfairly remove people who are illiterate, or had a difficult childhood, or are simply dumb but they are expected to make a choice which will impact the whole country. If they do not know anything about this country and the world it is in then sorry, they are not in a poisition to choose.

<comment><USER24> Stupidity has very little political bias, fortunately.

Such questions are rarely useful. They tend to be either trivial to the extreme (such as the continent of France or the first letter in the alphabet), politically opinionated, or more complex than you think. (What _was_ the last world war? You and I might think it was the Cold War but with in depth knowledge would have more nuances to their answer.)

<comment><USER23> This is not a matter of political biais. If someone wants to vote extreme left or right and knows who is the current president - fine.

I do not want biais, I want people who get to vote know the very basics of the world they live in.

Someone who voted X because yeah, the current president is wrong, but this "current president" happens to be a TV celebrity and not the president - <USER2> a person does not deserve to have voting rights. You would be surprised where people put France...

<comment><USER25> I doubt that a significant number of people wouldn't be able to name the current president. The problem is that anything more complex than that is prone to bias.

</comment></comment></comment></comment><comment><USER26> I wonder whether another way of approaching the problem would be to have to two commenting sections for a site. One would be moderated algorithmically and the other wouldn't. People could choose according to their tolerance.

<comment><USER27> I think that would only hinder conversation. The original idea of questions also seems dumb to me, since it feels like even many good posters who actually read the article would be too lazy to answer the questions, and if there was another comment section which didn't require answering questions, they'd just post in there. It also seems like having two comment sections would divide the conversation.

<comment><USER10> I'm not sure it would be laziness. A good poster who bothers to understand the article and compose an interesting response probably isnt lazy.

</comment></comment></comment><comment><USER14> If that actually _worked_ , the noise to signal ratio might not be infinite

</comment><comment><USER28> phil1edinburgh1 asks 'what does NKRbeta mean?' \- not sure if he is being sarcastic or hasn't actually read the article :/

</comment><comment><USER29> Great, now how about extending this to voting rights?

<comment><USER30> someone will quickly sneak in stuff like "is global warming real?" in the questions.

<comment><USER31> at least "What is the European Union?" when voting for brexit would be enough.

<comment><USER32> That's a good (and presumably unintentional) demonstration of the problem - the European Union is a hugely complex, very political beast and the right answer to that question depends heavily on your political frame of reference and priorities. Even just the free trade-related aspects can be accurately described either as giving up control of our own laws and regulations to a centralized bureaucracy or enabling trade by removing non-tariff barriers depending on how you want to frame them - since almost all non-tariff barriers other than differences in regulations are banned by WTO rules they're the same thing, one description just emphasises the benefits and the other the downsides. (I've even seen a certain FT writer who insists he's not pro-EU use both framings - the positive one when discussing the EU and the negative one when discussing post-Brexit trade deals outside the EU.)</comment></comment></comment></comment>


SJWJS - <AUTHOR> https://blog.cleancoder.com/uncle-bob/2018/12/14/SJWJS.html <comment><USER2> Equality of outcome collective punishment/self-confidence destroying identity politic advancement and self-righteous, vindictive chip-shouldering fall under the category of: "play stupid games, win stupid prizes."

I still ponder the logic, intentionality or unintended consequences for why, when I was a kid, I was forced bused 90 minutes (3 hours a day both ways) to a gang-infested, "magnet" school in the height of the CIA-affiliate-backed crack epidemic and gang war when there was a perfectly good school one block away from where I lived. Maybe it was a consequence of vacillating public policy fashionablism that arbitrarily and capriciously rewrote and reworked systems that were both sabotaged and ignorantly reorganized. I previously attended a private school that explicitly didn't go along with the public school's abandonment of practices and techniques that were proven to work. Public schools implemented sweeping changes with little or no scientific evidence for their effectiveness nor risk management.

</comment><comment><USER3> It's not just that it's insipid. More importantly, this sort of thing makes it just that much harder for the women who have been killing it to be taken seriously.</comment>


Social media has become a direct threat to democracy - <AUTHOR> https://www.washingtonpost.com/news/theworldpost/wp/2017/10/09/pierre-omidyar-6-ways-social-media-has-become-a-direct-threat-to-democracy/ <comment><USER2> The thing I have noticed about my friends on facebook is how their opinions have got stronger or more extreme.

My ultra catholic relatives have become more extreme in their views. The opinions of my left and right leaning friends have become more extreme. The outgoing party animal types seem to want to post more and more about how much they party. The people who sometimes feel down post more and more about how awful it is and how much help they need.

I know it is all down to how facebook has us all figured out and shows us stuff that only reinforces previously held beliefs and opinions.

The problem is that is seems to have also created a strange desire among many reasonable people to unwittingly troll others. For example people who used to rarely talk about politics will post provocative things that seem designed to elicit negative responses. I have Catholic in-law relatives that have I met only only once at my wedding posting on my timeline demanding I promise to not vote to repeal the 8th in the forthcoming Irish abortion referendum. My polite refusal to give an answer only angers them, yet somehow I am at fault.

Those who only see stuff about what they already believed will only believe in it stronger. And what do you do when you really believe in something? You try to spread your belief, which social media makes it easy to do. But of course in doing so you will potentially anger or annoy other who might have listened to your message if it wasn't so in-your-face.

The problem is that this spills over in to the real world. Religious people may avoid interacting with someone because they said something trivial on facebook they didn't like. Come election time people will be less willing to switch political parties because someone who supports a different party said something rude.

Even without the political meddling, targeted advertising and profiling, social media lacks the context and nuance of the real world. Something that in itself only serves to negatively reinforce opinions.

<comment><USER3> it use to be that talking about politics at work was considered bad form, and now people think its practically their duty to do so.

people are 'in-your-face' with politics these days, and while I dislike it, I can hardly blame them. holywood stars, musicians, and now athletes use their elevated status to get their word above all others (even if their fan base dont want to receive it), and being silent allows what ever they wanted passed.

<comment><USER4> I very politely, without judgement or a sense of superiority, say that I don't talk politics and religion. If you're firm and consistent, and not haughty, people usually respect it in my experience. If they don't, politely listen and then reiterated that you don't talk about that subject.

<comment><USER5> What's sad is that holding different views has become such a flashpoint. I'm quite able to have people question, attack, deride my beliefs without getting emotional about it - who knows, they might even have a point - as if I, or anyone else is any kind of all-seeing, perfectly informed entity that is able to exercise perfect judgement. But as I've learnt here on HN, not everyone else is as happy with having their beliefs challenged, indeed for many the default response is to lash out. It seems to me like people make their mind up about what they prefer, then seek evidence to support this, and then having invested in that viewpoint and built their worldview around it they will go to great lengths to defend it, even in the face of overwhelming evidence to the contrary. I'm sure I'm as prone to this as anyone else! If only people were a bit slower to assert their beliefs as correct.

<comment><USER4> _I 'm sure I'm as prone to this as anyone else!_

A critical bt of insight that some people just live in denial of. We're all far more alike than not, but some live and die on the need to think of themselves as a breed apart.

</comment></comment></comment></comment></comment><comment><USER6> Washington Posts understandably longs for the days when large media outlets had a virtual monopoly on information but they're gone and not likely to make a comeback. I don't know why they cheer Facebook/Twitter/whoever to take their place but I certainly hope this effort fails.

Having Mark Zuckerberg decide who and what can be read on the Internet or even decide the elections is an outcome much worse than ISIS videos or Russian ads in my news feed.

<comment><USER7> Everything has a cost, the cost of free speech is the possibility of hateful and destructive propaganda. This cost is in my opinion trivial compare to the alternatives. We saw what the cost of speech and information restriction have done to civilizations in history.

The ability to speak freely and having access to information is not just one virtue like justice or compassion. It is the way by which we create our value.

We should take really seriously any attempt by anyone to restrict it.

<comment><USER8> Its funny you say that. All freedom's come at a cost. In America, there is a large contingent who don't like the cost of the second amendment. Who is to say the cost of the first amendment is worth it, or the second?

As an Australian, I don't have either a first amendment right to free speech, or a second amendment right to bear arms to protect against a tyrannical government.

I do think that we, in the Western world are slowly giving away our freedoms, bit by bit in the name of safety. I do worry that our future is more black mirror than Star Trek.

And I for one do not know how to right this ship, how to bring balance. For people to recognise that with freedom comes responsibility. That you must hold the individual to account for actions, and not let the collective suffer.

<comment><USER9> The Second Amendment grants the right to bear arms as part of a well regulated militia. Not unregistered Glocks with silencers under your mattress or in your glovebox.

</comment></comment></comment></comment><comment><USER10> Given that unlimited campaign contributions are a legal way to buy an election, it's clear democracy in the US faces much bigger threats than people talking to each other on the Internet.

I'm traveling through West Africa, I see the impact of unlimited money going into politics daily. It's not good.

<comment><USER11> Money doesn't decide elections, voters do. The campaign that spends more money doesn't always win. In fact there's good reason to think that most money spent on a campaign is largely wasted:

> The most exciting and visible part of politics is the political campaign. > Politicians and their team of strategists, pollsters, and surrogates wage > battle for the votes of the public. Slogans are trumpeted. Gaffes are made. > Tactics are deployed. > And it probably does not matter all that much. > At > least not as much as the political environment matters. Presidential > elections can be forecast with incredible accuracy well before the campaign > really begins. In fact, if all you know is the state of the economy, you > know pretty well how the incumbent party will do.

[http://faculty.georgetown.edu/hcn4/Downloads/Noel_Forum.PDF](http://faculty.georgetown.edu/hcn4/Downloads/Noel_Forum.PDF)

<comment><USER12> Money buys ads and people to dig up dirt on opposing side. So in a way, it does buy elections.

</comment></comment></comment><comment><USER13> Deleting the word "social" from this article would make it more accurate. The UK Daily Mail and many many other media companies have been guilty of the same 6 things for years.

Terribly lazy opinion piece. We need to be aware that the traditional news media will be extremely effective at discrediting the entire tech industry to save their own skin.

</comment><comment><USER14> Why do I get the feeling that the proposed response by those claiming to care about "democracy" will be further censorship and/or re-centralization?

<comment><USER15> It's not censorship, it's "fact-checking" done by "independent" NGOs

<comment><USER16> Or more accurately, only allowing certain sites to be linked on Facebook. If a poster on voat is to be believed, Facebook already disables accounts that link to certain topics.

</comment></comment></comment><comment><USER17> That's cute, you think you actually had democracy to begin with.

<comment><USER18> Unfortunately I have to agree with your sentiment.

</comment></comment><comment><USER19> The world has a way of righting itself. If Facebook commands influence equal to lobbyists, then so be it. If that turns out to be good, then awesome. If not, then at some point a change will be made to the environment that allowed Facebook to become.

My hope is that it doesn't take another war for people to figure things out.

</comment><comment><USER20> The article is right that this can be thought to be new to the social media environment but it is a well known phenomena of which the USA has plenty of experience both in countering and administering and I believe that the effects are now seen due to government complacency. Let's call it propaganda - everyone did it in the past and everyone still does it today.

Both Russia and China have a pretty much inaccessible social media while both also have a very powerful propaganda machine on Facebook or Twitter with hired posters, paid marketing - an entire propaganda system ranging from psychologists to artists.

Unfortunately the government will at some point have to step up their game from TV, radio and newspapers and get with the times - either by making western social media more inaccessible or by pumping those dollars in Facebook pro-democracy ads. Also I noticed that Western governments play right into some of these carefully laid traps like immigration, sexuality or religion policies.

</comment><comment><USER21> The first in the list is about echo chambers. How was life not an echo chamber with not phones? I'm guessing people in a town would all agree with each other because they couldn't get any opinions on the opposite sides. In a city, this could be the case as well, where people would gather and trash people with the opposite views. For the rest, I'm sure I'd be able to come up with convincing examples of why that was an issue in the past.

It's incredibly difficult to understand what society and politics from the past. History books aren't able to get us fully emerged in what life was like then. I guess I'm saying that there have always been threats to democracy, but it's shifted more towards social media these days.

<comment><USER22> Pre-social-media, you'd talk more to neighbours or random strangers in a bar. They'd be more likely to have different opinions and you'd be exposed to different ideas as well as people behind them. Meanwhile today people are less exposed to different opinions and even when they're, they're even less exposed to people behind them. Which is no less important than the ideas themselves.

<comment><USER21> How can you claim that people's neighbors had different opinions than the people themselves? How can you say that about strangers at a bar? People then could be the same as people now who don't want to talk about politics and would rather call people with different opinions trash.

Who's to say that people these days are less exposed? That's incredibly difficult to research. And I can just claim that people see different opinions all the time, and are able to look up which well known people agree on each side?

This whole thing is all claims and not proof. So many people never respecting the opposite side's opinions, but that could easily be because of how humans evolved and not because of culture and tech.

<comment><USER22> Are your neighbours your close friends? Most likely not. Most likely they're strangers from different walks of life who happened to be your neighbours purely by accident. Since people are different, your neighbours will likely have different opinions than you. Same for people you meet in a bar. If it's not X-political-gang bar, you'll probably meet all kinds of strangers from the area and away.

Meanwhile your closely knit friends' circle is mostly of people who think similarly to you. Or at least people who you're comfortable with.

People in general are lazy and rarely look up different opinions for the sake of it. They hear whatever opinions they bump into. Be it their neighbourhood and bar or their FB feed.

Another thing is, back in hood & bar times, people would not only hear different ideas, but see that it's regular humans behind them. That there's no inherent us vs them. In social media, it's easy to just write it off as bullshit, the other person as stupid and block them.

"Well known people on each side" is a part of a problem. They're "them". It's harder to find common ground with some celebrity you don't agree with than with a neighbour you interact with daily and who is a great human being other than few political points you don't agree with.

Of course humans were always prone to "us vs them" and echo chambers. But today's technology makes that very easy to find very specific echo chambers. A century ago language was the echo chamber limit. Thus people speaking same language in close enough geographical proximity would usually get along pretty well. Now that is more or less gone, but we have echo chambers in between people living relatively close to each other. What next, reorganising into virtual states defined by political opinions? Liberal and conservative living next to each other, but following different laws? This is how many countries were run up to modern times actually. Jews having different laws in some European countries. Christians having different laws in Ottoman empire. Neither of these ended well.

</comment></comment></comment></comment><comment><USER23> Says the guy who is big into conventional media, which in many countries has been caught peddling lies, misinformation and half truths, by the social media.

Is social media a direct threat to democracy? I dont think so.

It certainly is a threat to conventional media peddling propaganda and narrative based on the highest bidder.

</comment><comment><USER24> On the contrary, social media is breaking the media monopoly on crowd influence.

Everything the author wrote has truth to it, but this is outweighed by the democratization of public audience.

Power to the people!

<comment><USER25> When the media writes about social media, what they mean is Twitter, Facebook, Instagram. None of these serve to democratize access to the general public given all those filters anymore than "letters to the editor".

Power to the people to express themselves? Give everybody the means to operate a self-hosted blog (that is, they and _only_ they are responsible for what is said and how).

</comment></comment><comment><USER26> Why is influencing people in the democracy a bad thing? It's at least better than only having to influence the people in the congress, right?

</comment><comment><USER27> Social media, especially Facebook, tries very hard to ensure that we never encounter a thought or opinion we consider surprising, or in any way contrary to our biases and prejudices.

Essentially we're all locked in ever shrinking echo chambers, reinforcing our sense of moral correctness by ensuring we never encounter any challenge to our beliefs no matter how tiny and harmless.

That CANNOT be healthy.

<comment><USER28> I see it the other way round on Twitter; it's hard to go a day without seeing something offensive or annoying, even if it's just somebody retweeting the latest Trump outrage to complain about it. If you step on a controversial subject and/or present as a woman you can get aggro in your mentions up to and including death threats.

I see contrary opinions all the time. What I rarely see is well thought out contrary opinions presented as the conclusion of reasoning from a set of reasonable looking premises.

<comment><USER29> Echo chambers allow two form of messages. Messages to agree with, and messages to raise outrage (carrot and stick). Well thought out contrary opinions belongs to neither so the echo chambers blocks that from view.

</comment></comment></comment><comment><USER30> It is very easy for us humans to identify troll accounts. Why is it so hard for Twitter to take some precautions? I know the complexity can increase exponentially (relevant xkcd: [https://xkcd.com/1425/](https://xkcd.com/1425/) ) but at least some basic measures like monitoring ip addresses and cross retweeting/liking could help filter out most of the basic troll accounts.

HN does it AFAIK, why can't Twitter?

Edit: From the downvotes, I think there is a misunderstanding. When I say troll-accounts, I mean automated or semi-automated accounts that are created for the sole purpose of creating a hostile atmosphere for people in the other camp. I don't call the people I disagree with as "trolls".

</comment><comment><USER31> I know it's popular to bash social media for everything that's wrong in politics but there is an important omission from all these articles that are completely ignored but actually renders most of the claims and especially the claim about the threat to democracy completely false.

 _1\. Echo Chamber_ Echo Chambers are nothing new in fact we used to live in much bigger echo chambers than we do today. Your choice of newspaper or tv- channels, i.e. one-way channels are actually the real echo chambers.

 _2 Spread of fake or misleading information (AKA Fake News)_ This is another one that is greatly misunderstood. Most misleading information is not done for political reasons but for clicks. They are extraordinary headlines made to get people to click. It's spam more than anything made to squeeze some advertising dollars out of you not actually change your mind on something. The idea that spreading fake or misleading information somehow is a product of social media is simply incorrect. And compared to how things used to be with people mostly getting their information from their one newspaper or tv-channel today every claim is scrutinized by everyone. Nothing gets to stand unchallenged very long.

 _3\. Conflation of popularity with legitimacy_ The argument about population is a household stable in most marketing and advertising. There is literally nothing new under the sun there. However, when it comes to being a threat to democracy this makes no sense and looks to me like a completely made up claim.

 _4\. Political manipulation_ Once again nothing new here political manipulation is an old an trusted tool for winning elections.

 _5\. Manipulation, micro-targeting and behavior change_ Yet Hillary won the popular vote. So in other words, not a very effective tool. We are way better off than the days when cigarette industry would put out their own manipulative material or suppress materials. I see no evidence it's being effective neither a threat to democracy.

 _6\. Intolerance, exclusion and hate speech_ Hillary ran large parts of the campaign on identity politics, she won the popular vote. Hate speech and intolerance is a problem but it has nothing to do with social media and isn't a threat to democracy any more than political correctness is.

Now some will say. _" Well, the problem is the scale with which this can be done."_ But here is the thing though. You will not be able to put out a lie for very long until it actually becomes debunked. You will not be able to put out a claim until someone has another perspective on that claim. There are hordes of people all waiting for someone to be wrong on the internet and share with the rest of the world.

In other words, social networks are self-correcting which makes them a tool to be used by everyone and as a net benefit to democracy, not just those who used to have access to the one way channels like tv, radio and newspapers.

Last but not least. This looks more like a piece of informercial than an actual serious analysis of threats to democracy.

<comment><USER28> > You will not be able to put out a lie for very long until it actually > becomes debunked.

But you can lie at a higher rate than the debunkers can keep up with. Because debunking takes more time and effort than lying. This tactic even has a name: "Gish Gallop".

<comment><USER31> Debunking doesn't haven't to be some scientific exercise. I debunk many things daily.

<comment><USER28> How effective is it?

<comment><USER31> Very and a lot more than if I didn't have social media but had to write a letter to each newspaper or get an interview on each tv station.

We are a lot better off with social media when it comes to the democratic process than we are without.</comment></comment></comment></comment></comment>