Как стать автором
Обновить

Комментарии 925

М-да-а. За что боролись, на то и напоролись. Жалко…
Непонятно, почему нельзя было в ответ набросить и разжечь; чувак показал, что RustSec-тело его зотроллило. Ответить «в интернете кто-то неправильно использует раст? Бывает, не плач» там нельзя было?

Культура у товарищей другая. Не принято так.

Непонятно, почему культура ответа обязана быть выше культуры запроса.
почему культура ответа обязана быть выше культуры запроса
Это всё равно как спросить, почему волосы на моей голове обязаны быть мытыми и причёсанными, если у собеседника они засаленные и растрёпанные?
Непонятно, зачем, вообще, на такое отвечать. «В интернете опять кто-то не прав»?
НЛО прилетело и опубликовало эту надпись здесь
Думаю где-то с такими мыслями автор и закрыл свою репу, чем не вариант.
Глупо, потому-что автор наказал не тех, кто ему насрал в закатки, а всех остальных
НЛО прилетело и опубликовало эту надпись здесь
да
НЛО прилетело и опубликовало эту надпись здесь

Наказать тролля напрямую довольно сложно. Ему только по кайфу бурная реакция. А отсутствие реакции тоже ничего ему не сделает — у него битва на десятке фронтов одновременно.


Наказать весь класс за проступки одного идиота — несправедливо, но, в итоге, эффективно. После резонанса вроде вот этого, люди будут чуть больше задумываться, прежде чем затроллить человека, делающего для них бесплатную работу. А если индивидуум найдётся, его самого тут же закопает в комментариях адекватное коммьюнити.

НЛО прилетело и опубликовало эту надпись здесь
Глупо, потому-что автор наказал не тех, кто ему насрал в закатки, а всех остальных

А вы за него вступились? Open-source диктует границы собственности, а значит и ответственности. Правильно наказал. Не заслужили.


Ничто не мешает прямо сегодня написать автору и убедить его в том, что его труд нужен и ценен. Процесс обратимый. Можно даже организовать сбор средств на поддержку проекта — это вещественное доказательство нужности. Я бы скинул (сам я не пользователь, но хотелось бы поучаствовать в умывании хейтера).

Тут на хабре тоже так часто бывает, статья интересная, заходишь в комментарии, предполагая увидеть такое же интересное обсуждение, а там на заминусованный комментарий ответили более 500 раз, вот и пообсуждали… нде.
неудобные комментарии иногда минусуют вместе с их автором… а так да, согласен автора все настолько допекли, что даже холодный невкусный чай могли сыграть окончательный аккорд.
Комментарии-то ладно. Это всем знакомо и уже должен иммунитет выработаться или по крайней мере философское отношение. Но я на прошлой неделе выложил статью по апгрейду nextcloud — мало того, что рейтинг статьи в первые 5 минут стал отрицательный, так мне в карму минуса прилетели! В карму!!! На IT ресурсе, за техническую статью-мануал!!! Получается, что хабре полурекламные простыни, которые теряют актуальность в первую же неделю, теперь оцениваются приемлимее старых добрых мануалов по консольному линуксу. Естественно, в комментах отметились все профессионалы, которые nextcloud через докер ставят, а автор или этого не знает, или ему делать нечего. Вот я после обеда посмотрел на статистику и, вот честно, тоже мыслишка-то заворочалась: «А в будущем зачем писать-то?» Я понимаю, когда мне за графоманию прилетало. Но тут как-то я был слегка обескуражен. Не понимаю молодежь… старею что-ли?)
Можно сделать такой механизм, что после размещения статьи с неотрицательным рейтингом, блокируется возможность минусовать в карму ее автора в течении 24 часов. Ну то есть как-то это продумать…
Так для того, чтобы понять какой рейтинг будет у статьи она сама должна как минимуму 24 часа на главной «отвисеть». Мало того тут и суток может быть мало. Вот сейчас, спустя неделю, я могу констатировать, что статья получилась: рейтинг у ней звёзд явно не собирает, карма поменялась незначительно (кстати, после моего вышеприведённого коммента мне неожиданно её поправили, благодарю всех отметившихся — не скрою, приятно), комментариев явно не сотни, но есть один важный фактор — сто человек её добавили в избранное. Сто пользователей посчитали эту статью полезной настолько, что решили её себе сохранить или вернуться к ней позже и внимательно ознакомиться. Для меня это достаточный фактор, для понимания, что материал востребован, писать стоит.

Тема кармы на хабре вещь больная. И вроде как с ней что-то делать надо. Но как именно до конца непонятно. Это кажется что всё просто. Но если сесть и подумать о качестве и количестве моральных поощрений и наказаний, балансе сдержек и противовесов, заработке администрации, то получается всё не так однозначно, ясно и понятно.
Так для того, чтобы понять какой рейтинг будет у статьи она сама должна как минимуму 24 часа на главной «отвисеть»
Ну вот например такой механизм: после размещения статьи, все минуса в карму откладываются до трех суток (72 часа). А потом проверяется, если статья прошла хотя бы один порог: +20 лайков, 100 комментариев, 20 раз добавлена в закладки — то автоматически все минуса в карму (набранные за эти три дня) сгорают. Причем на четвертый день минуса в карму попадают уже напрямик (как сейчас) и даже минуснувший сразу, но «непрошедший», может уже наверняка сделать это.
Это было бы хорошей защитой для авторов востребованной статьи от слива кармы.
Ну или другой вариант — на 3 дня блокируется доступ к карме автора из статьи и его комментариев под ней (а также в профиле автора не отображаются все его комментарии)

Тема кармы на хабре вещь больная
Как и везде.
Идея отложенной самомодерации вроде бы выглядит привлекательно. Только есть два момента.
1) «Расчёт кармой» как правило идёт в день после публикации. Потом всё экспоненциально падает. Уже даже через сутки людям будет лень искать статью чтобы за неё влепить человеку минус или плюс. Это негативно скажется на объективной оценке.
2) Получается после публикации любой статьи человек получает супериммунитет на три дня и 72 часа может как угодно развлекаться на ресурсе. Вот плоскоземельщики рады будут — так их сливали где-то за день. А через 71 час, кстати, можно выложить вторую часть и продлить веселье до конца недели)
«Расчёт кармой» как правило идёт в день после публикации. Потом всё экспоненциально падает. Уже даже через сутки людям будет лень искать статью чтобы за неё влепить человеку минус или плюс. Это негативно скажется на объективной оценке.
Ну вот этим показателем (время после публикации) и можно управлять влиянием кармы на сообщество.

Получается после публикации любой статьи человек получает супериммунитет на три дня и 72 часа может как угодно развлекаться на ресурсе. Вот плоскоземельщики рады будут — так их сливали где-то за день. А через 71 час, кстати, можно выложить вторую часть и продлить веселье до конца недели)
Так в том-то и дело, что доступ к карме (части профиля) автора статьи должен быть закрыт только из самой статьи. А если переход идет из его комментария к какой-то другой статье — то минусовать можно.
Здесь просто вопрос — как сделать так, чтобы профиль автора отображался по-разному: для тех, кто перешел из его свежей статьи (минусовать карму нельзя) и из произвольного комментария вне её (минусовать можно).
Для хейтера будет не проблема ознакомиться со статьёй и потом кинуть минус из произвольного комментария. Я тоже размышлял над сложными путями. Чем сложнее — тем понятнее становилось, что работать оно нормально не будет)
А как он найдет этот «произвольный комментарий», если список всех комментариев автора в его профиле будет закрыт на 3 дня?

Гуглом, например.

Да даже гуглом не надо: открываем профиль, переходим на публикации и открываем статью какой-нибудь двухлетней давности — там точно в комментариях к статье можно будет найти комментарий автора)
Ну так если путь такой: профиль -> статья -> комментарий -> профиль -> карма, то последний шаг должен быть заблокирован. Не думаю, что это нереально сделать.

Гуглом, например.
Проверил, первые выдачи Гугла ведут на профиль пользователя. Значит действуем тем-же способом (блокирование кармы, если в пути был профиль).
По запросу "@user site:habr.com" гугл на первой же странице выдает комментарии пользователей в других постах. Открываем ссылку, подводим мышку к аватарке и нажимаем минус.
Ок. Тогда надо также блокировать минусование из комментариев, размещенных ранее статьи. Независимо от пути к ним. На 3 дня…
А так же блокировать миносование из размещённых ранее статей) То есть, по сути, тотально запретить минусить человека на трое суток. Ну и возвращаемся к моему вчерашнему комменту в 22:23, п.2.
А так же блокировать миносование из размещённых ранее статей)
А вот это делать нельзя! Хорошо, уточню — «надо также блокировать минусование из любых комментариев, размещенных ранее данной статьи».

Вот так, постепенно отсечем всё лишнее…
«user site:habr.com\post» -> любая ссылка на статью требуемого автора -> минусим прямо из статьи.
Ну так из статьи напрямую же нельзя. Надо перейти в профиль автора. И если переход идет из старой статьи или старого комментария, то блокировать минусование кармы.
ctrl+c, ctrv+v адреса в соседнюю вкладку практически в любом браузере и блокировка не работает
ctrl+c, ctrv+v адреса в соседнюю вкладку практически в любом браузере и блокировка не работает
Копировать URL профиля? Думаю, что это — передачу пути при копировании профиля в другую вкладку браузера (и даже другого браузера) — все-таки можно реализовать.
Если у автора одна-единственная статья — то да, нельзя. А если у него их уже десяток? Переходи в любую из поиска и минуси на здоровье. Или предлагается это запретить? Ну ок. Но тогда это вышеразбираемый супериммунитет на трое суток.
Но тогда это вышеразбираемый супериммунитет на трое суток.
Что-то постоянно нахожу у себя неточные формулировки…
Вообщем, надо оставить блокировку только при соблюдении двух обязательных пунктов: переход из новых комментариев + из комментариев не под последней его статьей (то есть из любой другой, хоть новой, хоть старой).

Переходи в любую из поиска и минуси на здоровье
Так чтобы заминусить из произвольной статьи, все равно надо же в профиль перейти — а там в течении трех дней идет блокировка.
Так чтобы заминусить из произвольной статьи, все равно надо же в профиль перейти — а там в течении трех дней идет блокировка.

Под текстом любой статьи есть блок автора из которого можно изменить его карму без перехода в профиль. Со списком статей поможет гугл.
В чем проблема это на три дня отключить?
Да нет никакой проблемы. Просто получается изменение кармы будет отключено во всех возможных местах. И тогда получается супериммунитет на трое суток и ряд проблем рассмотренный выше.
Да нет же! Изменение кармы надо обязательно оставить! Но только для новых сообщений под любой статьей, кроме только что опубликованной.
НЛО прилетело и опубликовало эту надпись здесь
То есть молчим в тряпочку — имеем иммунитет? Поймите, не будет ваша система работать в принципе.
Да, пока не прошло 3 дня (например) с момента публикации статьи, автору нельзя минуснуть в карму ни за эту статью, ни за его прошлые статьи; ни за его комменты под этой статьей, ни за все любые комменты до этой статьи.

Я считаю это справедливым и поощряющим мехахизмом.
пока не прошло 3 дня (например) с момента публикации статьи, автору нельзя минуснуть в карму
Это идёт в разрез с политикой партии о модерации общества обществом, насколько я понимаю.
Во всяком случае с декларацией этой политики.
Это идёт в разрез с политикой партии о модерации общества обществом, насколько я понимаю.
Во всяком случае с декларацией этой политики.
Почему? Ведь потом минусить автору можно. Это просто как появление нового вида бонуса за написание статей. Мне кажется, никто против не будет.
Ну не все любят 3 дня ждать, чтобы минус влепить (ну не все настолько злопамятны).
Разве что автор через три дня в комментах будет снова отсвечивать так, что снова появится желание влепить минус.
Ну не все любят 3 дня ждать, чтобы минус влепить (ну не все настолько злопамятны).
Разве что автор через три дня в комментах будет снова отсвечивать так, что снова появится желание влепить минус.
Длительностью этого периода можно «играться» для определения оптимального влияния на активность пользователь-сообщество.

А так, можно в закладки добавлять ))
А так, можно в закладки добавлять ))
Это ещё нужно будет не забыть почему ты эту публикацию в закладки добавил.
Да и просматривать их периодически, а не когда тебе понадобилась какая-то конкретная статья по работе или другой причине.
Это ещё нужно будет не забыть почему ты эту публикацию в закладки добавил.
Да и просматривать их периодически, а не когда тебе понадобилась какая-то конкретная статья по работе или другой причине.
Так все эти трудности хорошо же! Они специально и должны создаваться, чтобы: стимулировать на написание новых статей и давать автору возможность спокойно отвечать на вопросы (кроме совсем уж клинических случаев).
Ну ок. На ресурсе регистрируется новый пользователь и пишет статью про эффективный менеджмент и всё такое. Пишет интересно, с юморком и его из песочницы вытаскивают. Рейтинг у него +2. Далее происходит действие.

1) Автор публикует статью о лечении силой мыслью. С пруфами. Клиническими испытаниями. И теорией. С тезисом, кто не верит в теорию — дурак.
2) Рейтинг статьи сливают. В комментах вакханалия «куда хабр катится».
3) По вашей схеме автора нельзя заминусовать из профиля, из старой статьи, из старых комментов к старой статье, из новой статьи и из новых комментов к новой статье. Автор не дурак и больше нигде ничего не комментирует! Автор несёт ересь и нет возможности его заткнуть в течение 72 часов — он наслаждается временем своей славы!
4) Через 71 час автор выкатывает новую статью по тематике лечения взглядом.
5) Рейтинг статьи сливают. В комментах шум и гам, звучат всякие революционные призывы. Число комментов переваливает за 3к.
6) См. п. 3.
7) Через 71 час автор выкатывает новую статью о том, что на хабре сидят сплошь идиоты и из комментов к прошлым статьям делает детальный и язвительный анализ мозговых способностей жителей хабра.
8) См. п. 3.
9) Рейтинг статьи сливают за 20 минут. В комментах ад. Наплыв пользователей такой, что админы хабра добавляют пару новых рекламных блоков в надежде отбить техзатраты за поддержку сайта на ближайшие несколько лет.
10) Через 71 час…
11) См. п. 3.
12) Рейтинг статьи 0. В комментах только комменты автора в стиле «ну и где вы все, оболтусы»? Весь сайт переписывается через ЛС. Организовавшаяся группа разведки подключает связи в IT, даркнете, правительстве, за границей. Boomburum не выдерживает и сдаёт IP автора. Группа разведки вычисляет GPS координаты. Организовавшаяся группа зачистки выезжает по координатам…

Понимаете к чему может привести непродуманная система кармы?
Понятно — если время между выходом новых статей будет меньше чем время супериммунитета, то автор становится вообще неподконтрольным механизму кармы. Ну так можно сделать обязательным 3-хдневный промежуток между окончанием супериммунитета и публикацией новой статьи. Более того, можно разрешить автору прерывать супериммунитет раньше времени (но потом всё равно надо будет выждать 3 дня до публикации новой статьи).

Или тут люди чаще публикуют?
Ну так можно сделать обязательным 3-хдневный промежуток между окончанием супериммунитета и публикацией новой статьи.

… и тем самым сразу оттолкнуть тех, кто может написать статью просто потому что поймал идею. Или тех, кто публикует статью на русском и сразу же её перевод на английском.

… и тем самым сразу оттолкнуть тех, кто может написать статью просто потому что поймал идею. Или тех, кто публикует статью на русском и сразу же её перевод на английском.
Ну в любом случае, разгуляться кроме как в новых статьях и комментариях под ними у такого автора уже не получится — и это хорошо.

Можно сделать для таких креативных авторов следующее: если новая статья выходит раньше необходимого срока (иммунитет+пауза на статьи), то такие статьи не влияют на график этих периодов (то есть ее как-бы и не было для такого механизма кармы).
Ну это я привёл случай, конечно, гипертрофированный. Но суть-то в том, что у автора в любом случае появляется супериммунитет на 72 часа. Даже если он потом публиковать ничего и не будет эти 72 часа он может развлекаться как угодно в рамках своей статьи. Современный механизм позволяет решить эту проблему без привлечения администрации.

Ваш механизм позволяет облегчить жизнь первых дней для «хороших» авторов, но зато сильно ухудшает реакцию сообщество на «плохих». Надо будет либо выпиливать это автора потом (лично мне, будет лень искать статью трёхдневной давности чтобы специально заминусить её и я не думаю, что так уж одинок), либо это должна делать администрация (это надо мониторить сайт, выявлять проблему, разбираться закрывать статью или нет, причём при любом решении будут недовольные пользователи — зачем всё усложнять, администрации и сейчас хорошо).
Даже если он потом публиковать ничего и не будет эти 72 часа он может развлекаться как угодно в рамках своей статьи.
Только в рамках комментариев к ней, так как статьи перед публикацией все-равно проходят предмодерацию. А в случае с комментариями очень поможет часто предлагаемый разными пользователями механизм, перекладывающий часть функционала кармы на лайки/дизлайки к комментам: например если под статьей комменты автора суммарно набрали 50 минусов, то он может комментировать не чаще одного раза в 1 час, и т.д.

Более того, если просто статья заминусована (теже -50), то на него накладывается такой же штраф.

Прям тюрьма уже для «плоскоземельщиков»…

Кажется, где-то выше, когда предлагали супериммунитет, его предлагали включать, только если статья наберет +20 и выше. Не очень вписывается в ваш сценарий.


Да и клепать статьи раз в 3 дня… пожалуй, только редакторы умеют.

Кажется, где-то выше, когда предлагали супериммунитет, его предлагали включать, только если статья наберет +20 и выше. Не очень вписывается в ваш сценарий.

Предлагается это: после размещения статьи, все минуса в карму откладываются до трех суток (72 часа). А потом проверяется, если статья прошла хотя бы один порог: +20 лайков, 100 комментариев, 20 раз добавлена в закладки — то автоматически все минуса в карму (набранные за эти три дня) сгорают. Причем на четвертый день минуса в карму попадают уже напрямик (как сейчас) и даже минуснувший сразу, но «непрошедший», может уже наверняка сделать это.
Не совсем понял, какой именно сценарий (из уже позже предложенных) такой подход не пройдет…

Ога, 100 комментариев. Это такое изощренное издевательство — сначала поднять срач, а потом он вытаскивает тебя из лужи? Это точно не нужно.


Не совсем понял, какой именно сценарий (из уже позже предложенных) такой подход не пройдет…

Так с клепетелем же, по таймеру статьи выпускающий. Конечно, это может быть такой экперимент по прививанию рефлекса не реагировать на троллей и срачи не поднимать, ну так автор сам начнет себе комментарии набивать… Вообщем, если хотите иммунитет, то включаться он должен только после того, как статья рейтинг наберет. Таким образом то, что большинство оценивают негативно, не позволит находится в вечном иммунитете. И еще тогда уж общая величина иммунитета должна быть ограничена, чтобы длительность непрерывного иммунитета не превышала N дней подряд + cooldown M дней.


Но вообще, это теории, так часто статьи только редакторы пишут. Не представляю, чтобы у обычного пользователя было столько времени, чтобы статьи писать, чтобы держаться в зоне иммунитета. А редакторы на зарплате.

Ога, 100 комментариев. Это такое изощренное издевательство — сначала поднять срач, а потом он вытаскивает тебя из лужи? Это точно не нужно.
Ну так цифра в 100 комментариев — это только как пример, с помощью каких критериев автор статьи получает иммунитет. Основной посыл ведь в другом.

Так с клепателем же, по таймеру статьи выпускающий.
Почему не подойдет? Очень даже подойдет — если статья «не зашла», то после истечения иммунитета все минуса в карму ему прилетят, он ничего не выигрывает от этой ситуации.

Вообщем, если хотите иммунитет, то включаться он должен только после того, как статья рейтинг наберет
Здесь предлагается система иммунитета с отложенным минусованием кармы: после размещения статьи автор получает 3 дня, когда будет невозможно непосредственно минуснуть его карму (если только он не оставляет новых комментариев под другими статьями) — все эти минуса подсчитываются, но пока не начисляются. Если за эти 3 дня статья не набирает неких показателей полезности для сообщества Хабра, то все минуса он получает сполна.

Появился новый комментарий визульно рядом с вашим и статья всплыла... так что еще раз прокомментирую.

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

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

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

Я такое поведение не оправдываю(минуса за то, что тебе показалось ненужным). Но и осуждать за такой образ мыслей нельзя. Т.к. технологии постоянно развиваются, не получается удержать в голове столько всего. И здесь приходиться выбирать, либо идёшь и учишься последовательно на примерах старых работ опытных коллег (долго, трудно, тяжело, и часто - неактуально), либо изучаешь только базу и сверху самые новые инструменты и технологии - для работы. Это как изучать программирование с ассемблера, с погружения в принцип работы компьютера и сетей и т.д. последовательно, или сразу с go, swift, и т.п., используя для работы готовые библиотеки, шаблоны и всякие автоматические способы разворачивания окружения. Т.е. это фактически 2 разные роли: программист-создатель(почти ученный) и программист-пользователь (работяга)

можно отобрать тех, кому отвечаешь, на остальных не отвечать
Согласен, хотя формулировка довольно агрессивная. Реагировать на деструктивный троллинг самое неблагодарное занятие.
ага. Обидка в стиле Элбакян
Можно было хоть в лицензии прописать, что сервер специально создан, чтобы нарушать принципы и кто не согласен, не имеет права его использовать)

Да и тот чел наверняка прав в том, что сейчас все очень сильно и необоснованно доверяют опен сурсу. Если проект имеет серьезный изьян, нужно хотя бы в ридми об этом написать — вполне себе компромисс.

Но удалять проект… Это слишком.

Он год ходил спрашивал "Люди возьмите проект". Люди не взяли.


А потом произошло что призошло.

да всмысле? делаешь проект? твой, бесплатный, без тз и обязательств? делай что хочешь, соблюдая минимальный этикет безопасности. Не нравятся ишью, пр, так закрой доступ посторонним. Не нужно для этого переносить проект в другой репо. Конечно, наверняка и там его можно будет скачать, но зачем? Это ограничивает распространение технологии, а значит и внимание к ней. Даже если сейчас проект никому не нужен, заинтересованные могли появиться через год. В общем, уважаю решение автора, но мотивация мне не понятна
Наверно, чтобы в будущем не могли придраться, например работодатели.
Мотивация простая, Open Source, очень часто вещь делающаяся Just For Fun. Если Fun уходит — зачем портить себе нервы дальше? — Всем спасибо, все свободны.
Вполне понимаю автора. Не хватило у него желания и духу посылать хейтеров на 3 веселых буквы, ну что-ж, такое уж у него восприятие мира и характер. Имеет право.

С другой стороны, не уверен как с этим в расте, но может стоит закрыть проект и перевести его в коммерческий?
Хочешь быстрый вебсервер — пожалуйста, вот прайс, вот блобы, вот саппорт, особо щедрым фиксим баги вне очереди.
Хочешь бесплатно и с исходниками — тащи любой крейт и смотри как все апи работают на 5 мсек дольше.

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

Ну вот. Кучка фанатиков, скорее всего не создающих ничего, шеймит человека за то что его процессы разработки не вписываются в их надуманные идеалы…

Скорее из категории "security people", о которых Торвальдс периодически высказывает своё мнение.

Торвальдс сам чуть ли не самый известный токсик в ИТ.
и оба его проекта бьют рекорды популярности
Мухи и бесплатный сыр.

Да, но я бы не стал ставить его в один ряд с фанатиками.

То что делает что-то крутое не дает ему право унижать и оскорблять других людей. Не говоря уже о том что подобное поведения от авторитета мирового уровня известности (и вероятно кумира) воспринимается жертвой не слабее чем оно же от сотни анонов с реддита разом.

Он осознал своё поведение. Продолжает ли он и сейчас, не знаю.

НЛО прилетело и опубликовало эту надпись здесь
А что может давать такое право кому-либо, по Вашему мнению?
Очень хотелось бы увидеть мнение специалиста.

Хмм, наверно ничего?

Ничего, очевидно.
Почему нельзя было так сразу и написать?
Например, вот так: «Ни у кого, в не зависимости от его заслуг, положения и чего-либо ещё, нет права унижать и оскорблять других людей.»
Потому что я писал не тематическую статью, а ответ на комментарий где человек с конкретными качествами противопоставляется другим людям без этих качеств.
Нельзя унизить и оскорбить, можно только унизиться и оскорбиться.
Впрочем, этот подход в современном мире непопулярен.
А изнасиловать можно? Или только изнасиловаться, одев откровенную одежду и по каким-то надуманым причинам не одобряя то, что с тобой делает насильник? Мне кажется, что у вас в комментарии какая-то очередная форма виктимблейминга, сейчас почему-то популярная в определённых кругах.

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


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

Для физического насилия такого примера нет.

Есть. Это может не осознавать ребенок, человек с отклонениями умственного развития или же человек от рождения воспитанный в окружении с девиантным поведением.

вас оскорбляют на неизвестном вам языке

Да что там! Существуют языки, полностью состоящие из оскорблений: PHP, JS...

Есть действия и есть отношение к ним, и относиться вы к действиям вольны как заблагорассудится. Ответственность за действие несёт совершивший, за отношение — вы.
относиться вы к действиям вольны как заблагорассудится
Увы, в теории звучит хорошо, но на практике это так не работает. Не может человек просто щелкнуть тумблер и начать равнодушно выслушивать например оскорбление своей матери. Он либо изначально таким сформировался под влиянием жизненного опыта, либо нет. Подавляющее большинство людей попадают во вторую категорию.
Ну, так вот с «оскробления» все и начинается. Вы привносите в объективную реальность свои оценки и от этого потом страдаете. Виновата ли реальность, что она не совпадает с вашими суждениями о ней?
Реальность не может быть виноватой или нет, она просто существует по факту. Но люди предстают перед тем какая она есть, и могут с этим что-то делать. Например придумывать правила и законы, мотивирующие не причинять друг другу неприятности.
Ну так а где граница «неприятностей»? Кто ее определяет? Вот для меня неприятно, что меня не берут на работу в Микрософт. Надо сделать правило, чтобы брали.
Или вот мне минус поставили за мой комментарий. Мне это тоже очень неприятно. Опять правило выдумывать?
Ну так а где граница «неприятностей»?
Ее сложно определить, но где-то она есть. Так же как граница количества волос, после которого человек может считаться лысым. Возможно когда-нибудь этот вопрос исследуют достаточно глубого, чтобы дать приемлемый ответ.
Надо сделать правило, чтобы брали.
Не надо, потому что это пример из плоскости крайностей. Вас не берут в микрософт потому что этому есть рациональное обоснование, и оно учитывает косвенные последствия вашего принятия для других людей. Т.е. соблюдается определенный баланс между вашими и чужими неприятностями и выгодами. Ну а если вам кажется что вас не взяли несправедливо, то правила по которым вы можете пожаловаться уже есть.

А вот когда один человек осознанно оскорбляет другого, никакого баланса нет. В среднем оскорбляющий просто тешит свое ЧСВ, а оскорбленный просто огребает. Если можно было бы выразить настроение числовым значением, это было бы эквивалентно его воровству.
Или вот мне минус поставили за мой комментарий.
Голоса это лишь инструмент выражения согласия с мнениям. А мнения двух людей не могут пересиливать друг друга. Вы не можете принудить другого согласиться с вашим мнением, и наоборот. Вам может быть неприятно от минуса, а минус может быть следствием неприятности вашего комментария для минусующего.
Как вы определили, что пример из области крайностей? Вероятно, то, что вы сказали сводится к одному — мои чувства для вас не важны. А если завтра меня изнасилуют, вы тоже на это скажете — баланс между неприятностями и выгодами?
А если завтра меня изнасилуют, вы тоже на это скажете — баланс между неприятностями и выгодами?


Не волнуйтесь, если вас изнасилуют, приятно это будет одному человеку — тому, кто вас изнасилует. Дискомфорт это причинит заведомо значимо бОльшему количеству людей (кому-то неприятна сама возможность такого варварства, кому-то страшно за себя и близких, а кто-то сам хотел, а его опередили, и ему теперь тоже неприятно). Поэтому такие вещи и запрещены законодательно. Тут вы зря переживаете.
Ну, так и от минусов мне тоже вообще не приятно, а приятно только тому, кто ставит минус. И если вы опросите посетителей хабра, что они чувствуют когда им ставят минус, очень немногие скажут, что им это нравится.
Там как раз сверху, кому я отвечал и предлагает на любую неприятность придумывать правило. Вот я и привел пример ситуации, где неприятность есть, а правила нет.
Никто не будет придумывать правило на каждую неприятность. Правила будут придумывать на каждую статистически-значимую неприятность. Ну, в смысле, до тех пор, пока вокруг демократия.
Я не эксперт по изнасилованиям, но вот тут пишут, что «с января по май 2019 года было зарегистрировано 1245 подобных инцидентов». Не понятно, сколько там произошло в остальное время, но, это явно меньше, чем поставлено минусов на хабре за аналогичный период.
Вероятно, изнасилования менее статистически значимы, чем минусы. Ну или, по крайней мере, сравнимо.
Вы прямо в корне неправы. Сейчас укажу вам на конкретно «корень», чтобы было понятно.

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

Итого: вас минусуют в соответствии с явно выраженным вами согласием на это действие. Вы лично разрешили, вы лично дали согласие.

1245 изнасилованных, исходя из определения, согласия не давали.

Перестаньте натягивать сову на глобус, аналогия некорректна.
По-вашему, одевая короткую юбку и выходя на улицу, девушка соглашается быть изнасилованной?
Знаете, я ведь когда на улицу выхожу, мне тоже вполне понятно, что меня могут задавить машиной. Но я не думаю каждый раз что меня задавят. Также и тут. Соглашаться-то я соглашаюсь, и не на такое люди соглашаются. Но приятней мне от этого не становится.
Возможно, я вас удивлю, но реальные законы не всегда соблюдаются. Бывают просто законы, которые не работают на практике, и, как следствие, не применяются в действительности.
И, кстати, в случае секса (у нас такого нет, но в более прогрессивных странах есть) я могу отозвать свое согласие в любой момент. Почему-то отозвать свое согласие на получение оценок я не могу. Тоже странно. Я вот хотел бы сейчас.
(И еще кое-что. Я вот посмотрел сейчас правила хабра, там нет пункта о минусах. То есть, возможность поставить оценку есть, а правил на этот счет нет).
Я вот посмотрел сейчас правила хабра, там нет пункта о минусах. То есть, возможность поставить оценку есть, а правил на этот счет нет


«Сообщество пользователей сайта является саморегулируемым, поэтому разобраться во всех нюансах работы проекта с первого раза получается далеко не у всех. Чтобы объяснить, как всё устроено, мы подготовили данный справочный раздел.»

Вот про карму. Вы с этим явно согласились.

По-вашему, одевая короткую юбку и выходя на улицу, девушка соглашается быть изнасилованной?


Это по вашему, я говорил о том, что она согласия не давала.

Соглашаться-то я соглашаюсь, и не на такое люди соглашаются. Но приятней мне от этого не становится.


И? «Я согласился, а мне теперь неприятно… Давайте будем считать, что я не соглашался...» Ну детский лепет какой-то! Лет-то тебе сколько?

Соглашаться-то кто-то заставлял, очевидно? Пистолет у виска держал? Нет? Значит, без принуждения согласился, сам? Ну вот будь добр соответствовать.

Возможно, я вас удивлю, но реальные законы не всегда соблюдаются.


Как что-то хорошее. Как это относится к дискуссии кроме «А чо я то? Танька вон вообще в носу ковыряется!»

Почему-то отозвать свое согласие на получение оценок я не могу. Тоже странно. Я вот хотел бы сейчас.


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

Вы знаете, у нас тут могут и изнасиловать. Поэтому, вот вам список рекомендаций чего нельзя одевать и в какое время лучше не ходить.

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

говорите за себя, не все люди полные флигматы, хотя среди программистов таких видимо много.

НЛО прилетело и опубликовало эту надпись здесь

В текущем контексте разницы нету.

Самое страшное — это флигматы со стегматами.

Как вы определили, что пример из области крайностей?
Используя логику. Циклично повтояряя вопросы «как» и «почему» можно опровергнуть абсолютно любое утверждение. Но вам не кажется что это все равно что признать отсутствие конструктивных аргументов?

Скажите, вы правда не видите разницы между случаями когда кто-то утверждает что оскорбился от слов «я люблю колбасу» и случаем когда человек например приходит в коментарии к чужому репозиторию и начинает прямым текстом расписывать какой-же его автор мудак?
А если завтра меня изнасилуют
Нужно больше крайностей. Но эта еще и почему-то в мою пользу, ведь за изнасилование преступнику положено наказание, как раз потому что оно причинило бы вам моральный вред, а само действие было умышленным.
Ну, по-моему, вы использовали анти-логику.
Аргумент полностью конструктивный. Он показывает несостоятельность позиции что на любую неприятность следует придумать правило, соответственно, следует поискать какое-то другое решение, которое на самом деле решает описанную проблему.
Я не вижу в этом большой разницы. А вот вы видите. Я вас не обманываю, насчет минуса, мне было действительно физически больно, когда я его увидел.
Вы так ловко определяете, где крайность, а где нет. Научите и меня тоже.
Минус (уже второй) был поставлен также умышленно и принесло мне моральный вред.
Аргумент полностью конструктивный. Он показывает несостоятельность позиции что на любую неприятность следует придумать правило, соответственно, следует поискать какое-то другое решение, которое на самом деле решает описанную проблему.


Не, это у вас что-то не сходится. Вы приводите в качестве контр-аргумента позиции, что на все нужны правила, случай, на который правило вполне установлено.

Я не вижу в этом большой разницы.


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

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

А какой вред от изнасилования? Разве что если без смазки. Или если беременность в результате изнасилования наступила (и то, спорно). Поэтому, изнасилования можно считать вредными, тольк если насильник не пользовался лубрикантом и контрацептивом.
Ну, так в тюрьму можно присесть, только потому что правило есть, и оно говорит, мол, секс без согласия — прямая дорога в тюрьму (и я это горячо поддерживаю). Причем, животные вполне себе друг-друга насилуют, и что-то никто не присел пока что.
А минус поставить без согласия почему-то можно. Не понятно.
А какой вред от изнасилования? Разве что если без смазки. Или если беременность в результате изнасилования наступила (и то, спорно).


Ты охренел?
Ты охренел?

Да нет, вроде. А что?

То есть вы не возражаете если вас поймает маньяк и анально изнасилует? Беременности не произойдет, я гарантирую это.

То есть вы не возражаете если вас поймает маньяк и анально изнасилует?

Наоборот, возражаю. Но почему анальное изнасилование считается плохо, а минус поставить — нормально? Мне и то и другое неприятно.

Потому что зайдя на хабр вы согласились добровольно с тем что вам будут (возможно) ставить минусы.
Если интересует изнасилование, то должно быть по аналогии.

Нет. Это не где не написано, более того в законе написано обратное.
Upd: Да и что вы на девушку стрелки переводите, речь же про ваши так сказать аналогии.

