суббота, 18 января 2020 г.

[prog.open-source] Автор Rust-ового фреймворка Actix-Web: "I am done with open source."

На HackerNews разгорелся один из самых больших срачей, который попадался мне там на глаза: A Sad Day for Rust (steveklabnik.com). Этот срач посвящен блог-посту "A sad day for Rust" (как я понимаю, за авторством кого-то из именитых Rust-евангелистов). В свою очередь этот блог-пост посвящен эмоциональному решению автора Rust-ового фреймворка Actix-Web закрыть свой проект. На GitHub-е по адресу https://github.com/actix/actix-web сейчас размешен только относительно небольшой README-файл, озаглавленный как "Actix project postmortem".

В "Actix project postmorten" автор пишет о том, как он задолбался бороться с борцунами с unsafe. Что работа над Actix-Web перестала приносить удовольствие. И что он решил послать все и всех куда подальше:

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.

У меня на этот счет несколько сильно разных впечатлений и ощущений. Позвлю себе ими поделится без оглядки на какую-либо политкорректность или цеховую солидарность. Кому не нравится, тот может проследовать в сад.

Любой проект может сдохнуть в любой момент.

Итак, первое впечатление, как это ни странно -- это вспомнившаяся откуда-то "мудрость": если долго сидеть на берегу, то можно увидеть, как мимо проплывает труп твоего врага. Так уж вышло, что мы так же пилим свой "типа Web-фреймворк", но для C++. Поэтому в какой-то мере RESTinio и Actix-Web конкуренты. В небольшой степени, но все-таки.

И вот один конкурент сходит с дистанции (по крайней мере в своем первоначальном виде). А мы остаемся. Мы живы, движемся вперед и это не может не радовать.

Однако, следом вспоминается и другое изречение: не спрашивай по ком звонит колокол -- он звонит по тебе. И это в данной ситуации гораздо уместнее вспомнить. Ибо мы так же работаем совсем небольшой командой, развивая проект сами, исключительно за свой счет, тратя на него свое время, потерю которого, в отличии от потери денег, уже не возвратить и не компенсировать.

Поэтому, собственно, нет никаких гарантий того, что наши разработки будут развиваться и дальше. Жизнь она такая: раз и все. Сегодня есть, завтра уже нет ничего. Сегодня мы увидели проплывающий мимо Actix-Web, завтра, может быть, кто-то увидит проплывающий мимо наш труп.

Се ля ви. Ничего не поделаешь.

Все вокруг все знают гораздо лучше тебя...

Есть старый анекдот: у армянского радио спрашивают "Можно ли изнасиловать женщину в толпе?" и армянское радио отвечает: "Нет, толпа замучает советами". Очень точная характеристика того, что происходит в этих наших интернетиках когда какой-то проект демонстрируется широкой публике. Сколько всезнающих горлопанов прибегает рассказать все, что думает и о твоем проекте, и о тебе лично, что только диву даешься.

Собственно, то что эмоционально рассказал в "Actix project postmortem" Николай Ким -- это оно и есть. В чистом виде.

Вообще, есть ощущение, что большинство людей начинают ценить то, что попадает к ним в руки только если им пришлось за это заплатить. А вот то, что достается им бесплатно не ценится от слова совсем. Так что если вы собираетесь явить миру какой-то OpenSource проект, то будьте готовы к волнам говна, извергаемым на вас персонажами из Интернета.

Rust-сообщество зачастую напоминает стадо упоротых разрушителей старого мира во имя новой религии, имя которой "safe во все поля".

Вот ей-богу, такое ощущение иногда складывается, что у Rust-оманов целью является не создание чего-то нового посредством их любимого инструмента, а разрушение старого мира до основания, на руинах которого затем будет возведено что-то новое и прекрасное, обязательно на safe-подмножестве божественного Rust-а.

Причем отдельным фетишем для упоротых Rust-оманов является safe. Который должен быть во все поля.

А если safe во все поля нет, то это ай-ай-ай, это все старый мир, который должен быть до основания... И далее по тексту.

