Краткая суть ситуации: наш соотечественник fafhrd91 на протяжении 3 лет практически самостоятельно (см. кдпв) писал actix-webодин из популярнейших крейтов в инфраструктуре раста, лидер в большинстве различных бенчмарков, и за это время подвергался как минимум трём волнам гонений за "неправильное использование раста". После последнего раза автор психанул, и перенес репозиторий к себе в аккаунт с пометкой "Планирую скрыть репозиторий". Конечно, куча людей сразу наделало зеркал и бекапов, но на мой взгляд это не сильно исправляет ситуацию.


На месте репозитория автор оставил единственный postmortem, который я ниже и цитирую целиком:


Another day, another "unsafe shitstorm”, I guess I get used to it.

It is interesting how easy to move comment out of context and how hard to comment with very clear intention (especially if you are not native speaker) What was the patch? It was very strait forward, simple, uncreative change, intention was just to remove unsafe not to fix existing code. I believe software development is one of the most creative work we do, and creativity is part of why we love software development, why it is fun. Especially if you combine it with real world projects constraints. “creative constrains” could be source of very interesting solutions. Being on the edge of your abilities is super fun. So uncreative change felt boring (oh! And author gave up copyright claims for that patch (a bit irony and sarcasm)). I’ve never used unsafe unintentionally, I use it because I believe usage is safe. There was no any malicious intentions. I believed it held mutable aliasing invariant and I was very happy that someone found real problem. I wanted to solve the problem, just with a bit of creativity. And use RefCell solution only if it would be not possible to solve it with any other way. Btw, I like the solution I found, it is in master and solves the problem at least one from the issue. If you want to push boundaries you have to touch this boundaries and sometimes you push too hard.

Be a maintainer of large open source project is not a fun task. You alway face with rude and hate, everyone knows better how to build software, nobody wants to do home work and read docs and think a bit and very few provide any help. Seems everyone believes there is large team behind actix with unlimited time and budget. (Btw thanks to everyone who provided prs and other help!) For example, async/await took three weeks 12 hours/day work stint, quite exhausting, and what happened after release, I started to receive complaints that docs are not updated and i have to go fix my shit. Encouraging. You could notice after each unsafe shitstorm, i started to spend less and less time with the community. You felt betrayed after you put so much effort and then to hear all this shit comments, even if you understand that that is usual internet behavior. Anyway, removing issue was a stupid idea. But I was pissed off with last two personal comments, especially while sitting and thinking how to solve the problem. I am sorry for doing that.

It’s been three years since I started actix project (time flies). I learnt a lot, i meet new people, I found language that I really like and want to use it fulltime, I found fun job. But damage to the project's reputation is done and I don’t think it is possible to recover. Actix always will be “shit full of UB” and “benchmark cheater”. (Btw, with tfb benchmark I just wanted to push rust to the limits, I wanted it to be on the top, I didn’t want to push other rust frameworks down.) Everything started with actix, then actix-web and then actix-net. It took a lot of time to design api and architecture. Each of this projects was rewritten from scratch at least 4-5 time. I hope I expanded some boundaries and found few new patterns, I hope other developers will check source code and find inspiration to move even further. Nowadays supporting actix project is not fun, and be part of rust community is not fun as well.

I am done with open source.

P.S. I moved actix-net and actix-web project to my personal github account. I will make decision during next couple days what to do. I don’t want to see the project becomes ghost of what it was. Maintainers must understand how everything work, but don’t anyone who does and those who could are busy with other projects. At the moment I am planing to make repos private and then delete them (will remove benchmarks as well), unless others suggest better ideas.

Everything has to come to the end. It was fun trip but now is time to move on. Life should be fun.

Как это выглядит с моей стороны: очередной безопасник (член команды RustSec) создал issue "ваш код содержит UB", автор попросил привести пример который триггерит его, безопасник такой код предоставил, после чего автор исправил использование публичным апи приватного так, чтобы UB не возникало. На вопрос "почему бы не убрать unsafe" автор ответил, что это может иметь последствия для производительности, поэтому сейчас он просто фиксит симптом, чтобы подумать, как это исправить без просадки производительности (напомню, что по рейтингам techempower actix-web является самым быстрым), или неудобного апи (оно у актикса на удивление хорошее). После чего на него обрушился вал обвинений в том, что он неправильно пользуется языком, и вообще, не должен никогда на нем писать.


Итог — удаление проекта, окончательное выгорание автора и нежелание иметь дело с неблагодарным opensource впредь:



В поддержку автора написали авторы кортимы (Клабник, Лодочник, Раф).


Для меня ситуация очень неприятная. У нас на проекте используется актикс-веб из-за уникального сочетания скорости, удобства и всё-таки надежности. А теперь основной ментейнер покинул проект, и если за 3 года не нашлось никого кто написал бы больше 3000 строк кода, то откуда такой человек найдется сейчас?..


Upd. Сохраненная переписка (оригинальный issue был удален автором репозитория): https://gist.github.com/pcr910303/d7722a26499d0e9d2f9034a06f2433b4


Upd. 2


Я [Kai Ren] подрезюмирую, что мы имеем на данный момент по вопросу.
  1. На данный момент нет никаких "их" и "наших" форков. И никакого core team actix тоже, по факту, нет. Основные мейнтейнеры из actix не имеют пока никакого внятного видение/решения проблемы. То есть ситуации actix vs fork не намечается ни в каком виде (разве что Николай через какое-то время решит продолжить своё дело в противовес всем). Core мейнтейнеры actix'а, тем не менее тоже не согласны с "закатом эпохи" и скооперировались в Discord канале (ссылка есть в закрепе) для обсуждения конкретных действий по ситуации. Под core мейнтейнерами я подразумеваю JohnTitor, Dowwie, Mitsuhiko (Armin Ronacher) и Robe Ede.
    Других инициатив по проекту, если они и есть, то пока не видно и не слышно нигде (ни в Reddit, ни на Rust forum, ни в чатах actix Gitter, ни соответствующих issues GitHub).
  2. Если Николай не воскресит проект (на что надеяться глупо), то все заинтересованные в вопросе (core maintainer'ы и наша группа) согласны, что дальнейшим движением должен быть хард-форк проекта.
  3. Какое при этом должно быть видение проекта, каковы его приоритеты и вектор движения. Каково название будет иметь новый проект, пока ничего не решено точно. Это будет точно обсуждаться сегодня в Discord'е. Из то, что пока точно удалось понять, maintainer'ы не всегда были довольны линией Николая и вроде как склоняются к safety over performance парадигме. Но это не точно, надо всё это ковырять и обсуждать.
  4. @sovasergey подсейвил все репы actix под временным рабочим название cathodic на GitHub.

Upd. 3: автор наконец ответил на сложившуюся ситуацию, он возвращает код в оригинальный репозиторий и передает владение одному из ментейнеров:


I realized, a lot of people depends on actix. And it would be unfair to just delete repos. I promote JohnTitor to project leader. He did very good job helping me for the last year. I hope new community of developers emerge. And good luck!

https://github.com/actix/actix-web/issues/1289