И что? А если я у себя на входной двери дома напишу, что «входя в квартиру, вы соглашаетесь быть изнасилованы», это сразу какой-то законный статус придаст такому утверждению?
Я говорю о том, что вред и от изнасилования и от минуса — субъективный, он ощущается только жертвой. Нельзя объективно померять душевную боль. И я одинаково против этих двух явлений: минусов и изнасилований. Но почему-то общество не на моей стороне. Странно.

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

Ну, так, вероятно, обществу и проблема изнасилований не интересна. И вообще обществу мало что интересно. То есть, полагаться на общество в вопросах комфортного сожительства как-то не очень правильно. Нужен другой какой-то способ.

Можете поспрашивать у своих соседей или вообще людей на улице какая проблема важнее. Судя по ответам 3ех людей на ваш комментарий это так.

Ну, так когда в лицо человека спрашиваешь — он совсем другие результаты выдает, чем то, что он на самом деле делает. Важно ведь не то, что люди говорят, а что они делают.
Им уже рассказали, что изнасилования — плохо. А про минусы пока что не рассказали. Это просто показывает, что общественное мнение — очень плохой инструмент, чтобы делать жизнь людей лучше.
В общем, мы с вами в какую-то совсем уже софистику ударились. Я говорю прямо: минусы = насилие. Change my mind.
Ну, так когда в лицо человека спрашиваешь — он совсем другие результаты выдает, чем то, что он на самом деле делает. Важно ведь не то, что люди говорят, а что они делают.


Популистская чушь. Для «публичных дебатов», которые являются единственным, насколько я знаю (поправьте меня, если я не прав), легитимным путем внесения изменения в законодательство демократической страны, важно именно то, что человек говорит.

Им уже рассказали, что изнасилования — плохо. А про минусы пока что не рассказали.


А при попытке рассказать, что такое минусы, «они», скорее всего, либо в жопу вас пошлют, либо засмеют. А если будете достаточно настойчивы в попытках убеждения, вызовут наряд полиции, и будут правы.

Это просто показывает, что общественное мнение — очень плохой инструмент, чтобы делать жизнь людей лучше.


Других более лучших не имеем, сорян. В принципе, другие есть, но они все хуже, проверяли.

Я говорю прямо: минусы = насилие.


Я говорю прямо: чушь собачья.
Популистская чушь.

Ээээ. Проводится экспертная оценка, выходит на публичных дебатах эксперт и ртом озвучивает данные и выводы. Все нормально вроде. Прямо как завещал Людвиг: «дело обстоит так-то и так-то».

А при попытке рассказать, что такое минусы, «они», скорее всего, либо в жопу вас пошлют, либо засмеют.

Нет, если это будет в законе и это будут преподавать в школах. Типа, если не авторитет попытается рассказать, то все так и будет. А если авторитет, то результат будет другой.
Или вы думаете, жертв насилия кто-то слушает? Они так-то боятся в полицию пойти и это известная проблема виктимологии. Первое предположение о жертве насилия — «сама виновата» и «довела, видимо».

Других более лучших не имеем.

Ну, ладно.

Я говорю прямо: чушь собачья.

Извините, не убедительно.

А ещё на работе работать заставляют, а я может тоже не хочу — вот это "насилие", не то что какие-то минусы.
Сначала определите насилие. Я разделяю физическую безопасность от словесного взаимодействия с людьми.

Меня на работе никто не заставляет. Я просто прихожу, у меня есть задачи и я их делаю. Спрашиваю, если что не понятно.
Сначала определите насилие.

В коммуникации насилие проявляется так:
Диагнозы, обвинения, оскорбления, критические ремарки, ярлыки, осуждение, анализ, критицизм, сравнения, непризнание ответственности, команды, награды и наказания по отношению к человеку.

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


Википедия и источники на которые она ссылается с вашим определением не согласны. В коммуникации насилие это угрозы физического насилия и всё.

Нет, не так. То есть, явления такие есть, но они ненасильственные. Разница в том, что критерии объективные. Ты приносишь реальную пользу многим людям и это влечет за собой премию. И ты, соответственно, подводишь и/или мешаешь многим людям, что приведет к увольнению. В обоих случаях, всегда понятно за что именно премия и за что именно уволили.
Нет, не команды. Ну, вы приходите куда-то, где уже есть другие люди, они о вас заботятся, помогают и ваше естественное желание им также помочь в благодарность. Эти люди оказались достаточно заботливыми, чтобы выписать свои нужды, да еще и снабдить их описанием. Вот вы и помогаете. Не было бы задач, я бы подошел к кому-то, кто нравится и спросил бы «чем я могу помочь?». Таков путь.
Тут что имеется в виду. Например, «ты молодец» = оценка + награда. Выразить то же самое без насилия можно так: «благодаря тому, что ты выполнил ту задачу быстрее, чем изначальная оценка, мне удалось убедить стейкхолдера запланировать важную фичу, которая принесет нам много прибыли». То есть, указать конкретное деяние, и что это значит для меня лично.
А что, вы кроме Вики ничего не читаете больше? Там же простые люди пишут, они что знают, о том и поют.

А чем награды отличаются от бонусов? На награду тоже не обязательно претендовать. Увольнение это и есть наказание за то "что совсем не работать или сильно косячить". Пока всё сходится.
А кто такие простые люди и чем они хуже не простых? Тут у вас уже намек на "ярлыки, осуждение и критицизм". На лицо насилие.

Вы, видимо, на старую версию ответили, я немного подредактировал с первого варианта ответа.
Награда — это как в цирке. Прыгнул через кольцо — тебе суют вкусняху. Бонусы принципиально другая модель. Я хочу себе машину, но не могу себе ее позволить. Я могу или поискать другую компанию, чтобы платили больше, или попробовать в этой компании взять на себя больше ответственности. И многим нравится работать в одной компании долгие годы.
Аналогично, увольнение. Все-таки, работа — коммерческое предприятие, и если вы не помогаете заработать, то есть другие, которые справятся лучше вас. Вас приглашают на работу, потому что вы нужны. А если вы не справляетесь, то попробуйте еще что-то поделать.
Да, грешен, каюсь. Смысл в том, что там все не просто с Википедией. Нельзя использовать ее как критерий истины, мол, раз в вики нет, то все фигня. Там много чего нет.

Именно, ответил на старую версию.


  1. В цирке котики, им не нужны машины, им вкусняшки — самое то.
  2. Так и с котиками, не справляются идут искать что пожрать на помойке или в приюте для животных.
  3. Да и гуманные методы дрессировки не предполагают особо физического насилия — всё за вкусняшки, которые составляют только часть рациона. И питомцев своих люди обычно любят. Опять всё подходит.

Я как бы специально нахожу крайности, потомучто формализовать это не получится так просто. Естественно у людей есть нечто большее чем сугубо материальные ценности (да и с животными не все так просто). Например взять тему топика — опенсорс. Вряд ли автору хорошо именно платили за его работу над актикс. Но ему было наверное интересно этим заниматься и приятно быть полезным для раст сообщетсва. Когда ему сообщество наплевало в лицо (фигурально), он перестал этим заниматься.


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


Пока складывается впечатления, что у вас определения вещей сугубо субъективные. "Мне нравится значит это хорошо, мне не нравится — насилие". Но так никакой конфликт интересов не решить, ибо нужны объективные определения.

Все, что я назвал — лишь известные проявления насилия. Конечно, у насилия есть причина — оно хорошо работает. Проблема ровно в том, что насилие порождает насилие. Когда вы его применяете, вы в ответ получите тоже насилие, и, зачастую, в большем объеме. Вы не можете этого избежать никакими способами или логическими построениями. Вы заплатите за все, что другие люди сделали для вас не добровольно, а из чувств вины, стыда, долга, обязательств, страха наказания.
Единственный путь — научиться его определять и выдавать наружу только ненасильственные речевые конструкции.
Не буквально. Такие задачи приходят через поддержку. Поступает задача, с высоким приоритетом, я на нее реагирую и принимаюсь сразу же, как увидел. Ну, а как еще-то? Из этих миллионов же мне зарплату платят, они не из воздуха появляются. Это, типа, не логично — заниматься чем-то кроме тушения пожара в горящем доме.
Объективно измерить насилие невозможно, потому что оно проявляется на уровне чувств. Человек, который испытывает насилие записывает его на ваш счет и вы этот счет обязательно оплатите в двойном размере.

А какое насилие во фразе "нам надо срочно фиксить теряем миллионы"?
Я вот представил: загорелся дом рано утром, а пожарные такие приходят к 11ти дня и после кофе с печеньками откидываются на кресле и такие "чё там в jira у нас сегодня в приоритете?".

А какое насилие во фразе «нам надо срочно фиксить теряем миллионы»?

А разве мы это насилие обсуждали? Вы меня спросили, бывают ли ситуации, и я ответил, что не буквально такие же.

Я вот представил: загорелся дом рано утром, а пожарные такие приходят к 11ти дня и после кофе с печеньками откидываются на кресле и такие «чё там в jira у нас сегодня в приоритете?».

Не. Конечно, остается дежурный. Но я никогда не дежурил, потому что я занимаюсь фронтом. Если дежурный сам ошибку поправить не может, он отказывает релиз.

Ну а что мы обсуждаем? Минусы в комментах? Ну конкретно на хабре может от них толку и мало. А так обычный механизм оценки. Понравилась статья или нет, полезный ответ или нет. Где тут насилие?
В любом случае некоторая форма модерации нужна, а это по своей сути запреты. Как ни называй без это не обойтись.

Ну, так, вероятно, обществу и проблема изнасилований не интересна.


Практика показывает, что интересна. Даже закон соответствующий придумали.

То есть, полагаться на общество в вопросах комфортного сожительства как-то не очень правильно. Нужен другой какой-то способ.


У нас демократия. И она у нас не потому, что прям вообще вся такая хорошая и идеальная, а потому что за 2 тысячи лет перепробовали дофига чего, придумывали разное, и выяснили, что все остальное — еще хуже. Если вы придумаете что-то более совершенное — велкам за Нобелевской Премией Мира.
Практика показывает, что интересна. Даже закон соответствующий придумали.

Ну, так это не общественность, а законодатели. Общественность, как правило на митинги ходит, и что-то я пока что ни об одном успешном митинге не слышал.

У нас демократия.

Я не предлагаю поменять всю модель управления, а лишь говорю об одном конкретном феномене.
Если вы утверждаете, что минусы мне ставят, потому что демократия, я думаю, вы слишком много пропускаете всего того, что находится между ними. Иными словами, вы где-то ошиблись в процессе рассуждений. Пожалуйста, изложите всю цепочку ваших умозаключений, чтобы я вам мог помочь идентифицировать ошибку.

А почему возражаете? Вреда ведь никакого. Ни беременности, ничего, даже смазка будет.

Я возражаю, когда это против моего желания. И минусы мне тоже ставят против моего желания.
Объективного вреда от минусов нет. А субъективный — есть.
И минусы мне тоже ставят против моего желания.


Но с вашего согласия. Чуете разницу: желание vs согласие.

Подошли вы к трансформаторной будке, а там табличка: «Не лезь, йобом токнет». Вы залезли, вас закономерно «токнуло». Ай-ай-ай, что делать, что делать? Видимо, срочно убирать ток из всех трансформаторных будок?

Объективного вреда от минусов нет. А субъективный — есть.


Вот видите, сами же признаете: объективно все норм, а все ваши претензии сводятся к «мне неприятно»…
Но с вашего согласия. Чуете разницу: желание vs согласие.

Ну, таки, нет. Я просто пребываю в среде, где минусы — факт мироздания.

Подошли вы к трансформаторной будке, а там табличка: «Не лезь, йобом токнет».

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

Вот видите, сами же признаете: объективно все норм, а все ваши претензии сводятся к «мне неприятно»…

Ну, тогда, если вашу логику продолжить, и насиловать можно. И грабить и убивать. А если речь идет про кражу, так там даже больно не будет. Красота.
Почти согласен, за исключением нескольких тезисов.

Ее сложно определить, но где-то она есть.


Вот этой штуки — нет.

Не надо, потому что это пример из плоскости крайностей.


И этой — тоже.

Есть просто неприятности, которые неприятности для 3,5 анонимусов, на которых всем «срать» (простите за мой французский). С течением времени в силу меняющихся по объективным причинам обстоятельств некоторые неприятности становятся неприятными несколько большему количеству людей. Если это количество достигает критической массы (например, существенно более чем половине поголовья человеков), законодательство меняется так, чтобы неприятности бОльшей части человечества превратились в приятности, одновременно породив неприятности для существенно меньшей части лиц.

Демократия.
и даже если оскорбление будет на суахили — то «щелкнет тумблер» и вы тут же перестанете «равнодушно выслушивать»?
Верно. Но оскорбление/унижение — это чаще всего сочетание действия и отношения, а не только отношение. По крайней мере в общем случае.
НЛО прилетело и опубликовало эту надпись здесь
Есть люди которые заслуживают подобного
И кто же выступит судьей, который будет решать кто заслуживает быть униженным, а кто право имеет? А что если окажется что жертва была права, или имела какие-то оправдывающие обстоятельства?
НЛО прилетело и опубликовало эту надпись здесь
тот к кому эта жертва пытается подсосаться
И кто его наделил такими правами?
Ну пусть эта жертва напишет письмо в комитет защиты прав сексуальных меньшинств.
Ну т.е. это эксплуатирование безнаказанности и беззащитности. «А сделаю-ка я тому человеку неприятно, все равно он этому никак не воспрепятствует». Потому что он посмел написать плохой код.
должен был отнестись с должным уважением к виденью, объяснить и научить этого программиста, не жалея своих сил и времени
Не нужно бросков в крайности, все что нужно так это не делать оскорбляющих высказываний. На их написание требуется не меньше времени, чем можно было бы потратить на отклонение патча. При желании это можно сделать вставкой одной заранее составленной универсальной строки.

В плохом коде нет злого умысла, это просто следствие недостатка навыков/времени/бюджета/других обстоятельств. Такое бывает со всеми, и особенно с новичками. А вот оскорбление это умышленное решение сделать человеку неприятно, со всеми вытекающими как в сабже — разочарованием, выгоранием, депрессией, т.е выходящими в осязаемую плоскость последствиями. И никакие эфемерные экономии времени не могут этого оправдывать.
НЛО прилетело и опубликовало эту надпись здесь
Свобода воли/ТНБ/природа
По сути вы сейчас сказали «потому что Я хочу».
Думаю там мотивация такая — «чтобы сказать чтобы этот парень (и те кто это прочитает) следующий раз десять раз подумал и прилизал свой патч прежде чем выносить мне мозг своим УГ»
Ну т.е. попытка оправдания вангованием и телепатией. При этом на практике любое оскорбление в интернете почти всегда влечет за собой холивар с тучей сообщений, что не очень согласуется с вышеприведенным объяснением.
А так всё ясно и понятно, пройдите на.
Ну а дальше то что? Автор патча перестанет писать код? Автор патча станет писать крутой код? Пропатченный код отрефакторит сам себя? Время потраченное на анализ вернется? Никакая из проблем не решилась.

Нельзя взять и сходу начать разбираться в огромном сложном проекте, его особенностях, традициях, гайдлайнах. Чтобы все это освоить придется писать код, и получать на него ревью, именно так опыт и набирается. Если этого не делать, то настанет момент когда ментейнер покинет проект и будет беда. Недостаток обучения и поддержки комьюнити опенсорс-проекта это аналог технического долга на социальном уровне.
НЛО прилетело и опубликовало эту надпись здесь
Ну это лучше чем ваше
Это не лучше и не хуже, это просто отсутствие ответа на поставленный вопрос. Вы делаете утверждение, но не можете сказать почему оно верно, вам просто хочется чтобы оно было верно.
Давайте прав наделаем и наделять ими начнём. Вот жизнь заиграет новыми красками.
Они уже наделаны, пусть пока далекие от идеала, но даже так в сравнении с тем что было до них стало намного лучше.
Сдаётся мне (опять вангую) что Торвальдс не читает холивары
Или читает, например. Узнать то нельзя.
«Не можешь срать — не морщи жопу». Так понятнее?
Не нужно это перефразировать, ваше мнение было понятно с первого же сообщения. Не понятно чем аргументируется верность этого мнения.
НЛО прилетело и опубликовало эту надпись здесь
Не понимаю что вы имеите в виду
Вы говорите что одному человеку можно делать плохо другому, но не можете сказать почему.
Потому что я так хочу.
Могли бы просто в самом начале так и написать. Связав всю цепочку утверждений воедино: «оскорблять это ок потому что кто-то хочет».
Следующая же снежинка придёт и начнёт жалиться что сам факт отклонения, даже без лишних слов, так ранил её душу, что не знает как теперь быть.
Это будут уже ее собственные проблемы, не нужно мешать в одну кучу самооскорбляющихся и адекватных людей.
Оскорбления это только КоАП РФ при штрафах в 1000 рублей. Ясно вам? И в интернете посылать всех на три буквы это постоянно.

А мораль. Идите. Читать. В монастырь.
И в интернете посылать всех на три буквы это постоянно.
То что оно так сейчас, не значит что оно так должно быть. А почему оно так должно быть я и пытаюсь узнать.
А мораль. Идите. Читать. В монастырь.
Во-первых чтением моралей я и не занимался, см. абзац выше. Во-вторых вы не можете указывать куда мне идти, так что нет.
НЛО прилетело и опубликовало эту надпись здесь
А кто вам права дал?
Права на мышление, или на свободу выражения мнения? Ну они то вроде как гарантированы, не? К тому же я сам ничего не делил, деление само воплотились в реальность естественный путем, а я лишь указал на факт его существования.
Как только вы встали на скользкую дорожку всех желающих объявить достойными внимания
Куда-то вы не туда разговор уводите. При чем тут объявления достойных внимания, я о таком и близко не писал.
Но на самом деле это может быть ушлый перец
Пока это не доказано, действует презумпция невиновности.
Когда ты реально что-то делаешь, то ты занят именно этим, а не лебезишь перед снежинкой-автором очередного кривого патча, с расшаркиванием доказывая ему на 100500 страницах, что именно не учел автор этого патча. Поэтому у Торвальдса есть Linux, а у автора actix'а [был] actix. Я вижу некую иронию в том, что автора одного из, не побоюсь этого слова, flagship-проектов на расте затравили сами же растовики за то, что он «плохо знает раст».
Вы не видите некое противоречие в ваших словах? По вашему выходит, что автор actix'а и есть та самая снежинка, перед которым недостаточно «лебезили».
Вежливость в общении все равно должна оставаться, каким бы кривым не был патч.
На моей памяти было два ревьювера в нашей команде, которые не стеснялись вытирать ноги о коллег. В итоге один уволился (не могу сказать, что по этой причине, но отношения с ним у большинства были более, чем прохладные), второго сняли с ревьювинга.
А Торвальдс и fafhrd91 смогли сделать свои проекты, имея трудолюбие, упорство и талант, а не из-за плохого характера или отсутствия вежливости.
На мой взгляд, он действительно недостаточно толстокож, и это проблема. Другой вопрос, что набигающие с криками «тебе не следует писать на раст» непонятные граждане, чьи кривые патчи он отклонял — это отдельная проблема, не все способны это выдержать.
На мой взгляд, он действительно недостаточно толстокож, и это проблема.
Это проблема (в данном случае) не его.
НЛО прилетело и опубликовало эту надпись здесь
Тащемта, нужно не болт класть, а стремиться писать лучше (встречал я код, который хорошо бы переписать, но там такие объёмы исправлений, что руки опускаются и проще с нуля написать).
НЛО прилетело и опубликовало эту надпись здесь
Ну за интерфейсом к специалистам по интерфесам. =)
Я тоже обычно интерфейс делаю как удобно мне (если он не настаиваемый).
Если что, я про UI (иногда GUI).
Это был leechcraft? :)
НЛО прилетело и опубликовало эту надпись здесь
Пробовал когда-то давно (емнип, перепробовал почти все джаббер-клиенты, когда искал через какой в конфе сидеть), остановился на пси+.
Правда, больше 5 лет джаббером не пользовался, наверное.
кому это *нужно*? и перед *кем* это нужно? ну то есть — *кому* автор обсуждаемого продукта *должен был* стремиться писать лучше?
НЛО прилетело и опубликовало эту надпись здесь
ну так вот я про то же — что нужно ему самому, он вполне решает сам.
я про код
код (или кот?) что-то кому-то должен? пишите развернуто, если хотите, чтобы вас поняли (и это с моей стороны не претензия, не наезд, не issue, а просто посылка — и вывод). Но если вы не хотите, чтобы вас понимали, вы можете продолжать писать односложно. Я не буду требовать, чтобы вы стремились писать лучше — это исключительно ваше право и решение.
стремиться писать лучше (встречал я код
Неужели я так неясно написал, что имелось в виду написание кода?

Автор кода, в первую очередь, должен стремится писать этот самый код лучше для себя. Ведь ему этот код поддерживать (чаще всего).
Я не говорю, что код должен сразу у всех быть написан идеально, но стремиться к этому нужно (да, я в курсе, что идеал недостижим).
Я тоже не пишу идеальный код, но стараюсь совершенствоваться, учась у других.

Личкрафты пили, фигле!

НЛО прилетело и опубликовало эту надпись здесь
Да уж, по сравнению с токсичностью Лора — даже американские sjw-фанатики — детский сад
НЛО прилетело и опубликовало эту надпись здесь
Люди очень социальные существа, крайне зависимые от чужого мнения. Толстокожесть надо тренировать, человеку к этому непривычному это всё очень тяжело и не приятно. И каждый высер принимается близко к сердцу, особенно когда их сотни и тысячи.

Я, например, натренировался когда был гейм-мастером на игровом шарде Ультимы и устраивал эвенты для игроков. И как бы я всё великолепно не проводил — всегда находились недовольные. Любой человек хоть раз устраивавший какие-нибудь розыгрыши в сети хотя бы человек на 100-300 это знает.

Тут надо понимать две простые вещи.

Во первых, то что ты делаешь (творишь) — ты творишь для себя. Тебе это интересно, ты получаешь удовольствие, ты развиваешься или развиваешь своё комьюнити, делаешь его больше.
Во вторых, всегда есть масса благодарных игроков, которым это всё нравится и которые тоже получают от эвентов удовольствие

Когда люди получают паршивую обратную связь часто возникает следующие реакции. Одни говорят «да нафиг мне всё это надо, не буду больше ничего делать, чтобы не получать негатива». Другие могут настолько начать наплевать на мнение других, что не увидят и не воспримут обоснованной критики. Находится в балансе довольно сложно, но можно. Но как бы ты не стал толстокож, я думаю от нашей природы всё равно никуда не деться.
Есть еще один нюанс: люди с позитивными эмоциями оставляют комментарии гораздо чаще, чем те, кому не понравилось. Особенно это относилось к временам УО, Л2 и ВоВ. Не знаю как обстоят дела в современном мире, но наврядли лучше.
  • реже
Людей с «позитивным» мышлением гораздо меньше. Люди как правило нацелены на то, чтобы быть недовольным, а не благодарными. Больше нацелены на критику, в т.ч не конструктивную и очень легко разбрасываются словами, сливая свой негатив. В целом, это наносит колоссальный ущерб, особенно ИТ индустрии (художника легко обидеть).

Если бы всё не было настолько плохо — сейчас было бы гораздо больше живых и активно развивающихся проектов. Менять это сложно, ведь далеко не все люди будут в этом разбираться и менять себя. А всё это идёт из семей. В школах и дет.садах где этому должны бы учить — учат совсем другому.
Люди настроены на самоутверждение, а критика, особенно малообоснованная и субъективная, лучше с этим справляется(

Надо творить добро назло :)

Справедливости ради, те кто предлагал патчи вели себя адекватно. Фразу кинул какой-то идиот, первую и последнюю.

Только потому, что иметь своё мнение, которое можешь обосновать, и не бояться называть идиотов идиотами, сейчас называется «быть токсичным».
Далеко не во всём согласен с Линусом, не разделяю его идеологию и некоторые технические решения, но уважаю как разработчика и как человека за нетерпимость к буллшиту. Нужно больше таких людей, не только в ИТ, а везде.
и не бояться называть идиотов идиотами, сейчас называется «быть токсичным»
А раньше это называлось как-то иначе? Проблема в том что Линус подает пример сообществу. А в сообществе каждый презумптивно считает себя правым, а оппонента соотвественно «наоборот». Что в купе с такой особенностью интернета как безнаказанность влечет к неконтроллируему потоку хейта во все стороны и со всех сторон.
он не подает пример, он всего лишь является предлогом для злоупотреблений (ака отмазки в стиле :«а че Торвальдсу можно, а мне нельзя?»), и в силу положения, на которое его «воздвигнули» (годами он работал в Трансмета и всем было пофигу) вынужден теперь отдуватьсяза чужие ожидания о нем.
Тот же Столлман — из MIT и FSF он сам ушел, но GNU остается за ним, и врядли какие-либо перипетии коснутся его личного проекта (разве что физическая смерть основателя)
М/б «называть вещи своими именами»?

ЗЫ Я работаю там, где нет такого понятия, как «токсичность» (применительно не к химическим веществам).
вы это так незамутненно написали, что прямо хочется футболку с Линусом «самый известный токсик — и горжусь этим».
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь

UB, Который в итоге был прикрыт ограничением на использование api

НЛО прилетело и опубликовало эту надпись здесь
Каждый лишний ансейф должен приводить к вопросу «а почему я все ещё пишу это на расте/хаскеле/идрисе».
Ну не каждый всё-таки. Но как бы хочется, чтобы unsafe применялся обоснованно. Вот это вот — это ж просто праздник какой-то!
НЛО прилетело и опубликовало эту надпись здесь
А что по ссылке происходит — то ли я не понял, то ли чувак пишет на С на расте.

<троллинг>А как иначе написать «самый быстрый веб-фреймворк»</троллинг>
НЛО прилетело и опубликовало эту надпись здесь
Дык в Rust его нет пока. Assembler уже лет пять только в ночных сборках, в релизе нету.
А что по ссылке происходит — то ли я не понял, то ли чувак пишет на С на расте.
Не совсем. Это он так количество unsafe уменьшает. Изначально у него было больше сотни unsafe. Ему этим много тыкали. Он их уменьшил… вот таким вот способом.

При этом аргументация такая: да, у меня есть небезопасные функции, в которых нет unsafe, но при этом публичный API безопасен — а значит всё в порядке.

Говорить что я по этому поводу думаю… не люблю ругаться матом.

По крайней мере понятно почему он, до сих пор, фактически единственный разработчик: а как иначе-то? С таким подходом?
НЛО прилетело и опубликовало эту надпись здесь
Просто людям важно не только да и не столько не то, «канонический» там код или не «канонический», а то, что продукт работает быстро, имеет широкий функционал и удобный API. Это не плохо и не хорошо, это реальность. Это код для продакшна, а не для выставки на ВДНХ в павильоне имени Раста. А то что автор пошел на некие компромиссы с идиоматичностью реализации в пользу скорости и, возможно, удобства — да, так бывает, что такой выбор приходится делать. Если кто-то может написать так же или лучше, но с сохранением идиоматичности — ну вперед, никто же не мешает.
НЛО прилетело и опубликовало эту надпись здесь
Насколько я понимаю, там небезопасный внутренний API в случае его неправильного использования. Не более того.
НЛО прилетело и опубликовало эту надпись здесь
Так и запишем: все, что основано на libc — небезопасно :) Использовать libc может только сверхчеловек.
НЛО прилетело и опубликовало эту надпись здесь
Если бы да кабы. Впрочем, ладно, это уже обсуждалось ранее много раз :) Разговор идет по кругу.

В удаленном issue в обсуждениях вроде бы было сказано, что для воспроизведения UB там достаточно, чтобы некие две функции выполнялись одновременно и не важно, вызываются они напрямую, или нет. То есть сокрытие там проблему не рашало.

Ну а они в реальности когда-нибудь выполнялись одновременно? Был ли какой-нибудь PoC на эту тему?
Я полностью понимаю тех, кто говорит, что такому коду в экосистеме не место.


А я вот не понимаю… Если «такой код» в экосистеме возможен, значит, ему в ней самое и место.

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


Не с одной стороны, а с любой…

что делать с тем фактом, что этот проект оказывается в топе используемых (как я понимаю), и люди на него завязываются, тоже непонятно.


Ничего не делать, очевидно. Этот код, раз он оказался в топе используемых, удовлетворяет запросам некоторого сильно не нулевого количества пользователей. Т.е. это код, который а) есть здесь и сейчас, б) выполняет реальные задачи, в) достойной альтернативы в данный момент не имеет.

При наличии заведомо лучшей альтернативы количество пользователей этого кода упадет, так как не будет смысла этим пользоваться и проект сам по себе сдохнет и «вывалится из экосистемы». Т.е. единственный корректный вариант «выталкивания проекта из экосистемы», раз вы твердо уверены, что можно лучше — взять попу в горсть и запилить свой, с шахматами и поэтессами. Либо форкнуть имеющийся и переписать куски, которые вас не устраивают. А дальше ждать, какой из проектов сдохнет раньше. Оставшийся на плаву будет прав.
НЛО прилетело и опубликовало эту надпись здесь
Давайте начнём с немного другой стороны спектра. Как насчёт кода с закладками? Майнерами биткоинов? Червями, отправляющими ваши личные данные на удалённый сервер при запуске библиотеки?


Собственно, а при чем тут unsafe и UB? Майнер биткоинов на Rust'е без UB не пишется? Или что? Каким образом типобезопасность вообще закладкам мешает? Или если червь написан без UB — то все норм, можно пользоваться?

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


А, может, кто-то и осведомлен? Риски то какие, я так и не понял, кроме «сжечь жопу Rust-комьюнити»?

У этого утверждения есть обоснования?


Ну, собственно, им пользуются, массового исхода пользователей не замечено… Покажете альтернативу? Если не покажете — значит нету.

Почему вы не рассматриваете вариант «громко говорить о проблемах в имеющемся решении»?


Потому что «Talk is cheap, show me the code».

Пойти и громко насрать в душу автору — это достаточно громко говорить. Ну, поговорили… Кому лучше стало?
НЛО прилетело и опубликовало эту надпись здесь
При вашем утверждении, что если какой-то код можно написать, то ему в экосистеме самое место.


Ну да, собственно, а как иначе? Если вирус написан на C, то частью какой экосистемы он является? Если код «служит недоброму делу» — он перестает быть кодом?

Падения, переполнения буфера, и всё прочее, за что мы так любим С.


Ну да, любим и пользуемся. Trade-off же: скорость vs безопасность. Кому-то нужнее скорость, кому-то безопасность. Решение принимается на уровне «обслужить X запросов в Y времени за Z денег при не более A отказов». Т.е. сводится к формуле из параметров XYZA, причем, заметьте, L (используемый язык) в критериях оценки отсутствует. XYZAL-формулы — признак фанатизма, а это плохо для бизнеса.

Впрочем, судя по разговорам о топе бенчмарков, есть топ из более чем одной реализации, так что альтернативы заведомо есть.


Я про достойные альтернативы спрашивал же, а не «хотя бы какие-нибудь». Я сам не растоман, и понятия не имею, что за хрень этот ваш actix. Но из информационного шума постоянно звучит «самый быстрый по бенчмаркам». Видимо, если такое «UB-говно» используют и используют настолько широко, что аж в том же информационном шуме постоянно проскальзывает «флагманский проект раста»… Ну, видимо, достаточно значимый разрыв в показаниях. Который, видимо, и достигается unsafe-кусками (иначе нахрен бы они были нужны). Т.е. остальные «достойные альтернативы», видимо, из достоинств предлагают «зато у нас без unsafe»…

Ну, такое себе.
Который, видимо, и достигается unsafe-кусками (иначе нахрен бы они были нужны).
Ну вот полгода-год и увидим — что и как. Если огранизуется форк и он выживет — будет как с LibreOffice/OpenOffice.org.

В их случае когда выпилили разную дурость (типа странных модулей на Java) — стало только лучше.

Посмотрим как здесь будет…
Собственно, я и говорил, что единственный верный путь со стороны критиков проектов — форк и опенсорцная дуэль. По результатам — определение правых и неправых.
НЛО прилетело и опубликовало эту надпись здесь
Это ложная дихотомия. Безопасность не обязана противоречить скорости.


Как правило, эти два понятия таки находятся в обратной зависимости. Отказ от безопасности — один из инструментов повышения скорости.

Для сервера, который торчит в интернет, это не основной критерий.


Для сервера критериев не существует, он не уполномочен принимать решения. Критерии определяются владельцем сервера, важнейшим из которых является классически стоимость владения. Для владельца одного сервера, как правило, скорость действительна не так важна, т.к. влияние скорости на стоимость владения все равно будет на уровне «да пофиг, внедрение не окупится». Все магически меняется с повышением количества серверов. «10 бабушек — это уже червонец». И вот там может заролять.
НЛО прилетело и опубликовало эту надпись здесь
Будем надеяться, что со временем баланс поменяется.


Надеяться вам придется, видимо, в одиночку. Не вижу предпосылок, если честно. Более высокая безопасность может достигаться только дополнительной вычислительной нагрузкой. В идеале эта нагрузка будет стремиться к нулю, но, как и все в нашем неидеальном мире, стремящееся к чему-либо, будет бесконечно долго приближаться, но никогда не достигнет. Ну, т.е. паритет — еще, может быть, если это будет zero-cost безопасность (слабо верится). Отрицательная стоимость безопасности — это уже никак.

Если бы это правда так уж роляло...


Для кого-то достаточно весомо роляет, видимо.
НЛО прилетело и опубликовало эту надпись здесь

Ага и удалять приватные данные/ключи(привет почему-то не убираемый компиляторами memset_s) тоже можно во время компиляции. Наличие требований к безопасности никогда не даст zero-cost в рантайме. Потому что что-то в рантайме делать так и так для ее обеспечения придется

НЛО прилетело и опубликовало эту надпись здесь
Эта нагрузка не обязана происходить во время выполнения. Можно проверять безопасность во время компиляции.

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

Судя по практике цена таких программистов не зашкаливает. Решает спрос/предложение и хайп. Как говорили знакомые сениор гошники, Москва пылесосит всех, кого может, и там го разраб не будет стоить сильно дешевле раст разработчика. А вот уровень гарантий той или иной программы отличаться будет значительно.

НЛО прилетело и опубликовало эту надпись здесь
но что делать с тем фактом, что этот проект оказывается в топе используемых (как я понимаю), и люди на него завязываются

Так и до патернализма и социализма недалеко. А начинали-то с NAP

НЛО прилетело и опубликовало эту надпись здесь
вы будете смеяться, но именно что куча наблюдаемых практик сводится к патернализму (или к «матернализму», если инфантилизируют мужскую половину населения) и классовому сознанию (т.е. не совсем к социализму, а к «борьбе групп» и т.д.)
А есть ли варианты переписать эти функции в более «правильный» вид, без потери производительности?
Есть, конечно. Но пока проектом руководит человек, который считает что так писать нормально — это будет низкоприоритетной задачей.