Просто иначе я не могу себе представить причин происхождения тех волн агрессии на Actix-Web от сторонников safe Rust. Ну реально: вот есть проект, он сделан, он работает, он показывает крутые результаты. Ну есть там unsafe. Ну так не просто же так он там оказался. Да и если проект работает, покрыт тестами, новый функционал добавляется, баги правятся, так не все ли равно, есть там unsafe внутри или нет? Вам шашечки или ехать, в конце-концов?

Но вот оказывается, что шашечки важнее. <img src="СергейЛавров.jpg">

Так за чей счет сей банкет?

И, пожалуй, главное впечатление -- это актуальность моих недавних заметок про OpenSource и заработок на OpenSource (раз и два).

Отлично понимаю вот эти слова Николая Кима в его "Actix project postmortem": "Seems everyone believes there is large team behind actix with unlimited time and budget."

Как мне представляется, сейчас к OpenSource сложилось исключительно потребительское отношение. Т.е. все привыкли к тому, что используемые ими инструменты должны быть открыты. И не просто открыты, но и бесплаты. Более того, начинают звучать голоса, которые говорят о том, что пермиссивные лицензии, которые требуют указания факта использования OpenSource проекта (как это обязывает делать, например, BSD-3-CLAUSE лицензия), не есть хорошо. Что следует использовать лицензии типа Boost Software License, которые позволяют задействовать открытый проект и даже не упоминать об этом...

При этом, полагаю, большинство пользователей OpenSource разработок даже не задумывается, а за счет чего OpenSource проект живет и развивается. Да и зачем об этом задуматься? Вот же лежит бесплатно, так что дайте два, да еще и заверните в подарочную упаковку.

ИМХО, это ненормальная ситуация. Могу предположить, что чем дальше она будет развиваться, тем чаще будут происходить случаи, когда даже большие и знаковые для каких-то сообществ проекты будут внезапно умирать. Просто потому, что их авторам нужно на что-то жить, обеспечивать свои семьи, давать образование своим детям, помогать своим родителям и т.д., и т.п. А моральное удовлетворение от решения сложных задач и удовольствие от того, что твою OpenSource-разработку использовали там-то, там-то и еще вот там-то, как оказывается, в деньги не конвертируется...

Так что за словами "I am done with open source.", как по мне, скрыт очень и очень большой смысл.

9 комментариев:

inv комментирует...

Растовчане не очень хотят принимать тот факт, что safe-модель раста очень и очень ограниченная.

Вопрос по похожему unsafe поднимался в одном из раст-чатов, я убеждал, что у меня однопоточный async и никакие синхронизации и гарантии одного mut мне тут даром не нужны, они не применимы и только мешают, на что мне с пеной у рта доказывали что раст настолько одеален, что он точно этот Rc> оптимизирует как я хочу (до полного его отсутствия). Видимо в actix всё произошло аналогично - раст не оптимизурует это.

inv комментирует...
Этот комментарий был удален автором.
inv комментирует...

Rc<RefCell<T>>

XX комментирует...

Лично мне, изнутри Rust-тусовки, видно следующее:

1. OpenSource - работает. Сообщество находит критические баги в популярных библиотеках и добивается их исправления, даже ценой форка (за два дня "кризиса" образовались внутри сообщества сразу две организованные группы, готовые подхватить разработку).

2. OpenSource - работает медленно, большие инвестиции личного времени и денег могут окончиться ничем. Николай форсил свой проект, вкладывал огромное количество труда в него. И я думаю в этом была цель завоевать лидирующее положение в молодой экосистеме раста, где два-три года назад шла гонка за первые места. Я сам прекратил развивать свой веб-сервер именно потому, что за Николаем угнаться было просто нереально и все начинали пользоваться его сервером. Ну и к чему это привело для Николая? Стоило ли так напрягаться, чтобы потом выгореть и бросить проект?

