Live data from Hacker News

A Sad Day for Rust

words.steveklabnik.com

981–990 of 1001 posts

Re: A Sad Day for Rust

#981

Earlier quoted context omitted.

I mean this in the most respectful way possible, but have you considered your own antagonism against Reddit is not healthy for the community? Throughout the years I've seen you talk down about Reddit and the people there quite a bit. I get that they're "rougher" than the ideal Rust citizen but they're also real people and members of the community. It's probably best not to judge one of the largest sites on the intern…

I go back and forth on it. I try to also say that I think /r/rust is better than most Reddits, but I think the core problem is structural, and what I say doesn’t matter that much.

Fair enough.

FWIW what you say matters a lot, pretty sure you have a ton of respect from a lot of engineers across multiple language communities (myself definitely included).

I definitely appreciate how difficult it is to be the "custodian" of a) a language community and b) an open source project within that community.

Re: A Sad Day for Rust

#982
post #325

Earlier quoted context omitted.

Here is an example of an actual comment. I believe the thread is deleted now: > "seriously? Please just stop writing Rust. You do not respect semver, you do not respect soundness, so why are you using a language predominantly based around doing these things right?" This is what I was thinking of when I wrote "far, far over the line."

Depending on the context that doesn't seem to be "far, far over the line." Just about any thread on HN regarding any aspect of systemd or Google will have comments which are much more vitriolic.

Indeed, and it's one of the reasons HN has the reputation as "that orange hellsite" in some places.

Re: A Sad Day for Rust

#983

Earlier quoted context omitted.

Isn't that exactly what happened? This article is someone who did that research on multiple Rust HTTP clients and reported what they found: https://medium.com/@shnatsel/smoke-testing-rust-http-clients... Which I believe is what kicked off the events leading to Klabnik's blog post?

That’s fine. “Hey, this project has bugs maybe don’t use it” is fine. Dog piles on Internet forums because the dev isn’t doing what you want isn’t fine.

> Dog piles on Internet forums because the dev isn’t doing what you want isn’t fine.

Therein lies the problem. You cannot reasonably expect to link a blog post that says what that one did on Reddit and not have people dog pile. They will, every single time.

Re: A Sad Day for Rust

#984

I agree with what another person has said on github- the rust community on reddit is incredibly toxic. The last time such a thing happened, there were losers who made personal attacks on Nikolay. Then Nikolay showed up in comments being angry that he had helped that particular loser only a few days back. Its easy to create blog posts and comments about RIIR, its not easy to actually write code. If anybody actually wa…

Blaming 86k people for the actions of a few is toxic.

Making up your own definitions is gay.

Re: A Sad Day for Rust

#985

Earlier quoted context omitted.

People reading your comment as entitlement really need to pay more attention to the last paragraph. People really need to stop bandying about "entitlement" as if it deflects any and all criticism. You are, of course, free to write whatever unsafe, insecure code you want. You are, by leaving the issue tracker in Github enabled, inviting public feedback on the quality of the code you write. When you implicitly rescind…

I generally agree, except for this part: "Deleting the entire project as he did is an incredibly petty and immature response." If he no longer wants to participate in the community, then deleting the repo was a good decision. It's not like the code is actually gone, other people have copies of it, and now that the original repo is gone nobody will mistakenly go to his repo and find it abandoned. It's basically the eq…

Archiving the repo (which disables new commits, new issues, etc) would have served the same goal and not wasted the time of the larger community.

Here's an example from one of my own archived projects. Is there any doubt in your mind as to the state of this repository?

https://github.com/karunamon/concourse-resource-bitbucket

Inconveniencing countless others in a fit of pique is a pretty good definition of immature, petty behavior.

Re: A Sad Day for Rust

#986

Earlier quoted context omitted.

This isn't a serious response. As amply demonstrated in TFA and elsewhere, the harassment was far more than "reporting bugs". And, anyway, yes, reporting bugs can be extremely annoying. Different devs respond to this annoyance differently. npm devs, for example, have decided not to pay too much attention to bugs reported by the public. [0] [0] https://npm.community/c/bugs

> And, anyway, yes, reporting bugs can be extremely annoying. I would never touch the product of someone who found bug reports annoying.

That's a good policy, both for you and for them.

Re: A Sad Day for Rust

#988