А пока это не будет сделано — контрибутить туда будет невозможно (ну или почти невозможно).

Тут нет хорошего выхода, на самом деле. Грустная история. Я много раз такое видел — когда отличный, по всем показателям, кроме читаемости, код приходилось заменять на худший, потому что никто, кроме автора, его поддерживать не мог.
Тут нет хорошего выхода, на самом деле.


Форкнуть, поправить, как вам больше нравится и посмотреть, чей проект раньше сдохнет… Opensource-way дуэль…
Ну дык этим и кончится, скорее всего. Как в примере c Sodipodi и Inkscape, про который я уже писал. Только автор, в результате, будет выперт со своего собственного проекта… это ведь тоже не самый хороший выход, согласитесь?
Так он же уже сам себя того? В любом случае это открытая конкуренция — и я не согласен что это так уж плохо

У оригинала всегда есть фора перед форком. Требуется не просто сделать этот самый форк, но и объяснить всем-всем чем этот форк лучше оригинала. Так себе дуэль выходит.

Согласно дуэльному кодексу 19-го, если мне память не изменяет, века вызывающая на дуэль сторона признавала право вызываемой стороны на выбор, кто будет стрелять первым. Нормальная дуэль, строго в духе дуэльного кодекса.
НЛО прилетело и опубликовало эту надпись здесь
Выбор оружия предоставляется оскорблённой стороне, то есть тому, кто вызывает соперника на дуэль. При тяжких формах оскорбления вызывающий выбирает также некоторые правила дуэли.

При поочерёдных выстрелах очередь всегда назначается по жребию.
Выбор оружия предоставляется оскорблённой стороне


Ну да. А вот насчет «то есть тому, кто вызывает» — очень спорно.

Вот такое, например:

При нанесении оскорбления одним лицом другому необходимо определить личность оскорбителя и оскоpбленного для предоставления последнему тех привилегий, на которые он имеет право.
— При одностороннем оскорблении получивший и не ответивший на оскорбление считается оскорбленым.
— При взаимных оскорблениях одной и той же степени оскорбленным считается получивший оскорбление первым.
— При взаимных оскорблениях разной степени оскорбленным считается получивший более тяжкое оскорбление.


В совсем спорных случаях — суд чести. В нашем конкретном рассматриваемом случае, оскорбленная сторона однозначно разработчик Actix, т.к. на оскорбление он, вроде, напрямую не ответил. А мог и в жопу послать, и был бы прав, потому что «а он первый начал».

Т.е. все норм, разработчик Actix имеет фору, заслуженную и обоснованную.
Но в то же время:
* Получив оскорбление, оскорбленный должен заявить своему противнику: «Милостивый Государь, я пришлю Вам своих секундантов».
* Секунданты оскорбленного должны первыми явиться к противнику.
Ну, собственно, кодексы разные бывают, очевидно. В моем таких слов нет. Да и суд чести решает, что бы там в каком порядке ни произносил.

Да и в принципе оценивать форкающего проект как ущемленную сторону — как минимум, странно. Перед ним готовый проект, который уже кто-то написал, собрал шишки. Если кого-то этот проект оскорбляет, ему остается только дописать/исправить уже имеющийся проект. Даже если «переписать полностью», это «полное переписывание» делается на основе уже предоставленного изначальным автором «инженерного образца», ценность которого вы, очевидно, недооцениваете. На имеющемся проекте провести анализ и найти слабые места, как правило, сильно легче, чем проектировать с нуля и собирать грабли самому.

А уж про раскрутку… Ну, тоже такое себе. Сравните «мой проект ABCDE, призванный (дальше простыня текста)» и «замена Actix, более лучшая, корректная, без потери скорости, вот бенчмарки».

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

Так что нормальная, справедливая дуэль. Чо не так то?

Да всё понятно же!


Аналог из мира Хаскеля:


safePerformIO = unsafePerformIO
НЛО прилетело и опубликовало эту надпись здесь

"вот это вот" имеет комментарий, что это только для внутреннего использования. Все эти RefCell в сингл-треде и даром не нужны, но Раст без них не разрешает. Автор сделал вполне логичный workaround.

НЛО прилетело и опубликовало эту надпись здесь

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

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Все просто. Если запретить unsafe то значительная часть экосистемы вообще не взлетит, там куча частей же на с++ написана. Например, оно же использует в какомто виде POSIX linux, который unsafe.
Просто это как гринписовцы на самом деле. Они просто хотят, чтоб не было unsafe. Они пока не знают, как этого достичь, но хотят. В принципе, имеют право, почему нет.
Отвечать надо " я не знаю как тут переписать без unsafe чтоб сохранить ту же производительность, прошу вас мне помочь".
НЛО прилетело и опубликовало эту надпись здесь

это внутренний unsafe, который, предположительно, не имеет проблем в single-thread, так как акторы и устроены. Что он адовый должны доказывать именно вы. Я тут ничего очень плохого не вижу.

НЛО прилетело и опубликовало эту надпись здесь

Я не говорю что он полностью безопасен или нет — я не знаю. Но надо сначала доказать либо одно, либо другое, а не как в исходном сообщении — закатывать глаза и говорить "о боже, как некрасиво!" на какой-то случайный unsafe, логика которого, вероятно, такая как я описал.

НЛО прилетело и опубликовало эту надпись здесь

ну т.е. вы просто руководствуетесь внутренним голосом, который говорит вам, что safe лучше unsafe, вам крупно повезло, вы в opensource — форкайте и доказывайте, можете начинать прямо с std раста, интересно посмотреть на результаты будет.

НЛО прилетело и опубликовало эту надпись здесь

Мой голос говорит, что за свою жизнь я повидал много карго-культов:
1) карго культ объектно-ориентированного программирования, которые хотели всё в мире сделать объектным, ведь это так очевидно.
2) но, неожиданно оказалось что надо не объектно, а функционально, и их сменили поклонники культа функционального программирования, которые пихали его тоже везде где могли.
3) ну и сейчас это поклонники borrow-checker'а.


И, не смотря на то, что все они принесли хорошие и правильные идеи, которые можно и нужно развивать, сами фанаты, не были правы, считая что это именно их идол — последний и единственно правильный.


Если брать модель раста без unsafe — то она очень лимитирующая — это большой минус, её бы расширять, а не запихивать весь мир в эти рамки.

НЛО прилетело и опубликовало эту надпись здесь

Это был ответ на ваш "внутренний голос". Модель языка и borrow-checker придумала не машина.

НЛО прилетело и опубликовало эту надпись здесь
А я вижу. Так как написание кода на Rust опирается на основное предположение «коду вне unsafe можно верить, коду внутри unsafe нет» — то появление в коде одного-единственного подобного «адового» unsafe обозначает, что нормальный человек, средний программист на Rust, больше контрибутить в такой проект не сможет. И проект превратится в «театр одного актёра».

А теперь вы: попробуйте объяснить, что это — не то, что мы тут наблюдаем.

если нет понимания как работает и зачем это — то конечно не надо контибутить. особенно так не надо делать для очень производительного решения — это отдельная сложная тема. производительное довольно часто написано с некоторыми отступлениями от общепринятого.

Тут есть печальный flaw, утечка идеи, хз как перевести. На расте много чего нельзя либо очень неудобно написать без ансейфа.

И возникает когнитивный диссонанс, белые пальто итп…

Нужен раст++, который опять же невозможен (
НЛО прилетело и опубликовало эту надпись здесь
А нужны ли они?
НЛО прилетело и опубликовало эту надпись здесь
Например, автору так удобнее… Написать на расте, очевидно, лучше, чем вообще не писать…
Пока это не публичный проект — да.

Так что финальный результат — автор сделал свой проект непубличным — всех должен устроить…
Публичный или не публичный проект — это личное дело автора. Вы, получается, аппелируете к тому, что как только проект стал публичным его автор стал кому-то чего-то должен. А он не должен. Он на это не подписывался. Нет никакого контракта, который подписывает автор, выкладывая код на обозрение.
Кому не нравится проект, тот может сделать или issue, или PR, или форк, или, что лучше, написать все с нуля. Написать правильно.
Вы, получается, аппелируете к тому, что как только проект стал публичным его автор стал кому-то чего-то должен.
Да, именно и точно так. Как только проект стал публичным — автор обязан выслущивать критикующих его.

Что уж он будет с этой критикой дальше — его дело. Но ожидать, что кто-то удовлетворится ответом «мясник так видит» и перестанет указывать на проблемы, если они не исправляются — глупо.
Да, именно и точно так. Как только проект стал публичным — автор обязан выслущивать критикующих его.


Это где такие правила?

Посмотрите в лицензию. Там, как правило, права и обязанности сторон описаны. В обязанностях автора классическое «автор вам ничего не должен», в правах пользователя — пользоваться. Если лицензия свободная — плюс право на форк. Намекаю: на форк, молча…
Намекаю: на форк, молча…
А это где прописано, извините? Каким законом регулируется?

Вроде как мы живём в относительно свободном мире, для того, чтобы выступать никакой лицензии не требуется.

Вот вы, к примеру, от fafhrd91 получили лицензию на ваши выступления? Нет? А почему выступаете тут, тогда? Может быть потому, что никакой лицензии и не требуется?

Достаточно того, что вы что-то про этот проект знаете… а для этого — проекту даже не нужно быть публичным… достаточно того, чтобы он не был внутренним, секретным.
Пока это не публичный проект — да.


Погодите-погодите. Проверил, погуглил… Нигде не нашел запрета выкладывания говна в публичный доступ. Оно и понятно, журналистика погибнет сразу…

Может быть, вы мне дадите ссылку на требования к публикации кода? Hello-World'ы с гитхаба вычистим заодно…

Мне кажется, вы не совсем корректно термин «публичный» понимаете. Публичный — это общедоступный. Не «устраивающий всех» или «принадлежащий каждому смотрящему», а просто общедоступный. Про обязанность кого-то там слушать вообще слова нет…
Знаете — вы обнаруживаете у меня слова, которых я не писал.

Про обязанность кого-то там слушать вообще слова нет…
Извините, но вы технически не можете изолироваться и не слышать то, что про ваш проект пишут в issues, рассказывают на конференциях и так далее. И попытки «выпилить» «негодные» мения — приведут только к Эффекту Стрейзанд.

Как уж вы будете на всё это реагировать — это другой вопрос. Но не слышать у вас не получится.

Публичный — это общедоступный. Не «устраивающий всех» или «принадлежащий каждому смотрящему», а просто общедоступный.
Этого достаточно. Снова читаем про Эффект Стрейзанд.

Единственный способ сделать так, чтобы о вашем проекте никто «худого слова» не говорил — сделать так, чтобы про него люди просто не знали. Всё. Никаких других способов нет.
НЛО прилетело и опубликовало эту надпись здесь
Очевидно доказательство корректности, насколько оно возможно, в голове автора проекта. Ну или на бумажке. Вряд ли он этот unsafe написал случайно.

Но сам факт наличия unsafe — не баг. Его наличие несколько хуже чем safe версия. Но его отсутствие оставляло UB которое было доказано и было значительно хуже.

Вопрос в том какой смысл говорить человеку который пишет на расте что unsafe — это неправильно? Как думаете автор сервера сам догадывается о чем-то таком после нескольких лет разработки на языке?

Предупредить сообщество? О том что автор в одном месте возможно обоснованно использовал unsafe? И о том, что он там возможно допустил ошибку? Почему не написать, что кажется он мог допустить логическую ошибку, которая вполне согласуется с safe, вы её не нашли, но возможно же. А весь код вы не проверяли. Подходит вообще к каждому коммиту.

Если вы хотите предупредить сообщество о возможных ошибках в репозитории, которых вы не нашли, то можно сразу бота писать, поскольку это подходит вообще ко всем репозиториям, кроме пустых. Но знаете, сообщество в курсе, оно предупреждено.

PS «Вы» в тексте это не вы, конечно, а просто способ подачи мысли.
НЛО прилетело и опубликовало эту надпись здесь
Я согласен с тем что написания на расте вне парадигмы стоит избегать. Мой комментарий был о том, что сообщать об этом ни автору ни сообществу — не нужно, потому что они в курсе.

Почитал стену вокруг, понял что интерфейс предоставлялся дальше как safe, имея внутри серьезный unsafe по сути заражающий много кода сразу. Соглашусь, что о таком предупреждать сообщество всё же стоит. Чтобы на этом фундаменте не строили дальше как будто он что-то гарантирует.

Мне теперь просто крайне интересно как раст сообщество проводит черту? Потому что я зуб даю что в кишочках unsafe более чем хватает. Где его можно завернуть и сделать вид что снаружи safe, а где нет?
Насколько большой кусок можно завернуть один раз, а какой — уже нет?

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

Где его можно завернуть и сделать вид что снаружи safe, а где нет?
А там где нет — так можно функцию пометить unsafe. И тогда её вызывать из кода без пометок unsafe будет нельзя.

Обратите внимание что все «типа как контрпримеры» — в духе «а вот смотрите — в стандартной библиотеке есть похожая функция… а теперь представьте что она не помечена unsafe...»

Ответ очевиден: она помечена unsafe — именно потому что она «такая же» и тоже может нарушать инварианты.

Верно, но всё это начинает влиять только если на проекте больше 1 человека, иначе марировку такого вида делать особо не для кого. Уже 100 раз это говорил.


Да, это плохо. Нет, это не настолько критично как все пытаются раздуть. Да, нужно учить людей так не делать. Нет, говорить "не пиши на расте никогда" не надо.

Да, нужно учить людей так не делать.
Есть такая фраза: «всему своё время». Учить этому нужно новичков. Людей без опыта.

Человека, несколько лет пишущего на Rust и до сих пор этого не понявшего — учить уже поздно.

Верно, но всё это начинает влиять только если на проекте больше 1 человека, иначе марировку такого вида делать особо не для кого.
Эта маркировка делается, в первую очередь, для компилятора. Для того, чтобы он мог сделать проверки и вас остановить, если вы делаете ошибку. Если вам это «нинуна» — то непонятно зачем вы вообще с Rust связались.

Нет, говорить «не пиши на расте никогда» не надо.
Здесь вы, наверное, правы. Вот эта статья явно более адекватна.
Верно, но всё это начинает влиять только если на проекте больше 1 человека,

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

А тут мы подходим к вопросу о том, нужно ли писать такие вещи в таком стиле на расте. Ведь, опять же, смысл раста — чтобы не нужно было человеком проверять весь код.


Сорян, но мне кажется, в ваших вопросах лишнее слово — раст. Фанатизмом веет…
НЛО прилетело и опубликовало эту надпись здесь
Осталось понять, о чьих мы ожиданиях говорим.

Если об ожиданиях автора Actix относительно Rust'а. Ну, собственно, он ожидал, что раст — это тот язык, который позволит ему написать Actix. Собственно, вот он, Actix… Не вижу противоречий.

Если об ожиданиях разработчиков языка, что их поделием будут пользоваться иначе — ну, собственно, наивность во все поля. Да и, насколько я понял, именно разработчики языка не против. Им срать вообще на какой-то там Actix.

Если об ожиданиях анонимного кукаретика в issues на гитхабе. Ну, они-то уж точно ничего общего с реальностью не имеют…

Ну, такое себе.

Да и «философия инструмента»… Такое себе… Это инструмент, его дело — задачи выполнять, а не философствовать.
НЛО прилетело и опубликовало эту надпись здесь
У меня есть набор ожиданий от языка.


Ну вот странный вы — набор своих ожиданий от языка масштабируете на автора библиотеки…

Например, что функции, не помеченные как unsafe (заметьте, safe — свойство по умолчанию), сохраняют те или иные варианты. В хаскеле есть способ энфорсить это (подмножество safe haskell), в расте — (пока?) не завезли.


Ну вооот, в расте — не завезли. Т.е. претензия у вас, видимо, к авторам Раста? Дык, вероятно, стоит им и отнести?
НЛО прилетело и опубликовало эту надпись здесь
Я эти ожидания масштабирую на тот код, с которым мне приходится работать.


Ну вот зря же. Ожидания — вещь, безусловно, полезная. Только полезность их проявляется на этапе решения о принятии кода в работу. Составляете список ожиданий от кода, проверяете код на соответствие ожиданиям. Если не соответствуют — не принимаете код в работу.

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

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

А тут — сначала понапринимают в работу неведомо чего, а потом начинают натягивать сову на глобус и ожидания на реальность.
НЛО прилетело и опубликовало эту надпись здесь

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

НЛО прилетело и опубликовало эту надпись здесь

Логичным workaround тут было бы использовать unsafe уровнем выше.

Насколько я понимаю, автора и так постоянно долбили за то, что у него «слишком много unsafe».

Я бы на его месте ответил: "кто-нибудь может сделать лучше?" и не стал ничего менять.


А писать такую вот затычку для компилятора — это прямой обман потребителей библиотеки. Чем больше я на неё смотрю, тем меньше мне нравится позиция автора, это при том что ещё 3 часа назад я был полностью на его стороне...

Собственно основная проблема — в том, что наличие одного такого unsafe делает метрику «количество unsafe-блоков» бессмысленной. Потому что после этого совершенно непонятно — сколько в этой библиоте, на самом деле, небезопасного кода. Может там этот трюк в паре мест используется, а может в тысяче… кто знает?

если разворачивать все unsafe наверх, а тем более из std, то как бы в итоге не получить какой-нибуть слишком уж глобальный и неприятный вывод, например о том что safe-rust не про перфоманс вообще.

Это будет отрицательным результатом — но тоже хорошим результатом.

Потому что вы убедимся в том, что одновременно быстро и безопасно не бывает — и тогда, возможно, перейдём на безопасные, но медленные языки типа C# или Java.

А вот иметь код, который, как тебе кажется, безопасен, но который, на самом деле, содержит проблемы — это однозначно плохой результат.
Это будет отрицательным результатом — но тоже хорошим результатом.

Это ваше теоретическое мнение. А автору код надо писать в прод.
О каком из авторов мы говорим? Об авторе библиотеки или здешней статьи?

Автору библиотеки — не нужно, иначе бы он не предлагал код у него забрать.
Если ты используешь какую-либо абстракцию, то ты заведомо соглашаешься на потерю какой-то части перформанса. Но эти потери абсолютно необязательно а) заметны в реальных замерах б) находятся на критическом пути.

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

Сначала профилируй, потом начинай творить дичь.

Ну т.е. создатели раста зачем-то, видимо по недосмотру, оставили unsafe, а нехорошие люди, типа автора актикса, этим злоупотребляют.


Просто создайте RFC и PR в раст по отключению unsafe и проблема решена.

оставили, потому что раст без ансейфа нежизнеспособен…

но как практик, я ансейф не буду демонизировать, прст идеалистам гвоздик
Ваш коммент с моей точки зрения никак не следует ни из моего, ни из вашего сообщения. Будете добры раскрыть мысль?
если разворачивать все unsafe наверх

"Разворачивать наверх" надо только те ансейфы, которые протекают. И в std как раз так и сделано: ряд функций отмечены как unsafe.

конкретно указанный по ссылке выше unsafe — протекает?

НЛО прилетело и опубликовало эту надпись здесь
Он не то, что «протекает». Его единственный смысл — это возможность «протечь» и дать возможность писать небезопасный код без всяких там лишних пометок.

То есть там кроме «протечки» — вообще ничего нет.

Объясните, как об будет течь в однопотоке.

Достаточно того, что оно «дотекает» до края unsafe блока. И позволяет взять две изменяемые ссылки на один и тот же объект.

Этого уже достаточно для того, чтобы компилятор вам весь код изуродовал.

То что этого сегодня, сейчас, не происходит, так как в этих оптимизациях в LLVM ошибки и они в компиляторе Rust отключены — ваше счастье.

Но это не значит что этот код нужно так и оставить. Это значит что у вас [пока] ещё есть время на то, чтобы всё исправить.

Знаете — я этих всех рассуждений наслушался от пользователей C++. Которые тоже всегда начинают рассуждать о том «а как может сработать это UB» и «да я лучше вас знаю о том как работает CPU, нафига мне заботится о ваши стандартах». Я даже статью об этом писал когда-то.

И правило, которого я придерживаюсь очень простое: «код, написанный с пониманием того, как работает CPU»… того не стоит.

Его можно посмотреть, чтобы увидеть в нём какие-то идеи… но в 9 случаях из 10 дешевле не проводить аудит, а написать всё с нуля.

Вот то же самое и здесь. Rust и Unsafe Rust — это разные языки. Да, у них похожий синтаксис — но это разные вещи. И в коде на Rust не должно быть методов которые нельзя безопасно использовать из обычного Rust — все такие методы должны быть помечены unsafe.

Если, как fafhrd91 утверждает, его вообще не заботит гарантии безопасности Rust-кода (а заботит только безопасность публичного API) — то мы имеем дело не с 50000 строчками в которых 16 unsafe блоков, а с 50000 строчками unsafe кода.

И если хочется его подерживать — то нужно его сначала вычитать и привести в порядок (разделить его на безопасный и unsafe код «по настоящему»).

Огромная работа и не факт, что удастся найти человека, который рискнёт этим заняться…

Спасибо за развёрнутый ответ, но так и не понял как именно он протекает, зато применили словесную гимнастику о том что он куда-то до края дотекает.


В общем-то позиция понятная, но она не соответствует целям и эксперименту данного фреймворка. По "стандарту" надо взять спринг и никакой не Раст.

Идея unsafe в Rust что они отключают ряд проверок borrow-checker. При этом обязанность программиста написать unsafe код так чтобы по его окончанию инварианты которые требует компилятор не были нарушены. Соответственно если после окончания unsafe блока существует 2 изменяемых ссылки на один обьект — это прямое нарушение инвариантов языка и не возможно с помощью компилятора доказать что они корректно используются. Об этом и говорил khim когда говорил что они дотекают до конца unsafe блока.
Если инварианты языка нарушены в таком блоке unsafe то в идеальном мире все вызывающие функции тоже должны быть помечены как unsafe вверх по стеку и до того места где инварианты языка восстановлены. Но фактически этого не сделано.

Я знаю что такое unsafe и borrow-checker. Я понимаю что о чём вы все говорите в общем случае, но, я думаю, что вы рассуждаете абстрактно, без вникания в детали. Я не спорю, что это выглядит плохо, но, чтобы доказать что в контретном случае это плохо — надо залезать в детали реализации и смотреть как это используется, и что это вызывает протечку из публичного API. Если автор не использует эти ссылки из разных потоков, то, вероятно, это вполне безопасно.


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

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

Все верно, но тогда с формальной точки зрения весь код находящийся ниже уровня публичного АПИ должен быть помечен как unsafe потому что в нем не соблюдаются инварианты компилятора.

А, ok, спасибо, вы объяснили наконец что тут пытаются мне доказать. Но мне кажется это всё же немного дело автора соблюдать формальности или нет. А несоблюдение формальностей не означает что тут фактическая ошибка. Вот за пределами публичного API — уже дело не только автора.

А несоблюдение формальностей не означает что тут фактическая ошибка.
Несоблюдение формальностей обозначает что у вас UB. UB обозначает что ваша программа содержит ошибку. Что обозначает. что её не нужно использовать, пока ошибка не исправлена.

Потому что компилятор, превращая вашу программу в машинный код имеет право полагаться на тот факт, что вне unsafe блоков все инварианты сохранены.

Всё. Вот совсем всё.

Понимаете — это не вопрос «религии». Это вопрос «техники безопасности». Это как если бы электрик выкручивал УЗО и соединял провода напрямую аппелируя к тому, что они ему мешают, а на входе в микрорайон всё равно есть защита.

Никакие рассказы про то, что он «pushing boundaries» не проканали бы — его бы уволили и всё.

P.S. По крайней мере стало понятно почему у проекта нет активных контрибуторов, кроме автора…

"Несоблюдение формальностей обозначает что у вас UB" — ой, да ладно, come on. Несоблюдение формальностей означает всего лишь то, что компилятор своим примитивным borrow checker'ом не может гарантировать, что тут нет UB, вот и все. Это не то же самое, что "UB есть". Единственное что можно ДЕЙСТВИТЕЛЬНО вменить автору — это то, что он расставил МАЛО unsafe-директив, надо было ставить их больше, и не слушать кукарекание пуристов про "тут слишком много unsafe", вот и все.

Несоблюдение формальностей означает всего лишь то, что компилятор своим примитивным borrow checker'ом не может гарантировать, что тут нет UB, вот и все.
Если у вас, как у автора Actix, есть функция, которая может передать в «безопасный» код две мутабельные ссылки на объект — то речь уже идёт не о «примитивном borrow checker»е, а о, извините, о негодной программе.

Ключевое слово "может". А может и не передать. Если в конечном счёте такого нигде не происходит, и нигде не появляется одновременно две мутабельных ссылки на одно и то же, то программа вполне корректна. Просто это гарантируется не компилятором, а разработчиком.

НЛО прилетело и опубликовало эту надпись здесь

Обожемой, Изя, у погромиста таки уже столько всего на плечах, что, если там иногда немножечко полежит ещё и это, он этого и не заметит, я вас уверяю.

НЛО прилетело и опубликовало эту надпись здесь

Какого именно программиста? В публичном апи всё оперативно чистилось, а на прокте людей которых можно было бы пожалеть особо не было.


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


С точки зрения идеалов языка он не прав. С точки зрения работспособности и надежности продукта — он даже с этими УБ более рабочий код предлагал. Не факт, что между постоянно паникующей библиотекой и библиотекой, которая молча модифицирует данные по случайному адресу раз в 100 лет (и который описан как "не надо так делать" в документации) выбор всегда стоит делать в пользу первой.

НЛО прилетело и опубликовало эту надпись здесь

Мне кажется, что хоть проект и не идеален, но он достоин уважения. Очень крутая работа, пусть и с огрехами. Просто оказалось, что некоторые вещи в сообществе непростительны. Ну что ж, бывает.


Надеемся теперь сообщество покажет, как надо было делать. Нужно всего ничего — заменить ансейфы на сейф аналоги (можно сделать за считанные дни), и не потерять производительности/удобства (а вот с этим уже сложнее).

Идея unsafe в Rust что они отключают ряд проверок borrow-checker.
Пожалуйста, не распространяйте это заблуждение дальше. unsafe ничего не отключает. За комментариями отсылаю к Стиву: words.steveklabnik.com/you-can-t-turn-off-the-borrow-checker-in-rust
Это уже семантика. Посмотрите внимательно на примеры из вашей же статьи: вы можете, с помощью unsafe превратить ссылку в указатель, а потом обратно превратить её обратно в ссылку… в статье это не обсуждается, так как это — прямой путь в… не будем ругаться матом… нехорошие места.

Но это — именно то, что делает Actix!

То есть да — сам по себе unsafe borrow-checker проверки не отключает, но он позволяет это сделать и, что хуже, позволяет отключить проверки даже в «безопасном» коде (условно: экспортировать «небезопасность»).

Однако это не то, что нужно делать! Я, когда писал про peek и poke не мог даже вообразить что автор Actix реально что-то подобное у себя устроил!
С тем что вы пишете про семантику — согласен.

Однако «отключить проверки» и «обмануть компилятор» — все же разные понятия. Шаманство с reborrow — это именно что обман компилятора со всеми вытекающими.

Опасность такого расхожего выражения в том, что новичок вместо «unsafe — это граница, после которой ответственность за соблюдение фундаментальных инвариантов переходит от компилятора к программисту» может интерпретировать как «unsafe — отключение всех проверок и все можно».

P.S.: Так то и без всей этой полемики ясно: то, что творит Actix — за гранью добра и зла. При всем уважении.

Вам всего лишь надо форкнуться, чтобы доказать логичность такого решения.

Пишу на Rust full-time, на мой взгляд, язык это довольно нишевый, я слабо понимаю хайп вокруг него.


Писать на нём высокоуровневый (a-la Haskell) код совершенно неприятно из-за необходимости много думать о том, кто чем владеет. В Haskell всё есть value, как только в языке появляются ссылки, composability вылетает в трубу.


Писать на нём низкоуровневый код (я работаю над runtime для нативного кода полученного из Wasm, кругом адок из контекстов, mmap/mprotect и обработчиков сигналов; недавно простенький рантайм для Future написали) тоже занятие малоприятное (как минимум с точки зрения бывалого разработчика на C++ и C). Помню по началу убил часа два чтобы понять, как правильно преобразовать указатель в ссылку в одном запутанном случае (практически noop с точки зрения С++).


Реализовать многие структуры данных эффективно без unsafe у вас не получится (давно хочу взяться за реализацию HAMT которая должна побить im).


Типичный инфраструктурный код (перекладыватели байтов, интерпретаторы, компиляторы, рендереры) писать на нём относительно приятно (ADT + pattern-matching, всё что нужно человеку), вполне можно оставаться в safe-подмножестве.


Писать на Rust просто ради удовольствия я бы не стал (часто пишу для удовольствия на других языках).

язык это довольно нишевый, я слабо понимаю хайп вокруг него.
Мне, например, нужен зрелый Go (т.е. быстрый) с развитой системой типов. Ну да, по сути инфраструктурный и вспомогательный, но это ведь огромная ниша, вон на Go если даже посмотреть, и там есть куда расти. Haskell бы много где подошел, но он неимперативен, большой и многие коллеги боятся его.

Кроме того, Rust создавался как замена С/С++ разработчиками Firefox и совсем не для инфраструктурных проектов. Глядя сбоку мне кажется, что С/С++ — это не вполне языки светлого будущего (особенно второй). Будущие проекты будут еще крупнее (браузер как пример) и их еще сложнее будет поддерживать посторонним без дополнительных гарантий.

Привыкшему с легкодоступным ссылкам и к необязательности С-разработчику Rust само собой будет сковывать руки. У меня опыт С небольшой и далеко в прошлом, и особенности работы с borrow-checker кажутся даже удобными, тяжелее ошибиться в малознакомом стиле программирования без GC.
НЛО прилетело и опубликовало эту надпись здесь
уже минимум на трёх местах работы проверено

Вообще говоря, звучит неоднозначно.


но он неимперативен

Так кажется только тем, кто не пробовал писать реальные вещи на Haskell. На Haskell легко и приятно писать код, который выглядит императивно.

Я бы не сказал что развлечение с мутабельными векторами в ST сколько-нибудь приятно.

не сказал что развлечение с мутабельными векторами в ST сколько-нибудь приятно

К счастью, требуется оно примерно также часто как unsafe в Rust.

Ну да, автор исходного коментария так и сказал: «кучка фанатиков»
Кучка фанатиков, скорее всего не создающих ничего, шеймит человека за то что его _деятельность_ не вписываются в их надуманные идеалы.

Фиксед для общности. Веянье эпохи, так сказать.
Спасибо интернету, как мощному и доступному рупору, трибуне с которой можно вещать эмоционально и увлекательно, не обременяя себя излишними когнитивными сложностями подготовки выступления.

Ему ещё повезло что на него не напали SJW

НЛО прилетело и опубликовало эту надпись здесь
Не волнуйтесь — она бы оказалась либо «не того цвета кожи», либо «не бодипозитивной» (поддерживает форму, занимается спортом), либо еще что-нибудь. Был бы человек, а статья найдется.
Бодипозитив все же о другом. Согласно вики это «течение, которое учит позитивному отношению к своему телу, его тотальному принятию и свободному самовыражению».
SJW использует «Бодипозитив» в другом значении. Если утрировать: Я не толстая, а бодипозитивная, а все, кто с этим не согласен, познают ужас моей священной войны.
НЛО прилетело и опубликовало эту надпись здесь
Даже Торвальдс с Столманом слились, а уж у них то поддержка сообщества помощнее была.
Зависели ли от этого их финансы? Боялись ли они судебных процессов?
А нечего на этих фанатиков внимание обращать.

Любому взрослом здравомыслящему человеку нужно понимать — в мире очень много моральных уродов, И их моральное уродство только усугубляется псевдо-анонимностью интернета. Если ты не готов встрече с ними в сети (не умеешь игнорировать их наезды) — то да тебе нужно отключить интернет и забыть о нем как о страшном сне.

Опенсорурс тут в принципе — не причем. Это просто еще одна среда общения.
Здравомыслящий человек, тем не менее, не должен и забывать известную поговорку, смысл которой сводится к тому, что если тебе раз за разом разные люди говорят, что ты что-то делаешь не так, то стоит проанализировать — возможно (не факт, но возможно), они правы.
но при этом ты вполне можешь (имеешь право) продолжать делать что-то не так, пока это не нарушает *права и свободы* других.

Так тут никто никого таких прав не лишал.

Соглашусь, однозначно!

У меня есть опыт общения с очень неадекватными людьми.

Их «наезды» очень часто содержат некое «зерно истины», только «плевела» порой это скрывают так, что раскопать может только очень закаленный человек.

Так уж случилось, что я натренировался на неадекватах периодически наезжающих по поводу моих opensource pet-проектов. И вот когда мы на работе наткнулись на такое, то оказалось, что письма этого неадеквата могу читать (выуживая полезный смысл) только я. На то время, что мы вынуждены были с ним общаться я был негласно назначен первым (и единственным), кто читает его письма и толкует их остальным. Остальные просто не открывали его писем дабы не травить свою психику.
Но даже в таком варианте удалось из этого общения вытянуть довольно много полезного для дела.
Переводчик с матерного на русский.
Нет, там был русский (хоть и в исполнении белоруса), но такой, что даже наши дамы начинали ругаться матом.

Угу. Написал бы в духе: "Сначала сам достигни" и любовался б процессом подгорания

Не понял, какой-то чудак из «команды раст» вот так авторитетно гадит в комменты, и это имеет влияние на автора? А на три буквы его послать (вежливо, конечно)? Или там в гитхабе толерастия сплошная, терпение к убогим т.е., и за такой даже вежливый посыл будут репрессии? Какая-то нездоровая ситуация.
На такие конские предъявы (извините за вульгарщину), что мол «тебе надо перестать писать на Rust» можно просто давать ссылку на вики страницу с описанием команды Fork.
Автор совершил одну ошибку — не проигнорировал таких с самого первого раза, прогнулся с правками. Вот и насели.
Николай, не опускай руки из-за говнюков. Собака лает — караван идёт. Вот так должно быть.

Дело в том, что он вполне обоснованно объяснил, что удаление unsafe требует дальнейшего исследования побочных эффектов, в том числе и на производительности, но вместо принятия этой необходимости его начали хейтить

Хочешь сказать, что комменты вида "this patch is boring" не похожи на провокацию флейма? Николай, если судить по переписке, тоже не всегда уважительно относился к другим.
И как мне кажется, удаление репозитория в такой ситуации это громкий, но инфантильный поступок.
Грубо говоря, чтобы к тебе относились хорошо ты должен сам к другим относится так же.
Конечно же тема с unsafe и UB крайне холиворная и болезненная, поэтому я понимаю почему там повышенное число хейтеров.
А еще у меня такое ощущение, что других мейнтейнеров не появилось просто потому что Николай сам по себе любит один все делать.
Теперь же кажется взрослым поступком было бы отдать управление репой кому нибудь, кто много юзает актикс в проде.
А резюмируя, хочу сказать, что эмоции очень вредят долговременной работе.

