News for hackers. Stuff that matters.
Re:Actix project postmortem by 3jckd on Friday January 17, 2020 @07:47AM (#22074125)
Asking for a friend - could someone explain what happened there? The README doc is quite vague - it is more of a personal justification than a rationale (to me).
Re:Actix project postmortem by ealexhudson on Friday January 17, 2020 @07:51AM (#22074144)
Sounds like the maintainer writes a lot of code using rust's "unsafe" keyword, and regularly gets issues raised about this (and versioning, and some other bits).

This last issue, which included a patch, has pushed them over the edge after it descended into disagreement.

Net/net they were repeatedly asked to change coding style, didn't want to, and have decided it's better to just avoid the arguments by not publishing code.

Re:Actix project postmortem by teddyuk on Friday January 17, 2020 @08:02AM (#22074219)
The maintainer can choose whatever style they damn well please, if you don't like it don't use it.

What is hard about this?

Re:Actix project postmortem by logophobia on Friday January 17, 2020 @08:17AM (#22074314)
It's not coding style, it's refusing to investigate use-after-free vulnerabilities in code because it's "boring". Noone should care if a maintainer uses tabs or spaces, or has weird variable naming, but if "coding-style" leads to security issues (due to hand-rolling unsafe memory-primitives), then it is an actual issue, especially if it's for a popular web-framework.

Don't like it, don't use it doesn't really apply to security vulnerabilities in such major packages.

Flaming and personal attacks are not the solution to this stuff, but this drama feels somewhat self-inflicted.

Re:Actix project postmortem by zzzcpan on Friday January 17, 2020 @08:22AM (#22074352)
> it's refusing to investigate use-after-free vulnerabilities

Please investigate yourself, don't ask others to do the work you consider important for you for free.

Re:Actix project postmortem by jeltz on Friday January 17, 2020 @08:28AM (#22074405)
People did investigate for him and write a patch for him and he dismissed the patch with it being "boring".
Re:Actix project postmortem by zzzcpan on Friday January 17, 2020 @08:34AM (#22074456)
Well, maybe people didn't provide detailed enough explanation for the author to understand and merge the patch, so he didn't bother.
Re:Actix project postmortem by jeltz on Friday January 17, 2020 @08:51AM (#22074574)
Re:Actix project postmortem by ryandrake on Friday January 17, 2020 @09:57AM (#22075073)
It seems like the better solution here would have been for the folks who wanted a fixed version of the software to create and maintain a "actix-done-right" fork themselves. This is what we all do in the professional world when a maintainer doesn't want to upstream critical patches for whatever reason.

They're under no obligation to upstream your patch, but it's open source so you're not powerless either! Why so much drama over a rejected PR?

Re:Actix project postmortem by XelNika on Friday January 17, 2020 @10:48AM (#22075629)
Creating a fork is generally not the optimal solution. Both current and future users benefit from a patch, only those that hear about it benefit from a fork.

Now, in a case like this where the maintainer won't accept patches, yes, fork and move on would have been better.

Re:Actix project postmortem by Sharlin on Friday January 17, 2020 @08:28AM (#22074396)
The reporter included a patch.
Re:Actix project postmortem by stjohnswarts on Friday January 17, 2020 @02:03PM (#22077962)
"Don't like it, don't use it" applies in all situations where the code is free to you and you didn't enter into a contract to "correct" those things that you don't like. People were always free to fork the code and fix what they don't like.
Re:Actix project postmortem by beatgammit on Friday January 17, 2020 @09:12AM (#22074717)
> somewhat self-inflicted

Let's not start victim-blaming please.

Yes, the maintainer could have made his reasons for making the project more clear, and the maintainer could have been more clear on the intended use of the project (not for production, personal project to see how fast Rust can be, etc). There are a lot of things the maintainer could have done.

However, that doesn't mean there wasn't a problem. There was a ton of negativity around "unsafe" when the author first released the code, and it has kind of become a meme at this point. If a project consistently uses code in an unsafe way, is it really worth spending your time vetting it for your production use case? There are plenty of web severs out there, pick one that aligns with your goals.

For future maintainers of projects, please do yourself a favor and clearly state the intentions of your project. Is it for production use or just a personal project to see how far you can take an idea? Make it clear and get into the habit of reminding people of the project's goals. I am very grateful for projects that do that since it helps me save a ton of time for both the maintainers and myself.

There seems to be a mismatch between the maintainer's expectations of the project and the community's expectations. It's unfortunate that the author decided to pull it, but hopefully this is a lesson to the community to make sure a project is a good fit before diving in with suggestions.

Re:Actix project postmortem by logophobia on Friday January 17, 2020 @10:28AM (#22075393)
> However, that doesn't mean there wasn't a problem. There was a ton of negativity around "unsafe" when the author first released the code, and it has kind of become a meme at this point. If a project consistently uses code in an unsafe way, is it really worth spending your time vetting it for your production use case? There are plenty of web severs out there, pick one that aligns with your goals.

Should people wait until credit-card data or PII is leaked due to security vulnerabilities? The problem with security is that it impacts more than just the programmers using the framework, it impacts everyone. Does the author deserve the nastiness? No. Do security issues need to be reported, and if not fixed, called out? Yes, for big and advertised projects issues like that need to be reported. If not, there will be users that would naively expect the web-framework they're using to be somewhat secure.

The framework had a professional looking website advertising the project, it had good documentation, a user-friendly API. It advertised a actix open-source community. Had over a million downloads. I would say that expecting actix to be run like a somewhat professional project is not a strange assumption.

The way it was called out was pretty terrible though, and I doubt anyone is happy with what happened.

Re:Actix project postmortem by blub on Friday January 17, 2020 @02:10PM (#22078026)
If personal info or CC data gets leaked, the company which used this library/framework will be found legally liable. Using random code from github is not a valid product development strategy.

The author can write their entire code in an unsafe block for all they care. The buck stops with those that use the framework and that is made quite clear in the license.

Re:Actix project postmortem by strbean on Friday January 17, 2020 @06:08PM (#22080598)
Welp.

Time to close up shop folks, we didn't personally perform a deep security audit of every single open source project we depend on!

Re:Actix project postmortem by dsego on Friday January 17, 2020 @08:08AM (#22074261)
Is it a community run project or not? The website seems to imply that the community is welcome to participate: "We're a welcoming community so don't be afraid to engage."
Re:Actix project postmortem by zzzcpan on Friday January 17, 2020 @08:19AM (#22074324)
There is no such thing as a community run project. But either way, people told the author to literally stop writing Rust code because he doesn't respect semver. This is not a participation, this is just hate.
Re:Actix project postmortem by stjohnswarts on Friday January 17, 2020 @02:34PM (#22078302)
There's a difference between engaging and putting up with raging users
Re:Actix project postmortem by hobofan on Friday January 17, 2020 @03:49PM (#22079122)
Civility, apparently.

Some people just never "grow up" and/or learn how to treat people with respect, and developers are not special in that regard.

Re:Actix project postmortem by seren on Friday January 17, 2020 @07:54AM (#22074170)
The issue was triggered by someone executing a benchmark on http crates and opening an issue on github, that was then deleted after some heated back and forth.

https://www.reddit.com/r/rust/comments/epoloy/ive_smoketeste...

From the maintainer point of view, it seemed to have been the straw that broke the camel back, but I don't know the whole background.

Still seems like a sad story

Re:Actix project postmortem by lsaferite on Friday January 17, 2020 @08:16AM (#22074301)
Wow. Talk about a bad response though. No matter how abused you may feel as the sole maintainer you should still not throw a tantrum. Censoring an issue title, body, and comments is a gross overreaction. If you want to throw in the towel then just throw in the towel.
Re:Actix project postmortem by wffurr on Friday January 17, 2020 @07:51AM (#22074149)
https://www.reddit.com/r/rust/comments/epszt7/actixnet_unsou... context for the "boring" patch.

Actix is full of "unsafe" blocks and the maintainer got a constant stream of criticism over it.

Re:Actix project postmortem by phoe-krk on Friday January 17, 2020 @07:53AM (#22074157)
Re:Actix project postmortem by ufo on Friday January 17, 2020 @05:42PM (#22080346)
The Wayback Machine links don't seem to work anymore, unfortunately.
Re:Actix project postmortem by stefan_ on Friday January 17, 2020 @08:20AM (#22074342)
It seems like the overarching issue is that Rust is a house of cards. They added unsafe like Java has null. My favorite part is that you can declare a crate to forbid unsafe, but that then doesn't have to hold for it's dependencies.

The obvious implementation is for unsafe to be infectious like const. You have unsafe code, your crate is unsafe. You depend on an unsafe crate, your crate becomes unsafe.

Re:Actix project postmortem by cesarb on Friday January 17, 2020 @09:50AM (#22075014)
> The obvious implementation is for unsafe to be infectious like const. You have unsafe code, your crate is unsafe. You depend on an unsafe crate, your crate becomes unsafe.

That would mean everything is unsafe, since every crate depends on core (or on std which depends on core), which has "unsafe" code.

The design of "unsafe" in Rust, instead, is to allow building safe abstractions on top of unsafe code (or be able to clearly mark when the abstraction itself is unsafe). That way, for instance, users of `Vec::push` do not have to worry that it uses uninitialized memory (which is unsafe).

Re:Actix project postmortem by stjohnswarts on Friday January 17, 2020 @02:38PM (#22078339)
This is a poor comment. You clearly don't understand how unsafe is to be used. No code (of significant size) that you run will be bug free ever. So you might as well start from that assumption and realize you are trying to minimize the amount of unsafe code and bugs; you will never remove all of them no matter what the language.
Re:Actix project postmortem by weavie on Friday January 17, 2020 @09:51AM (#22075028)
That would prevent you from using the stdlib.

https://doc.rust-lang.org/src/alloc/string.rs.html#1215-1230

Using unsafe doesnt necessarily mean you will have undefined behaviour, it just means you have to think really hard about the behaviour because the compiler won't have your back.

Re:Actix project postmortem by beatgammit on Friday January 17, 2020 @09:21AM (#22074780)
I wish there was a better way of handling that in Rust. You should be able to have a few markers in your code:

- uses unsafe - no unsafe, but dependencies may use unsafe - no unsafe, no dependencies except the standard library may use unsafe - no unsafe, not even in the standard library uses

The current situation is the second one, but many cases probably want the third, and occasionally the fourth.

The best part is, this should be fairly easily solved by crates.io upon submission (is there any use of unsafe and are all dependencies marked as strict or more strictly than yours?).