I have been complaining about Rust's "unsafe" for years. There's too much "unsafe" code because there are things that you either can't express, or are very hard to express, in safe Rust. I've pointed out partially initialized arrays and backlinks as key trouble spots. Both are potentially fixable. I've gotten back complicated excuses for not dealing with these design problems. There was a serious denial problem in th…

there are things that you either can't express, or are very hard to express, in safe Rust. This is true (and in some sense inevitable by Rice's theorem) but it is unclear what can be done about this. Bear in mind that Rust's design constraints are - decidable (indeed fast) type-inference/type-checking - simple typing system - you don't pay for features you don't use It is easy to get rid of unsafe blocks if you throw…

Oh, not Rice's theorem again. That only applies to infinite systems. There are useful decidable properties for a reasonably large set of programs. Yes, they're "uninteresting" mathematically, but we're talking about memory safety here. If your program is anywhere near undecidable in that area, you're doing it wrong. Any time you're close to the edge on that, you can get decidability with a run-time check. The Microsoft Static Verifier people have been down that road with some success. I went there 40 years ago, with the Pascal-F Verifier.

The question I'm asking is, what do you really need to do that you can't do in safe code. On the memory safety front, for pure Rust (no calls to C), probably not all that much. Maybe only this:

- Syntax for talking about partially initialized arrays. For a collection, you have a variable that indicates how much of the array has been initialized, and you need a statement in the language that ties that variable to a partially initialized array. Then you can do simple inductive proofs to show that as you initialize another element and add 1 to the counter, the entire array is initialized. Non-consecutive initialization would require more complex proofs. Is there a real use case for that? One with major performance implications, where initializing the data to some null value would be too slow?

Un-initialized blocks of types such as raw bytes aren't a problem, because those types are "fully mapped" - all bit combinations are valid. Only types that are not fully mapped an initialization guarantee.

- Backlinks. Backlinks in doubly-linked lists and trees obey some simple invariants. You need syntax to say "this is a backlink". That implies an invariant that if A points to B, B must point back to A. Everything which updates A or B must preserve that invariant. The pointer from B back to A then no longer needs to have ownership of A. (It's a problem that Rust doesn't have "objects", because such invariants are usually required to be true when control is outside the object, but can be broken momentarily while control is inside it. The inside/outside distinction is important for this, and Rust is a bit soft on that. Spec# took inside/outside seriously, but viewed it dynamically, rather than being tied to static scope. Haven't looked at that in years.

What else do you really need? Remember that some knotty ownership problems can be resolved by allocating the objects in an array which owns them, and using array indices for relationships between the objects. It's not like you have to use pointers.

Concurrency is a related issue, but I've said enough for one night.

Re: A Sad Day for Rust

#989
post #6

I don't know how to word this so I'll say it bluntly (and probably bear the blunt of this community as a consequence): If you're a developer of a project that is used in a security-sensitive context, you either be receptive to security concerns or you clearly label your project as a toy project. No one expects you to write perfect code, but we do expect you to fix flaws when you learn about them. Of course, you could…

> No one expects you to write perfect code, but we do expect you to fix flaws when you learn about them. It's not like he was getting paid to work on this, was it? And people do have a life beyond open source. People could have forked and worked on the issues themselves, but that's asking too much. Why do the hard work when you can just write a comment/tweet blaming someone else, right? Your comment is precisely what…

Although I agree with you but there is one more point to consider. Why do people write open source libraries/frameworks? You'd say they write it as a hobby or learning experience and this is totally fine. But why don't they keep their work private if they aren't or shouldn't be bothered about how people use their libraries?

I agree OSS maintainers do a lot of work but no compensation in return. I believe most maintainers actually strive to remove flaws/bugs in their projects.

But if you write a half baked buggy OSS which is used by many people, you definitely should have some sense of responsibility towards users. Otherwise keep it private or at least boldly acknowledge that your project is merely a toy project which has many bugs and you aren't bothered about those bugs.

Re: A Sad Day for Rust

#990
post #341

Earlier quoted context omitted.

You can take a look at the actix-web repo, which has been wiped. A message has been added: https://github.com/actix/actix-web/

I'm glad git is decentralized.

And you find it here: https://github.com/fafhrd91/actix-web (the author moved it to his personal repo)

See this comment at GitHub: https://github.com/actix/actix-web/issues/5#issuecomment-575... — it also links to a mirror.

Post reply on HN