Николай, если судить по переписке, тоже не всегда уважительно относился к другим.

некорректно сравнивать его с комментаторами с гитхаба. Нагрузка на него, как на мейнтейнера популярного проекта, в несколько тысяч раз больше. Причем, я так понял, это еще и его не основная работа.


И вообще интересно наблюдать, как это "инклюзивное" комьюнити требует от обычного программиста, наверняка еще и интроверта, скиллов специалиста по связям с общественностью. Инклюзивность 80-го уровня.

Если подумать, то опенсорс это как раз код плюс коммьюнити, а значит хочешь не хочешь, а чтобы коммьюнити было ты должен уметь как мейнтейнер разговаривать с общественностью.

Ну вот он выяснил, что он полный интроверт, общаться с общественностью не умеет, и закрыл проект.


Вопрос только, кто от этого выиграл.

Сообщество выиграет. Сделает форк ну и просто поляна расчищена теперь для других, более community friendly. А до этого все говорили: "Зачем ты пилишь очередной веб-фреймворк, есть же Актикс". Ну вот.

ну я и говорю, инклюзивность 80-го уровня. Им надо в Code of Conduct прописать "делай что скажут анонимы с реддита, или иди нахрен", чтобы у будущих желающих поконтрибьютить в раст не было непонимания.

А с чего вы решили, что этого там небыло? Вот вам цитата:


Examples of behavior that contributes to creating a positive environment include:

Using welcoming and inclusive language
Being respectful of differing viewpoints and experiences
Gracefully accepting constructive criticism
Focusing on what is best for the community
Showing empathy towards other community members

https://github.com/fafhrd91/actix-web/blob/master/CODE_OF_CONDUCT.md

Чтож тогда само коммьюнити не удовлетворяет требованиям?
Так вот оно, как, оказывается. Успешные проекты мешают другим проектам стать успешными. Ребятам из Django и Spring надо сказать. А то может они и не знают, что губят индустрию, «занимая поляну».
Да и сколько бы чудесных ОС уже было написано, если бы не этот дурацкий линукс с токсичным Торвальдсом, который не коммьюнити-френдли.
Успешные проекты мешают другим проектам стать успешными.
Ну это-то как раз очевидно.

Да и сколько бы чудесных ОС уже было написано, если бы не этот дурацкий линукс с токсичным Торвальдсом, который не коммьюнити-френдли.
И это тоже очевидно.

Неочевидно другое: была ли бы хоть одна из этих ОС лучше, чем «дурацкий линукс»?

Вот это вот неочевидный вопрос. А то, что фреймворки и ОС на замену будут написаны — очевидно.

Плохо тут другое: вы заложились на использование этого проекта, не оценив риски (число грузовика = 1).
Или я неправ и вы с самого начала рассматривали возможность, что вам придётся поддерживать собственный форк?

Вот видимо тут единственный рабочий вариант — это иметь сотоварища экстраверт для общения. В конце концов распределение на интровертов и экстравертов заложено в ДНК и с этим ничего не сделаешь.

распределение на интровертов и экстравертов заложено в ДНК


Могу я попросить ссылку на источник?
Если точнее в разница в устройстве мозга, но закодировано ли это в ДНК я не знаю.
Причина: Разная длина дофаминового и триптофанового путей, которые определяют чувствительность на позитивные и негативные явления.
Вопрос только, кто от этого выиграл.
SJW, очевидно. Их же цель не создать здоровую обстановку, а привлечь как можно больше «обиженных». Иногда удаление реально токсичных деятелей этому помогает, но в настоящее, очевидно, мы уже давным-давно перешли эту грань.

P.S. Интересно — когда мы перешли от «Talk is cheap. Show me the code.» к… вот этому.

Звоночками были войны насчет комментариев, точнее включение обязательной толерантности, в линукс-ядре например.

Если не справился/надоело — можно передать проект другим.
Это же очевидное преимущество опенсорса.
Уверен, что нашлись бы способные люди.

Но неочевидное для каждого конкретного автора. Мотивы вкладываться в опенсорс могут быть очень разные от разработчика к разработчику и далеко не обязательно основной целью является именно развитие свободного ПО. По мне — пользователь опенсорса "должен" гораздо больше, нежели разработчик. Политика проста: нравится — пользуйся, не нравится (в т. ч. отношение автора к комьюнити — форкай/пиши сам).

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

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


Учитывая, что закрытый форк не будет доступен публичен, никакого раскола сообщества не будет, а значит и обычных с этим связанных проблем.


Остается только наблюдать, к чему всё это приведет.

Здесь вопрос не о технической возможности сообществу продолжать разработку, а об отношении самого автора к сообществу.

Скриншот в начале поста, который приложил автор, вроде довольно явно показывает, сколько труда вложил автор, а сколько — «сообщество».

Человек в одиночку делает проект мирового уровня, люди этим проектом бесплатно и добровольно пользуются и завязывают на него коммерческие продукты, чтобы получить экономическую выгоду для себя, а когда возникает какой-то конфликт — вместо благодарности автор проекта получает ответ типа«лолкек, раз не нравится мой патч, не пиши на расте, нуб».

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

Потому что когда у тебя весь код устроен не так, как обычно пишут на Rust, а как-то иначе — то, разумеется, все правки должны будут через тебя проходить… а иначе как удержать весь «карточный домик» от разваливания?

Мне вся эта история qmail напоминает. Вот до жути просто. И проект, написанный «в одно рыло». И заявления про лидерство (небеспочвенные). И отказ от развития, в какой-то момент…

Вся история — вот прям копия. Один-в-один.

И ничего — мир не умер, когда qmail заменили на postfix, exim и разные другие MTA. И тут ничего страшного не произойдёт.

А что делать именем? Ведь не получится же без согласия Николая сохранить старое название и крейт.

И не нужно, очевидно. Ровно это и было целью его действий: чтобы форк (если он появится) не имел бы ассоциаций с оригиналом.

Ну вот как Sodipodi и Inkscape.

Там была похожая ситуация — но так как люди, возмущавшиеся тем, что Sodipodi написан «неправильно» умели не только трепать языком — но и смогли сделать форк, который стал популярнее оригинала.

Разные люди всегда будут иметь разные мнения о том, как нужно писать код. Проблемы начинаются тогда, когда людям, которые код не пишут разрешают кидаться фразами типа «Please just stop writing Rust».

В любом случае закрыть этот проект — было правильным решением. Если форк образуется — всем будет лучше, если это случится под другим именем.
Приведу цитату
@ fafhrd91 написал…
этот патч нудный

@ CJKay написал…
>этот патч нудный
Так же, как и решение проблемы скрытого повреждения данных.

@ bbqsrc написал…
@ fafhrd91 вы серьезно? Пожалуйста, перестаньте писать на Rust. Вы не уважаете semver, не уважаете правильность, так почему вы используете язык, базирующийся, главным образом, на том, чтобы делать эти вещи правильно?
Грубо говоря, чтобы к тебе относились хорошо ты должен сам к другим относится так же.

В данном случае это работает в другую сторону. Если тебе не нравится что твои патчи коментят подобным образом, надо самому форкнуть проект, помейнтейнить его сравнимое количество времени вложив сравнимое количество усилий, а потом посмотреть на себя — не появилось ли желания послать кого-нибудь с его очередным патчем? Не надо пытаться выставить ситуацию в таком свете, как будто оба участника конфликта находятся в равных позициях.
Не согласен. Автор не сказал, что забьет ноутбуком крюк в перекладину и повесится, он сказал, что с опенсерсом завязывает и тут его можно понять, впрочем он и сам неплохо объяснил… И проект никуда не денется, он с ним может идти в любую контору с облаками, где ему помогут апнуть секурность и на выходе будет безбашенного крутой продукт, но не опенсурс… По крайней мере автору от этого будет помимо геморроя неплохой проффит, в чем я лично его поддерживаю
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Потому что в современном мире безопасность на первом месте.
O_o
В какой это области? Какая именно безопасность? Мы точно в одном и том же мире живём?

Дело не в толерастии, а в том, что сам автор уже к этому моменту сильно устал от проекта авгиевых конюшен, ну и плюс по общению с ним было видно, что человек очень эмоциональный и прикипевший к проекту. Этим и объясняется вся реакция.


Он, конечно, не прав, что вспылил. Но чего добивались те, кто ему писал "чувак, ты недостаточно хорош"? Раньше у них был актикс, работающий корректно в 99.9999% случаев (которые еще и в доке описаны), теперь у нас просто нет актикса. Товарищи видимо теперь могут поздравить друг друга и пойти писать снова на WARP и других фреймворках (потому что дырявым поделием они конечно же вряд ли пользовались).


Не знаю как вам, а мне сразу вспомнился хакер в столовой.

Не вдаваясь в религиозные споры.
А что значит 99.9999% корректной работы?

Это значит, что в коде есть 16 использований unsafe (на 50000 строк кода). Каждое использование может привести к UB, достоверно известно на текущий момент что к нему приводит только одно из них, для остальных надо проводить аудит. Кроме того, из переписки видно что автор исправил публичное апи так, чтобы эксплуатация этого единственного случая стала невозможной.


Под корректной работой понимается то, что нужно очень постараться, чтобы получить UB через публичное апи, и что самое интересное эти случаи автор фиксил, можно почитать в комментариях "спасибо николаю, я ему пожаловался и он мою проблему решил за несколько дней". Его подход "починить симптом чтобы выиграть время на красивое решение ситуации" можно назвать инфантильным. но это не делает софт каким-то кривым и неиспользуемым. Никто не даст вам даже таких гарантий для любого C++ фреймворка, что в нём не более 16 мест код которых может потенциально стриггерить UB.

Ну так и Раст же не плюсы, разве не так?
Зачем вы приводите их в качестве аргумента?
Если человеку указали на 100% проблему, а он начал "бычить" — это проблема человека, а не указавшего га это, нужно в публичном пространстве критику принимать, тем более аргументированную, тем более в сообществе Rust где безопасность превыше всего.
Так что пока согласен с мнением, что автор поступил неправильно.

Моё личное мнение, что обе стороны поступили неправильно. Но вопрос тут скорее не к единичным людям, а к сообществу в целом, особенно к сообществу реддита.

Реддит это все же неофициальное сообщество, это что то в стиле linux.org.ru где атмосфера еще со времени модемного интернета особо не менялась.

У вас есть свои опенсорс проекты, где вы годами пытаетесь балансировать между функциональность, стабильностью и низкими трудозатратам?
Иногда белые польта сильно достают.
К тому же он не специалист по связям с общественностью, он программер.

А аргументы к минусам будут?
Складывается впечатление, что автор просто не хочет терять скорость даже ценой УБ в безопасном языке.
Это, по моему скромному мнению, является инфантилизмом.
Ну и зачем удалять репу, кому он лучше сделал?
Активным пользователям — нет.
Потенциальным — тем более.
Люди как-то умудряются работать даже с Линусом, спорить с ним адекватно, хотя тот за словом в карман не лезет и его passive-agressive известен везде.
А тут человеку пишут о явном баге, а он уходит хлопнув дверью.

А тут человеку пишут о явном баге, а он уходит хлопнув дверью.

Просто цель автора в данном случае не быстрый и гаранитированно безопасный веб-сервер, а быстрый веб сервер который готов жертвовать UB ради скорости. Вот и всё.
готов жертвовать UB ради скорости. Вот и всё

*Готов жертвовать некоторыми гарантиями используя unsafe ради скорости, а не UB конечно же, UB оперативно фиксятся, как следует из текста.
Ну и зачем удалять репу, кому он лучше сделал?
Себе. Теперь ему не придется в свободное от работы время трудиться забесплатно на пользу сообществу, читая его хейт в благодарность за проделанное. Люди не роботы, у них есть чувства.
Складывается впечатление, что автор просто не хочет терять скорость даже ценой УБ в безопасном языке.


А насколько она высока — цена-то эта? А то пока складывается ощущение, что автор не хочет жертвовать «ехать» даже заради сохранения «шашечек».
Цена очень простая: это делает написание этого модуля на Rust бессмысленным.

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

Если же ваши unsafe-блоки этого не делают, то вы, фактически, получаете «ещё один C со странным синтаксисом»… когда вам коппилятор не гарантирует ничего и вы за всеми своими переменными следите сами… но зачем тогда это всё? Ведь в природе уже есть нормальный, настоящий, С!
это делает написание этого модуля на Rust бессмысленным


Инфантилизм какой-то. Код есть? Есть. Работает? Работает. Пользу приносит? Приносит. Значит, смысл есть!

У вас претензия к выбору языка? Это уж совсем за гранью. Сорян, если вдруг задену чувства верующих, но язык в проекте вторичен (почти в любом, за исключением тех случаев, когда проект демонстрационный для доказательства «преимуществ языка» или что-то вроде «проекта для обучения языку X»).

Автор пишет на расте — его право. Может быть, ему просто синтаксис нравится? Это не имеет смысла? Имеет. Что не так?

Язык — это инструмент для выполнения определенного круга задач. Выбор инструмента — право исполнителя. На чем хочет, на том и пишет.
Код есть? Есть. Работает? Работает.
Код есть, но он не работает. Или вы тут не заметили людей, у которых всё это падало? И которые патчи посылали?
У некоторых и их присланные патчи падали на тестах.
И что дальше?
Любой код, даже типобезопасный с GC, может не работать. Типобезопасность, GC, любые другие вещи от языка — не гарантия рабочего кода.
Код есть, но он не работает


Прямо где-то тут оратор докладывал об использовании в продакшене. Не исключаю, конечно, варианта «используем широко, но пока еще ни разу не запускали», но таки более склонен верить, что используется. Т.е. таки работает.

у которых всё это падало


Т.е. выключаете unsafe — и код получает гарантии валидности и отсутствия падений… Ню-ню…
Ведь в природе уже есть нормальный, настоящий, С!


Вы реально считаете, что автору проекта всенепременнейше нужно пойти переучиться на С и тогда он получит право, превозмогая себя, писать на языке, который ему не нравится? Может, автору просто не нравится тип слева от имени переменной, он справа хочет? Или процесс сборки в расте ему понравился больше? А может на моноширинном шрифте, который у автора стоит, раст симпатичнее С выглядит. Или, например, у его девушки принцип С-шникам не «давать».
Нет, я считаю что вот эта вот вся статья — это профанация. Она начинается с графика, где показано что у весьма популярного проекта «почему-то» очень-очень мало конрибьютеров и весь код написан, фактически, одним человеком.

После того, как код чуть-чуть «поскребли ногтём» — выяснилось, что он написан так, что типичный программист на Rust его поддерживать не сможет — и именно поэтому у него нет контрибуторов.

А дальше… выгорание и прочее — это то, чего автор сам, сознательно устроил. Ну и кто тут злобный буратино?

Если бы он написан свой проект на C — то шансов на то, что в его проект смогли бы контрибутить другие люди — был бы выше. И с этой точки зрения, очевидно решение использовать Rust — было неправильным.
И с этой точки зрения, очевидно решение использовать Rust — было неправильным.


Логическая цепочка — склонен согласиться, этот вариант возможен. А выводы — сомнительные.

Раст использовался потому что он нравится автору проекта, он так хочет. Если установить ограничение «только не на расте», проекта бы не было. «Есть проект» лучше чем «нет проекта». Решение было верным.
ну не согласен с такой демонизацией.

там немного ансейфов, ну и поверхностно — код не выглядит сильно плохим.

Там на самом деле весь код unsafe, просто автор это [не]удачно спрятал.

На самом деле там не так много реально unsafe-кода. Но поскольку автор уличён в том, что он прячет unsafe-код в функциях не помеченных unsafe и, главное, не видит в этом проблемы… то развитие этого проекта кем-либо кроме автора невозможно.

Ну или, наоборот, его может развивать кто-то другой, а автора к нему подпускать не будут — но тогда вначале придётся делать аудит…
Однако, он уже написан на Rust. И переписывать его на другом языке только потому, что возможности Rust использованы не в полной мере, не только бессмысленно, но и глупо. Станет ли он от этого лучше?
Станет ли он от этого лучше?
Технически — может быть и нет. Зато количество людей, которые могут его поддерживать — может стать больше.
от это правильно. пусть валит, раз не хочет код полностью переписать как некоторые «аргументаторы» требуют.
ты же не в пример лучше налабаешь за пару минут.
а вообще — полностью поддерживаю fafhrd91 — не нравится, не ешь.
не нравится что с помощью его actix руст в бенчмаках рулил, ну так пусть «аргументаторы» сделают лучше.
Парадоксально, но предложенный «правильный» патч падал.
@ Nemo157 wrote…

As a PoC this patch applied to actix-net passes all tests, and when the second playground is run against it under Miri it soundly fails with thread 'main' panicked at 'already borrowed: BorrowMutError' from within the AndThenServiceResponse. Presumably this requires benchmarking/more exhaustive testing which I don't have time to do, but if someone wants to take the patch and get it merged feel free (I license it under Apache-2.0 OR MIT, though I don't consider it to be creative enough to be copyrightable).

Я так понял, имеется в виду, что без патча мы получаем возможное use-after-free и можем тихо что-то испортить, а с ним — сразу падаем при попытке взять два изменяемых указателя в этом месте.

Смысл патча был в том, чтобы доказать, что по определенных условиях код себя некорректно ведёт.

Автор никому ничего не должен. Проект опенсорный. Не нравиться его безопасность — не используйте или вы можете форкнуть его и переписать, потеряв производительной, читаемость или логику, но автор в своём проекте это терять не хочет. Вообще, что хотите — то и теряйте, это ваш форк и если он будет лучше (хоть в каком-то смысле), то он может стать популярным решением.
Да, но размещать в его в бенчмарках тоже никто не обязан. И не поливать его грязью как ненадежный тоже…
И не поливать его грязью


Не поливать грязью — обязан. CoC GitHub'а потому что.
Можно поливать между строк. Всё и так поймут…
Между строк, очевидно, можно. Правилами запрещено только открытое хамство. Я и не утверждал обратного.
CoC может заставить писать всё вежливо и обтекаемо. Отношение к fafhrd91 как «человеку, который не умеет писать на Rust» можно высказать и не нарушая CoC.

Да собственно все его так и высказывают, за исключением пары «троллей». Для примера возьмите хотя бы известную статью — она написана в высокотолерантном стиле… но это просто превратило то, что «тролль» высказал в двуж предложениях в статье на несколько экранов.

По своей сути эта статья (как и многие другие) повторяют всё те же самые слов 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? — только в высокотолерантной форме.
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?


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

Аргументация слабенькая, на мой вкус, но она хотя бы есть, и без истеричных взвизгов. «Легкий налет элитарности» делает визжащую свинью визжащей свиньей с легким налетом элитарности, но не делает ее не-свиньей.

Так это как раз и есть "самый агрессивный комментарий" если я правильно нашел лог переписки. Не считая реддита, но это другая история.

Ну вот, видите, совсем другое дело.
10 баллов. Из 5 возможных. Ничего, что это ровно-таки цитата «тролля», который, якобы, «художника обидел»? После чего он «бросил ведёрко» и «ушёл играть в другую песочницу»?

По моему на этом нашу дискуссию пора заканчивать: факты вас не волнуют от слова совсем — иначе бы вы эту цитату опознали бы.

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


А вот просто провести аудит веб-серверов или вообще всех пакетов на раст, и сделать заявление: Проект А решето ибо N уб и M из них приводят к CVE это всегда пожалуйста. Более того можно написать что мол не советуем использовать его в проде. Но это совсем другой разговор, разницу видите?

разницу видите?
С точки зрения использования чужого кода нет )) А так я за корректность всегда и везде (не шучу).
я за корректность всегда и везде (не шучу)


И в общении тоже? Или вы только про код?
В общении тоже.

Мы вот очень долго мирились с ползучим сегфолтом, который проявлялся лишь на макоси и в тестовом коде, я уже психанул и полез в актикс смотреть что творит такого этот TestServer. Оказалось, что он внутри себя запускал отдельный тред с веб сервером, а потом в деструкторе его не джоинил. Казалось бы в safe rust это ничего не должно ломать. Но нет, оно где то тригерило ub из за которого случался double free и в итоге падало все в совершенно непричастном к этой кухне коде.
Так что все реально, ub есть ub. И временные затраты на его поиск подчас огромные, как и требования к квалификации того, кто ищет реальную причину падения.

Без разжигания холиваров было бы интересно узнать насколько конкретный unsafe улучшал производительность.
О, вот и карму начали сливать, притом втихую, красота.

О, вот и карму начали сливать, притом втихую, красота.

А мне вот просто интересно. Тут многие что-то говорят о ползающей туда-сюда карме (в основном, конечно, "туда"). Что значит "сливать втихую"? Вам письмо обязаны написать, "знаете, я вам тут минус поставил" или как? А также, вы каждый день/час/минуту свой профиль мониторите? Никаких же уведомлений об изменении кармы не приходит в принципе, как она может сливаться "втихую" или "вгромкую"?


Ничего личного, просто интересно.

Сначала у тебя отпадает возможность ставить лайки/дизлайки. Это заметно.

Если вы не получали "слив" кармы, минуса на хабре, то вы либо не пишите правду, либо скорее амеба, чем носитель собственного мнения. Хотя иногда и чистых идиотов и их послания минусуют, но это редкость все же. %Уже готов к "отрицалам" и sjw в свою карму, которой нет%.
Пока есть возможность поблагодарю за актикс на расте. Интересно будет "потыкать палочками" и чем продолжится текущая ситуевина, в том числе и в сравнении с "приключениями" nginx с Мамутом, которому nginx должен памятник поставить за "рекламу": рост распространенности в мире +8% за декабрь 2019 по сравнению с апачем. (https://news.netcraft.com/archives/2019/12/10/december-2019-web-server-survey.html)

Чет сегодня мало "отрицаловых" ползает на Хабре, проснить уже! Дайте больше минусов! P.S. O! Уже лучше! Дайте еще! Расчехлите свои "G" — вентилляторы на полную! Для хабражителя, как для политика, нет ничего хуже, чем чистый "нуль" кармы и известности.

Я хотя бы надеюсь, что вы ставите минуса ::inroll::alaska::, а не nginx, а иначе у Вас полное желе головного мозга на базе каргокульта отрицаловыхонанимистов.

Вас не устраивает сливание втихую? Держите минус в карму «вгромкую». Наслаждайтесь им как признаком того, что вы не амёба. А остальные насладятся редкостью ваших дартаньянских комментариев.

Ну надо же хоть один не зассал и показал свою личину, один из толпы онанимусов и окамото с памперсами в обнимку. Респект и уважуха. А в жизни ты чего добился, или только сливать умеешь? Вот чуваки nginxЫ и актиксы клепают. А ты что произвел кроме песка? Вот именно из-за таких (смотрите Куб) и сваливают из опенсорса и актиксы и другие хорошие проекты.

Чувак, ну ты не прав. Не видишь, что-ли им в кайф кого-нибудь в асфальт закатать. Сегодня им будешь ты. Вместе с дартаньяном.
А чтобы вас минусовать, необходимо быть великим человеком? Завидую вашему самомнению.

Да нет достаточно быть окамото. Ну и курсовую потихоньку делаю "Экспертная оценка степени токсичность хабра, как показатель движения к фашифизации общества на основе анализа токсикофикации в обсуде закрытия кода Топ1 сервера на Раст"

О да. «Фашифизация». Несомненно, то, что вам слегка ограничили возможности комментирования — признак того, что скоро костры из книг, овчарок лай и всё такое)
Вы забавный. Мне кажется, вы очень молоды, и лет через пять, если вам покажут эти комментарии, сами им ужаснётесь. Впрочем, я могу ошибаться. Но это не важно. До свидания)
Ок boomer.

А это в смысле теории Штрауса вы имеете ввиду или в транскрипции милениалов?
Z+ only

благодарствую всем не прошедшим мимо и волю свою исполнившим клавиатурно, и вам посылаю потоки зеркально всякому равное или более того с тем же окрасом, како мне ими послано было дабы уравновесить деяния их нетовские

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Ну Хабр в приницпе не предполагает никакой стимуляции дискуссий. Плюсы и минусы комментариям влияют только на визуальное отображение комментария и все. В итоге периодически случается ситуация, когда один человек пишет новость, другой — развернутый комментарий, но нераскрытая новость с точки зрения оценки более влиятельна, чем любой, даже самый ценный комментарий.

Пример ветки обсуды — анализатора необходимости использования пинцета Шора для чистки хабра от участников с наличием поведения бота "андэплинтус" и нетрадиционных методов продвижения собственного сайта через хейтохайп и Эксклюзивные Глобальные Хэштеги (ЭГХ) в узком смысле этого слова.

НЛО прилетело и опубликовало эту надпись здесь
Ха, прикольно. По русски кроме своего сайта и некуда написать русский нетехнический текст. Типа «Как купить телекомпанию в Ёбурге». Да и технический, похоже, лучше там, где запрос в гугле «elastic python parsing» дает первую страницу.
НЛО прилетело и опубликовало эту надпись здесь
А также, вы каждый день/час/минуту свой профиль мониторите?
Я время от времени пишу посты, технические. И, да, мониторю профиль чтобы понимать реакцию на эти посты. Мне хочется писать хорошо, качество я определяю по карме. Получать потом минусы за комментарии, не за правописание, не за невежливость, не за придурковатость, а за личное мнение, несовпадающее, довольно болезненно(для меня лично).

Я вижу, что комментарии раз в 5 минут начинаются.
Прямо вот волнами.
Вообще, уже обсуждали, что действие голосования в карму было бы неплохо аргументировать, а то получается — "несогласным заткнём рот".
Но это чисто личное мнение, я за ~1000 комментариев уже понимать начинаю, что в дискуссии про Теслу, Rust, Go и т.п. — лучше не вступать, даже за простые вопросы плесень ограничение скорости комментирования.
Не, ну такие правила, я ничего против не имею, но и дискуссия так себе получается.

Да в любые дискуссии вступать можно (кроме политики). Главное — обновлять комментарии и не повторять по третьему кругу одни и те же аргументы, даже если прошлый раз их высказывал кто-то другой.


Желание заткнуть рот возникает не от несогласия, а от того, что собеседник тебя не слышит.

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь

Ничего вы не доказали, он мог поставить вам этот минус месяц назад.


Кроме того, минус в карму аргументом не является и неадекватности оппонента не означает.

НЛО прилетело и опубликовало эту надпись здесь
Его подход «починить симптом чтобы выиграть время на красивое решение ситуации» можно назвать инфантильным.

Нельзя. Человек принимает абсолютно рациональные решения. Некрасивый, но работающий код, всяко лучше неработающего кода.
починить симптом чтобы подумать над правильным и красивым решением — это нормальная тактика для неосновного проекта, которым ты занимаешься в одиночку

Это значит, что один чел сделал Smoke-testing Rust HTTP clients где облажалось 100% клиентов без исключения. Задело и обидевшегося. Он правда единственный кто так психанул.

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

А их там точно сотни были? В сохраненной переписке я видел только одного, потом его сразу же заткнули.

Я не про конкретный случай, а вообще. Т.е. есть какой-то максимум говна за единицу времени у каждого человека. И есть много каналов связи. Я проходил через такую фигню, когда «прорывает», и уже не остается никаких сил и желания дальше тратить свое время на проект, который не приносит ничего, кроме негатива. Именно так кажется в такие моменты.
В мире 7 миллиардов людей. Сколько можно поддерживать контактов? Общение, работа, дни рождения, учёба, близкие. И всё это время, время и время. А ещё есть сон. И самое главное ещё и на себя. Сколько? Я округлю, чрезвычайно грубо. Но мне нравится число 255. На практике оно меньше, даже у чрезвычайно активных экстравертов.

Вывод. Зачем тратить время на чудаков и прочую нецензурщину? Просто, до свидания. Тотальный игнор, по возможности пожизненный бан. Сразу и нераздумывая. В идеале ещё плагин написать. Щёлк по нику, и чтобы их не видеть… Есть конечно отъявленные вредители. Воевать с ними или нет… Выбор между вредом от них и потраченным на них драгоценным временем. Впрочем, тараканов и прочие нечистоты же уничтожаем. Так что иногда надо. И ведь вопрос решён. На 7 миллиардов найти себе своих 255 людей.

И никогда не стоит забывать про Пацифизм губит ухоженные сады
>А на три буквы его послать (вежливо, конечно)?
Ну почему сразу вежливо? Можно и не очень. Если это продукт труда одного человека — то кому какое дело из прочих?

Я как-то был в примерно такой ситуации — когда мне в команду прислали двоих новых людей. И они примерно через месяц, еще не прочитав документацию, начали высказывать заявления типа «а у вас тут база данных не нормализована». Ну то есть, люди начитались книжек, но при этом не понимают простого факта, что нормализация — это инструмент (так же, как в данном случае unsafe), что она решает проблемы, но и сама создает другие, что денормализация — это тоже инструмент. Ну и так далее.
Да это я на тот случай если бушует толерастия. Ну вежливо послать, если умеючи, можно гораздо обиднее и доходчивее (чтобы впредь не гадил в комментах).
Да банальное «И чо?»/«And so?..» неплохо работает. На третий подряд такой ответ обычно к человеку приходит понимание что его мнение ценят не больше тараканьего. И без всяких ругательств.
Тут проблема видать в том что Николай ценил мнение этого говнюка и других подобных.
>Ну вежливо послать, если умеючи, можно гораздо обиднее и доходчивее
Да, наверное. Собственно, я тоже не о том, чтобы материть, а скорее о том, что не стоит так уж учитывать мнение тех, кто на самом деле не потребитель.
По вашему примеру — раз вопрос про нормализацию возник у новых людей почти сразу, то значит это было на очень видном месте и было очень заметно. При этом, очевидно, у вас нигде не было комментариев\уточнений, почему. Так и тут — unsafe это нормально, если вероятные проблемы четко описаны и известны. А если они просто непонятно почему вставлены в код… ну, такое… Ну т.е. мне кажется, наличие чего-то такого сделало бы ситуацию куда более понятной
// XXX: normalization of this DB causes 20% performance degradation when using NoNameSQL v1.2.3. Having duplicated data is not a problem, because those values are never changed after creation.


И все — и понятно, почему тут «неканоничный» код, и в чем преимущество, и почему он не создает проблем. Это же так просто?
Я специально уточнил сразу:
>еще не прочитав документацию

Почему вам очевидно, что ее не было? :)

Хотя в целом конечно же такие места нужно описывать, тут нет вопросов.
Я понимаю, что это не имеет особого значения (я с вами согласен полностью), но все же, какую нормальную форму они там хотели видеть — примерно первую или примерно шестую?)

я бы кстати, тоже, задал вопрос (не «сказал а давайте все переделаем», а именно что поинтересовался), «а какие причины иметь тут полностью ненормализованные данные», например.
>примерно первую или примерно шестую
Ну что вы… это был не тот случай (вряд ли они и слышали про шестую). Нормальный человек, в новом для себя проекте вместо утверждения «У вас тут ненормализовано» скорее всего задал бы вопрос типа: «А вот тут у вас такая-то нормальная форма в таблице XYZ, почему так?». В данном же конкретном случае даже таблица не была упомянута.
Понятно, спасибо, что уделили время на ответ)

Можно проигнорировать один раз, можно два. Но когда блейм на тебя обрушивается постоянно, желание дистанцироваться от проекта вполне закономерно возникнет рано или поздно. Форкнуть возможность есть, люди форкнули, пусть делают дальше, что хотят. Конечно, дяди с серьёзными напряженными лицами не согласятся и будут рассказывать про инантильность автора, и про то, что он не должен был так поступать. Но между инфантилами и серьёзными дядями есть большая разница — серьёзные дяди на опенсорс время не тратят, потому что опенсорс не приносит доход.

Не понял, какой-то чудак из «команды раст» вот так авторитетно гадит в комменты, и это имеет влияние на автора?

Не совсем так. Там несколько человек писали комментарии.
Баг создал один человек(который из RustSec).
И он не «гадил» в комментариях.
Он просто завёл баг и объяснил где конкретно он видит UB и почему он считает, что это надо исправить.
Дальше там, в основном, общались другие люди.
И, мне кажется, общались они нормально до комментария «this patch is boring» и неадекватного ответа про «Please just stop writing Rust».
У меня сложилось впечатление, что this patch is boring было шуткой в ответ на замечание автора патча, что патч not creative enough to be copyrightable.
А потом в дискуссию влез мимопроходивший тролль и всё заверте…
Или там в гитхабе толерастия сплошная, терпение к убогим т.е., и за такой даже вежливый посыл будут репрессии? Какая-то нездоровая ситуация.
Именно так, и не только на гитхабе, а вообще в современном IT. За последние 10-15 лет радикально поменялись стандарты общения, уровень терпимости к критике, требования к формулировкам и вообще понятия «что такое хорошо и что такое плохо».

Раньше людей волновали в первую очередь код и его качество. На мелочи типа недостаточно почтительного обращения или lack of showering one with sunshine, rainbows, and ponies никто не обращал внимания, потому что how you feel is unimportant (здесь должна быть ссылка на undeadly.org, но хабрапарсер её упорно портил; нормальная есть в моём старом комментарии). Такой была олдскульная этика.

С тех пор ситуация изменилась: нынче можно обидеться на точку в конце сообщения или любое слово с негативной коннотацией, в проекте легко может быть запрещено исследовать историю коммитов в попытке найти автора, а за can вместо could с вами могут перестать общаться.

Несколько лет назад Скотт Адамс (автор комиксов про Дилберта, если кто не знает) писал у себя в блоге об одном любопытном отличии ньюйоркцев от калифорнийцев:
New Yorkers tend to say whatever they think is true to whoever is standing nearby. Not much filter. Californians say what they think will make you feel good. The California way would feel like lying if it were not so well-meaning. [… Bluntness, honesty, some risk-taking --] that's how the New York style works. At first you hate it because it seems so harsh. In time you start to appreciate the honesty.
Раньше в IT ценились честность и искреннее желание сделать код или документацию лучше. Теперь это не так важно, лишь бы никого не обидеть (вернее, не дать лишнего повода кому-то обидеться).
НЛО прилетело и опубликовало эту надпись здесь
Что, и до вас добралась калифорнийская зараза?
НЛО прилетело и опубликовало эту надпись здесь
Допустимый максимум — сначала написать стопицот хвалеб, а потом I would suggest reconsidering what would happen if this function gets a negative number as the input, условно.
Вот да, дико бесит, когда вместо того, чтобы просто написать как встарь, мол, сорян, но твой код говно ломает нам билд, народ пишет что-то типа «Thanks so very much for doing this! Glad to see this effort taking place! Your commit is awesome but could you please take another look as unfortunately it breaks the build? Keep up the good work :) Cheers!» (реальное письмо из рассылки, я лишь незначительно подсократил для удобочитаемости).
unfortunately it possibly could affect some of the build in a negative way

, что вы как грубиян :)