3. Блоки unsafe в Rust - работают. Именно вот то утверждение, что изоляция небезопасного кода позволит проще находить критические баги - сработало. В actix-web нашли серьезную проблему, которая не решалась сокрытием небезопасного интерфейса внутри, так как переход от unsafe к safe нарушал правила соблюдений гарантий safe, и делал уже safe-код небезопасным и приводящим к UB. Было показано, что это UB там реально присутствовало и триггерилось через safe-прослойку извне.

4. Rust-сообщество в трейдофе безопасность-производительность, в целом склоняется больше к безопасности. Это просто, как факт.

eao197 комментирует...

> 1. OpenSource - работает.

Конечно работает. Вот только не нужно путать "OpenSource работает" с "OpenSource мне лично что-то должен". А в случае с Actix-Web многие повели себя именно так, что Николай Ким им лично был что-то должен.

> И я думаю в этом была цель

Думать можно все, что угодно. А вот у автора могли быть цели, о которых вы совсем не думаете. Или же которые вам не кажутся целями.

> 3. Блоки unsafe в Rust - работают.

Да ради Бога. Если бы они не работали, то какой смысл был бы в Rust-е вообще?

Поинт в посте был в другом: когда до Rust-а доберется массовый пользователь, преследующий свои цели, в unsafe будет такое (и самого unsafe) будет столько, что мало никому не покажется.

XX комментирует...

> Вот только не нужно путать "OpenSource работает" с "OpenSource мне лично что-то должен". А в случае с Actix-Web многие повели себя именно так, что Николай Ким им лично был что-то должен.

Не лично кому-то, а сообществу. Понятие долга - оно не абсолютно, оно условно. *Если* ты хочешь, чтобы твоя библиотека была популярна в некотором сообществе, если ты хочешь, чтобы она удовлетворяла его потребностям и стала своего рода "выбором по умолчанию", то тогда ты *должен* считаться с сообществом. *Если* ты хочешь, чтобы разработка велась коллективно и конструктивно, то ты тоже кое-что *должен*. Иначе - этого просто не будет, а будет форк или замена. Вот и все.

> А вот у автора могли быть цели, о которых вы совсем не думаете.

Да. Например - сделать намеренную уязвимость в сервере, который станет спустя пару лет основным решением для Rust. А иначе зачем удалять issue об уязвимостях и еще подчищать веб-архив? Кстати, кем он там работает в Microsoft, security engineer'ом ведь?

В общем во всей этой ситуации удивляет то, что совершенно непричастные к конфликту люди начинают хейтить Rust-сообщество, даже не попытавшись разобравшись в вопросе глубже, а только "услышав звон".

XX комментирует...

> когда до Rust-а доберется массовый пользователь, преследующий свои цели, в unsafe будет такое (и самого unsafe) будет столько, что мало никому не покажется

История с actix-web показала, что пока в сообществе есть иммунитет к этому. Такие библиотеки, где ехал UB через неуместные unsafe, никогда не будут популярными. А если автор попытается подтереть информацию о наличии проблем в его либе, то поднимется вой. И это - правильно.

eao197 комментирует...

> В общем во всей этой ситуации удивляет то, что совершенно непричастные к конфликту люди начинают хейтить Rust-сообщество, даже не попытавшись разобравшись в вопросе глубже, а только "услышав звон".

Люди смотрять на Rust как на перспективный инструмент и видят за ним каких-то странных личностей, которые как будто живут в своем вымышленном мире и начинают страшно раздражаться, когда их фантазии разрушаются о реальность. И возникает вполне резонный вопрос: а оно вообще нужно?

> Такие библиотеки, где ехал UB через неуместные unsafe, никогда не будут популярными.

Да, уж пример Actix-а это наглядно показал. Так и не удалось Actix-Web-у стать популярной библиотекой.

XX комментирует...

Популярность в Rust несовместима с явной небезопасностью. Поэтому судьба у actix-web такая - он обречен стать безопаснее, раз уж он раскрутился в популярности. Ну либо форк и забвение оригинала.