И кстати, это не так уж и плохо, т.к. у меня недавно был случай что после моего мерджа свалились билды с мастера, но это оказалось совпадением т.к. однвоременно что-то обновили в CI скриптах. Мне написали «would you kindly approve revert of your changes», без этого «ах ты чмо», ну я посмотрел, проверил все, сказал что не мои изменения виноваты. В итоге все в лучшем настроении. А так бы был наезд на ровном месте :)

зы. «thank you» в начале конечно перебор. Люди понимают что нужно быть вежливыми, это хорошо, но излишняя становится издевкой.
зы. «thank you» в начале конечно перебор. Люди понимают что нужно быть вежливыми, это хорошо, но излишняя становится издевкой.
именно поэтому пишу как минимум 3 «thank you» в своей переписке с одним индусом. Мои ругачки ему все равно не помогут (проверено), почему его не уволят — я не в курсе (возможно — плодовитость, он по 500-1k LOC в день пишет), зато написал ему «thank you for your wonderful piece of code» и прямо легче потом переписывать эти куски кода %)

Полагаю, это изначально был эвфемизм.

не опускай руки из-за говнюков. Собака лает — караван идёт

Посмотри на Википедию: там человек пишущий статьи, часто обнаруживает, что на срачи с говнюками, требующими удалить его статьи как «некачественное говно», у него уходит больше свободного времени, чем на собственно написание статей.
image
А на три буквы его послать (вежливо, конечно)? Или там в гитхабе толерастия сплошная, терпение к убогим т.е., и за такой даже вежливый посыл будут репрессии? Какая-то нездоровая ситуация

В той же Википедии назвать чью-то статью «некачественным мусором» и потребовать её удаления — норма, а послать нах грифера — бан за оскорбление.
Для меня ситуация очень неприятная. У нас на проекте используется актикс-веб из-за сочетания уникального сочетания скорости, удобства и всё-таки надежности. А теперь основной ментейнер покинул проект.

Ну так скооперируйтесь с другими пользователями actix и поддержите автора финансово.

Я думаю, тут вопрос не денег. Плюс многие люди сознательно (например, я), не хочу втягиваться в товарно-денежные отношения, именно потому что они создают зависимость "мне платят — я ДОЛЖЕН".


Я могу ошибаться, но мне кажется что fafhrd91 не хочет заниматься этим проектом больше ни бесплатно, ни за деньги.

С одной стороны, в общем-то ваша позиция понятна, но с другой — я бы наверное (тоже как автор open-source проекта) советовал написать разработчику. Хотя бы поддержать и в целом сказать, что его софт используется в продакшне, и что вы готовы вести какие-то переговоры о поддержке проекта.

Потому что правда — суровый факт опенсорса заключается в том, что часто твоим кодом пользуются несколько тысяч человек, но все они молчат, и не поддерживают тебя ни морально (что, не поверите, важно), ни материально. Зато есть человек пять-десять, у которых «что-то не работает», и которые постоянно тебе предлагают правки и критикуют какие-то моменты твоего труда, пусть и небольшие. Постоянно иметь дело с ними выматывает.
Это точно. Я видел как закрывались разные проекты (в одном даже сам участвовал) и какой шквал людей подобных PsyHaSTe возникает, когда проект решают закрыть.

Ну вот буквально только что он никому не был нужен, в списке рассылки была одна ругань и не было понятно есть ли в природе вообще хоть один пользователь… и тут их, вроде, сотни… но решение о закрытии уже принято.

Не хотите втягиваться в товарно-денежные отношения — помогите чем-нибудь другим. Да хотя бы патчами в документацию.
Я думаю у автора всё нормально с деньгами(он всё-таки в Microsoft работает).
Ему скорее важна благодарность от сообщества, для которого он так много сделал.
Ну или если не благодарность, то хотя бы чтобы ему не выкатывали притензии за то как он пишет код в своём же проекте.

Ну как бы лучшее подтверждение того, что ваш продукт кому-то нужен — это готовность пользователей отдать за него свои кровные. Это, что называется, душу греет.

Автор у Мелкомягких работает. Там зп в США 200к+ баксов в год. Тяжеловато будет поддержать да и не нужна ему наша материальная поддержка поди.
Мне другое интересно — как вообще в здравом уме можно начать на продакшене юзать опенсорс-фичу, которую пишет всего один человек как хобби?
Если в продакшене используют штуку, которую пишет всего один человек (я) на работе, то почему не использовать штуку, которую пишет другой, более умный человек, да еще и выкладывает в опенсорс? В открытых проектах качество кода-то повыше проприетарного обычно.

Или у вас любые фичи целый комитет разработчиков непременно пилит?
Компания обычно имеет запасной план действий на случай вашего увольнения.
Если она имеет план на случай прекращения поддержки такого опенсорсного проекта его автором (возьмем сами, быстро разберемся, будем развивать самостоятельно или там быстро перейдем на конкурирующий продукт), то всё ок.
Но часто у компании нет не только такого плана, но и технической возможности развивать брошенный проект своими силами. И вот тогда логичнее взять что-то, может не настолько хорошее, но более надежное, но не все вообще задумываются на эту тему.
но не все вообще задумываются на эту тему
Вот это ключевой момент. Потому что на самом деле нет никакого плана (там где я работаю, энивей). У нас в компании целые проекты отправляются в /dev/null из-за ухода ключевого сотрудника.

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

То есть я согласен с посылом, да. Должно быть как в вашем сообщении, а не как в моём.
У нас в компании целые проекты отправляются в /dev/null из-за ухода ключевого сотрудника.


Ммм. А клиентам что говорят? Или это — внутренние проекты?
Ну вот возьмите Google Reader. Кому-нибудь гоорили о том, что после того, как Chris Wetherell уволился он держится на честном слове?

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

Если это какой-то мелкий проект — то он может быть закрыт легко и непринуждённо. А если компания мелкая — так она вся, целиком, может исчезнуть…
Если это мелкий, незначительный, невзлетевший или исследовательский проект в крупной компании, то да, его вполне могут закрыть.
Но я сомневаюсь, что крупная компания позволит перспективному проекту умереть исключительно по причине ухода какого-то сотрудника.
То есть да, проекты закрывают, но как мне кажется, по более серьезным причинам.
Но я сомневаюсь, что крупная компания позволит перспективному проекту умереть исключительно по причине ухода какого-то сотрудника.
Умереть — нет. Сделать «гораздо более людчюю» замену — легко.

Ну вот посмотрите на Mojo. Почему он появился? А потому что разработчик, занимавшийся protobuferrs в Google — уволился. Он сделал-таки свой RPC с блекджеком и шлюхами — но Google решил, что надёжнее будет сделать что-то своё… с нуля…

То есть да, проекты закрывают, но как мне кажется, по более серьезным причинам.
Закрывать — да, «работает — не трогай». Но заморозка развития, после ухода ключевых людей — это как раз самая частая причина.

Почти всегда, когда вы наблюдаете, что компания меняет шило на мыло, тратя кучу денег на то, чтобы получить на новой платформе то, что на старой у них уже было — это как раз потому что ключевые люди со старой платформы сбежали и руководство посчитало, что дать возможность новой команде всё сделать с нуля — будет полезнее.
Мне кажется, что и в этих ситуациях уход сотрудника не единственная причина, повлиявшая на такое решение. Конечно, такой уход ускорил закрытие проекта protobuffers. Без него его закрыли бы позже. Но все равно, думаю, закрыли бы. Это уже связано с технологическими волнами — так или иначе необходимо время от времени обновлять такие проекты.
Дык в том-то и дело, что protobuffers не закрыли. Закрыли — было бы не так смешно. А в результате сейчас используется как protobuffers (на серверах), так и mojo (на клиенте). И ни то ни другое умереть не может: protobuffers не могут умереть, так как на них построена фактически вся серверная инфраструктура Гугла, mojo же эффективно работает на Windows (а протобуфферам этого не нужно было, а когда потребовалось — делать было уже некому).

Это уже связано с технологическими волнами — так или иначе необходимо время от времени обновлять такие проекты.
Обновлять, когда что-то не работает — это одно. Устраивать бардак чтобы кто-то получил promotion — другое. Так вот Mojo — это второе.

Мне кажется, что и в этих ситуациях уход сотрудника не единственная причина, повлиявшая на такое решение.
На самом причина всегда одна и та же. Если вы сделали вещь, на которой сидит бизнес, приносящий миллирды и тихо её улучшаете — это low visibility task и за неё денег не дают. Если вы делаете новую подсистему и умеете хорошо её презентовать — то это high visibility и можно получить promotion и bonus.

Не удивлюсь если в результате вся история с actix сведётся именно к этому.
Если все так, это грустно. Я никогда не работал в крупных компаниях и надеялся, что степень бардака не настолько огромна.
Но, может быть, всё так и есть.
Почитайте Джоела — он об этом очень хорошо пишет.

Подавляющее большинство вещей, которые пишутся в больших компаниях — пишутся для того, чтобы кто-то получил promotion… и больше ни для чего. Ну иногда, что почти то же самое — чтобы продать новую версию.

Нет, когда это всегда презентуется с многичисленными buzzwords… кажется, что это очень важно и нужно… но если задуматься — то новые версии ничего существенного не привносят… за исключением того, что кто-то получает премию.

Иногда, кстати, компании за это платят очень высокую цену — см. Microsoft и его развлечения с C#, XAML, «универсальными приложениями» и прочим… кто-то получил promotion за «гениальные идеи»… а Microsoft потерял рынок OS для смартфонов…

А ещё в Гугле сделали flatbuffers. Про эту либу что-нибудь можете сказать?

Могу сказать что она используется в Гугле, но там периодически поднимаются дискуссии что будет проще — выпилить её и перейти на protobuffers или продолжать поддерживать.

Пока что сторонники «выпиливания» проигрывают эти споры…
Уж после того как Windows назвали неосновным продуктом…
Всякие внутренние, да. Например, у одного продукта CI больше года не было, потому что тесты перестали работать, разработчика след простыл, ну ребята CI закомментировали и дальше говнокодить.

Тестировщики проверяли регрессии руками, ласково поминая начальника отдела по матушке, потом выкатили собственные какие-то автотесты.
Жесть какая-то
НЛО прилетело и опубликовало эту надпись здесь

Ну например майкрософт юзает, в котором Николай и работает, собственно, и пилил он его для того чтобы решить проблему Azure IoT, где дотнет показывал в 15 раз меньшую производительность, и всё это пересчитывалось на вполне себе конкретные миллионы долларов.


Вот такой вот глупый Майкрософт, зависит от разработки одного человека.

Странно, что это все ещё проект энтузиаста, а не проект майкрософта.

"Странно" — это когда openssl внезапно оказался проектом энтузиастов без финансирования.


А тут, вероятно, больше участников и не требовалось.

Странно, что вас заминусовали.
Использовать проекты одного автора действительно рискованно. Это ведь не первая подобная ситуация. Он ведь мог ещё просто не фиксить ub и забросить проект.

У меня есть пример. Взял опенсорсную библиотеку, интегрировал.

Во первых, выяснилось, что на реальных данных производительность не плохая, а просто отсутсвует.

Во вторых автор взял, и перевел проект на C# 8…

Во теперь сижу и думаю, что «сэкономил».
Библиотека большая, бэкпортить тоже накладно, форк не предлагать =)

Вы сэкономили время на эксперименты: хуже, чем было до интеграции библиотеки, не стало, зато опыта прибавилось.

Скорее я потратил время на эксперименты, вместо того, чтобы купить проверенный вариант.

Впрочем, стакан наполовину полон…

Проверенный вариант может оказаться такой же фигней, только ещё и за деньги. Кучу раз так уже было...

Вот да, смотришь на некоторые платные решения, выглядят круто, а при работе с ними то одно, то другое отваливается, в документации мутно написано, а поддержка изъясняется вообще не по теме...

Крупные корпорации тоже порой внезапно закрывают проекты или делают их непригодными к использованию.
Еще бывают санкции (одна известная китайская компания как раз не так давно огребла).
Так что принципиальной разницы между одним человеком и группой людей нет. Всегда есть риск, что проект, на который завязан ваш бизнес, прикроют.
Вывод — планы на случай подобной ситуации должны быть всегда, если это возможно в принципе.

Я боюсь вы недооцениваете количество вещей, которые «кто-то написал как хобби» и на которых вы, на самом деле, завязаны. Да, блин, возьмите хотя бы нашумевшую историю с leftpad. Ну Ok, там функция оказалась тривиальной, заменить не проблема.

Как насчёт всей индустии, завязанной на табличку, которую два престарелых профессора у себя на ftp держат?
Действительно. И как люди додумались использовать в продакшене ядро линукс который писал один человек?

А не подскажете, что это за люди и когда они использовали в продакшн ядро, которое писал один человек? Зачем они это делали, если в те времена (пока ядро писал только один человек) в ядре не было поддержки сокетов, и, соответственно, сети?

В целом согласен. Но. Возьмем 1995 год. Линукс уже ставили в продакшен на суперкомпьютеры, я уж не говорю о том как его использовали до этого энтузиасты в своих компаниях поменьше. Да, Линусу уже вовсю помогали, но всё же он был главным доминирующим контрибьютором, так же как и в случае с Actix, то есть неизвестно чем бы всё кончилось для продакшн-пользователей если бы Линус взял да и бросил всё. Возьмем другой пример — NGINX. Мне думается его уже брали и использовали в продакшене в виду сравнительной убогости Apache те, кому требовалась производительность и они не очень смотрели один человек пишет или не один (а он был по большому счету один, также как и в случае с Actix). В частности в круг этих людей, доверивших свой продакшен, входил я. С Linux та же история, когда я брал его в продакшен я тоже не знал один человек делал его ядро или не один, просто брал потому что не было достойных альтернатив.

Моя мысль вот в чём — всё в этом мире строится вокруг Личностей, ярких индивидуумов. Потом уже появляются команды и сообщества. И иногда положиться, сделать ставку на то, что держится на одном человеке — может хорошо окупиться. Конечно бывают и обратные случаи.
Да, Линусу уже вовсю помогали, но всё же он был главным доминирующим контрибьютором
Он «главным доминирующим контрибьютером» пробыл полгода примерно. Дальше — целые подсистемы написаны другими: extfs и ext2fs — это Реми Кард. Сеть — это Девид Миллер. SMP — это Алан Кокс. И так далее.

то есть неизвестно чем бы всё кончилось для продакшн-пользователей если бы Линус взял да и бросил всё.
Да ничем бы не кончилось. Вы думаете он не бросал всё? Бросал. Потом, правда возвращался. И предложения «как релизить ядро без Линуса» были.

Вот NGINX — это более похожий на Actix пример, да…
Я бы не сказал что он там бросил, vacation — это всё-таки отпуск, плюс отказал в патче и в переписке. Но всё-же интересно, спасибо.
А ничего удивительного.
Мы видим пример к чему приводит узколобость и неправильная расстановка приоритетов: вместо того чтобы поощрять настоящих творцов, защищать их индивидуальность и давать им свободу выбора/творчества, всякие неадекваты типа SJW начинают впаривать обществу и топ манагерам it-компаний какую-нибудь дичь типа Code of Conduct и равенства перед индусами. А потом удивляются почему у новых боингов отказывает управление, или почему автор удалил репозиторий. Беспорядок, впрочем, порождает беспорядок.
P.S. Сталкивался с такой же пренебрежительностью и на хомячкабре. Как итог, удалил статью, но это уже другая история, где вместо SJW выступают кармадрочеры. :)

А я вот вижу пост в грубом неуважительном тоне, поэтому буду на него отвечать в таком же.
Вали с хабра, пока не поумеришь свое ЧСВ.

По моему одно другому не мешает. На ресурсе где пишут по инвайтам без чсв никак.

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


Эх, плох интернет, что тут не могут набить морду.

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

Проблема гораздо проще и называется «детство в Ж играет». Один рыцарь на белом коне, считающий себя носителем Правильной Истины и вещающий ее всем, а второй считает себя Идеальным Настоящим Творцом, который пишет лишь Идеальный Самый Быстрый Код.
И вместо того, чтобы один вежливо заметил, что «чот фигня у вас тут получилась, надо бы вот так и так», а второй бы ответил «нууу, может быть и так, ставлю латку на время, потом буду разбираться подробнее, а щас другое важнее» и оба разошлись с пониманием и уважением к мыслям другого, мы имеем то, что имеем. Так что таки да, как уже кто-то написал выше это все просто некоторый инфантилизм и там и там, а OpenSource тут просто в декорациях постоял.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь

Не факт. Просто человек исходит из того, что люди в состоянии слушаться хотя бы самих себя. Это нормально, я сам такой же, хоть практика и показывает, что как раз свои собственные слова люди игнорируют едва ли не чаще всего.

Опенсорс дело такое. Я на Хабр раньше постировал какой-то свой код, так пол-треда было всякой беспомощной гневной фигни даже не про какие-то bad practices, а тупо про стиль кода. Если бы меня интересовало мнение всяких кукаретиков, я бы наверное тоже расстраивался.

Правильная реакция это, конечно, как Антон выше написал: man git-fork вам в руки и паровоз навстречу.
➜ man git-fork
No manual entry for git-fork

:(

Вот что бывает, когда смешивают репозиторий с соцсетью

Я не думаю, что это было спонтанное решение. Больше похоже на повод, чем на реальную причину закрытия проекта. Просто громко "хлопнул дверью", уходя.

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

Если бы автор позиционировал свой проект как сугубо личный и экспериментальный, то такой резкой реакции бы не возникало, но нет, он претендовал на лидирующие позиции в экосистеме и воспринимался как "production ready" фреймворк.


Сообщество в целом, на мой взгляд, вело себя достаточно адекватно. Разумеется, некоторые люди перегибали палку, что неизбежно для сколь-либо больших сообществ, но для этого на гитхабе есть возможность удаления отдельных сообщений и бана юзеров. Во всех случаях (а это уже третий раз когда эта проблема возникает с actix'ом) люди открывали issue где подробно описывали проблемы с некорректным использованием unsafe и слали патчи их исправляющие. Но автор, мягко говоря, вёл себя не очень ответственно и не считал данные проблемы достаточно серьёзными. Представьте если проекты вроде Хрома или Фаерфокса начнут игнорировать CVE и называть патчи фиксящие дыры в безопасности "скучными"?


Или другая аналогия (одолжена с HN):
1) Люди собрались и основали город устойчивый к землетрясениям.
2) Были разработаны методики и правила строительства зданий соответствующие идеологии данного города.
3) За счёт этих правил и сообщества следующего им, здания в этом городе были выше и устойчивее чем в других городах. Ошибки неизбежно случаются, но большинство строителей ответственно подходят к своим зданиями и по возможности исправляют их (см. issue в статье которая выступила триггером). Город уверенно растёт привлекая всё больше людей которым важна устойчивость к землетрясениям.
4) В город приходит человек и начинает строить великолепно выглядящий небоскрёб, который начинает привлекать внимание и за рамками этого города. Строитель позиционирует своё здание как готовое к заселению, многие даже начинают жить там.
5) Интересующиеся заглядывают под капот этого небоскрёба и видят, что фундамент построен в стиле "и так сойдёт", вместо железобетона местами используются деревянные подпорки замазанные асбестом.
6) Люди, считая что автор просто не в курсе данных проблем и честно заблуждается, присылают ему список проблем и даже чертежи и планы по их исправлению. Но автору "и так норм", однако, после определённой доли убеждения он таки принимает исправления. Сообщество вздохнуло с облегчением.
7) Но автор так и не понял посыла и продолжил клепать здание полностью забив на правила и методики практикующиеся в городе. После чего сообщество начинает оказывать на него всё большее давление, местами перегибая палку, т.к. в случае землетрясения разрушение этого небоскрёба будет не только проблемой автора, но и серьёзно повредит репутации города.
8) Автор занимает позицию д'Артаньяна и драматически заявляет, что он не только уходит из города, но и вообще из публичного строительства.

Именно. Удалять issue и затирать историю — это вообще свинство, где я потом буду знать о проблемах, когда у меня actix-web навернется? А у нас он уже два раза навернулся как минимум: первый раз сделали патч, который приняли. Второй раз — не успели. Я предложил свою помощь по исправлению некоторого бага, но ответом мне было молчание.

Возможно, из-за большой загруженности или других жизненных проблем у автора не хватило времени, но ваш PR вполне мог оказаться у него в todo list на ближайшее будущее. Да и потом, если что-то нужно сделать срочно, всегда можно форкнуть проект, применить исправление и не ждать. Разумеется, если лицензия позволяет (обычно позволяет). Мы так делаем время от времени, в результате нервы мотать не приходится ни себе, ни авторам, бампами и настойчивостью. Хотя, признаться, иногда можно и бампануть, некоторые люди могут что-то забыть и с этим придётся смириться.

8) Автор занимает позицию д'Артаньяна и драматически заявляет, что он покидает опенсурс.

Скорее всего работа по 18 часов день, без отпуска и выходных и когда вместо морального удовлетворения и благодарности получаешь эмоциональный удар под дых, возникает мысль «а гори оно огнем».
Тут не деньгами, не отпуском не поможешь.
Нервное истощение и сильный нервный срыв, пару днями и даже неделями не лечится и иногда и 2 месяца не срок. Возможно что то личное добавилось (здоровье, семья, основная работа).
Ведь был же случай, когда автор супер мощной и очень популярной библиотеки снес проект из-за того, что его тупо не брали на работу, пруфов к сожалению под рукой нет.

Да и кто знает, может это будет и к лучшему для проекта.
1. Выставит ценник.
2. Уйдет на фуллтайм
3.Наймет тестировщиков и разработчиков
4.Сделает платный саппорт.
и будет заниматься потихоньку любимым делом.
Так что может это судьба подарила этот срыв, что бы он все переосмыслил.
Как знать, как знать, Судьба она еще та затейница.

Насколько я знаю в MS он и так работал над этим проектом фулл-тайм. Может быть как раз в этом причина выгорания.

Согласен, что весьма вероятно наложились и другие факторы кроме тех что видны в публичном пространстве. Но тем не менее, ответственным поведением в данном случае было бы заявить что автор больше не будет занимается поддержкой и развитием проекта, а так же ищет людей которым можно было бы передать управление (в сообществе Раста это было бы далеко не первым случаем), а не хлопать дверью таким образом.

НЛО прилетело и опубликовало эту надпись здесь

Откуда из моих сообщений следует, что код actix'а нужно выкинуть на свалку и начать заново? Ранее сообщество благополучно помогло резко сократить кол-во unsafe, сделав проект значительно лучше. Т.е. проблема не во всей кодовой базе, а в отдельных её элементах. Сообщество вполне заинтересовано продолжать развивать форк. Суть в том, что вместо мирного транзита как например было с vulkano (это вполне нормально устать от опенсурс проекта), автор решил хлопнуть дверью, что учитывая историю его предыдущего общения с сообществом выглядело, мягко говоря, весьма некрасиво.

НЛО прилетело и опубликовало эту надпись здесь
как создатель, закрывает, он же имеет на это право?

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


А указание от члена сообщества его по сути обязывает закрыть проект, раз он такой плохой создатель.

Нет, не обязывает. Это было личное мнение одного человека, а не консолидирование мнение всего сообщества. Если бы автор удалил этот единичный пост (на десятки спокойных и аргументированных сообщений в этом и предыдущих issue) и забанил его автора, то большинство бы отнеслось с пониманием, но вместо этого автор набросил ещё больше вентилятор удалив все issue указывающие на soundness проблемы.


Но плохой, оказывается, тот, кто столько сил уже вложил, сделал, раскрутил, а потом не отдал по сути исключительно имя проекта просто так сообществу, члены которого ему указывали ему на дверь?

Плохи и отдельные представители сообщества, и автор. У автора были возможности предотвратить всю эту драму в зародыше, либо изменив свои взгляды на важность проблемы (то вокруг чего по сути и был построен Rust), либо дав ясно понять сообществу что он не принимает репорты багов и патчи фиксящие soundness проблемы добавив в README соответствующие уведомления. В последнем случае интерес к проекту закономерно резко бы остыл, но видимо автору этого тоже не хотелось.


И да, вы так и не ответили, что такое есть сообщество в реальности и кто там за что обязан отвечать.

Потому что вопрос не имеет смысла. Все вольны делать то что им заблагорассудиться, в том числе и некрасиво реагировать на некрасивое поведение автора.

НЛО прилетело и опубликовало эту надпись здесь
То есть у человека есть право, но пользоваться им он не имеет права?

Не перевирайте мои слова. Где я об этом писал?


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


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


Не хочешь в своём проекте соответствовать этим ценностям? Твоё право. Сразу позиционируй проект соответствующим образом, дабы у сообщества не было ложных ожиданий. Не хочешь вообще никак взаимодействовать с "токсичным" сообществом? Закрой возможность слать issue и PR. Ну или вообще не выкладывай свой проект в опенсурс. Если ты не хочешь признания от сообщества и его помощи в развитии проекта, то вполне себе хороший вариант.


Обратите внимание, что эта драма возникла только с actix, тогда как множество других проектов весьма успешно развиваются, даже имея в своём багаже soundness проблемы.

Open source это общественное занятие.

Могли бы вы показать OpenSource проекты, в которых вы играете ведущую роль (являетесь одним из основных контрибьюторов или мейнтейнеров)?

Спасибо. Однако странно, что человек, который сам тянет на себе лямку OpenSource проекта(ов) говорит такие странные вещи.

Потому что я сам ожидаю от Rust проектов соответствия центральным гарантиям языка и полагаюсь на это в своей работе. Без этих гарантий уж лучше использовать C/C++ для которых экосистема на данный момент значительно богаче. И хоть я лично и не участвовал в драме вокруг actix'а, для меня тот факт что мейнтейнер столь заметного проекта столь пофигистски относится к гарантиям языка стало чрезвычайно неприятным сюрпризом.

для меня тот факт что мейнтейнер столь заметного проекта столь пофигистски относится к гарантиям языка стало чрезвычайно неприятным сюрпризом.

Что-то пока не видно, чтобы этот факт вообще имел место быть.


Из того, что довелось прочитать, выходит, что автор Actix-Web сделал работающий продукт. И, поскольку это работающий продукт, то в нем есть какие-то компромисы. В частности, он не смог полностью избавится от unsafe в коде. При этом, как уже было сказано где-то выше, там этих unsafe было что-то порядка 16 штук на 50KLOC.


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


При этом вы сами, будучи вовлеченными в саппорт и развитие OpenSource-проектов пребываете в каких-то розовых мечтах.

Вы на Расте пишите? Как я понял нет. Проблема не в unsafe, проблема в том, что автор не желает понимать как его следует правильно использовать и по сути открывает широкую дверь для неопределённого поведения, тем самым подрывая те гарантии которые и являются киллер фичей Rust'а.


Представьте новости что сайт написанный на actix-е оказывается хакнут через уязвимость возникшую из-за неправильного использования unsafe, что привело к миллиардным убыткам. Это будет очень больным ударом по репутации языка позиционирующего себя как memory safe альтернативу C/C++.


Ну или более приземлённый пример, разработчик будет тратить своё время на отлавливание багов, которые должны были предотвращаться компилятором. Выше уже об этом уже написал человек пользовавшийся actix-ом.


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


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

Так что это никакие не "розовые мечты"

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

Я же уже выше об этом написал… Да, никто никому не должен, в т.ч. и представители сообщества (многие из которых мейнтейнят свои open source проекты) не обязаны хорошо относиться к людям открыто плюющим на ценности поддерживаемые ими.


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

представители сообщества (многие из которых мейнтейнят свои open source проекты) не обязаны хорошо относиться к людям открыто плюющим на ценности поддерживаемые ими.

Одна из этих ценностей, очевидно, хейт посторонних людей? Отличие здорового сообщества от нездорового как раз и состоит в том, что если тебе не нравятся чужие ценности, то ты их игнорируешь, а не лезешь со своими. Свои ценности применяй внутри своего сообщества.
НЛО прилетело и опубликовало эту надпись здесь
>>Представьте новости, что сайт написанный на actix-е оказывается хакнут через уязвимость возникшую из-за неправильного использования unsafe, что привело к миллиардным убыткам. Это будет очень больным ударом по репутации языка позиционирующего себя как memory safe альтернативу C/C++

Это же opensource. Если вы берете opensource софт и используете его для зарабатывания денег, то это ваши риски. Причем здесь язык мне совершенно не понятно.

Если продукт не устраивает, не пользуйтесь им. Делайте свое. Меня вообще удивляет желание что-то требовать от автора opensource проекта.

Вы говорите о языке как о персоне или юр. лице, будто у него есть репутация. Подумайте, ведь это забавно. Язык это инструмент.
При этом, как уже было сказано где-то выше, там этих unsafe было что-то порядка 16 штук на 50KLOC.
Вы можете добавить в проект вообще всего одну функцию с одним unsafe и превратить жизнь пользователя этого кода в ад. Всего-то и нужно — превратить ссылку, который не даёт вам права что-то модифицировать в ссылку, которая вам такое право даёт.

Именно потому, кстати, предложение «померить сколько стоит этот unsafe» — бред. Над каждам unsafe может висеть сколько угодно «safe» кода, который без этого «unsafe» провиснет. И его удаление может выразится в переписывание вообще всего кода, который у вас есть…

Так что важно не сколько слов unsafe у вас в программе, а наличие доказательства того, что ваш код, на самом деле, никаких инвариантов, гарантированных языком не нарушает (просто у компилятора нет достаточно информации, чтобы это проверить).

Если же ваш подход к unsafe как «ой, компилятор чёт ругается, поставлю ка я unsafe, пусть замолкнет» — на Rust, действительно, писать не стоит… впрочем с таким подходом у вас будет гораздо больше, чем 16 unsafe на 50000 строк, так что тут, скорее всего, не такой случай…
впрочем с таким подходом у вас будет гораздо больше, чем 16 unsafe на 50000 строк, так что тут, скорее всего, не такой случай…

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


Так вот мне, после прочтения ряда заметок по этому поводу показалось, что все было несколько иначе. Что автор Actix-Web осознанно подходил и к использованию unsafe, и к избавлению кода от unsafe. Т.е. демонстрировал нормальный, прагматичный подход.


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

Так вот мне, после прочтения ряда заметок по этому поводу показалось, что все было несколько иначе. Что автор Actix-Web осознанно подходил и к использованию unsafe, и к избавлению кода от unsafe. Т.е. демонстрировал нормальный, прагматичный подход.
У меня сложилось противоположное впечатление: если я понимаю правильно — он сделал буквально горстку unsafe блоков — но они ломали гарантии языка.

Тут не пытаться бороться с имеющимися 16 unsafe блоками нужно — тут, наоборот, добавлять unsafe нужно. До тех пор, пока можно будет честно сказать: все места, где мы временно нарушаем гарантии языка — помечены unsafe.

То есть произошеднее… ну примерно как если бы разработчик на Java сделал библиотеку всего лишь с парой функций: peek и poke. Каждая — буквально в три строки. Одна читает данные по произвольному адресу, другая пишет. А дальше, поверх этого, уже написал бы кучу «типа безопасного» кода.

Я думаю ему бы тоже сказали что ему на Java писать не стоит. И все его рассказы про «прагаматичный подход» пропустили бы мимо ушей…
Так в чем трабл? Таких проектов на гитхабе, наверное, вагон и маленькая тележка. Просто они никому особо не нужны. Если его оппоненты уверены, что могут сделать лучше и безопаснее — форкнули и дело концом. Он им *ничего* не обязан, хотя вот обратное как раз есть — пользователи ему обязаны.
Если его оппоненты уверены, что могут сделать лучше и безопаснее — форкнули и дело концом.
Я думаю этим всё и закончится.

Просто они никому особо не нужны.
Вот в этом и проблема. Когда один из «флагманских» проектов на Rust содержит на Rust содержит такое… то это даже не смешно…

На самом деле единственное, что было сделано неправильно — это то, что код был удалён. Заморозка бы лучше подошла.

А всё остальное… похоже к этому давно шло — и произошедшее, в конечном итоге, сделает всем лучше… если пресловутое «сообщество» соберётся с силами и осилит сделать грамотный форк.
На самом деле единственное, что было сделано неправильно — это то, что код был удалён. Заморозка бы лучше подошла.
Неправильно лезть с помощью, когда об этом не просят — такое вот мое IMHO. Не нравится, считаете ошибочным — сделайте свое. Молча.
НЛО прилетело и опубликовало эту надпись здесь
у которого есть сортировка с претензией на доказуемую корректность
Если претензия необоснованна, то это и продемонстрировать. Но вообще интересно, почему его код принимают за образец — может быть, это имеет основания?
НЛО прилетело и опубликовало эту надпись здесь
Как-то он смог добиться, что его код принимался за образец. Я бы предложил личное сообщение. Если автор приветствует помощь, создать коммит.
Вот в этом и проблема. Когда один из «флагманских» проектов на Rust содержит на Rust содержит такое…


Мне кажется, что проблема в статусе «флагманского проекта на Rust». Собственно, если посмотреть в историю коммитов, проект, в первую очередь — некоего чувака, который написал 99,9% всего кода. Это его проект. Но статус «одного из флагманских проектов на Rust» порождает ошибочные аллюзии на тему того, кому принадлежит проект. Вдруг у кого-то перещелкивает триггер — этот проект гордость всего коммьюнити, достояние сообщества Rust.

Т.е. чуете проблему: люди, которые не имеют к нему отношения начинают использовать какие-то собственные чувства. И всякая «мерзость» вроде «ахренеть UB!!!» задевает их в первую очередь потому, что это уже личное. Это порча их собственности, это удар по ним самим, это уже их, якобы, с ложечки какахами покормить хотят. А вся проблема в ошибочной ассоциации себя любимых с собственниками проекта.

И, знаете, это может стать проблемой для самого комьюнити и для роста экосистемы…

Посмотрим. Николай еще год назад сказал "я устал, кто-нибудь возьмите на себя ментейн актикса", но желающих не образовалось.

Ну тогд это чистый qmail: к тому моменту, когда Бернстейну надоело играть в д'Артаньяна альтернативные MTA стали достаточно качественными для того, чтобы qmail никто просто не захотел уже поддерживать.

Похожая штука случилась и с TUXом: несколько лет он использовался и даже «в бою», а потом появился epoll и NGINX… и «рисковать здоровьем», возясь с сервером в ядре — стало уже никому не нужно.

Это — тоже вполне приемлемый выход…

Да нет, альтернативные фреймворки сильно хуже по совокупности качеств. Просто смысла не было в проект лезть, ведь фичи сами появлялись как на дрожжах безо всяких усилий.


Посмотрим, учитывая что в фреймворке всего 16 ансейфов, а обсуждаемый зафиксили патчем за полчаса, то починить их все за пару дней не представляет больших проблем, возможно, за счёт некоторых накладных расходов (тот же RefCell обсуждаемый включить). Ну а дальше как принято — профайлер в руки и вперед, если что-то не устраивает.

если я понимаю правильно — он сделал буквально горстку unsafe блоков — но они ломали гарантии языка.

Дело осталось за малым, а именно:


  • показать, что автор Actix-Web делал это специально со злым умыслом и что можно было сделать, как минимум, не хуже, не ломая гарантии языка;
  • получить при этом производительность не ниже, чем у имеющегося варианта Actix-Web.

Тут вопрос несколько в ином, а именно в том, что в расте такие функции разрешено писать, но их нужно помечать как unsafe.


Но эти пометки обычно для других людей. Если на проекте всего 1 автор он прекрасно знает какие 16 функций что делают. Да, он неправильно сделал что отказался от поддержки компилятора, который подсказал бы ему в некоторых случаях что он делает фигню, но в целом я бы не сказал что несоблюдение этого правила это такая проблема.


В расте вон есть from_utf8_unchecked, она тоже может спокойно упасть с уб на невалидном входе. Она помечена unsafe. А теперь представим, что она не помечена так, но её пользуется один-единственный разработчик который знает как она работает. Это плохо, но настолько ли сильно чтобы клевать печень автору?

Но эти пометки обычно для других людей.
Это пометки ещё и для компилятора, извините. Если компилятор видит изменяемую ссылку вне unsafe блока, то он имеет право предполагать, что других ссылок на этот объект нет. И кешировать значения, вычисленные на основе этой ссылки, а также откладывать запись.

И да — эти обптимизации заметно ускоряет программы, но, в настоящее время, в стабильной версии Rust отключены: так как restrict в С используется очень редко и ошибок в LLVM никто не замечал.

Когда эти оптимизации будут «доведены до ума» — «внезапно» весь код Actix окажется неработающим. Вернее не весь, а бог-знает-какое-его-подмножество.

И кто это всё будет чинить?

В целом я бы не сказал что несоблюдение этого правила это такая проблема.
Да — это именно такая проблема. Если вы считаете, что тот факт, что никто кроме изначально породившего этот код автора не может это поддерживать… то откуда эта статья и жалобы на то, что «community» нехорошее такое, не хочет на себя поддержку брать?

Чтобы это смог поддерживать кто-то, кроме автора, нужно, чтобы код был серьёзно отрефакторен. Чтобы его мог понять не только автор. Как это было сделано c LibreOffice и Inkscape.

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

Я имею в виду вот это, конечно: а теперь представим, что она не помечена так. Человек, который этим пользуется — невиновен, он же не знал, что эта функция может к UB приводить.
Когда эти оптимизации будут «доведены до ума» — «внезапно» весь код Actix окажется неработающим. Вернее не весь, а бог-знает-какое-его-подмножество.

По уверениям автора нигде в программе не возникает состояния, чтобы в один момент времени существаоло несколько значений полученных через get_mut. Он не прав что не пометил эту функци unsafe? Да, не прав. Но ничего от этого не разваливается. Компилятор не дает никакой лишней семантики. Функция


unsafe fn foo() { ... }


ничем не отличается от


fn foo() { unsafe { ... } }


кроме как тем, что компилятор не требует декорировать вызовы foo как unsafe. Соответственно если автор настолько семи пядей во лбу, что самостоятельно поддерживает дисциплину и учитывает что все эти функции небезопасные, то в принципе жить можно.


То есть автор просто не декорировал предназначенным для этого ключевым словом функции, к которым предполагался аккуратный подход. Да, он в этом неправ. Нет, такого швкала воплей "мывсеумрем" который последовал оно не стоило.


Чтобы это смог поддерживать кто-то, кроме автора, нужно, чтобы код был серьёзно отрефакторен. Чтобы его мог понять не только автор. Как это было сделано c LibreOffice и Inkscape.

В этом патче люди один ансейф заменили на RefCell в течение получаса. Сколько нужно еще времени по-вашему чтобы поправить остальные 15 мест в программе?


Я имею в виду вот это, конечно: а теперь представим, что она не помечена так. Человек, который этим пользуется — невиновен, он же не знал, что эта функция может к UB приводить.

Этим пользовался один человек — сам автор крейта, потому что апи не публичное. Так что представлять нечего — ситуация невозможная. А протекание УБ к клиенту есть и в стд, и так же как и там это редко происходит, и чинится.

Соответственно если автор настолько семи пядей во лбу, что самостоятельно поддерживает дисциплину и учитывает что все эти функции небезопасные, то в принципе жить можно.
… пока автор это всё в одиночку и поддерживает.

Что будете делать когда он, вдруг, решит прекратить это делать?

По уверениям автора нигде в программе не возникает состояния, чтобы в один момент времени существаоло несколько значений полученных через get_mut.
Это пока он единственный, кто этот код правит. И хорошо если так. Как 0xd34df00d верно заметил — чтобы это гарантировать нужно быть сверхчеловеком. Потому как обычные люди ошибки делают. Так что я вот нифига не уверен, что это так.

Сколько нужно еще времени по-вашему чтобы поправить остальные 15 мест в программе?
Понятия не имею — в этом-то и беда. Я вообще не понимаю почему вы считаете, что количество unsafe для Actix'а — это полезная метрика. Она является полезной только для кода, где все все unsafe блоки поддерживают инварианты Rust. Если же этого нет — то может оказаться что и один unsafe для своего исправления требует переписывания всего кода.
Что будете делать когда он, вдруг, решит прекратить это делать?

Ну, когда это произойдет, тогда и надо переживать. Пока автор поддерживал проект, такой проблемы не существовало.


Понятия не имею — в этом-то и беда. Я вообще не понимаю почему вы считаете, что количество unsafe для Actix'а — это полезная метрика.

Я считаю, что сообщество за неделю может выпилить все unsafe из актикса, потеряв процентов 5 производительности на некоторых тестах. Моё сугубо личное мнение, без каких-либо серьезных заверений и замеров. Просто автор изначально не был готов смириться с подобным замедлением, но между замедленным на 5% проектом и его отсутствием я предпочту замедление.

Я считаю, что сообщество за неделю может выпилить все unsafe из актикса, потеряв процентов 5 производительности на некоторых тестах. Моё сугубо личное мнение, без каких-либо серьезных заверений и замеров. Просто автор изначально не был готов смириться с подобным замедлением, но между замедленным на 5% проектом и его отсутствием я предпочту замедление.
Ну вот если сообщество решит это сделать — то вам повезёт. А если не захочет — то будете сами как-то Actix поддерживать.

Судя по вот этому:
Ну, когда это произойдет, тогда и надо переживать. Пока автор поддерживал проект, такой проблемы не существовало.
вы морально к этому всегда были готовы.

Так в чём проблема?
Так в чём проблема?

Если я застраховал жилье от пожара, предполагая, что он может сгореть, это не значит что сгоревший дом это не проблема.

По уверениям автора нигде в программе не возникает состояния, чтобы в один момент времени существаоло несколько значений полученных через get_mut.

А по заверениям его оппонентов, такое состояние таки нашли.

Нашли, как и в std раста находят unsoundness. И автор его починил. Не так, как хотели те кто заводил issue, но починил.

А где гарантии, что там других таких случаев нет? И, что важнее, как предполагается обеспечивать это вот всё, если другие люди будут этот код править?

Вы не можете одновременно писать код так, чтобы его никто, кроме вас, не мог поддерживать и при этом плакать о том, что дескать никто его у вас забрать не хочет!

Второе следует из первого, извините. Пока подходом автора является «главное, чтобы публичное API было безопасным» — мы имеем 50000 строк unsafe кода…
А где гарантии, что там других таких случаев нет? И, что важнее, как предполагается обеспечивать это вот всё, если другие люди будут этот код править?

Гарантий нет никаких ни для кого. RustBelt только часть стд провилидировал, до актикса еще не дошло.


Вы не можете одновременно писать код так, чтобы его никто, кроме вас, не мог поддерживать и при этом плакать о том, что дескать никто его у вас забрать не хочет!

Ну, это сложный момент. Не знаю, какое тут может быть хорошее решение. Просто взять и забить на все принципы которыми человек жил не так просто.

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

И судя по реакции — хорошего выхода и нет. Жизнь — боль.
RustBelt только часть стд провилидировал, до актикса еще не дошло

Так в том-то и проблема, что при таком подходе результат валидации будет заведомо отрицательный...

То что он это сделал специально следует прямо из его гневной тирады, с которой он «закрыл» проект.

А насчёт производительности и всего остального — это уже ваши хотелки.

Потому что:
  1. Подобный код использовать в production нельзя.
  2. Если человек, несмотря на все предупреждения его использует — то он и отвечает за все возможные последствия.
  3. Что и как там происходит с Actix пока в нём живёт подобный код и его автор не собирается его править — мне лично не интересно (ибо см. пункт 1)


Если кто-то код Actix почистит и приведёт в удобоваримое состояние — ситуация изменится. А пока — пользоваться им просто нельзя. И уже неважно — какие там он показывает достижения на бенчмарках.

Он написан человеком, которые не понимает как в Rust обеспечивается безопасность — вот и всё.
То что он это сделал специально

Внимательнее, пожалуйста. Речь шла о "специально со злым умыслом".


А насчёт производительности и всего остального — это уже ваши хотелки.

Простите, но сам факт наличия Actix и использования его разными команиями в разных условиях говорит о том, что вот это:


Подобный код использовать в production нельзя.
А пока — пользоваться им просто нельзя.

и есть хотелки. Это вам хочется, чтобы конкретные люди решали свои задачи так, чтобы написанный ими код нравился вам.


Он написан человеком, которые не понимает как в Rust обеспечивается безопасность — вот и всё.

Вы даже не даете себе труда подумать о том, что человек вполне может это понимать, но вынужден переступать через эти правила безопасности для достижения своих целей.


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


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

Подобный код использовать в production нельзя.

А nginx пользоваться можно? Потому что я вот прям ваще не уверен что в нем УБ меньше, чем в актиксе.

У NGINX есть «специально обученные люди» (которые могут продать вам поддержку) во-первых, а во-вторых его автор — очень серьёзно относится к исправлению UB. Хотя код там и очень специфический.

Автор актикса тоже очень серьезно относился к исправлению УБ.


Просто как по мне актикс с протекающим уб всё еще безопаснее nginx на си. Ну вот потому что в одном случае у нас есть верхняя граница потенциально опасных мест, а в другом — нет.


То что автор писал на расте как на "безопасной сишке" удручает, но всё еще лучше, чем ничего.

Ну вот потому что в одном случае у нас есть верхняя граница потенциально опасных мест, а в другом — нет.

То что автор писал на расте как на «безопасной сишке» удручает, но всё еще лучше, чем ничего.
В том-то и дело что нельзя писать на Rust как на «безопасной сишке». Либо ты пишешь как на Rust, либо как на обычной сишке.

И да, похоже, бесопасноть Actix и NGINX с точки зрения кода однаковая, но вот с точки зрения поддержки… NGINX 100 очков вперёд даст…
В том-то и дело что нельзя писать на Rust как на «безопасной сишке». Либо ты пишешь как на Rust, либо как на обычной сишке.

Мне кажется каждый может решать сам, как использовать инструмент. Мое мнение: пользователи никаких дыр не видели (публичное апи оперативно фиксилось), а что внутри автор творил — его дело.

Святая инквизиция из блюдунов «the one true rust way» и просто хейтерков набежит с реддита и покарает охальника.
НЛО прилетело и опубликовало эту надпись здесь
Мое мнение: пользователи никаких дыр не видели (публичное апи оперативно фиксилось)
Так они «дыр не видели» или «публичное апи оперативно фиксилось» извините?

Это — весьма разные заявления. Просто потому что вторая фраза явно противоречит первой…

"Дыр не видели" нужно читать как "баги чинились настолько же оперативно, насколько этим занимается кор тима Rust". Есть некоторые физические ограничения, с которыми приходится мириться.

В том-то и дело что нельзя писать на Rust как на «безопасной сишке».


А по этому поводу, простите, запрет какой-то существует? Официальный прям? В лицензии на использование Rust, видимо, указано?

На сколько я знаю, пользователями сейф апи раста надо давать больше гарантий. Т.е. например в си апи у вас условие на то что указатели валидны и всё, а остальное где то в доке. А если вы пишите апи для какого то языка с ГЦ то уже вы должны не только указатель валидный отдавать, а еще и счетчик ссылок правильно выставлять в зависимости от того что вы с этим указателем делаете. Аналогичная ситуация и с борроу чекером раста.

А документальное подтверждение того, что разработчик, пишущий на каком-либо языке, принимает на себя соответствующие обязательства есть?

Ну, как бы, я понимаю, что код, не соответствующий определенным критериям качества, принято называть говнокодом. Однако я ни разу не видел документально закрепленного запрета писасть говнокод на каком-либо языке…

Источник прав и обязанностей пользователя языка, очевидно, лицензия на использование языка (чаще всего в форме оферты, т.е. «принимай или вали нафиг, не пользуйся языком»), в которой описываются права и обязанности сторон договора.

Раз разработчик пишет на языке, оферту он, очевидно, принял, и единственным юридически значимым основанием сказать «не пиши на языке X» является нарушение оной оферты (лицензии). Теперь осталось найти в лицензии Rust явный запрет на использование этого, без сомнения, замечательного языка, с целью написания говнокода, и я с вашей точкой зрения соглашусь. Но только тогда, когда увижу значимый запрет.

Так сказать можно что угодно, свобода слова же. Главное не нарушать правил гитхаба, которые скорее всего достаточно жесткие, ну и законов тех стран где бываете. К языку то это какое имеет отношение?

К языку это имеет прямое отношение. Призыв «не пиши на расте», как мы уже выяснили, юридической силы не имеет. Даже разработчики языка такого относительно текущей уже опубликованной версии языка сказать не могут в силу лицензии. Могут только добавить в лицензию следующей версии явный запрет писать на их языке следующему списку человек (далее список).

Соответственно, это призыв может расцениваться исключительно как неадекватный дествительности, и не преследующий иных целей, кроме как оскорбление оппонента. И всерьез обсуждать «кто прав» в выборе между разработчиком библиотеки и неадекватным критиком-кукаретиком — оксюморон какой-то.
НЛО прилетело и опубликовало эту надпись здесь
Логический переход не обоснован.


Почему не обоснован? Решать, кому можно пользоваться растом, а кому — нет, могут только разработчики этого самого раст'а. У остальных полномочиев не хватает.

Свою позицию разработчики выразили явно: можно всем.

Действительность: можно всем. Выкрик: тебе лично нельзя. Выкрик, явно противоречащий действительности является (дословно) «неадекватным действительности»
Выкрик: тебе лично нельзя.
А где это такой выкрик был?

Был «крик души» в духе «прекрати уже насиловть стюардессу».

Запрета я не видел.
«Не писай в тапки» — не запрет? Повелительное наклонение, отрицание налицо. Так же и тут.
НЛО прилетело и опубликовало эту надпись здесь
Я думаю, что лицензия раста не даёт им прав решать это.


Они принимают это решение на этапе выбора лицензии. И даже могут изменить лицензию на следующие версии, но только на следующие. То, что уже опубликовано под лицензией X, останется доступным на основании лицензии. Можно опубликовать еще и под лицензией Y параллельно, и все дальнейшие изменения выпускать только под лицензией Y. Это законно, и это единственный механизм автора, позволяющий решать, кто, и на каких условиях, будет пользоваться его творением.
Раз разработчик пишет на языке, оферту он, очевидно, принял, и единственным юридически значимым основанием сказать «не пиши на языке X» является нарушение оной оферты (лицензии).
Если вы считаете, что всё что юридитически разрешено — то и нормально, то какие претензии к троллям?

Разрабочик может писать лобой говнокод, посетители GitHub имеют право поливать его помоями и обсмеивать… в чём проблема-то?
посетители GitHub имеют право поливать его помоями и обсмеивать…

Откуда вдруг такое право?


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

Дает ли мне это право «поливать помоями и обсмеивать» вас лично или хотя бы текст ваших комментариев?
Понятия не имею. Вы этим не занимаетесь — но людей, которые этим занимается хватает… и никого пока не посадили… так что да, видимо имеете.
но людей, которые этим занимается хватает… и никого пока не посадили…

Это говорит не о наличии прав, а об отсутствии ответственности.

НЛО прилетело и опубликовало эту надпись здесь
Оттуда же, откуда у меня есть право заливать на гитхаб откровенно плохой код.

Не вижу связи. Человек сделал что мог и как мог, потратил свое время.


Вы, походя, исходя из своего собственного представления о прекрасном, взялись поливать человека помоями и осмеивать его. С какого такого?


Не нравится код — проходите мимо. Или корректно предупредите других, чтобы не вляпались. Или корректно донесите до автора чем его код плох. Или сделайте свое.


Но вот так взять и начать оскорблять за то, что кто-то сделал максимум того, на что был способен… Попахивает безнаказанностью из-за анонимности в Инернете.


Или к плохому коду теперь нужно относиться как к оскорблениям чувств верующих?

НЛО прилетело и опубликовало эту надпись здесь
имеете.
также все имеют право написать: «вот кому надо — тот пусть выкидывает и переписывает»
НЛО прилетело и опубликовало эту надпись здесь
Никаких отсылок к личности, никаких оскорблений. Имею право?

Без оскорблений — конечно.


Но вы о другом подумайте: какой смысл в подобном комментарии, сколько пользы он принесет адресату?

Имею право?


На гитхабе — нет. Пруф.

При личной встрече — тоже нет. Очевидно же, что клевета. Любая экспертиза подтвердит, что по химическому составу говно и предоставленные образцы кода — абсолютно разные вещи.
НЛО прилетело и опубликовало эту надпись здесь
Мне неочевидно, это COC для той репы или всего гитхаба.


Вот это site-policy гитхаба в целом. В нем ссылка на CoC, который я вам привел. Теперь очевидно.

нельзя постить «fraudulent content»


А вот это уже серьезное обвинение. У вас, видимо, есть формулировка суда, подтверждающая правоту ваших слов?

В частности, это значит, что нельзя постить код с функцией, которая прикидывается safe, но на самом деле safe ни разу не является,


А это где описано? Можно ссылку на документ?

потому что это явный fraud.


Заключение экспертов на руках имеется?

Думаю, что на этом вопрос закрыт.


Не-е-е-т, на этом самое интересное только начинается!

Необоснованные обвинения в мошенничестве, явная клевета, попытки выдать свое субъективное мнение за единственно-верное экспертное… На что еще готов пурист, чтобы не признать свою неправоту?

Кстати: не пишите на расте, ваш код — говно.
НЛО прилетело и опубликовало эту надпись здесь
Неочевидно. Где написано, что этот документ применим ко всем репам на всём гитхабе, а не только лишь к контрибьюшенам к репе с названием site policy?


Ну вот вам другая ссылка, например. Сомнения отпали?

А, то есть, ваше обвинение с отсылкой на COC было несерьёзным, и его можно проигнорировать? Ну тогда о чём мы тут говорим?


Вы забываете о «тяжести обвинения». Обвинения в юридической неграмотности, незнании требований сообщества и даже в глупости не влекут за собой юридически-значимых последствий. Обвинения в мошенничестве — влекут.

Зачем вам формулировка суда, если это написано в документе, на который я сослался, в параграфе 2, пункт 3?


То, что мошеннический код нельзя заливать на гитхаб, я и не оспаривал. А вот корректность именования unsafe, UB и много-других-страшных слов мошенничеством — под большим вопросом. Да даже не под вопросом:

Мошенничество — хищение чужого имущества или приобретение права на чужое имущество путём обмана или злоупотребления доверием.


Материальная заинтересованность автора кем-то доказана? Попытки получения денег с пользователей обманным путем зафиксированы были? Нет? Не мошенничество! Немедленно извинитесь перед автором!

В описании языка Rust? Там говорится, что функции, помеченные как safe, выполняют те или иные инварианты, на которые, в частности, может опираться компилятор. Эта функция их не выполняет — мошенничество.


Очень хотелось бы увидеть в описании языка Rust именно вот этот кусок «Эта функция их не выполняет — мошенничество.» Прям вот в этой формулировке…

Учитывая количество установок actix — в особо крупном размере.


«Особо крупный размер» определяется на основании подсчета количества материальных средств, полученных преступником через осуществление преступной деятельности. Сколько автор actix'а от «количества установок» денег получил?

Контрибьюторов было минимум двое, судя по скриншоту — значит, по предварительному сговору.


Товарищ прокурор, ну вы уж с законом-то ознакомьтесь, для начала…

Моё оценочное суждение данной ситуации.


Субьективизм и демонстрация абсолютного незнания юриспруденции… Порекомендовал бы вам обратиться с этим набором тезисов в суд, только настаивайте на публичных слушаниях и праве трансляции в интернет через YouTube. Все дружно вместе поржем)

Я первую главу из TAPL прочитал, этого достаточно, чтобы считаться экспертом?


Очевидно, нет.

Я и не пишу, тащем.


Образцовый разработчик! Прекратил писать еще до того, как анонимный комментатор приказал бросить! Все бы так!)))
НЛО прилетело и опубликовало эту надпись здесь
Что то, что это в рамках нашей дискуссии влечёт максимум удаление репозитория на гитхабе.


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

Personal gain вполне возможно. Библиотека в топе бенчмарков, следовательно, даёт автору известность. Возможно, есть и финансовая выгода, если, например, ему платили деньги за результаты в виде попадания в топ бенчмарков.


Возможно… если, например… и т.д. и т.п. Понимаете, для того, чтобы назвать деяние автора мошенничеством, нужно предварительно обосновать 3 вещи (прямо по вашей цитате идем):

1. wrongful or criminal — противоправность или преступность деяния
2. financial or personal gain — финансовую либо личную выгоду
3. ntended to result in — направленность деяния, соответствующего п.1 на результат, классифицируемый в соответствии с п.2

Т.е., согласно формулировке в контексте обсуждаемой темы, автор actix'а, по вашему мнению руководствовался преступным умыслом (либо нарушил чьи-то права) и целью ставил получение финансовой (либо весомой личной) выгоды? Вот прям так, под покровом ночи, злоумышляя против пользователей, он и делал? Вы сам то вы это верите, или просто языком потрепали, не подумав?

Интересно, запрета называть код говном (вот прямо в этой формулировке) вы не демонстрировали.


Именование кода говном имеет ярко выраженный эмоциональный характер, субъективно и регулируется другими вещами.

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

Мошенничество же — преступное деяние, имеющее четкое формальное определение, и actix к нему никакого отношения не имеет.

Почему? А если и до последней главы дочитал? А если и ещё пяток книг по смежным областям потом прочитал?


Я тоже прочитал много книг: большую, с картинками и синюю. А еще определение слова «эксперт».

Экспе́рт (от лат. expertus — опытный) — специалист, приглашаемый или нанимаемый за вознаграждение для выдачи квалифицированного заключения или суждения ...


1. Специалист — либо подтвержденный диплом/сертификат, либо практический опыт, знания. Ни диплома, ни практики от прочтения книжки у вас не появилость. Хоть 10 раз прочтите.
2. Вознаграждения вам никто не предлагал.
3. На квалифицированность вашего суждения полагаться нельзя ввиду отсутствия признаваемой квалификации у вас.

Тчк., как это ни печально, вы не эксперт…
А вот это уже серьезное обвинение.

А, то есть, ваше обвинение

Ну мошенничество и клевета две абсолютно разные вещи.

Одинаково запрещенные текущим законодательством.
Оттуда же, откуда у меня есть право заливать на гитхаб откровенно плохой код.


Хм, видимо, тут должно быть что-то о презумпции невиновности, неотъемлемых правах человека и правилах пользования гитхабом, которые не ограничивают качество кода, который можно к ним заливать. Там даже требования, чтобы оно компилировалось, нет.
НЛО прилетело и опубликовало эту надпись здесь
То есть, код, который отсылает содержимое ~/.* на сервер каждое 30-е число, они удалять не имеют права? Ну ок.


Ну, может, хватит уже, право слово, качество кода с назначением оного кода в кучу смешивать. Код, сливающий содержимое вашего «хомяка» 3-м лицам они удалять право имеют и, более того, должны. Но не потому, что это «некачественный» код. Если он сливает быстро, без сбоев, незаметно для вас, не просаживая производительность — это качественный код. Значительная часть вирусов, это не просто качественный код, это, блин, произведения искусства! Но их все равно будут удалять. Просто потому, что этот код противоправен по своему назначению.

Есть назначение кода (задача, которую код выполняет), и есть соответствие совокупность качеств кода в контексте его назначения. Если код плохо выполняет или не выполняет вообще свою задачу — да, это говнокод, и нет, это не повод удалять его с гитхаба. Если назначение кода явно противоправное — нет, это не делает его говнокодом, и да, это основание для удаления с гитхаба, вне зависимости от совокупности функциональных качеств кода.
Если вы считаете, что всё что юридитически разрешено — то и нормально, то какие претензии к троллям?


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

Разрабочик может писать лобой говнокод


Священное неотъемлемое право разработчика, да. Я бы даже предложил как-то законодательно закрепить.

посетители GitHub имеют право поливать его помоями и обсмеивать…


А вот тут хрен. Вот это — политика GitHub'а, которая утверждает, что посетители обязаны соблюдать вот эту штуку. А в ней прямо говорится, что никто никого поливать помоями и обсмеивать права не имеет.

в чём проблема-то?


В том и проблема то…
Вы на расте пишете?
прямо описание изощренного троллинга — писать на расте исключительно через unsafe, на гневные призывы «не пиши на Расте!» не откликаться.
прямо описание изощренного троллинга


По мне, больше на способ детекции неадекватов похоже…

писать на расте исключительно через unsafe


Как что-то плохое.

на гневные призывы «не пиши на Расте!» не откликаться.


А вот это — абсолютно верная реакция.
НЛО прилетело и опубликовало эту надпись здесь
код никогда не врет. Врут люди.
Во-вторых, где вранье? Я же честно везде буду указывать в API unsafe (ну и что, что у меня нигде не будет safe, зато там могут быть иные преимущества, важные лично мне).
НЛО прилетело и опубликовало эту надпись здесь
конечно в контексте темы поста — началось-то все у автора проекта с призывов (в скобках: «ой, какой классный у вас проект, нам в коммьюнити Rust-a очень приятно, что растовый проект бьет всех по бенчмаркам! только нам тут пишут, что unsafe — это как-тоне по Rust-овски») а за скобками: «у нас чекер на ваше API ругается, вам нужно изменить unsafe метод в API, чтобы он был safe».
КАКОГО ВООБЩЕ?
Это что, не легальный элемент языка?
Не нравится вам мой код — выкиньте его из ваших чекеров и упоминаний.
(но это я такой толстокожий, у меня не все коллеги так могут....)
когда код врёт — это плохо.


Когда код тормозит — это плохо.
Когда код плохо читаем — это плохо.
Когда код набит бойлерплейтом в угоду простоте чтения — плохо.
Когда код минифицирован — плохо.
Когда код раздут — плохо.
Когда код не служит идеалам справедливости — это тоже плохо (да, есть и такое мнение).

Но «когда код не соответствует ожиданиям, взятым с потолка каждым первым теоретиком» — превращает набор ограничений в фарс, и ведет к неизбежному «код лучше не писать». Хотя, погодите, если кода нет — это тоже плохо…

В каком ужасном мире мы живем.

Вы знаете, я бы, пожалуй согласился с такой точкой зрения: «когда код не соответствует заявленным качествам — это плохо». Ожидания пользователя должны базироваться на качествах, заявленных автором, а не на собственных фантазиях — с этим, надеюсь, вы согласитесь.

Сходил я на actix-web. «Actix web is a small, pragmatic, and extremely fast rust web framework.»

Маленький, прагматичный и быстрый — вижу, это автор «абищял». Идиоматичный, верифицируемый — не вижу этих слов…
А законы физики и логики в лицензии на Rust должны быть прописаны? Иначе они не действуют?

Не знал, не знал…
Законы физики само-применяются ко всем и вся, им плевать на лицензии и/или мнения отдельных индивидов. Абстракция подтекает…
Просто если вы создаёте функции, которые «экспортируют небезопасность» — то вы не получается никакого «безопасного C». Вы получаете обычный такой C. «Опасный». Хуже даже: вы теперь должны «руками» поддерживать инварианты, которые в C от вас поддерживать не требуется.
Хочу и поддерживаю. Не тебя же заставляю поддерживать, тебе какое дело?)))
Законы физики и юридические законы исключительно из недостатка фантазии названы одним словом, и не имеют фактически общих черт. Законы физики — фактор непреодолимой силы, которые в законодательстве традиционно именуются «форс-мажорными обстоятельствами» и на этом основании имеют заведомо больший вес, чем законодательство.

При этом лицензия не может противоречить текущему законодательству, т.к. законодательство имеет бОльшую юридическую силу.

Иначе они не действуют?


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

Не знал, не знал…


Теперь будете знать. Не благодарите.
Если кто-то код Actix почистит и приведёт в удобоваримое состояние — ситуация изменится. А пока — пользоваться им просто нельзя.

Но если очень хочется (TM), то можно… Стоит ли быть таким категоричным
Стоит ли быть таким категоричным
Как показывает практика — стоит.

Потому что остаться без поддержки когда у вас над чем-то тысячи строк кода написаны — очень неприятно. Соотвественно для любого кода у вас вы должны понимать что вы будете делать если люди, разрабатывающие его, вдруг прекартят его поддедживать. Когда код написан так, что вы его поддерживать сами не можете и есть достаточно большой шанс того, что автор тоже, вдруг, испарится… лучше выбрать что-то другое.

Даже если от этого чуть-чуть пострадает эффективность.
И много выиграли? Или потери столь велики, что нет сил не метать громы и молнии?
Пришлось в обдном случаяе написать свою библиотеку, в одном — заморозить версию (и не менять её).

Случая Actix'а почти что уникален: обычно «самоощущение уникальности» и «умение писать хороший код» в одном человеке не уживаются.

В данном случае имеем (по признанию очень многих людей) быстрый пакет с удобным API — но при этом «ужас-ужас» внутри.

Это редкость. Обычно если внутри «ужас-ужас», то и по многих другим параметрам библиотека «так себе»… можно легко сделать лучше.
Простите, не совсем понял, кто тут кому злой буратино. Изначально, например, было видно, что у проекта достаточно высокий фактор автобуса. Если вы не проверили, сможете ли поддерживать «в случае чего» проект до того, как написали поверх десятки тысяч строк кода… Ну, видимо, злой буратино вам вы.

После этого остается сказать одно (надеюсь, вы-то на расте пишете?): не пишите на расте!)

Нескромный вопрос.
Если в Русте такие страшные гарантии, то почему язык вообще дозволяет творимое автором actix?

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

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

Ведь если unsafe, вызвавший проблему, является неотемлемой частью языка, то откуда гарантии языка?
А давайте я переформулирую вопрос: а если JNI является неотъемлемой частью Java (напомню, что именно за попытку «отъять» JNI от Java Sun, в своё время, подал в суд на Microsoft), то откуда какие-то гарантии языка? JNI позволяет все и всяческие гарантии, я извиняюсь, похерить.

Гарантии даются языком при использовании безопасного подмножества языка. При использовании unsafe вы берёте сохранение гарантий на себя и должны обернуть этот код в безопасный интерфейс, который гарантирует инварианты языка.


В общем, прочитайте, например, TRPL: https://doc.rust-lang.org/book/ch19-01-unsafe-rust.html

Гарантии дает язык. В unsafe блоках часть этих гарантий расслабляется, чтобы позволить писать вещи, которые иначе написать невозможно. Это никаким образом не похоже на С/С++. Вы на C# когда-нибудь писали? Там вот тоже есть unsafe и это абсолютно прекрасно соседствует с тем фактом, что это managed GC язык с абсолютной гарантией безопасности по памяти и отсутствия UB. Куда более серьезной, чем может дать раст.

Потому что unsafe это "необходимое зло" без которого не обойтись при написании низкоуровневых вещей и FFI. "Фишка" Раста в том, что если вы при написании unsafe код соблюли соответствующие требования, то это делает невозможным получение неопределённого поведения в коде который не использует unsafe.


Например, Vec активно использует unsafe под капотом, но как бы вы не использовали безопасное API вы не получите неопределённого поведения в скомпилированной программе из-за него. Таким образом, вместо того что бы следить за всем кодом как в C/C++, вам нужно следить и внимательно проверять только очень малую часть кода. Большая часть Раст проектов не использует напрямую unsafe вовсе и полагается на то, что зависимости ответственно подошли к использованию unsafe, поэтому нарушение этих гарантий и вызывает столь негативную реакцию.

Большая часть Раст проектов не использует напрямую unsafe вовсе и полагается на то, что зависимости ответственно подошли к использованию unsafe,

Т.е. речь идет все-таки не о гарантиях языка, а о гарантиях его использования по определенным правилам.
Ведь для C/C++ тоже можно написать свод правил, гарантирующих предотвращение возникновения определенных проблем, и сказать, что это гарантии языка.

Ответил выше. Этот свод правил относится только к очень малой доли кода и если эта доля написана верно (чего не было в случае actix'а), то для всего остального кода гарантии поддерживаются автоматически компилятором.

Например, Vec активно использует unsafe под капотом, но как бы вы не использовали безопасное API вы не получите неопределённого поведения в скомпилированной программе из-за него.
Блаженны верующие \o/
Это ровно такие же гарантии, как и в любом языке, и в стандартных библиотеках находятся ошибки.

Разумеется это не 100% защита, но большое количество проектов показывает, что гарантии Раста действительно серьёзно уменьшают количество memory safety багов по сравнению с C/C++ и серьёзные компании берут его на вооружение как раз из-за этого, а не из-за якобы пресловутого хайпа. Если из 70% ошибок компилятор позволяет предотвращать условные 95%, то на мой взгляд это является существенным достижением.


Я понимаю, что вы как фанат D, возможно и скептично относитесь к гарантиям Раста, но практика показывает несколько иные результаты.

Я скептически отношусь только к подобным верованиям (что vec с unsafe писали святые и потому ошибок там априори нет).
И считаю, что если в стеке вызовов есть хоть 1 unsafe — гарантий языка уже нет.
Я не фанат D, но memory safety у Раста не сильно больше сейф, чем у C#, D, Java etc
Я не фанат D, но memory safety у Раста не сильно больше сейф, чем у C#, D, Java etc
А кто-то спорит? Rust — это «безопасность C#/Java без многомегабайтного рантайма».

Вполне достаточный уровень для того, чтобы захотеть этим пользоваться…
Просто это преподносится как исключительно растовская фича. А это не так.

Ога, можно вспомнить ещё и об libc, который используется стандартной библиотекой Раста, и который, о ужас, написан на C. Подход "либо всё, либо ничего" на мой взгляд является весьма странным и непрактичным. Программирование это инженерная дисциплина в которой нужно выбирать между градациями множества переменных.


memory safety у Раста не сильно больше сейф, чем у C#, D, Java etc

Хех, учитывая что вы перечислили языки со сборщиком мусора, то здесь вы действительно правы (хотя имхо культура строгости и типобезопасности делает экосистему Раста в среднем более надёжной, чем в перечисленных языках, но это не свойство языка как такового). Если для ваших задач данных языков достаточно, то переходить на Раст вам действительно особой нужды нет.

Скажите, а как вы это делаете? Началось с отсутствием гарантий написанного на расте unsafe vec, и плавно перетекло на memory unsafety С++ и откуда то взятой libc и среднюю! культуру безопасности.

Похоже, что курс социальной демагогии обязателен при изучении раста =)

Потому что практика показывает, что проекты на Rust-е в целом получаются более надёжными чем на С/C++ (возьмите тот же блог-пост про http клиенты или про переписывание CSS движка лисы), что явно противоречит вашему утверждению об "отсутствии гарантий". Это не только заслуга языка, но и сложившейся экосистемы вокруг него, которые, на мой взгляд, не следует рассматривать в отрыве друг от друга.


Про libc я попытался использовать ad absurdum, дабы показать абсурдность вашего заявления про "если в стеке вызовов есть хоть 1 unsafe", ибо практика показывает, что можно строить более надёжные системы на формально менее надёжном фундаменте, но раз вы считаете это демагогией, продолжайте считать и далее. Дискутировать с вами далее у меня желания нет.

Так при чем тут С++? Я он нем не говорил. А подмена темы это и есть один из приемов демагогии.

«Более надежными»и «гарантии» — называется почувствуй разницу.

Собственно, темы спора нет, аккуратнее в абсолютных формулировках.

Гарантия это как раз «Всё».
Гарантия это как раз «Всё».
Гарантии бывают разными.
В Расте на уровне языка отслеживается граница между safe и unsafe. То есть это единый стандарт для всех его использующих. И, насколько я понимаю, любой СТО может быстренько глянуть сколько у него в продукте кода, помеченного unsafe (ну и наказать непричастных).
Как по мне, так это еще одна гарантия по сравнению с обычным кодстайлом.
Это заблуждение, поскольку unsafe в расте не наследуется. Можно обернуть ансейф в сейф функцию и испортить этим любое кол-во кода.
О гарантиях при этом говорить нельзя.
Гарантии бывают разными.
Ну или давайте поговорим о 10%-гарантии, или 20%й… Или касаясь Актикса, гарантии, которая не держит многопоточный вызов.
Можно обернуть ансейф в сейф функцию и испортить этим любое кол-во кода.
А это уже решается средствами социальной инженерии.

Как видим на примере этой статьи — они работают.

Если код Actix вычистят — то это будет совсем хороший результат, но даже если он умрёт — всё равно неплохой.

О гарантиях при этом говорить нельзя.
Можно. Все безопасные языки так устроены: C#, Java, Haskell… Даже если язык «супербезопасный» и не позволяет «ничего такого» сделать в принципе — всегда есть возможность вынести «плохой код» в отдельный демон с общением по сети… и тогда проблемы начнут возникать уже в нём — причём точно также можно «экспортировать небезопасность» и заставить человека, программирующего на любом языке думать об указателях и всех радостях C/C++.

Тот кро предоставляет шлюз между «безопасным» и «небезопасным» языком должен и позаботиться о безопасности — иначе это не работает.

Можно вспомнить, что TCP гарантирующий доставку построен на IP, который таких гарантий не даёт.

И именно поэтому на самом деле гарантий доставки не даёт. Джоел про этот факт (и следствия из него) писал ещё.

Абстракции протекают — тут ничего не попишешь… но это не значит что нужно всё делать так, как если бы абстракций просто не было…
Вам и не нужно верить. Безопасность доказывается, а не проверяется тестами. В частности, безопасность стандартных примитивов Rust была доказана формальными методами группой Ralf Jung и К°.
Ну ну, а безопасность самого компилятора то доказана?

Но в любом случае это лучше чем ничего

И прошу ссылочку, почитать что и как.
Это довольно скользкая и серьезная проблема для любого компилятора. Точнее серия проблем.

То о чем говорили выше — доказательство корректности формальной модели языка и реализации стандартной библиотеки в рамках этой модели. Этим занимаются ребята шарящие в системах типов, лямбда исчислении, денотационной семантике и прочих страшных словах.

Их задача: путем формальной логики доказать, что семантика и система типов языка не содержит внутренних противоречий, а любая программа, написанная с учетом этой семантики — корректна. В терминах Rust это означало убедиться среди прочего, что инварианты & xor &mut; выполняются для всего. Сначала была доказана корректность safe подмножества языка (при условии что абсолютно все unsafe блоки написаны корректно и не нарушают инфариантов). Затем приступили к подбиванию клиньев под доказательство корректности реализации фундаментальных типов (Vec) и примитивов синхронизации (Mutex, RefCell, …).

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

То что говорите вы — доказательство корректности реализации компилятора, то есть что он действительно делает то, что хотят разработчики. И тут все куда хитрее. Есть проблема, обозначенная Кеном Томсоном в бородатом 1984 году и названная trusting trust. Смысл в том, что не так-то просто доказать, что компилятор генерирует тот код что надо, а не, например вставляет закладку или вирус где-то в тело программы. Особенно, если реализация компилятора является self hosted и язык написан сам на себе. То есть, может так оказаться, что в мире не существует ни одной незараженной копии компилятора.

С учетом того, что языки семейства C с точки зрения систем типов являются недоказуемыми (из-за лохматой адресной арифметики и UB) обычно ограничиваются сертификацией конкретной версии конкретного компилятора. Фактически, умные дяди медитируют над исходниками и потом клянутся мамой, что эта версия вроде хорошая. Понятно, что это чудовищно затратный и немасштабируемый процесс, который нельзя применить к такому активно развивающемуся и объемному языку как Rust.

В экоситеме Rust сейчас существует несколько инициатив, которые тем не менее должны помочь с решением последней проблемы:

На одном Vec далеко не уедешь. Ну вот например можно посмотреть реализацию sort в стандартой либе там сплошной get_unchecked для индексов. Да в некоторых случаях можно обойтись zip/reduce/fold и т.д. Ну а что если самому надо написать что то такое? Насколько компилятор сможет выкинуть эти проверки если я буду писать safe? Почему если я докажу что мой ансейф алгоритм корректный это хуже чем если это доказали разрабы стд?
Ну или допустим в случае с актикс. Интересно какая структура данных была у автора, что ему понадобилось куда то сохранять мутабельные ссылки. Т.е. он пошел по пути "мамой клянусь" я создаю не больше одной. А как это формализовать? Борроу чекер не может, значит надо ансейф абстракцию. А достаточно ли вообще системы типов раст чтобы задекларировать сейф апи к такой абстракции?

А достаточно ли вообще системы типов раст чтобы задекларировать сейф апи к такой абстракции?

Именно это огорчает меня больше всего во всей истории. Громы и молнии праведного гнева со всех сторон, обиды, обвинения и оправдания, а собственно важный технический вопрос инженерное сообщество тщательно обходит…
А достаточно ли вообще системы типов раст чтобы задекларировать сейф апи к такой абстракции?
Если недостаточно — то будет у вас unsafe-абстракция.

Не вижу вообще проблемы. Такое ощущение, что автор Actix так и не понял — почему кому-то не нравится его использование unsafe. И посчитал что дело в количестве unsafe-блоков.

Хотя на самом деле основная претензия — не к количеству, а качеству. unsafe-блоки не должны «экспортировать небезопасность». Точка.

А вот уже после выполнения этого правила — можно обсуждать их количество и прочее.
Безусловно, все то вы пишете разумно и логично. И я полагаю однозначного и универсального ответа нет.

Я для себя определил это как стремление к инкапсуляции и разделению ответственности и проведению четкой границы между «прикладным» и «системным» кодом.

Отделять мух от котлет, а safe от unsafe важно по той же причине, почему нельзя бросаться писать свои реализации криптоалгоритмов.

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

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

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

Все вместе позволяет реализовать принцип stability without stagnation и позволить оперативнее работать с изменениями без необходимости проведения тотального ревью при изменении каждой зависимости.
Работу с unsafe лучше оставить специалистам по написанию unsafe библиотек по той же причине почему криптоалгоритмы и криптобиблиотеки пишут специально обученные люди, профессионально занимающиеся этим многие годы.
Мне кажется это уже перебор. Уже тот факт, что стандартная библиотека экспортирует небезопасные функции свидетельствует об обратном: кто-то же должен их использовать?

Но, конечно, нужно стремиться к тому, чтобы «небезопасность» не экспортировалась и unsafe-код был простым, легко понятным и, в идеале, проверяемым (пусть и не компилятором Rust, а чем-то другим).
В своем коде вы можете делать что угодно. Никто вам не может явно запретить использовать unsafe. Проблемы начинаются, когда такой код становится важной частью экосистемы, от которой начинают (транзитивно) зависеть все больше и больше программ и людей. А потом выясняется, что часть логики написана некорректно. В случае неиспользования unsafe доказательство надежности тривиально.
Проблемы начинаются, когда такой код становится важной частью экосистемы, от которой начинают (транзитивно) зависеть все больше и больше программ и людей
JS-ники тоже с подобной проблемой столкнулись (раз и два)
В своем коде вы можете делать что угодно. Никто вам не может явно запретить использовать unsafe.


Вот прямо на этой формулировке можно и нужно остановиться.

Проблемы начинаются, когда такой код становится важной частью экосистемы, от которой начинают (транзитивно) зависеть все больше и больше программ и людей.


Чьи, простите, проблемы начинаются? Кто кому злой буратино? Если это мой код, я по-прежнему настаиваю на праве делать с ним что угодно! Вне зависимости от количество пользователей или «частей какой-то экосистемы». Право авторства неотчуждаемо в принципе, а любые иные права могут отчуждаться исключительно с моего явного согласия, которого я не давал.

Вообще не понимаю, на каком основании кто-то пытается «отчудить» какие-либо права у автора.
Очень интересно.

Я натыкался на CompCert C
НЛО прилетело и опубликовало эту надпись здесь
Вот было бы интересно почитать, почему нельзя было полностью избавиться от unsafe. Ну то есть, например, что-то самим сделать быстрое в стиле unsafe и спрятать его в safe-библиотеку. И был бы первый в мире safe-яп.
ps: может это кто-то где-то описал, но я пропустил.
Потому что Rust это практичный, а не ортодоксально академический язык. Есть многие вещи которые компилятор и его система типов физически не в состоянии проверить: например, обращение к операционной системе или вызов в другую библиотеку, написанную на C или работу с регистрами внешнего устройства, отображенными в память.

Такие вызовы маркируются unsafe потому что ответственность за обеспечение инвариантов лежит на программисте.

Если убрать из языка unsafe то потеряется возможность работы с внешним миром, как и возможность реализовать структуры данных ориентированные на проризводительность.

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

Многие библиотеки форсируют безопасность указывая директиву #[forbid(unsafe)]. Тогда добавление в код unsafe блока приведет к ошибке времени компиляции.

Пример: допустим у вас есть C библиотека, которая экспортирует следующий интерфейс:

struct Foo;
struct Bar;

Foo* create_foo();
Bar* get_foo_internals(Foo*);
void destroy_foo(Foo*);


Обязательно (хех) в документации должен быть аршинный комментарий, вида: «перед использованием ресурс нужно создать с помощью create а потом не забыть удалить с помощью destroy; использование указателя на Bar возможно временно, его нельзя сохранять».

Сразу возникает масса способов неправильного использования этого API:

  • Передать вместо Foo* хрен знает что (невыделенную память)
  • Забыть удалить Foo после использования
  • Попытаться удалить Foo дважды
  • Попытаться удалить заблокированный Foo
  • Сохранить указатель на Bar куда-то вовне, а потом обратиться к нему, когда Foo уже давно удален
  • Из одного потока лезть удалять объект, а из другого лезть в его внутренности


Если создание и удаление объекта худо-бедно можно завернуть в RAII паттерн, то обеспечить внятный контракт на foo_internals не так просто.

Rust позволяет завернуть все это в безопасный интерфейс, неправильно воспользоваться которым будет невозможно. Компилятор физически не даст указателю на Foo утечь за пределы времени жизни Foo, даже если это происходит в разных потоках.
Если убрать из языка unsafe то потеряется возможность работы с внешним миром
Про внешний мир не уверен — если на входе стоит проверка, то дальше данные идут как валидные (в смысле безопасности). И эта проверка может быть обязательной с точки зрения ЯП (например через типы). Единственное плохо, что программа может упасть (из-за безопасных по типам, но ошибочных по значениям данных) — но это и есть задача для программиста.

как и возможность реализовать структуры данных ориентированные на производительность
Это да.

Rust позволяет завернуть все это в безопасный интерфейс, неправильно воспользоваться которым будет невозможно.
Вот если бы он обязывал, то тогда этой дискуссии не было бы.

Вот собственно у меня и вопрос — возможно ли в принципе такой встроенный в ЯП (например Rust) механизм, который бы 100% не выпускал unsafe наружу (не полагаясь при этом на человека).

Теоретически думаю можно, но практически вы не захотите на нем писать, потому что он будет считаться фашистским даже по мерам агды и кока.


Так что вопрос не особо интересный.

Даже теоретиечски нельзя. Вот вам ультрасупербезопасная функция: system(3).

С точки зрения языка — это абсолютно безопасная функция, принимает строку, возвращает int… что может быть проще?

Но на самом деле — она позволяет сделать что угодно с вашей программой. Вот вообще всё, что угодно.

Ok. Усложним ситуацию: пусть эта же функция запускает всё «в песочнице», от которой вы напрочь изолированы. Добавилось безопасности? Нет: теперь вашу программу «завалить» нелья… но ситуация получится как в xkcd.com/1200 — вроде как ваша программа и защищена — но толку от неё нет.
Даже теоретиечски нельзя. Вот вам ультрасупербезопасная функция: system(3).

Ну не считая того что должна быть сигнатура IO Int не вижу ничего подозрительного. А что она позволяет такого сделать страшного? Ну запустится дочерний процесс, не страшно. Система их постоянно запускает.

И? Система тоже может убить мой процесс по любой причине в любой момент, эта функция ничем не выделяется.

Ну если так рассуждать — то чем питон или жс не безопасный?

Потому что их небезопасность основана на свойствах самой программы, а не страшного окружающего мира который их окружает. Например когда складывают килограммы с вагонами и вот это всё. То есть нарушения внутренней логики программы.

Значит безопасных языков нету, потому что от ошибок в логике на 100% ничего не защитит.

Отвечу уже приевшейся фразой (жалко, что нельзя её поставить в подпись):


Programming Defeatism: No technique will remove all bugs, so let's go with what worked in the 70s.

Вы утверждали что "Теоретически думаю можно" сделать полностью safe. А теперь вы повторили мою фразу про 100% не возможно.
Я же всеми руками и ногами за строгую типизацию, линтеры, код-ревью, тесты, статические анализаторы и прочее и прочее. Особенно там где от качества кода зависит многое.
Но во-первых, я так и не понял что такое safe/unsafe в вашем понимании. В моём — это бинарное деление как в Расте, или как в Хаскель (как я слышал про эту директиву тут).

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


Энивей, мне лень доказывать это утверждение, потому что я значально говорил, что даже если такой язык можно придумать, то практически им пользоваться будет нельзя. Если такой язык создать нельзя, то и вопроса насколько он удобен — нет.


Чтд.

НЛО прилетело и опубликовало эту надпись здесь

Да, я на это и намекал товарищу PsyHaSTe, а он оказывается рассказывал про вымышленную страну розовых пони :)

Ну запустится дочерний процесс, не страшно.
Дочерний процесс может банально вызвать ptrace и поменять в вашем процессе всё что угодно и где угодно.

Сделать на основе этого peek/poke интерфейс и обойти любую защиту любого языка — не слишком сложная задача.

Ну не считая того что должна быть сигнатура IO Int не вижу ничего подозрительного.
Ну программы, которые ничего и никогда не меняют в окружающем вас мире — как бы не особо нужны и интересны.
Дочерний процесс может банально вызвать ptrace и поменять в вашем процессе всё что угодно и где угодно.

Чем это отличается от того что кто-то через хэкс редактор залез в память процесса и что-то нахимичил?


Ну программы, которые ничего и никогда не меняют в окружающем вас мире — как бы не особо нужны и интересны.

Ну мы вроде не про программу, про функцию говорили. А вот функции которые ничего не меняют в окружающем мире обычно самые приятные в работе.

Чем это отличается от того что кто-то через хэкс редактор залез в память процесса и что-то нахимичил?
Тем что в данном случае «безопасная» программа залезла сама себе в память и нарушила там все инварианты. Причём с использованием функции даже не помеченной как unsafe. И даже на языке где пометок unsafe в принципе нету.

А вот функции которые ничего не меняют в окружающем мире обычно самые приятные в работе.
С этим не поспоришь… но если никаких других в языке нет — то он ни для чего полезного использован быть не может…

Так чем это отличается от Command::new("ruinMyMemory").status()?


С этим не поспоришь… но если никаких других в языке нет — то он ни для чего полезного использован быть не может…

А я нигде не предлагал все остальные убрать.

Про внешний мир не уверен — если на входе стоит проверка, то дальше данные идут как валидные (в смысле безопасности). И эта проверка может быть обязательной с точки зрения ЯП (например через типы). Единственное плохо, что программа может упасть (из-за безопасных по типам, но ошибочных по значениям данных) — но это и есть задача для программиста.
Вы, похоже, не совсем понимаете что такое типы и гарантии безопасности в смысле Rust. Тип это не только формат представления данных, но и определенный контракт.

Тип u8 позволяет хранить беззнаковые целые 8 бит в ширину. Тип NonZeroU8 — то же самое с дополнительным контрактом, о том что ни у одного экземпляра не может быть значение 0. Если вы используете в прототипе своей функции такой тип вам уже не надо руками проверять, так ли это. Гарантии проверяются статически на этапе компиляции и в местах преобразования типов.

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

Получив из внешнего мира строку вы конвертируете ее в String вызывая один из конструкторов. Внутри конструктор выполняет проверку на валидность и только после этого создает экземпляр.

Таким образом, String это не просто формат данных, но и контракт того что данные валидные. И во всех местах где в коде вы встречаете этот тип вы можете быть уверены, что внутри все в порядке.

То же самое относится и к другим типам с более сложными контрактами.
Вы, похоже, не совсем понимаете что такое типы и гарантии безопасности в смысле Rust. Тип это не только формат представления данных, но и определенный контракт.
Ну, то есть, другими словами, со входа всегда можно отсекать опасные/некорректные данные — именно это я и хотел сказать.
НЛО прилетело и опубликовало эту надпись здесь
Иногда по логике просто нечего делать, если проверка не сработала
Так это уже совсем другой вопрос.
НЛО прилетело и опубликовало эту надпись здесь

Ну, за ансейф можно посчитать даже утверждения, что A => B => A или A => B => C => (A => B) => (A => C), так что от ансейфа в том или ином виде не уйти даже в чистейших областях.

НЛО прилетело и опубликовало эту надпись здесь

То что вы можете получить программу, ложную в некоторой другой системе аксиом. То это вы задаете в систему "билив ми, A => B => A", и она это не проверяет, а берет за основу. То что в прологе обозначается как foo(a,b).

НЛО прилетело и опубликовало эту надпись здесь
Сообщества бывают разными и нельзя утверждать, что сообщество фанатов Rust идеально цельное.

Наверняка в нём есть подгруппа, назовём её «рыцари safe кода», которая выдвигает свои особые требования к проектам на Rust. Но говорить от имени всего сообщества Rust крайне самонадеянно с их стороны. Тем более они не могут говорить от имени всего open source сообщества.

Open source проекты в большинстве случаев делаются для человечества вцелом, а не для конкретной его подгруппы. Предполагается что ЛЮБОЙ человек может взять и использовать код, независимо от принадлежности его к конкретному сообществу, конкретной идеологии.

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

Дело субкультуры — принять работу автора или отказаться от её использования. В крайнем случае форкнуть и сделать по-своему. Но ни в коем случае не учить автора жизни. Особенно если он уже несколько раз объяснял, что уверен в своей позиции и отступать от неё не намерен.

Если же представители субкультуры продолжают устраивать срачи, то это хамство чистой воды и ничего более.

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

НЛО прилетело и опубликовало эту надпись здесь
Спасибо за минус в карму. я вернул

А вот и пример того, почему минусы в карму участники предпочитают ставить "втихую"...

НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь

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


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

Тем, что выбесили, подозреваю. Он писал решение, для себя, не для себя — не суть. Кому надо — пользовались. Кто считал нужным — писал ему issue, а он их могу игнорировать. А вот вместо комментариев «рыцари в белых плащах» могли просто форкнуть проект и делать, как считают нужным. Проблема в том, что от автора/творца требуют еще и быть приемлемым/удобным для потребителей, к-рые ко всему прочему, еще и нахаляву пользуются плодами его труда. Не о… дурели ли?
PS. Это скорее ответ «городу и миру», а не именно вам, т.к. я, как раз, больше потребитель, а вы, как раз, — творец.
НЛО прилетело и опубликовало эту надпись здесь

Ну справедливости ради, если ты сильно выгорел, если у тебя нервное истощение, то твоей реакцией на очередной стресс будет "Сгорел сарай, гори и хата".
Я очень надеюсь, что он отойдет, пересмотрит приоритеты в жизни и просто спокойно отдаст бразды правления проектом.

-«Ты не достаточно хорош для нашего проекта!
-Ок, идите в ж. я ушел.
-Эээ… да, ладно, не в первый раз. Еще вернешься.»
Прошло почти 5 лет. Успехов, да.

З.Ы. Приходит время, когда лучше собрать манатки и не мешать остальным в их розовых мечтах.
НЛО прилетело и опубликовало эту надпись здесь
Ну а причем тут опен сорс, любой продукт могут свернуть, и потом я так понял, что все сделали форки и могут себе на здоровье пользоваться тем что есть.
Чота вспомнилось:

„Дядя Вова. Цапу надо крутить, цапу.
— На! Сам делай!
— Мне нельзя, я чатланин.
— Уйди отсюда!!! Как советовать, так все чатлане, а как работать, так…“ (с)

:)
Причем, ЕМНИП, совет про цапу в конце концов оказался неправильным.

М-да. Фанатики "идиоматичного подхода любой ценой" опять что-то испортили. Кто бы мог подумать.

Как это выглядит с моей стороны

Неправильно оно как-то выглядит с вашей стороны. Автор проекта постоянно огрызался на авторов патчей, недружелюбно относился к доказательствам, что в его коде есть проблемы в плане безопасности. Тот коммент про «перестань писать на раст» был точкой кипения, до которой он сам людей довел таким отношением к проблеме. Фраза «this patch is boring» как-то совсем не уместна.
И проблема не в unsafe. Его в раст проектах полно бывает. Проблема, что unsafe конкретно в этом проект ломает одно из самых важных свойств раста — невозможность получить UB в safe коде. У него же получилось именно так и люди ему это демонстрировали, но его отношение к этому было все такое же индифферентное.
Ну и вот 64.github.io/actix Все совсем не так радужно и со скоростью этого сервера.
Проблема, что unsafe конкретно в этом проект ломает одно из самых важных свойств раста — невозможность получить UB в safe коде.

Противоречие какое-то.
Если важное свойство раста — невозможность получить UB в safe коде,
почему его вооьбще смогли получить?

Потому что в коде есть unsafe. В чем противоречие? Людей не случайно просят не использовать unsafe практически никогда. Это прямой путь в мир C/C++, где можно сломать все и вся. Если unsafe код портит кучу, то какие тут могут быть гарантии языка. Если автор взял на себя ответственность, то он и должен гарантировать, что такого не произойдет. Автор actix этого не делал и активно сопротивлялся попыткам это исправить.

Ладно, сойдемся на разнице в понимании термина "гарантии языка".


Для меня они включают только то, что гарантируется именно языком. И если синтаксически корректная программа на некотором языке способна на UB, то это означает, что язык не имеет гарантий отсутствия UB.


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

Какой набор? Правило одно — не использовать unsafe (что заодно автоматом включает любые не раст зависимости, т.к. они по-умолчанию unsafe). Вы какую-то дичь пишите, ей богу. Мир вокруг небезопасный и полон UB. Есть лишь определенные пределы, до которых мы можем от него отгородиться и жить спокойно. Вам ниже вон показывают пример самсунг — если память модифицировать, то любая корректная программа на любом языка будет способна на UB. Гарантии языка сохраняются всегда в определенных рамках и для раст они очень четкие.

Говоря формально, язык даёт следующую гарантию: если ни один из unsafe-кусков кода не содержит UB, то итоговая программа также не содержит UB.

Говоря формально, язык даёт следующую гарантию: если ни один из unsafe-кусков кода не содержит UB, то итоговая программа также не содержит UB.
Ну нет, получить UB от комбинации можно без UB в частном случае.
Добавление многопоточности — прекрасный фактор. Кажется, в Расте TLS не по умолчанию.

И, не будем далеко ходить — автор патча Актикса сказал, что надежное исправление тем не менее некорректно.
Точно также, как в Java через JNI. Ну или как на любом самом супербезопасном языка на Samsung'овских телефонах

Вы можете использоваться самый надёжный, суперзащищённый, просто сверхстойкий язык… но если через /dev/exynos-mem вы можете поменять любой байт в памяти и авторы языка про это не знают… то все эти гарантии умножаются на нуль.

В случае jni. AFAIK я могу написать свой classloader заеныорсмтт его использования а он который всю лабуду из jni грузит не будет никогда. (Правда для этого скорее всего тоже понадобится unsaf) это вырубит этот вектор хаканья можедли. От unsafe в стандартных библиотек в rust это не спасет никак, разве что no_std и руками все писать

no_std, no_core (т.к. core тоже не без unsafe) и отказаться от общения с железом и системными API (потому что всё это всегда unsafe).

НЛО прилетело и опубликовало эту надпись здесь
Проблема, что unsafe конкретно в этом проект ломает одно из самых важных свойств раста — невозможность получить UB в safe коде.

Это заблуждение, на Расте вполне можно получить UB в safe коде. У нас, я помню, была в свое время дискуссия с автором этой статьи, в которой я это продемонстрировал.

Да, есть баги в библиотеках и компиляторе, которые нарушают эти гарантии. Но эти проблемы не замалчиваются и люди активно работают над их решением. Т.е. проблема не в том, что в actix'е были soundness баги, а в том, что автор не признавал их важность и отказывался работать над их исправлением.

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

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

Тот компромисс в расте, про который я упоминал, тоже не помечен unsafe.

Но признан багом и работы над его исправлением ведутся, хоть и медленно (вплоть до предложений полностью задеприкейтить as). В actix-е же большинство использований unsafe делалось без какого-либо анализа влияния на производительность и, если не ошибаюсь, во время первой уборки unsafe производительность не особо пострадала. Не говоря уже об отказе принимать патчи фиксящие эти баги.

вплоть до предложений полностью задеприкейтить as

Hell yeah! :) Ладно, бог с ним, не буду развивать эту тему, а то мои каменты будут становиться все бледнее и бледнее в буквальном смысле.
Если речь об атомиках, то это совершенно иная ситуация и проблемой действительно не является. Раст не гарантирует отсутствие гонок вообще. Это просто невозможно, когда железо под низом работает иначе, а атомики это таки почти прямой доступ к железу. Логические ошибки синхронизации тоже возможны. Другое дело, что для раста это не проблема — нарушения целостности памяти не произойдет из-за этого.
Давайте примеры, когда safe код в полной изоляции и без влияния на него unsafe кода имеет UB. Если safe код сам по себе имеет UB, то это считается багом и требует исправления.
Вот вам пример документированного UB в safe rust:

doc.rust-lang.org/reference/expressions/operator-expr.html#semantics

Жирным шрифтом. Хоть там и написано, что «это баг и будет пофикшен», в реальности «идиоматический» фикс для него заруливает производительность в ряде сценариев в минуса, поэтому он не фиксится годами.
Да, читал. Но таки важно, что это считается багом и работы над исправлением идут. issue живая и обсуждение идет там. Я же хотел увидеть пример UB, когда это багом не считается и фиксить это никто не собирается.
Ну, знаете, от того, что этому поведению навесили ярлычок «баг», оно не перестает быть, как я уже выше написал, по сути документированным компромиссом между безопасностью и скоростью в пользу скорости. И почему-то никакой травли разработчиков раста со стороны коммьюнити не возникает, хотя те стойко отклоняют предлагаемые «исправления» этого «бага» в стиле вышеупомянутого «задепрекейтить as».
Потому что у них есть аргументы, почему это до сих пор не исправлено. У автора actix их не было. У него вечно дурацкие отмазы — покажите мне тут UB, этот код скучный и вообще, надо нам всем писать на интерпретируемых языках. Разница в отношении к проблеме. Команда раста не считает эту проблему допустимой и у нее высокий приоритет. Временное решение есть, плюс проблема сама по себе не прям чтобы конец света (как я понимаю проблему, угрозы безопасности она не несет. Утечек данных нет, память не портится. Просто результат не определен), так что можно подумать.
Я так понимаю про «скучный» код было написано в том смысле, что он «решал» проблему чисто формально — убирал unsafe ради убирания unsafe без учета причин, по которым unsafe в этом месте вообще изначально появился.
Так и в чем проблема? Если unsafe ведет к UB и довольно серьезному (вроде double free и use after free там происходило, что пипец), то надо сначала это исправлять. Это куда более серьезная проблема, чем бенчмарки, за которые автор так трясется. Подумать как сделать код лучше можно всегда потом. Именно подобный склад мышления и пропагандирует раст, поэтому его человек в отчаянии и гнал фразой «тебе стоит перестать писать на раст». Его подход неверный и вредный.
Насколько я понял, все «негативные последствия» происходили исключительно в приватном API, которым никто извне пользоваться не должен, и то при условии, если его неправильно используют. Скажем, где-то глубоко внутри своих библиотек rust все равно использует те же malloc() и free() (или их аналоги), которые, если их вызывать в неправильном порядке, будут делать плохое. И что же? С этим ничего не поделать.

Тогда это приватное API надо отмечать как unsafe.

Что является нарушение инвариантов rust, что и носит определение unsound. Код извне не должен иметь возможности получить UB из-за этого. В этом весь смысл unsafe — мы оборачиваем его в безопасную абстракцию. А тут получается, что и код unsafe, и еще safe код надо писать осторожно, потому что сломать можно. Плюс там был пример, когда даже через public API можно получить UB.

Вот код из одной из issue github.com/fafhrd91/actix-net/blob/7c5fa25b23a802b27e8066caf4e01e3c2cedeb35/actix-service/src/cell.rs#L34-L36 Как видно, unsafe просто обернут в safe метод без всякой заботы о том, безопасно ли это на самом деле.
Ну изначально это было написано именно таким образом тоже наверное не просто так — возможно, этот код вызывался во всяких нагруженных местах, и лишние проверки в этом месте сильно просаживали производительность. В общем, клеймить автора за то что он хочет подумать и сделать как лучше, а не тяп-ляп залепить формально пластырем, я бы не стал.
Именно подобный склад мышления и пропагандирует раст


Пропаганда — это про «шашечки»

бенчмарки, за которые автор так трясется.


Бенчмарки — это про «ехать»
Команда раста не считает эту проблему допустимой и у нее высокий приоритет.
какое эта команда имеет отношение к его репозитарию и проекту? Если в стиле «говорите, как петербуржцы», то вполне адекватное решение — показать на дверь и сопроводить пинком.

А зачем тогда он лез в комьюнити и позиционировал свой фреймворк как основной для Раста? Что он этим добивался? Хотел просто заработать себе очков на хайпе в молодой экосистеме? Назвался груздем — так полезай в кузов.

А зачем тогда он лез в комьюнити и позиционировал свой фреймворк как основной для Раста?
можно попросить привести пруд такого поведения — раз. и два — для такой ситуации *достаточно* было не указывать этот фреймворк, как основной для раста.
Автор мог сколько угодно «позиционировать свой фреймворк как основной для раста», но если бы его фреймворк не показывал отличных результатов в ряде публичных тестов, и если бы его не было объективно удобно использовать, то это «позиционирование» исключительно самим автором бы и ограничилось, исключительно среди самого себя :)

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

Он стал основным не просто потому, что автор так хотел, а потому, что он объективно выигрывал у конкурентов по неким важным для конечного юзера параметрам. А жизнь расставила, да — проекта больше нет, и кому от этого лучше? Хейтеркам-пуристам? Или тем, кто реально его использовал? Вопрос риторический.

он выиграл отчасти потому, что был одним из первых async когда все остальные просто ждали стабилизации. не умоляя достоинств actix, тут совокупность вероятных факторов его взлёта.

НЛО прилетело и опубликовало эту надпись здесь
Пока на таком языке без unsafe даже двусвязный список не реализуешь, это все разговоры в пользу бедных.
НЛО прилетело и опубликовало эту надпись здесь

"Потребности в колбасе на сегодня нет" :)

НЛО прилетело и опубликовало эту надпись здесь

Кстати, спасибо, что напомнили :)
(убежал проверить, не собирается ли код к планируемой статье на новой стабильной версии)

Тут в обсуждении пробегала ссылка, что актикс жульничает в текэмпауер, да и раньше я встречал подобное про другие фреймворки.

Но без доказательств это пыль — надо смотреть.
Он чуть-чуть жульничает — не больше, чем другие фреймворки. Это как раз непринципиально.
Фраза «this patch is boring» как-то совсем не уместна.


Я понял эту фразу иначе. Имхо, автор хотел этим сказать, что эта примитивная заплатка — поверхностная, а по хорошему счету надо взять паузу и проанализировать последствия ее применения, а еще лучше, подумав, разработать не поверхностное, а оптимальное решение проблемы.
Да, я тоже понял автора именно так.

Автор имеено что счел решение скучным и некреативным, потому что использовать стандартный RefCell вместо собственного костыля — это очень скучно:


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.
RefCell использовать не просто скучно, но еще и небесплатно, так как это подразумевает определенные накладные расходы — там ЕМНИП есть счетчик, значение которого проверяется и инкрементируется/декрементируется а-ля shared_ptr в C++.
Еще лучше это замержить патч, а потом думать, как сделать его лучше. Скучный код подождет, а вот UB в безопасном коде нет.
Как я понял, временно эту проблему (также поверхностно) он устранил, исключив возникновение опасных ситуаций через апи. Да, конечно надо было устранять проблему по существу, вот он и хотел это сделать по нормальному, всё обдумав, а не хвататься за первое попавшееся решение.
Выглядит как кто-то своими грязными руками потрогал ваш чистый раст.
Хороший ответ примерно такой — «что-то я не вижу ваших фамилий в списках донатеров проекта.»
Краткая суть ситуации: наш соотечественник fafhrd91 (на хабре есть человек в таким ником, но это не он)


Дык, вроде бы это он и есть. Вот он сам про себя что пишет:
«Я главный разработчик actix. Активно использую раст и actix в azure iot»
habr.com/ru/post/460989/#comment_20433709

Меня смутило то что он в статье про актикс писал об авторе actix-web в третьем лице.


До сих пор не уверен, он ли это или нет.

НЛО прилетело и опубликовало эту надпись здесь
Никто никому ничего не должен, если в контракте не прописано иное. Всё же просто. Если кому-то хочется кого-нибудь учить этике, то большая часть посетителей ресурса живёт в стране, где для этого просто вагон возможностей. =)
А что, плюсовики закончились уже? Зачем своих то хейтить?
Плюсовики выработали иммунитет.
По поводу фразы о «скучном патче» хочу сказать пару слов. В контексте переписки я склоняюсь к такому выводу:
Имхо, автор назвал патч скучным по причине его банальности и поверхностности. Автор, похоже, не хотел с ходу применять такой патч без анализа всех последствий, как на безопасность, так и на производительность. Автору требовалось время на анализ и нахождение более оптимального решения. А на это время он скорректировал API, исключающее некорректное использование (т.е. по сути это тоже поверхностная скучная заплатка). Но ему не дали время подумать и сделать всё красиво. Если проект «от души», то я его понимаю — такие поверхностные заплатки зачастую нарушают гармонию.

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

Новые боинги (даже с изменённым центром тяжести) — достаточны безопасны. Но требуют переучивания. И вот в попытке этого избежать — там навставляли заплаток, которые сделали самолёт реально опаснее. Это реально похоже на вот эту функцию, которая явно существует для того, чтобы компилятор считал небезопасный код безопасным…
Как бы то ни было, очевидно, что такие проблемы надо решать не заплатками.
С этим согласен. В случае с боингом нужно просто выкинуть это чудную заплатку нафиг — и провести дополнительное обучение лётчиков. И всё.

Кстати интересная аналогия с обсуждаемым кодом: когда автору сказали что 100 unsafe — это как-то много… он не придумал ничего лучше, кроме как их скрыть.

Что, как и в случае с Боингом, после обнаружения поставило под вопрос качество уже вообще всего кода в этом проекте.
В сабжевом случае имхо всё просто. Основным стимулом создателя проекта была скорость и только скорость, т.е. побитие рекордов. Поэтому у него и такой код специфический и никому не понятный, набитый хаками. Если бы он последовал всем советам, то его проект потерял бы свою основную цель существования — быть самым быстрым. Это примерно тоже самое, как если бы мы стали требовать от чемпиона мира по бегу накачивать бицепсы, причем основательно сосредоточившись на них. Но у бегуна другая цель… Накачивать бицепсы ему скучно и неинтересно.
В сабжевом случае имхо всё просто. Основным стимулом создателя проекта была скорость и только скорость, т.е. побитие рекордов.
Нигде не видел такой формулировки. И рекомендаций это не использолвать в prod — тоже. И предупреждений о том, что «это», со временем, прекратят поддерживать.

Вот TUX — он изначально позиционировался как «инструмент для изучения границ возможного». Потому и прожил недолго и был выпилен из ядра, когда нужда в нём отпала.

А Actix… может быть он и задумывался как «иструмент побития рекордов», но «продавался»-то он не в таком разрезе.
Нигде не видел такой формулировки.


«Actix web is a small, pragmatic, and extremely fast rust web framework.» — явно декларируемые а) небольшой размер, б) превалирование функциональности над чистотой кода, в) скорость.

Плохо смотрели?

И рекомендаций это не использолвать в prod — тоже.


Хм, на миллионах hello-world'ов нет рекомендаций не тащить это в прод. Просто потому что лениво, например. Отсутствие рекомендаций не использовать в прод не говорит о наличии рекомендаций использовать. Хотите тащить в прод, и так, чтобы кто-то за вас уже подумал и проанализировал — ждите официальной рекомендации тащить. Автор, вроде как, ни разу такой рекомендации не давал.

И предупреждений о том, что «это», со временем, прекратят поддерживать.


Собственно, предупреждение пишут в момент, когда декларируют явное намерение прекратить поддерживать. До некоторого момента у автора такого намерения не было. Вера в вечную поддержку проекта тем более наивна и инфантильна от того, что человеки по природе (включая и автора Actix'а, и меня, и вас) смертны, например. Если вы так серьезно оцениваете риски, в список коммитеров вы должны были посмотреть заранее, оценить фактор автобуса и заранее же спланировать продолжение поддержки «в случае чего».

но «продавался»-то он не в таком разрезе.


Если из формального определения продажи, он не продавался, вроде, вообще.

А если из информационного вау-шума вокруг, дык, вроде, не автор «продавал»…
вроде бы у всех хороших опенсурс лицензий написан отказ от ответственности и прочий «use it AS IS», но, похоже, не все понимают что это такое (или хотят отдельного большого красного флага на каждом входе ?)

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


MIT лицензии actix

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.

Еще раз перечитал лицензию, посмеялся на обороте "TORT OR OTHERWISE"
НЛО прилетело и опубликовало эту надпись здесь
Похоже как читерство в бенчмарках 64.github.io/actix

Ну вообщем-то в переписке некий хрен сказал что автору актикс не надо писать на расте. Но сам этот хрен ничего нового технического до этого в обсуждение не внёс — только свое нытье. Собственно таких диванных экспертов миллионы по всему интернету и реалу. Жаль что автор так бомбанул.

Я когда начинал писать на питоне, тоже писал как придется, а потом со временем стал стараться делать больше по «the python way» и PEP-8. Можно игнорировать все это, но тогда ты не учишь язык. И не растешь. А когда тебе понадобится чья-то помощь и придется показывать код, тебя сразу отметят меткой «нубло».

Игнорировать замечания опытных специалистов — признак незрелости как технической так и моральной. Прислушиваться к советам — ничего не стоит, а жаловаться, что тебе никто не помогает… А он просил хоть раз?
Мне когда что-то советуют, а я не понимаю как этим советом воспользоваться, прямо говорю: «покажи, как это сделать правильно». И показывают.

А раздувать тут мол, опенсорс это «свобода», а мне тут палки в колеса вставляют, грязью поливают и не помогают… Нет, дорогой, есть нормы, которые устанавливаются сообществом.

Я вообще удивился, что кто-то готов делать ревью твоего кода, указывать на ошибки. Вот это и есть ценность опенсорса, что сообщество следит за качеством кода. И конечному пользователю нужно меньше беспокоиться об этом. Товарищ видит ситуацию только со своей стороны.
Ирония в том, что человек, о котором идет речь — это отнюдь не новичок, а автор «гордости растостроения», actix-web — чуть ли самого быстрого фреймворка из аналогичных существующих (и не только на расте ЕМНИП). А советующие ему «специалисты» в большинстве своем — в лучшем случае авторы патчей на пару десятков строк к проектам других людей, никогда и близко не писавшие в одно рыло проект такого уровня, как actix-web.
А раздувать тут мол, опенсорс это «свобода», а мне тут палки в колеса вставляют, грязью поливают и не помогают… Нет, дорогой, есть нормы, которые устанавливаются сообществом.
Он в ваше «сообщество» не лез. Нормальное общество (и демократия) — это не власть охлоса, а власть меньшинств. Так что, если есть какие-то правила, к-рые не касаются безопасности людей и их прав и свобод, то их соблюдение — исключительно моя добрая воля.
Нормальное общество (и демократия) — это не власть охлоса, а власть меньшинств.
Ну уж нет. Власть меньшинств — это то, что SJW насаждают. Не нужно нам такого.

Если уж не получается меритократия — пусть уж будет хотя бы демократия.
Ну уж нет. Власть меньшинств — это то, что SJW насаждают. Не нужно нам такого.
Нет, они как раз насаждают «власть определенного меньшинства», олигократию. Просто вместо «голубой» крови у них отсутствие мозгов.
Власть меньшинств — это когда различные небольшие группы договариваются между собой. В таком контексте не может быть оскорбления верующих — т.к. верующие сидят у себя в церкви и там друг друга радуют. И SJW сидят где-нибудь в фургончике, а не гитхабе (где их принадлежность к SJW или еще чему никого не волнует — так же, как их верования).
Власть меньшинств подразумевает не власть SJW, а принцип, по которому минимально возможное меньшинство в обществе — отдельный индивид — обладает неотчуждаемыми ни при каких обстоятельствах правами. И этот индивид защищен от демократической системы, где большинство может решить путем голосования отнять эти права у индивида, потому что он в меньшинстве.

А как же "ваши права кончаются там, где начинаются права другого человека"?

НЛО прилетело и опубликовало эту надпись здесь
есть ли у меня, например, право не видеть ваши комментарии на этом ресурсе? Означает ли это, что ваши права по написанию комментариев закончились?


Не вижу противоречия. Вы можете с тем же успехом не смотреть на написанные комментарии… Или вообще не ходить на ресурс, чтобы не видеть неприятные вам комментарии… И ничьи права не нарушены.
НЛО прилетело и опубликовало эту надпись здесь
Вопрос в том, как решать будем, чья свобода в каком случае нарушается?


Ну элементарно же: на основании правил пользования хабра, по совместительству — договору оферты, который мы оба с вами приняли, начав пользоваться ресурсом.

В правилах написано, что вас могут минусануть, вам может не понравиться то, что вы прочтете. Если вам не нравится то, что вы прочли, у вас есть право поспорить в комментариях (помня, что комментарий могут минусануть). Если вам не нравятся минусы — выход один, не пользоваться ресурсом. Если вы не согласны с политикой ресурса — выход один, не пользоваться ресурсом. И вы на это явно согласились.
смотрите — это все классно звучит и красиво выглядит.
но по факту мы наблюдаем неоднократно ситуацию, когда группа SJW нападает на работодателей (коллег, соседей, родственников и т.д.) с требованиями «осудить и порвать все отношения с (имярек)».
Вроде бы формально на его индивидуальные права никто не покушался, но жизни ему по факту — нет.
Следование стандартам в целом это хорошо, но… представьте себе (в гипотетическом примере), что некая несоответствующая формальным стандартам вставка убыстряет ваш код в 10 раз… Перешагнете вы через формализм или нет? Вопрос не простой на самом деле. На одной чаше весов — совместимость, безопасность и пр., а на другой — десятикратное ускорение…
При написании тестов я часто сталкиваюсь с такой проблемой. Пойти в обход или следовать канону. Так вот я заметил — желание пойти в обход возникает в том случае когда ты знаешь, что починить это в правильном месте сложно, это место тебе не принадлежит, нужно сделать профилирование, приложить доказательства, провести кучу работы, постоянно аргументировать участвовать в дискуссиях и точно если это и починят, то не раньше чем через полгода. Ну кровавый энтерпрайз. И тогда ты просто вставляешь костыль и нафаршировываешь его комментариями. И тогда это становится твоей проблемой. Тебе просто приходится следить за еще одним местом в коде которое «пока что работает».

Если продукт такой, что безопасность его является важной составляющей, то ограничение нельзя просто так взять и обойти. А безопасность для веб-сервера является ключевым критерием. Что толку в машине которая может разгоняться до 1200 км/ч за 10 секунд но может взорваться в любой момент. Инженер никогда не предпочтет быстрое решение безопасному.

На вопрос «почему бы не убрать unsafe» автор ответил, что это может иметь последствия для производительности, поэтому сейчас он просто фиксит симптом, чтобы подумать, как это исправить без просадки производительности

Наступает такой момент, когда твой продукт перестает принадлежать тебе. Он становится популярным в обществе и вдруг, хоть никто и не просил, на тебя сваливается ответственность. И твой хобби-проект начинает предьявлять к тебе требования. Это всегда так. Мы ответственны за то, что создаем. Видимо проект набрал такие обороты, что ты уже не имеешь права делать «затычку», чтобы потом подумать как решить проблему.

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

Вобщем, по топику: проект эволюционировал, а понимание ответственности перед обществом за свой проект у автора еще нет. Вот и все. Со временем это понимание должно придти.
Наступает такой момент, когда твой продукт перестает принадлежать тебе.
вот этот момент просьба как-то обосновать. ну и далее — тоже.
Ну есть такое понятие как «социальная ответственность инженера». Это философско-морально-общественно-этическая категория. Можно с этим соглашаться, можно нет.

Возьмем для сравнения стримеров. Тебя смотрят — будь добр соответствовать. Ты не можешь скрываться за табличкой «это мой канал, что хочу то и делаю».

Т.е. в тот момент когда твое творение становится потенциально доступным неограниченному числу людей, тогда и начинается социальная ответственность.

Ну есть такое понятие как «социальная ответственность инженера». Это философско-морально-общественно-этическая категория.
вы эту хрень (сначала было более грубое слово) только что выдумали и поверх нее ваяете какие-то размышления. Не надо, вы исходите из неверной посылки. И дальше вы тоже пишите пургу. Если я стримлю, меня либо смотрят, либо нет. Вот и все.
Я на написание своего комментария потратил час, а вы — две минуты. Вы даже не потрудились в поисковик занести «социальная ответственность инженера», и называете это «пургой». Похоже, что это бесплодная дискуссия.
Вы даже не потрудились в поисковик занести «социальная ответственность инженера», и называете это «пургой»
Конечно, не напрягался (и не напрягусь). Член социума — человек. А не инженер. Это гораздо более просто, чем на голубом глазу придумывать (и формулировать) социальную ответственность тысяч профессий. Поверьте, формулировку «земля плоская» я бы тоже гуглить не стал.
Возьмем для сравнения стримеров. Тебя смотрят — будь добр соответствовать. Ты не можешь скрываться за табличкой «это мой канал, что хочу то и делаю».
Ну как бы стример в своём канале может делать абсолютно всё, что не запрещено законом и правилами стримингового сервиса.
ты уже не имеешь права делать «затычку», чтобы потом подумать как решить проблему


Ключевое слово — подумать!
У него было два варианта:
1) Подумать и решить проблему комплексно, по существу, без потери производительности. А пока идет решение проблемы, наложить временную заплатку.
2) Не думая применить поверхностный патч, который заведомо скажется на ключевых свойствах системы.

Он выбрал первый вариант — сначала подумать. За что его и заклевали.

Но в принципе вы затронули хорошую тему — баланса между корпоративными требованиями и творческим полетом. Я например обычно легко отличаю гениальное решение от банального, даже если в первом случае код будет весь кривой, а во втором — вылизанный и соответствующий всем стандартам. При работе на заказ (на бизнес) я бы без проблем (ну, почти) пошел бы на поводу заказчика. А вот если бы речь шла о моем личном любимом детище и я бы видел, что предлагаемое изменение рушит всю гармонию… вряд ли я бы пошел на поводу у кого то.

В принципе всё это легко решаемо двумя версиями программы, но ведь ничто не мешает в любой момент форкнуть программу и поступить по своему. Только вот желающих не было.
НЛО прилетело и опубликовало эту надпись здесь
Ну, да, психанул, бывает. Это урок нам (и очередное напоминание), что надо следить за языком и некоторые фразы не произносить. Люди с гитхаба настойчиво порекомендовали ему не писать на rust, ну он и последовал этому совету… буквально…
НЛО прилетело и опубликовало эту надпись здесь
Фраз «я подумаю над этой проблемой» я в предоставленной переписке не видел.


Я просмотрел несколько веток по указанным ссылкам и делее. У меня сложилось именно такое впечатление, что он хотел с умом подойти к решению этой проблемы. Если принять тезис, что он принципиально отказался эту проблему решать (всего то заменой пары символов, как я понял), то каков мотив? Я не вижу мотива. Другое дело, если эта проблема имеет более глубокий характер (а кому как не разработчику это лучше знать?) и применение простого патча будет иметь разного рода последствия. Тогда пазл складывается.
НЛО прилетело и опубликовало эту надпись здесь
Пробежался по вашей ссылке. Мда, похоже, они не понимают как эта прога в целом работает. Только смотрят на отдельные куски кода и выносят категоричные суждения. Имхо, не получится там никакого форка, не выйдет каменный цветок…

Больше всего походит на непонимание с обеих сторон — пользователям казалось что тут «серьезный продукт» делается, а автор по фану лепит, лишь бы бенч быстрее проходить.


Да, примерно так. Создатель проги сделал акцент на максимальной производительности и использовал специфический стиль программирования, который вызвал столько удивления и непонимания. Оппоненты от него по сути хотят, чтобы он всё переделал по их кальке, но… это был бы уже другой продукт…

Так что не надо было его трогать, а просто оставить как есть. Собственно по ссылке автор статьи и пришел к подобному выводу, предложив альтернативные проекты тем, кого такая ситуация (акцент на скорости в ущерб всему остальному) не устраивает. Каждому свое.
НЛО прилетело и опубликовало эту надпись здесь
Я совершенно не имел ввиду правовую принадлежность.
Допустим ты создал что-то, и люди начинают об этом говорить иметь какое-то мнение, хотя автору этого и не хотелось вовсе. Но его творение «ушло в народ» и все, теперь он заложник своего произведения, нравится ему это или нет. И люди будут идентифицировать автора с его произведением. И ты уже не можешь делать то, что тебе нравится, потому что у публики появляются ожидания, мнение, что ты должен и не должен как автор, и все такое. Не пишешь шестую часть «Дозоров» — плохо, пишешь — не то. Пишешь не «Дозоры» — скатился. Хочешь послать всех нафиг — зажрался. Сначала ты создаешь продукт потом продукт создает тебя.
на такое может быть только один адекватный ответ: «Всех кто считает автора заложником произведения — срочно обратиться по месту прописки за галоперидолом».

А то вот так начнешь прислушиваться к голосам, а там недолго и до «Петров, ты же комсомолец! Ты должен срочно бросить все и поднимать целину!» (с)
НЛО прилетело и опубликовало эту надпись здесь
Поговорите с Димой Вьюковым. Им потребовались годы, для того, чтобы доказать «мэйнтейнерам Linux», что ошибки, которые TSAN, ASAN, UBSAN и прочие находят — вообще достойны внимания. А баги от syzkallerа и сейчас зачастую игнорируются, если неясно что они реально опасны.

Так что зря вы так… просто у мэйнтейнеров Linux шкура потолще и они посылают разработчиков компиляторов с куда большей лёгкостью…
НЛО прилетело и опубликовало эту надпись здесь
мне кажется, что между мэйнтейнерами вполне коммерческого продукта () и автором проекта, по которому он может отвечать максимум перед работодателем (раз уж он поставил ему эту задачу), есть заметная разница.
НЛО прилетело и опубликовало эту надпись здесь
да, в таком контексте разница есть (если он сам в эти бенчмарки лез). с другой стороны, в бенчмарках-то он участвует без форы. Когда и если его проект будет приводить к простоям пользователей, они сами вполне разберутся, что для них важнее.
Когда и если его проект будет приводить к простоям пользователей, они сами вполне разберутся, что для них важнее.
Когда у вас (как у автора поста) на что-то уже весь бизнес завязан — уже поздно разбираться «что для них важнее».
ваша безопасность — ваша головная боль. странно полагаться на что-то вне своего контроля, а потом еще и жаловаться.
нужна уверенность — выполняют аудит сами или с помощью сторонней конторы, либо изучают проведенные ранее аудиты-исследования.
Вы вообще много таких контор знаеете? Статью на Хабр не напишите? NDA помехой быть не должен — если фирмы больше нет (а с таким подходом её очень быстро не станет), то и проблем с NDA тоже нет.
Известные мне конторы полагаются на реноме компании (типа там, Microsoft или RedHat — имеют цикл разработки, поддерживают свои продукты и т.п.) и код «с просторов интернета» в основу бизнеса не ставят. Есть требования для отдельных проектов о заключении ФСТЭК. По любому проекту ТЗ и ПиМИ и.т.п.
Но вы же описали как раз другой кейс — некая компания «завязала» весь бизнес на «черный ящик» — что ж. Такой, и правда, скоро может не быть.
типа там, Microsoft или RedHat — имеют цикл разработки, поддерживают свои продукты и т.п.
Ну то есть они берут всё тот же, написанный неизвестно кем, код, только ещё и не имеют возможности его править — действительно отличное решение… на самом деле нет.

Но вы же описали как раз другой кейс — некая компания «завязала» весь бизнес на «черный ящик» — что ж.
Не надо приписывать мне то, чего я не говорил, извините. Я говорю про утопический случай, который вы выдали за «типа норму», когда «выполняют аудит сами или с помощью сторонней конторы, либо изучают проведенные ранее аудиты-исследования».

Как выяснилось на самом деле речь идёт нифига не об аудите, а том, чтобы взять всё тот же рандломный код, написанный неизвестно кем — но у людей «с хорошими лицами», которые «мамой поклянутся» что всё проверили… где-то мы это уже выдели… ах да — на рынке кредитования. Когда AAA-деривативы строились на перепаковывании subprime долгов…

Там это плохо закончилось — посмотрим как будет тут…
Ну то есть они берут всё тот же, написанный неизвестно кем, код, только ещё и не имеют возможности его править — действительно отличное решение… на самом деле нет.
они несут некую ответственность (скорее, репутационную) + реализуют поддержку. И все же их код либо их разработка (МС), либо их активное участие (RH).
Я говорю про утопический случай, который вы выдали за «типа норму», когда «выполняют аудит сами или с помощью сторонней конторы, либо изучают проведенные ранее аудиты-исследования».
ФСТЭК именно это и делает — проводит аудит кода продуктов МС, что является некой гарантией.
При этом я писал «нужна уверенность — проводят аудит» стороннего кода. А не полагаются на то, что вдруг кто-то, кроме них, будет отвечать за связанные с взломом или некорректным поведениям такого ПО убытки.
ФСТЭК именно это и делает — проводит аудит кода продуктов МС, что является некой гарантией.
Уж не знаю кто и что там аудирует ФСТЭК в продуктах МС — но точно знаю, что дыр и в ядре Linux и у MS имеется огромное количество (и да, раньше их было ещё больше). Когда команда всё того же Вьюкова немного пофаззила в Linux USB подсистему она нашла буквально десятки эксплоитов — и когда, ради смеха, подсунула их Windows… несколько из них успешно обвалили и Windows тоже.

И их, тем не менее и Linux и продукцию Microsoft сертифицируют и используют — в том числе военные. Ибо какая альтернатива?

А не полагаются на то, что вдруг кто-то, кроме них, будет отвечать за связанные с взломом или некорректным поведениям такого ПО убытки.
Это всё теория. Практика — немного другая.

На практике весь этот как бы типа аудит кончается примерно вот этим: It turns out that the Dual EC DRBG implementation in OpenSSL is fatally flawed, to the point where using it at all will either crash or stall the program. Given that the FIPS-certified code cannot be changed without invalidating the certification, and that the bug has existed since the introduction of Dual EC DRBG into OpenSSL, it is clear that no one has actually used that algorithm from OpenSSL. It did, however, pass the testing required for the certification somehow.

А ведь там тоже — и аудит и сертификаты и куча бумаг. Объяснить следователю почему «мы не виноваты» — будет чем.

А вот сделать так, чтобы код работал и не падал — это немного другое.
Безопаснее всего, чтобы человек для просмотра странички приходил на КПП, обыскивался и ему на принтере распечатывали страничку.

После прочтения желательно сжечь. Да, это все не быстро, зато безопаснее некуда.
НЛО прилетело и опубликовало эту надпись здесь
Вообще NGINX примерно по описанной вами схеме был изначально написан, так что не думаю, что вам удастся достичь 10x ускорения. 2x-3x ещё могу поверить и то сомнительно.
НЛО прилетело и опубликовало эту надпись здесь
А зачем ваще реагировать на эти ансейфы автору, это же опенсорс — не нДравится делай форк и пиши «как нужно правильно» сам. Послать критика на китайскую гору к#уям и весь разговор, а автор как девочка начал обижаться ))))

Толпа еще ничего хорошего не создавала. Посредственное — да, но не лучшее. Лучшее создают индивидуалы. А у толпы появляется право (желание) хаять. Хорошо, если автор лучшего — социопат, и ему положить на мнение толпы. Но так бывает не всегда.

> I am done with open source.

Автор конечно со странностями, формулировочки у него прям огого, но в любом случае я тут особо чего-то необычного не вижу. Проект открытый. Кто хочет тот и пусть доводит. Если автор серьёзно не будет им заниматься то это всегда было его правом. Он мог бросить на любом этапе.
А вот интересно, без «надругательства» над гарантиями языка можно было бы достичь такой же производительности (ну хоть в бенчмарках)? Есть примеры в истории actix-web?
Выбирая язык выбираешь тусовку.
НЛО прилетело и опубликовало эту надпись здесь

Не по теме, но вспомнилось, пока Столман со товарищи думали как писать идеологически верное микроядро, простой финский парень выкатил linux, так может ну ее, эту идеологическую правильность, работает и ладно, ошибки потом поправим, а еще денег за исправления возьмем. Так что, с таким подходом, я так думаю, у сообщества раста весьма туманные перспективы.

Точно. Существующий, но неидеальный код — всегда намного, НАМНОГО лучше идеального, но несуществующего. Если фанатики второго начинают травить создателей первого — ничего хорошего не жди.
Думаю все, кто сидят в «чатиках по Rust» знают, что fafhrd91 та еще истеричка «ранимая душа», что не скажи все в штыки, все воспринимает на свой личный счет, еще до всей ситуация с Reddit, НО:
1. fafhrd91 не взял и тупо удалил репу, хотя мог и такое сделать, я бы лично не удивился, а пока просто перенес в личный аккаунт, и дал себе несколько дней на обдумывание дальнейшей жизни проекта. за что респект!
2. наверняка появятся форки проекта, которые сделают свой «идеальный actix», конечно не с такими темпами развития, но все же.
Так что не все так печально и трагично, как могло бы быть.
Просто Rust дорос до той точки развития, когда у технологии (язык, фреймворк и т.д) появляется устойчивое подсообщество фанатиков. И если на ранних этапах, это были люди на уровне «городской сумасшедший», то теперь это уровень «святая испанская инквизиция».
В язык пришли хаскелисты, для которых Rust «не ну, это, конечно не богоподобный Haskell, но для системщины пойдет». В язык пришли C/C++, которым C++ в ночных кашмарах сниться, а им обещали «безопасный C++». Или наоборот те кто зашли посмотреть на очередного «убийцу C++», и начинают троллить растовиков «че не можете без unsafe?)) теперь понимаете, все что есть в C++ не от балды сделано, это все необходимость, реалии жизни?»
Вот так и сформировался cargo (хех!) культ вокруг unsafe. И теперь все что использует unsafe признано смертным грехом(
Но можно смотреть на Rust и unsafe по-другому, можно считать Rust, как «С с ограничениями». Ведь по сути в языке нет какой-то rocket science, если вы знаете как работает сборщик мусора, вы быстро поймете, что все эти «владение, области видимости и т.д» это просто перенос сборки мусора с runtime в compile time. Все эти вещи можно в принципе считать как эвристики, которые программист, теоретически конечно, мог бы соблюдать и сам, как набор правил типа того же MISRA. Но на практике все понимают, что это тот еще гемор, поэтому этим занимается не программист, а компилятор. И вся функциональщина в языке служит в первую очередь для компилятора. И когда вы используете unsafe, это не: «Код Красный! Повторяю, Код Красный! У нас тут какой-то умалишенный на минное поле забрел!», это: «Ок, Компилятор, ты мне очень помог, но тут я сам как-нибудь разберусь. Следовательно, вся ответственность на мне!» Вы просто возвращаетесь на уровень C, ничего страшного не произошло, работайте так как работали с C. Все! Но кому какое дело, у нас же тут чистота арийской расы беспрекословное соблюдение принципов функционального программирования.
Вот так и сформировался cargo (хех!) культ вокруг unsafe. И теперь все что использует unsafe признано смертным грехом(
Нет. Смертным грехом признан не unsafe. Смертным грехом признано такое использование unsafe, которое делает небезопасным код, не помеченный unsafe.

В язык пришли C/C++, которым C++ в ночных кашмарах сниться, а им обещали «безопасный C++».
И они его не получат пока кто-то будет творить вот это.

Ведь по сути в языке нет какой-то rocket science, если вы знаете как работает сборщик мусора, вы быстро поймете, что все эти «владение, области видимости и т.д» это просто перенос сборки мусора с runtime в compile time.
Конечно. Но если вы когда-либо работали с С# или Java то вы должы бы выучить один простой факт: обманывать сборщик мусора недопустимо! Никогда. Просто потому что вы это делаете — то вы никогда не знаете что случится в новых версиях Java (или CLR), когда алгоритмы сборщика мусора изменятся и он не начнёт двигать ваш объект в то время, когда вы его из C++ модифицируете.

Да и даже без новых версий — если вы обманываете сборщик мусора, то вы никогда не знаете как изменения в одном месте кода повлияют на другие места.

И точно так же, как к сборощику мусора, нужно относиться и к unsafe блокам в Rust.

А иначе толку от этого всего не будет.

«Ок, Компилятор, ты мне очень помог, но тут я сам как-нибудь разберусь. Следовательно, вся ответственность на мне!» Вы просто возвращаетесь на уровень C, ничего страшного не произошло, работайте так как работали с C. Все!
Нет — не всё. У вас всё ещё остаётся обязанность обеспечить безопасность кода вне ваших unsafe блоков. Если вы взяли на себя «повышенные обязательства» по обеспечению безопасности — так обеспечивайте.

Собственно заявления fafhrd91 о том, что «проблем нет, пока публичное API безопасно» — это признание того, что весь код actix — это один большой unsafe блок. И тут уже неважно сколько у вас там слов unsafe — шестнадцать, сто или вообще одно. Важно, что у вас 50000 строк unsafe-кода.

И даже это было бы не катастрофой если бы во-первых — это было бы оформлено так синтаксически, а во-вторых — были бы прописаны другие правила, которых мы придерживаемся (раз уж мы откинули правила Rust'а, то должны же быть какие-нибудь другие?).

Вы обратили внимание, что предложенные изменения ломают тесты? И что это описывается как убогость контрибуторов? Так вот: это не убогость контрибуторов — это недоописанность модели безопасности в этих 50000 строчках unsafe-кода! Если бы этот код был по настоящему безопасным, а опасные части были бы только в unsafe блоках — то Rust бы сообщил о проблемах ещё до запуска. А если бы «новые правила безопасности» были бы где-нибудь описаны — то можно было бы сказть и где они нарушены.

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

  def foldLeft[B](z: B)(f: (B, A) => B): B = {
    var acc = z
    var these = this
    while (!these.isEmpty) {
      acc = f(acc, these.head)
      these = these.tail
    }
    acc
  }

что тут у нас? мутабельность, циклы while, ну вообще. Причины выбора такого подхода те же самые, что и unsafe куски в непубличном API actix. Надо бы наверное и мейнтейнеров скалы затравить, они наверное не умеют язык правильно готовить.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Как только проект начинает набирать популярность, требования к качеству растут, и это начинает требовать больше времени чем есть в сутках.
Собственно именно это тут и произошло… а настоящая трагедия заключается в том, что код написан в стиле, который, фактически, исключает его поддержку кем-либо кроме автора. Такое себе Job Security.
Я не совсем понимаю обвинения разработчика в токсичности. То есть приходить и оплевывать чужой труд в стиле «Я не знаю, как надо, но сделано неправильно» — это не токсично и замечательно, а когда у человека сдали нервы и он прекратил каждому мимокрокодилу угождать и принял решение, как ему саму распорядиться своим же трудом — сразу он стал токсичным и айяйяй.
НЛО прилетело и опубликовало эту надпись здесь
Надо отдохнуть и не бояться делегировать полномочия.
А тут нельзя делегировать полномочия. Автор, фактически, изобрёл сам себе язык, который отличается от языка Rust (подробности уже в сотне комментариев тут описывали, не хочу повторяться), так что если типичный программист на Rust начнёт этот код править — он с неизбежностью сделает его неработоспособным.

Кому и что тут делегировать? И как?
НЛО прилетело и опубликовало эту надпись здесь
А где их взять? И вообще-то программистов на Rust немного, а уж «нетипичных»… готовых вот всё это поддерживать… пока ни одного не нашлось.

Может ему стоило это уже признать и просто пометить те методы, которые не дают safe гарантий раста, как unsafe. Это бы заразило большую часть кодовой базы, но было бы абсолютно честным.

Как он где-то уже написал — это всё равно уже не изменит репутацию Actix'а.

Вот если бы он изначально так сделал — проблем бы не было.
В общем я за чувака. А так, пусть отдохнет от хамов и мразоты, и делает своё дело. Не нужно обращать внимание на пукающих в вечность никаков.
if(config['safe']) {
// other code
}else{
// Author code
}

кстати здорово, решило бы все проблемы + оставилось бы автора в нормальном душевном состоянии + не надо форкать и разделять проекты — кому нужен safe — коммитили бы только в эту часть. забавно, почему никому не пришло в голову.

Никому не пришло в голову потому что, в настоящий момент, та ветка, которая под config['safe'] будет пустой.

И даже если со временем там образуется (путём аккуратного переноса кода из другой ветки) полный функциональный дубликат Actix'а… какой в этом смысл? Зачем кому-то нужен код, ровно половина которого (неважно какая) никем не используется?

Единственный разумный способ тут — сделать fork и постепенно довести проект до состояния, когда кто-то другой сможет его поддерживать. Действия автора этот процесс ускоряют и потому, объективно, являются полезными.

Так вот это и была бы задача адептов чистого раста — заполнить эту ветку. Кто хочет — собирает с фичей safe.

Краткая суть ситуации: наш соотечественник fafhrd91 (на хабре есть человек с таким ником, но возможно это не он)

Да, это он: habr.com/ru/post/460989/#comment_20433709

Меня смутило то, что в единственной статье с этого аккаунта несколько раз мелькает "автор actix" в третьем лице. Мне трудно понять, что это может значить, если это он и есть. Хотя и ваши доводы убедительны.


Не знаю, что и думать.

Там просто перевод чужой статьи, поэтому и в третьем лице
В смысле?
Я предполагаю что автор (данной статьи, которую fafhrd91 перевёл) описывал популярные языки, и обращался к тем кто их использует повседневно.

Да, логично.

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

нанять автора кода, дать ему денег.
Судя по гитхабу, он работает в Майкрософте и живёт в Сан-Франциско. Я не думаю, что PsyHaSTe может сделать ему более выгодное предложение.
да, действительно это может стать проблемой для оплаты.

Но речь не идет о фултайме. Речь идет в принципе о том, чтобы платить авторам опенсорса. Этой культуры нет.
НЛО прилетело и опубликовало эту надпись здесь
Автору просто надоело делать ЭТО бесплатно — сейчас есть Востребованность проекта, сменит лицензию, обновит условия и выкатит обратно, но уже с платной ТП и багфиксом, игнорированием мимокрокодилов с «понятиями, идеологией и религией» и начнет не спеша «фармить голду» продавая вполне актуальный и адекватный продукт — да уже не совсем «Опен», но все еще «соурс» и да с четким предложением — "… пишите товарищи идеалисты, пишите будем принимать ваши патчи и коммиты в SAFE ветку, после анализа ваших предложений на производительность скопом… где нибудь раз в год, после отдыха на Бали....." и очень советую так и поступить автору…

Успехов fafhrd91 — и помнить Главное помнить что мир двигают именно такие как Вы…

Эмм, это крейты вообще другого уровня и для других целей.

Всё-таки люди Rust хотят именно ради гарантий компилятора (так-то и на сях можно производительно написать), поэтому отмахиваться от замечаний на этот счёт не очень разумно.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь

Публикации

Истории