Comments 925
Культура у товарищей другая. Не принято так.
Наказать тролля напрямую довольно сложно. Ему только по кайфу бурная реакция. А отсутствие реакции тоже ничего ему не сделает — у него битва на десятке фронтов одновременно.
Наказать весь класс за проступки одного идиота — несправедливо, но, в итоге, эффективно. После резонанса вроде вот этого, люди будут чуть больше задумываться, прежде чем затроллить человека, делающего для них бесплатную работу. А если индивидуум найдётся, его самого тут же закопает в комментариях адекватное коммьюнити.
Глупо, потому-что автор наказал не тех, кто ему насрал в закатки, а всех остальных
А вы за него вступились? Open-source диктует границы собственности, а значит и ответственности. Правильно наказал. Не заслужили.
Ничто не мешает прямо сегодня написать автору и убедить его в том, что его труд нужен и ценен. Процесс обратимый. Можно даже организовать сбор средств на поддержку проекта — это вещественное доказательство нужности. Я бы скинул (сам я не пользователь, но хотелось бы поучаствовать в умывании хейтера).
Тема кармы на хабре вещь больная. И вроде как с ней что-то делать надо. Но как именно до конца непонятно. Это кажется что всё просто. Но если сесть и подумать о качестве и количестве моральных поощрений и наказаний, балансе сдержек и противовесов, заработке администрации, то получается всё не так однозначно, ясно и понятно.
Так для того, чтобы понять какой рейтинг будет у статьи она сама должна как минимуму 24 часа на главной «отвисеть»Ну вот например такой механизм: после размещения статьи, все минуса в карму откладываются до трех суток (72 часа). А потом проверяется, если статья прошла хотя бы один порог: +20 лайков, 100 комментариев, 20 раз добавлена в закладки — то автоматически все минуса в карму (набранные за эти три дня) сгорают. Причем на четвертый день минуса в карму попадают уже напрямик (как сейчас) и даже минуснувший сразу, но «непрошедший», может уже наверняка сделать это.
Это было бы хорошей защитой для авторов востребованной статьи от слива кармы.
Ну или другой вариант — на 3 дня блокируется доступ к карме автора из статьи и его комментариев под ней (а также в профиле автора не отображаются все его комментарии)
Тема кармы на хабре вещь больнаяКак и везде.
1) «Расчёт кармой» как правило идёт в день после публикации. Потом всё экспоненциально падает. Уже даже через сутки людям будет лень искать статью чтобы за неё влепить человеку минус или плюс. Это негативно скажется на объективной оценке.
2) Получается после публикации любой статьи человек получает супериммунитет на три дня и 72 часа может как угодно развлекаться на ресурсе. Вот плоскоземельщики рады будут — так их сливали где-то за день. А через 71 час, кстати, можно выложить вторую часть и продлить веселье до конца недели)
«Расчёт кармой» как правило идёт в день после публикации. Потом всё экспоненциально падает. Уже даже через сутки людям будет лень искать статью чтобы за неё влепить человеку минус или плюс. Это негативно скажется на объективной оценке.Ну вот этим показателем (время после публикации) и можно управлять влиянием кармы на сообщество.
Получается после публикации любой статьи человек получает супериммунитет на три дня и 72 часа может как угодно развлекаться на ресурсе. Вот плоскоземельщики рады будут — так их сливали где-то за день. А через 71 час, кстати, можно выложить вторую часть и продлить веселье до конца недели)Так в том-то и дело, что доступ к карме (части профиля) автора статьи должен быть закрыт только из самой статьи. А если переход идет из его комментария к какой-то другой статье — то минусовать можно.
Здесь просто вопрос — как сделать так, чтобы профиль автора отображался по-разному: для тех, кто перешел из его свежей статьи (минусовать карму нельзя) и из произвольного комментария вне её (минусовать можно).
Гуглом, например.
Гуглом, например.Проверил, первые выдачи Гугла ведут на профиль пользователя. Значит действуем тем-же способом (блокирование кармы, если в пути был профиль).
А так же блокировать миносование из размещённых ранее статей)А вот это делать нельзя! Хорошо, уточню — «надо также блокировать минусование из любых комментариев, размещенных ранее данной статьи».
Вот так, постепенно отсечем всё лишнее…
Но тогда это вышеразбираемый супериммунитет на трое суток.Что-то постоянно нахожу у себя неточные формулировки…
Вообщем, надо оставить блокировку только при соблюдении двух обязательных пунктов: переход из новых комментариев + из комментариев не под последней его статьей (то есть из любой другой, хоть новой, хоть старой).
Переходи в любую из поиска и минуси на здоровьеТак чтобы заминусить из произвольной статьи, все равно надо же в профиль перейти — а там в течении трех дней идет блокировка.
Так чтобы заминусить из произвольной статьи, все равно надо же в профиль перейти — а там в течении трех дней идет блокировка.
Под текстом любой статьи есть блок автора из которого можно изменить его карму без перехода в профиль. Со списком статей поможет гугл.
То есть молчим в тряпочку — имеем иммунитет? Поймите, не будет ваша система работать в принципе.Да, пока не прошло 3 дня (например) с момента публикации статьи, автору нельзя минуснуть в карму ни за эту статью, ни за его прошлые статьи; ни за его комменты под этой статьей, ни за все любые комменты до этой статьи.
Я считаю это справедливым и поощряющим мехахизмом.
пока не прошло 3 дня (например) с момента публикации статьи, автору нельзя минуснуть в кармуЭто идёт в разрез с политикой партии о модерации общества обществом, насколько я понимаю.
Во всяком случае с декларацией этой политики.
Это идёт в разрез с политикой партии о модерации общества обществом, насколько я понимаю.Почему? Ведь потом минусить автору можно. Это просто как появление нового вида бонуса за написание статей. Мне кажется, никто против не будет.
Во всяком случае с декларацией этой политики.
Разве что автор через три дня в комментах будет снова отсвечивать так, что снова появится желание влепить минус.
Ну не все любят 3 дня ждать, чтобы минус влепить (ну не все настолько злопамятны).Длительностью этого периода можно «играться» для определения оптимального влияния на активность пользователь-сообщество.
Разве что автор через три дня в комментах будет снова отсвечивать так, что снова появится желание влепить минус.
А так, можно в закладки добавлять ))
А так, можно в закладки добавлять ))Это ещё нужно будет не забыть почему ты эту публикацию в закладки добавил.
Да и просматривать их периодически, а не когда тебе понадобилась какая-то конкретная статья по работе или другой причине.
Это ещё нужно будет не забыть почему ты эту публикацию в закладки добавил.Так все эти трудности хорошо же! Они специально и должны создаваться, чтобы: стимулировать на написание новых статей и давать автору возможность спокойно отвечать на вопросы (кроме совсем уж клинических случаев).
Да и просматривать их периодически, а не когда тебе понадобилась какая-то конкретная статья по работе или другой причине.
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-хдневный промежуток между окончанием супериммунитета и публикацией новой статьи.
… и тем самым сразу оттолкнуть тех, кто может написать статью просто потому что поймал идею. Или тех, кто публикует статью на русском и сразу же её перевод на английском.
… и тем самым сразу оттолкнуть тех, кто может написать статью просто потому что поймал идею. Или тех, кто публикует статью на русском и сразу же её перевод на английском.Ну в любом случае, разгуляться кроме как в новых статьях и комментариях под ними у такого автора уже не получится — и это хорошо.
Можно сделать для таких креативных авторов следующее: если новая статья выходит раньше необходимого срока (иммунитет+пауза на статьи), то такие статьи не влияют на график этих периодов (то есть ее как-бы и не было для такого механизма кармы).
Ваш механизм позволяет облегчить жизнь первых дней для «хороших» авторов, но зато сильно ухудшает реакцию сообщество на «плохих». Надо будет либо выпиливать это автора потом (лично мне, будет лень искать статью трёхдневной давности чтобы специально заминусить её и я не думаю, что так уж одинок), либо это должна делать администрация (это надо мониторить сайт, выявлять проблему, разбираться закрывать статью или нет, причём при любом решении будут недовольные пользователи — зачем всё усложнять, администрации и сейчас хорошо).
Даже если он потом публиковать ничего и не будет эти 72 часа он может развлекаться как угодно в рамках своей статьи.Только в рамках комментариев к ней, так как статьи перед публикацией все-равно проходят предмодерацию. А в случае с комментариями очень поможет часто предлагаемый разными пользователями механизм, перекладывающий часть функционала кармы на лайки/дизлайки к комментам: например если под статьей комменты автора суммарно набрали 50 минусов, то он может комментировать не чаще одного раза в 1 час, и т.д.
Более того, если просто статья заминусована (теже -50), то на него накладывается такой же штраф.
Прям тюрьма уже для «плоскоземельщиков»…
Кажется, где-то выше, когда предлагали супериммунитет, его предлагали включать, только если статья наберет +20 и выше. Не очень вписывается в ваш сценарий.
Да и клепать статьи раз в 3 дня… пожалуй, только редакторы умеют.
Кажется, где-то выше, когда предлагали супериммунитет, его предлагали включать, только если статья наберет +20 и выше. Не очень вписывается в ваш сценарий.
Предлагается это: после размещения статьи, все минуса в карму откладываются до трех суток (72 часа). А потом проверяется, если статья прошла хотя бы один порог: +20 лайков, 100 комментариев, 20 раз добавлена в закладки — то автоматически все минуса в карму (набранные за эти три дня) сгорают. Причем на четвертый день минуса в карму попадают уже напрямик (как сейчас) и даже минуснувший сразу, но «непрошедший», может уже наверняка сделать это.
Не совсем понял, какой именно сценарий (из уже позже предложенных) такой подход не пройдет…
Ога, 100 комментариев. Это такое изощренное издевательство — сначала поднять срач, а потом он вытаскивает тебя из лужи? Это точно не нужно.
Не совсем понял, какой именно сценарий (из уже позже предложенных) такой подход не пройдет…
Так с клепетелем же, по таймеру статьи выпускающий. Конечно, это может быть такой экперимент по прививанию рефлекса не реагировать на троллей и срачи не поднимать, ну так автор сам начнет себе комментарии набивать… Вообщем, если хотите иммунитет, то включаться он должен только после того, как статья рейтинг наберет. Таким образом то, что большинство оценивают негативно, не позволит находится в вечном иммунитете. И еще тогда уж общая величина иммунитета должна быть ограничена, чтобы длительность непрерывного иммунитета не превышала N дней подряд + cooldown M дней.
Но вообще, это теории, так часто статьи только редакторы пишут. Не представляю, чтобы у обычного пользователя было столько времени, чтобы статьи писать, чтобы держаться в зоне иммунитета. А редакторы на зарплате.
Ога, 100 комментариев. Это такое изощренное издевательство — сначала поднять срач, а потом он вытаскивает тебя из лужи? Это точно не нужно.Ну так цифра в 100 комментариев — это только как пример, с помощью каких критериев автор статьи получает иммунитет. Основной посыл ведь в другом.
Так с клепателем же, по таймеру статьи выпускающий.Почему не подойдет? Очень даже подойдет — если статья «не зашла», то после истечения иммунитета все минуса в карму ему прилетят, он ничего не выигрывает от этой ситуации.
Вообщем, если хотите иммунитет, то включаться он должен только после того, как статья рейтинг наберетЗдесь предлагается система иммунитета с отложенным минусованием кармы: после размещения статьи автор получает 3 дня, когда будет невозможно непосредственно минуснуть его карму (если только он не оставляет новых комментариев под другими статьями) — все эти минуса подсчитываются, но пока не начисляются. Если за эти 3 дня статья не набирает неких показателей полезности для сообщества Хабра, то все минуса он получает сполна.
Появился новый комментарий визульно рядом с вашим и статья всплыла... так что еще раз прокомментирую.
Непонятно, зачем такие извращения и делать автоматическую систему для ситуаций, которые ну наверное раз в месяц встречаются если не реже. Автор считает, что его статья будет дискуссионной и ему может несправедливо прилететь в карму? Ввести новый режим -- публикация с добровольной премодерацией. Статья сначала уходит на премодерацию администрации, если администрация не завернет сразу -- то появляется на главной. Никаких гарантий и сроков на премодерацию нет -- может и месяц провисеть -- ну а что вы хотите? Не желаете ответственности, никто вашу статью за вас защищать не обязан.
Если совсем уже боитесь слива, и даже на премодерацию пошли -- можете попросить включить временный иммунитет. Если администрация согласна, включает, НО! Вы также поражаетесь в правах на время иммунитета. Ни новых статей, ни комментариев (да, даже защищать свою точку зрения не можете. Все по-честному -- если вы за каменной стеной, то она глушит глас в обе стороны), ни влияний ни на вас, ни от вас.
Посмотрел вашу статью, полагаю, не в вас дело, и не в материале. Молодежь нынче ищет более простые подходы, а ваше решение показалось сложным и муторным. Т.е. тут логика такая, уже придумали Инструмент, упрощающий то, что описывает автор, а значит статья бесполезная, и только зря на нее потрачено время. Т.е. для них это выглядит как некомпетентность.
Я такое поведение не оправдываю(минуса за то, что тебе показалось ненужным). Но и осуждать за такой образ мыслей нельзя. Т.к. технологии постоянно развиваются, не получается удержать в голове столько всего. И здесь приходиться выбирать, либо идёшь и учишься последовательно на примерах старых работ опытных коллег (долго, трудно, тяжело, и часто - неактуально), либо изучаешь только базу и сверху самые новые инструменты и технологии - для работы. Это как изучать программирование с ассемблера, с погружения в принцип работы компьютера и сетей и т.д. последовательно, или сразу с go, swift, и т.п., используя для работы готовые библиотеки, шаблоны и всякие автоматические способы разворачивания окружения. Т.е. это фактически 2 разные роли: программист-создатель(почти ученный) и программист-пользователь (работяга)
Можно было хоть в лицензии прописать, что сервер специально создан, чтобы нарушать принципы и кто не согласен, не имеет права его использовать)
Да и тот чел наверняка прав в том, что сейчас все очень сильно и необоснованно доверяют опен сурсу. Если проект имеет серьезный изьян, нужно хотя бы в ридми об этом написать — вполне себе компромисс.
Но удалять проект… Это слишком.
Он год ходил спрашивал "Люди возьмите проект". Люди не взяли.
А потом произошло что призошло.
Вполне понимаю автора. Не хватило у него желания и духу посылать хейтеров на 3 веселых буквы, ну что-ж, такое уж у него восприятие мира и характер. Имеет право.
С другой стороны, не уверен как с этим в расте, но может стоит закрыть проект и перевести его в коммерческий?
Хочешь быстрый вебсервер — пожалуйста, вот прайс, вот блобы, вот саппорт, особо щедрым фиксим баги вне очереди.
Хочешь бесплатно и с исходниками — тащи любой крейт и смотри как все апи работают на 5 мсек дольше.
Скорее из категории "security people", о которых Торвальдс периодически высказывает своё мнение.
Да, но я бы не стал ставить его в один ряд с фанатиками.
Он осознал своё поведение. Продолжает ли он и сейчас, не знаю.
Очень хотелось бы увидеть мнение специалиста.
Хмм, наверно ничего?
Например, вот так: «Ни у кого, в не зависимости от его заслуг, положения и чего-либо ещё, нет права унижать и оскорблять других людей.»
Впрочем, этот подход в современном мире непопулярен.
Вы путаете теплое с мягким. Вырожденный пример, вас оскорбляют на неизвестном вам языке. Вы соответственно не оскорбляетесь, так как не понимаете речи. Для физического насилия такого примера нет.
Конечно при достаточном давлении все сломаются, но в обыденной жизни это сравнительно редкое явление. Да, Линус хамит, но это не целенаправленные пытки.
Для физического насилия такого примера нет.
Есть. Это может не осознавать ребенок, человек с отклонениями умственного развития или же человек от рождения воспитанный в окружении с девиантным поведением.
вас оскорбляют на неизвестном вам языке
Да что там! Существуют языки, полностью состоящие из оскорблений: PHP, JS...
относиться вы к действиям вольны как заблагорассудитсяУвы, в теории звучит хорошо, но на практике это так не работает. Не может человек просто щелкнуть тумблер и начать равнодушно выслушивать например оскорбление своей матери. Он либо изначально таким сформировался под влиянием жизненного опыта, либо нет. Подавляющее большинство людей попадают во вторую категорию.
Или вот мне минус поставили за мой комментарий. Мне это тоже очень неприятно. Опять правило выдумывать?
Ну так а где граница «неприятностей»?Ее сложно определить, но где-то она есть. Так же как граница количества волос, после которого человек может считаться лысым. Возможно когда-нибудь этот вопрос исследуют достаточно глубого, чтобы дать приемлемый ответ.
Надо сделать правило, чтобы брали.Не надо, потому что это пример из плоскости крайностей. Вас не берут в микрософт потому что этому есть рациональное обоснование, и оно учитывает косвенные последствия вашего принятия для других людей. Т.е. соблюдается определенный баланс между вашими и чужими неприятностями и выгодами. Ну а если вам кажется что вас не взяли несправедливо, то правила по которым вы можете пожаловаться уже есть.
А вот когда один человек осознанно оскорбляет другого, никакого баланса нет. В среднем оскорбляющий просто тешит свое ЧСВ, а оскорбленный просто огребает. Если можно было бы выразить настроение числовым значением, это было бы эквивалентно его воровству.
Или вот мне минус поставили за мой комментарий.Голоса это лишь инструмент выражения согласия с мнениям. А мнения двух людей не могут пересиливать друг друга. Вы не можете принудить другого согласиться с вашим мнением, и наоборот. Вам может быть неприятно от минуса, а минус может быть следствием неприятности вашего комментария для минусующего.
А если завтра меня изнасилуют, вы тоже на это скажете — баланс между неприятностями и выгодами?
Не волнуйтесь, если вас изнасилуют, приятно это будет одному человеку — тому, кто вас изнасилует. Дискомфорт это причинит заведомо значимо бОльшему количеству людей (кому-то неприятна сама возможность такого варварства, кому-то страшно за себя и близких, а кто-то сам хотел, а его опередили, и ему теперь тоже неприятно). Поэтому такие вещи и запрещены законодательно. Тут вы зря переживаете.
Там как раз сверху, кому я отвечал и предлагает на любую неприятность придумывать правило. Вот я и привел пример ситуации, где неприятность есть, а правила нет.
Вероятно, изнасилования менее статистически значимы, чем минусы. Ну или, по крайней мере, сравнимо.
Вы находитесь на хабре и даже пишете комментарии тут, т.е. вы официально пользователь хабра. Хабр предоставляет услугу на основании правил пользования, действующим по механизму публичной оферты (если воспользовался, значит согласился, принял договор). В этих правилах написано, что вас могут заминусовать, и вы признаете право других участников на минус в вашу сторону.
Итого: вас минусуют в соответствии с явно выраженным вами согласием на это действие. Вы лично разрешили, вы лично дали согласие.
1245 изнасилованных, исходя из определения, согласия не давали.
Перестаньте натягивать сову на глобус, аналогия некорректна.
Знаете, я ведь когда на улицу выхожу, мне тоже вполне понятно, что меня могут задавить машиной. Но я не думаю каждый раз что меня задавят. Также и тут. Соглашаться-то я соглашаюсь, и не на такое люди соглашаются. Но приятней мне от этого не становится.
Возможно, я вас удивлю, но реальные законы не всегда соблюдаются. Бывают просто законы, которые не работают на практике, и, как следствие, не применяются в действительности.
И, кстати, в случае секса (у нас такого нет, но в более прогрессивных странах есть) я могу отозвать свое согласие в любой момент. Почему-то отозвать свое согласие на получение оценок я не могу. Тоже странно. Я вот хотел бы сейчас.
(И еще кое-что. Я вот посмотрел сейчас правила хабра, там нет пункта о минусах. То есть, возможность поставить оценку есть, а правил на этот счет нет).
Я вот посмотрел сейчас правила хабра, там нет пункта о минусах. То есть, возможность поставить оценку есть, а правил на этот счет нет
«Сообщество пользователей сайта является саморегулируемым, поэтому разобраться во всех нюансах работы проекта с первого раза получается далеко не у всех. Чтобы объяснить, как всё устроено, мы подготовили данный справочный раздел.»
Вот про карму. Вы с этим явно согласились.
По-вашему, одевая короткую юбку и выходя на улицу, девушка соглашается быть изнасилованной?
Это по вашему, я говорил о том, что она согласия не давала.
Соглашаться-то я соглашаюсь, и не на такое люди соглашаются. Но приятней мне от этого не становится.
И? «Я согласился, а мне теперь неприятно… Давайте будем считать, что я не соглашался...» Ну детский лепет какой-то! Лет-то тебе сколько?
Соглашаться-то кто-то заставлял, очевидно? Пистолет у виска держал? Нет? Значит, без принуждения согласился, сам? Ну вот будь добр соответствовать.
Возможно, я вас удивлю, но реальные законы не всегда соблюдаются.
Как что-то хорошее. Как это относится к дискуссии кроме «А чо я то? Танька вон вообще в носу ковыряется!»
Почему-то отозвать свое согласие на получение оценок я не могу. Тоже странно. Я вот хотел бы сейчас.
Ну это, как раз, элементарно делается: берете и удаляете аккаунт.
Сообщество пользователей сайта является саморегулируемым, поэтому разобраться во всех нюансах работы проекта с первого раза получается далеко не у всех.
Вы знаете, у нас тут могут и изнасиловать. Поэтому, вот вам список рекомендаций чего нельзя одевать и в какое время лучше не ходить.
Что-то вы как-то не добро ведете дискуссию и явно не о том, о чем и я. Я как раз и говорю о том, что правилами нельзя решить всех жизненных ситуаций, а вы мне говорите, фактически, что мои чувства не важны. Ну, ладно.
Как вы определили, что пример из области крайностей?Используя логику. Циклично повтояряя вопросы «как» и «почему» можно опровергнуть абсолютно любое утверждение. Но вам не кажется что это все равно что признать отсутствие конструктивных аргументов?
Скажите, вы правда не видите разницы между случаями когда кто-то утверждает что оскорбился от слов «я люблю колбасу» и случаем когда человек например приходит в коментарии к чужому репозиторию и начинает прямым текстом расписывать какой-же его автор мудак?
А если завтра меня изнасилуютНужно больше крайностей. Но эта еще и почему-то в мою пользу, ведь за изнасилование преступнику положено наказание, как раз потому что оно причинило бы вам моральный вред, а само действие было умышленным.
Аргумент полностью конструктивный. Он показывает несостоятельность позиции что на любую неприятность следует придумать правило, соответственно, следует поискать какое-то другое решение, которое на самом деле решает описанную проблему.
Я не вижу в этом большой разницы. А вот вы видите. Я вас не обманываю, насчет минуса, мне было действительно физически больно, когда я его увидел.
Вы так ловко определяете, где крайность, а где нет. Научите и меня тоже.
Минус (уже второй) был поставлен также умышленно и принесло мне моральный вред.
Аргумент полностью конструктивный. Он показывает несостоятельность позиции что на любую неприятность следует придумать правило, соответственно, следует поискать какое-то другое решение, которое на самом деле решает описанную проблему.
Не, это у вас что-то не сходится. Вы приводите в качестве контр-аргумента позиции, что на все нужны правила, случай, на который правило вполне установлено.
Я не вижу в этом большой разницы.
Ну, лично мне почему-то кажется, что между минусом на хабре и изнасилованием разница есть, и она достаточно существенна… Например, в масштабах полученного вреда и, как бы жестоко это ни звучало, гораздо более — в масштабах осуждения со стороны общества. Изнасилование осуждают все, даже те, кто в тайне одобряет. Ну, например, потому что в обратной ситуации можно и по роже схлопотать неилллюзорно, и в тюрьму присесть.
Минусы на хабре осуждают не все, сильно не все. Я бы даже сказал, что на уровне стат-погрешности от общего количества посетителей хабра, которые сами, в свою очередь, имеют уровень не выше стат-погрешности от общего населения страны.
Например, в масштабах полученного вреда
А какой вред от изнасилования? Разве что если без смазки. Или если беременность в результате изнасилования наступила (и то, спорно). Поэтому, изнасилования можно считать вредными, тольк если насильник не пользовался лубрикантом и контрацептивом.
Ну, так в тюрьму можно присесть, только потому что правило есть, и оно говорит, мол, секс без согласия — прямая дорога в тюрьму (и я это горячо поддерживаю). Причем, животные вполне себе друг-друга насилуют, и что-то никто не присел пока что.
А минус поставить без согласия почему-то можно. Не понятно.
А какой вред от изнасилования? Разве что если без смазки. Или если беременность в результате изнасилования наступила (и то, спорно).
Ты охренел?
То есть вы не возражаете если вас поймает маньяк и анально изнасилует? Беременности не произойдет, я гарантирую это.
То есть вы не возражаете если вас поймает маньяк и анально изнасилует?
Наоборот, возражаю. Но почему анальное изнасилование считается плохо, а минус поставить — нормально? Мне и то и другое неприятно.
Потому что зайдя на хабр вы согласились добровольно с тем что вам будут (возможно) ставить минусы.
Если интересует изнасилование, то должно быть по аналогии.
Нет. Это не где не написано, более того в законе написано обратное.
Upd: Да и что вы на девушку стрелки переводите, речь же про ваши так сказать аналогии.
Я говорю о том, что вред и от изнасилования и от минуса — субъективный, он ощущается только жертвой. Нельзя объективно померять душевную боль. И я одинаково против этих двух явлений: минусов и изнасилований. Но почему-то общество не на моей стороне. Странно.
Нет, потому что такого рода правила не могут противоречить текущему законодательству.
В случае с минусами на хабре таких ограничений в законе нету.
Если вас не устраивает текущее положение дел, то поднимайте пиар компанию по отмене минусов. Возможно сообщество хабра поддержит вашу идею. Обществу в целом, скорее всего это проблема не понятна и не интересна, поэтому сомневаюсь что у вас получится закрепить отмену минусов в законах.
Можете поспрашивать у своих соседей или вообще людей на улице какая проблема важнее. Судя по ответам 3ех людей на ваш комментарий это так.
Им уже рассказали, что изнасилования — плохо. А про минусы пока что не рассказали. Это просто показывает, что общественное мнение — очень плохой инструмент, чтобы делать жизнь людей лучше.
В общем, мы с вами в какую-то совсем уже софистику ударились. Я говорю прямо: минусы = насилие. Change my mind.
Ну, так когда в лицо человека спрашиваешь — он совсем другие результаты выдает, чем то, что он на самом деле делает. Важно ведь не то, что люди говорят, а что они делают.
Популистская чушь. Для «публичных дебатов», которые являются единственным, насколько я знаю (поправьте меня, если я не прав), легитимным путем внесения изменения в законодательство демократической страны, важно именно то, что человек говорит.
Им уже рассказали, что изнасилования — плохо. А про минусы пока что не рассказали.
А при попытке рассказать, что такое минусы, «они», скорее всего, либо в жопу вас пошлют, либо засмеют. А если будете достаточно настойчивы в попытках убеждения, вызовут наряд полиции, и будут правы.
Это просто показывает, что общественное мнение — очень плохой инструмент, чтобы делать жизнь людей лучше.
Других более лучших не имеем, сорян. В принципе, другие есть, но они все хуже, проверяли.
Я говорю прямо: минусы = насилие.
Я говорю прямо: чушь собачья.
Популистская чушь.
Ээээ. Проводится экспертная оценка, выходит на публичных дебатах эксперт и ртом озвучивает данные и выводы. Все нормально вроде. Прямо как завещал Людвиг: «дело обстоит так-то и так-то».
А при попытке рассказать, что такое минусы, «они», скорее всего, либо в жопу вас пошлют, либо засмеют.
Нет, если это будет в законе и это будут преподавать в школах. Типа, если не авторитет попытается рассказать, то все так и будет. А если авторитет, то результат будет другой.
Или вы думаете, жертв насилия кто-то слушает? Они так-то боятся в полицию пойти и это известная проблема виктимологии. Первое предположение о жертве насилия — «сама виновата» и «довела, видимо».
Других более лучших не имеем.
Ну, ладно.
Я говорю прямо: чушь собачья.
Извините, не убедительно.
А ещё на работе работать заставляют, а я может тоже не хочу — вот это "насилие", не то что какие-то минусы.
Сначала определите насилие. Я разделяю физическую безопасность от словесного взаимодействия с людьми.
Сначала определите насилие.
В коммуникации насилие проявляется так:
Диагнозы, обвинения, оскорбления, критические ремарки, ярлыки, осуждение, анализ, критицизм, сравнения, непризнание ответственности, команды, награды и наказания по отношению к человеку.
Т.е. и премий у вас нету (награды) и уволить не могут (наказания), и собственно задания это в каком-то смысле команды, по другим пунктам частично тоже можно придумать примеры.
Википедия и источники на которые она ссылается с вашим определением не согласны. В коммуникации насилие это угрозы физического насилия и всё.
Нет, не команды. Ну, вы приходите куда-то, где уже есть другие люди, они о вас заботятся, помогают и ваше естественное желание им также помочь в благодарность. Эти люди оказались достаточно заботливыми, чтобы выписать свои нужды, да еще и снабдить их описанием. Вот вы и помогаете. Не было бы задач, я бы подошел к кому-то, кто нравится и спросил бы «чем я могу помочь?». Таков путь.
Тут что имеется в виду. Например, «ты молодец» = оценка + награда. Выразить то же самое без насилия можно так: «благодаря тому, что ты выполнил ту задачу быстрее, чем изначальная оценка, мне удалось убедить стейкхолдера запланировать важную фичу, которая принесет нам много прибыли». То есть, указать конкретное деяние, и что это значит для меня лично.
А что, вы кроме Вики ничего не читаете больше? Там же простые люди пишут, они что знают, о том и поют.
А чем награды отличаются от бонусов? На награду тоже не обязательно претендовать. Увольнение это и есть наказание за то "что совсем не работать или сильно косячить". Пока всё сходится.
А кто такие простые люди и чем они хуже не простых? Тут у вас уже намек на "ярлыки, осуждение и критицизм". На лицо насилие.
Награда — это как в цирке. Прыгнул через кольцо — тебе суют вкусняху. Бонусы принципиально другая модель. Я хочу себе машину, но не могу себе ее позволить. Я могу или поискать другую компанию, чтобы платили больше, или попробовать в этой компании взять на себя больше ответственности. И многим нравится работать в одной компании долгие годы.
Аналогично, увольнение. Все-таки, работа — коммерческое предприятие, и если вы не помогаете заработать, то есть другие, которые справятся лучше вас. Вас приглашают на работу, потому что вы нужны. А если вы не справляетесь, то попробуйте еще что-то поделать.
Да, грешен, каюсь. Смысл в том, что там все не просто с Википедией. Нельзя использовать ее как критерий истины, мол, раз в вики нет, то все фигня. Там много чего нет.
Именно, ответил на старую версию.
- В цирке котики, им не нужны машины, им вкусняшки — самое то.
- Так и с котиками, не справляются идут искать что пожрать на помойке или в приюте для животных.
- Да и гуманные методы дрессировки не предполагают особо физического насилия — всё за вкусняшки, которые составляют только часть рациона. И питомцев своих люди обычно любят. Опять всё подходит.
Я как бы специально нахожу крайности, потомучто формализовать это не получится так просто. Естественно у людей есть нечто большее чем сугубо материальные ценности (да и с животными не все так просто). Например взять тему топика — опенсорс. Вряд ли автору хорошо именно платили за его работу над актикс. Но ему было наверное интересно этим заниматься и приятно быть полезным для раст сообщетсва. Когда ему сообщество наплевало в лицо (фигурально), он перестал этим заниматься.
А еще про задачи. Это у вас такая работа что есть таск вы его берёте и спокойно делаете в течении дня. Поэтому вам кажется что это не команда а просто какие-то "задания". А разве не бывает случаев когда что то сломалось и шеф говорит "надо срочно фиксить теряем миллионы"? Это уже ближе к прыгать через кольцо. А как насчёт работы полиции и прочих экстренных служб когда события развиваются быстро, и там поэтому необходимы приказы.
Пока складывается впечатления, что у вас определения вещей сугубо субъективные. "Мне нравится значит это хорошо, мне не нравится — насилие". Но так никакой конфликт интересов не решить, ибо нужны объективные определения.
Единственный путь — научиться его определять и выдавать наружу только ненасильственные речевые конструкции.
Не буквально. Такие задачи приходят через поддержку. Поступает задача, с высоким приоритетом, я на нее реагирую и принимаюсь сразу же, как увидел. Ну, а как еще-то? Из этих миллионов же мне зарплату платят, они не из воздуха появляются. Это, типа, не логично — заниматься чем-то кроме тушения пожара в горящем доме.
Объективно измерить насилие невозможно, потому что оно проявляется на уровне чувств. Человек, который испытывает насилие записывает его на ваш счет и вы этот счет обязательно оплатите в двойном размере.
А какое насилие во фразе "нам надо срочно фиксить теряем миллионы"?
Я вот представил: загорелся дом рано утром, а пожарные такие приходят к 11ти дня и после кофе с печеньками откидываются на кресле и такие "чё там в jira у нас сегодня в приоритете?".
А какое насилие во фразе «нам надо срочно фиксить теряем миллионы»?
А разве мы это насилие обсуждали? Вы меня спросили, бывают ли ситуации, и я ответил, что не буквально такие же.
Я вот представил: загорелся дом рано утром, а пожарные такие приходят к 11ти дня и после кофе с печеньками откидываются на кресле и такие «чё там в jira у нас сегодня в приоритете?».
Не. Конечно, остается дежурный. Но я никогда не дежурил, потому что я занимаюсь фронтом. Если дежурный сам ошибку поправить не может, он отказывает релиз.
Ну а что мы обсуждаем? Минусы в комментах? Ну конкретно на хабре может от них толку и мало. А так обычный механизм оценки. Понравилась статья или нет, полезный ответ или нет. Где тут насилие?
В любом случае некоторая форма модерации нужна, а это по своей сути запреты. Как ни называй без это не обойтись.
Ну, так, вероятно, обществу и проблема изнасилований не интересна.
Практика показывает, что интересна. Даже закон соответствующий придумали.
То есть, полагаться на общество в вопросах комфортного сожительства как-то не очень правильно. Нужен другой какой-то способ.
У нас демократия. И она у нас не потому, что прям вообще вся такая хорошая и идеальная, а потому что за 2 тысячи лет перепробовали дофига чего, придумывали разное, и выяснили, что все остальное — еще хуже. Если вы придумаете что-то более совершенное — велкам за Нобелевской Премией Мира.
Практика показывает, что интересна. Даже закон соответствующий придумали.
Ну, так это не общественность, а законодатели. Общественность, как правило на митинги ходит, и что-то я пока что ни об одном успешном митинге не слышал.
У нас демократия.
Я не предлагаю поменять всю модель управления, а лишь говорю об одном конкретном феномене.
Если вы утверждаете, что минусы мне ставят, потому что демократия, я думаю, вы слишком много пропускаете всего того, что находится между ними. Иными словами, вы где-то ошиблись в процессе рассуждений. Пожалуйста, изложите всю цепочку ваших умозаключений, чтобы я вам мог помочь идентифицировать ошибку.
А почему возражаете? Вреда ведь никакого. Ни беременности, ничего, даже смазка будет.
Объективного вреда от минусов нет. А субъективный — есть.
И минусы мне тоже ставят против моего желания.
Но с вашего согласия. Чуете разницу: желание vs согласие.
Подошли вы к трансформаторной будке, а там табличка: «Не лезь, йобом токнет». Вы залезли, вас закономерно «токнуло». Ай-ай-ай, что делать, что делать? Видимо, срочно убирать ток из всех трансформаторных будок?
Объективного вреда от минусов нет. А субъективный — есть.
Вот видите, сами же признаете: объективно все норм, а все ваши претензии сводятся к «мне неприятно»…
Но с вашего согласия. Чуете разницу: желание vs согласие.
Ну, таки, нет. Я просто пребываю в среде, где минусы — факт мироздания.
Подошли вы к трансформаторной будке, а там табличка: «Не лезь, йобом токнет».
Ну, да. Все проблемы можно решить просто табличкой.
Так-то вокруг трансформаторной будки забор, в нее саму дверь, на двери замок, да еще и пломба, а внутри шкафы тоже все на замках и с пломбами. Нужно сильно постараться, чтобы от трансформаторной будки получить поражение электрическим током.
Вот видите, сами же признаете: объективно все норм, а все ваши претензии сводятся к «мне неприятно»…
Ну, тогда, если вашу логику продолжить, и насиловать можно. И грабить и убивать. А если речь идет про кражу, так там даже больно не будет. Красота.
Ее сложно определить, но где-то она есть.
Вот этой штуки — нет.
Не надо, потому что это пример из плоскости крайностей.
И этой — тоже.
Есть просто неприятности, которые неприятности для 3,5 анонимусов, на которых всем «срать» (простите за мой французский). С течением времени в силу меняющихся по объективным причинам обстоятельств некоторые неприятности становятся неприятными несколько большему количеству людей. Если это количество достигает критической массы (например, существенно более чем половине поголовья человеков), законодательство меняется так, чтобы неприятности бОльшей части человечества превратились в приятности, одновременно породив неприятности для существенно меньшей части лиц.
Демократия.
Есть люди которые заслуживают подобногоИ кто же выступит судьей, который будет решать кто заслуживает быть униженным, а кто право имеет? А что если окажется что жертва была права, или имела какие-то оправдывающие обстоятельства?
тот к кому эта жертва пытается подсосатьсяИ кто его наделил такими правами?
Ну пусть эта жертва напишет письмо в комитет защиты прав сексуальных меньшинств.Ну т.е. это эксплуатирование безнаказанности и беззащитности. «А сделаю-ка я тому человеку неприятно, все равно он этому никак не воспрепятствует». Потому что он посмел написать плохой код.
должен был отнестись с должным уважением к виденью, объяснить и научить этого программиста, не жалея своих сил и времениНе нужно бросков в крайности, все что нужно так это не делать оскорбляющих высказываний. На их написание требуется не меньше времени, чем можно было бы потратить на отклонение патча. При желании это можно сделать вставкой одной заранее составленной универсальной строки.
В плохом коде нет злого умысла, это просто следствие недостатка навыков/времени/бюджета/других обстоятельств. Такое бывает со всеми, и особенно с новичками. А вот оскорбление это умышленное решение сделать человеку неприятно, со всеми вытекающими как в сабже — разочарованием, выгоранием, депрессией, т.е выходящими в осязаемую плоскость последствиями. И никакие эфемерные экономии времени не могут этого оправдывать.
Свобода воли/ТНБ/природаПо сути вы сейчас сказали «потому что Я хочу».
Думаю там мотивация такая — «чтобы сказать чтобы этот парень (и те кто это прочитает) следующий раз десять раз подумал и прилизал свой патч прежде чем выносить мне мозг своим УГ»Ну т.е. попытка оправдания вангованием и телепатией. При этом на практике любое оскорбление в интернете почти всегда влечет за собой холивар с тучей сообщений, что не очень согласуется с вышеприведенным объяснением.
А так всё ясно и понятно, пройдите на.Ну а дальше то что? Автор патча перестанет писать код? Автор патча станет писать крутой код? Пропатченный код отрефакторит сам себя? Время потраченное на анализ вернется? Никакая из проблем не решилась.
Нельзя взять и сходу начать разбираться в огромном сложном проекте, его особенностях, традициях, гайдлайнах. Чтобы все это освоить придется писать код, и получать на него ревью, именно так опыт и набирается. Если этого не делать, то настанет момент когда ментейнер покинет проект и будет беда. Недостаток обучения и поддержки комьюнити опенсорс-проекта это аналог технического долга на социальном уровне.
Ну это лучше чем вашеЭто не лучше и не хуже, это просто отсутствие ответа на поставленный вопрос. Вы делаете утверждение, но не можете сказать почему оно верно, вам просто хочется чтобы оно было верно.
Давайте прав наделаем и наделять ими начнём. Вот жизнь заиграет новыми красками.Они уже наделаны, пусть пока далекие от идеала, но даже так в сравнении с тем что было до них стало намного лучше.
Сдаётся мне (опять вангую) что Торвальдс не читает холиварыИли читает, например. Узнать то нельзя.
«Не можешь срать — не морщи жопу». Так понятнее?Не нужно это перефразировать, ваше мнение было понятно с первого же сообщения. Не понятно чем аргументируется верность этого мнения.
Не понимаю что вы имеите в видуВы говорите что одному человеку можно делать плохо другому, но не можете сказать почему.
Потому что я так хочу.Могли бы просто в самом начале так и написать. Связав всю цепочку утверждений воедино: «оскорблять это ок потому что кто-то хочет».
Следующая же снежинка придёт и начнёт жалиться что сам факт отклонения, даже без лишних слов, так ранил её душу, что не знает как теперь быть.Это будут уже ее собственные проблемы, не нужно мешать в одну кучу самооскорбляющихся и адекватных людей.
А мораль. Идите. Читать. В монастырь.
И в интернете посылать всех на три буквы это постоянно.То что оно так сейчас, не значит что оно так должно быть. А почему оно так должно быть я и пытаюсь узнать.
А мораль. Идите. Читать. В монастырь.Во-первых чтением моралей я и не занимался, см. абзац выше. Во-вторых вы не можете указывать куда мне идти, так что нет.
А кто вам права дал?Права на мышление, или на свободу выражения мнения? Ну они то вроде как гарантированы, не? К тому же я сам ничего не делил, деление само воплотились в реальность естественный путем, а я лишь указал на факт его существования.
Как только вы встали на скользкую дорожку всех желающих объявить достойными вниманияКуда-то вы не туда разговор уводите. При чем тут объявления достойных внимания, я о таком и близко не писал.
Но на самом деле это может быть ушлый перецПока это не доказано, действует презумпция невиновности.
Вежливость в общении все равно должна оставаться, каким бы кривым не был патч.
На моей памяти было два ревьювера в нашей команде, которые не стеснялись вытирать ноги о коллег. В итоге один уволился (не могу сказать, что по этой причине, но отношения с ним у большинства были более, чем прохладные), второго сняли с ревьювинга.
А Торвальдс и fafhrd91 смогли сделать свои проекты, имея трудолюбие, упорство и талант, а не из-за плохого характера или отсутствия вежливости.
На мой взгляд, он действительно недостаточно толстокож, и это проблема.Это проблема (в данном случае) не его.
Я тоже обычно интерфейс делаю как удобно мне (если он не настаиваемый).
Если что, я про UI (иногда GUI).
стремиться писать лучше (встречал я кодНеужели я так неясно написал, что имелось в виду написание кода?
Автор кода, в первую очередь, должен стремится писать этот самый код лучше для себя. Ведь ему этот код поддерживать (чаще всего).
Я не говорю, что код должен сразу у всех быть написан идеально, но стремиться к этому нужно (да, я в курсе, что идеал недостижим).
Я тоже не пишу идеальный код, но стараюсь совершенствоваться, учась у других.
Личкрафты пили, фигле!
Я, например, натренировался когда был гейм-мастером на игровом шарде Ультимы и устраивал эвенты для игроков. И как бы я всё великолепно не проводил — всегда находились недовольные. Любой человек хоть раз устраивавший какие-нибудь розыгрыши в сети хотя бы человек на 100-300 это знает.
Тут надо понимать две простые вещи.
Во первых, то что ты делаешь (творишь) — ты творишь для себя. Тебе это интересно, ты получаешь удовольствие, ты развиваешься или развиваешь своё комьюнити, делаешь его больше.
Во вторых, всегда есть масса благодарных игроков, которым это всё нравится и которые тоже получают от эвентов удовольствие
Когда люди получают паршивую обратную связь часто возникает следующие реакции. Одни говорят «да нафиг мне всё это надо, не буду больше ничего делать, чтобы не получать негатива». Другие могут настолько начать наплевать на мнение других, что не увидят и не воспримут обоснованной критики. Находится в балансе довольно сложно, но можно. Но как бы ты не стал толстокож, я думаю от нашей природы всё равно никуда не деться.
- реже
Если бы всё не было настолько плохо — сейчас было бы гораздо больше живых и активно развивающихся проектов. Менять это сложно, ведь далеко не все люди будут в этом разбираться и менять себя. А всё это идёт из семей. В школах и дет.садах где этому должны бы учить — учат совсем другому.
Справедливости ради, те кто предлагал патчи вели себя адекватно. Фразу кинул какой-то идиот, первую и последнюю.
Далеко не во всём согласен с Линусом, не разделяю его идеологию и некоторые технические решения, но уважаю как разработчика и как человека за нетерпимость к буллшиту. Нужно больше таких людей, не только в ИТ, а везде.
и не бояться называть идиотов идиотами, сейчас называется «быть токсичным»А раньше это называлось как-то иначе? Проблема в том что Линус подает пример сообществу. А в сообществе каждый презумптивно считает себя правым, а оппонента соотвественно «наоборот». Что в купе с такой особенностью интернета как безнаказанность влечет к неконтроллируему потоку хейта во все стороны и со всех сторон.
Тот же Столлман — из MIT и FSF он сам ушел, но GNU остается за ним, и врядли какие-либо перипетии коснутся его личного проекта (разве что физическая смерть основателя)
ЗЫ Я работаю там, где нет такого понятия, как «токсичность» (применительно не к химическим веществам).
UB, Который в итоге был прикрыт ограничением на использование api
Каждый лишний ансейф должен приводить к вопросу «а почему я все ещё пишу это на расте/хаскеле/идрисе».Ну не каждый всё-таки. Но как бы хочется, чтобы
unsafe
применялся обоснованно. Вот это вот — это ж просто праздник какой-то!А что по ссылке происходит — то ли я не понял, то ли чувак пишет на С на расте.
<троллинг>А как иначе написать «самый быстрый веб-фреймворк»</троллинг>
А что по ссылке происходит — то ли я не понял, то ли чувак пишет на С на расте.Не совсем. Это он так количество
unsafe
уменьшает. Изначально у него было больше сотни unsafe
. Ему этим много тыкали. Он их уменьшил… вот таким вот способом.При этом аргументация такая: да, у меня есть небезопасные функции, в которых нет
unsafe
, но при этом публичный API безопасен — а значит всё в порядке.Говорить что я по этому поводу думаю… не люблю ругаться матом.
По крайней мере понятно почему он, до сих пор, фактически единственный разработчик: а как иначе-то? С таким подходом?
В удаленном issue в обсуждениях вроде бы было сказано, что для воспроизведения UB там достаточно, чтобы некие две функции выполнялись одновременно и не важно, вызываются они напрямую, или нет. То есть сокрытие там проблему не рашало.
Я полностью понимаю тех, кто говорит, что такому коду в экосистеме не место.
А я вот не понимаю… Если «такой код» в экосистеме возможен, значит, ему в ней самое и место.
Вроде как, с одной стороны, каждый может делать что хочет, написание кода произвольного уровня качества в паблик принцип неагрессии не нарушает
Не с одной стороны, а с любой…
что делать с тем фактом, что этот проект оказывается в топе используемых (как я понимаю), и люди на него завязываются, тоже непонятно.
Ничего не делать, очевидно. Этот код, раз он оказался в топе используемых, удовлетворяет запросам некоторого сильно не нулевого количества пользователей. Т.е. это код, который а) есть здесь и сейчас, б) выполняет реальные задачи, в) достойной альтернативы в данный момент не имеет.
При наличии заведомо лучшей альтернативы количество пользователей этого кода упадет, так как не будет смысла этим пользоваться и проект сам по себе сдохнет и «вывалится из экосистемы». Т.е. единственный корректный вариант «выталкивания проекта из экосистемы», раз вы твердо уверены, что можно лучше — взять попу в горсть и запилить свой, с шахматами и поэтессами. Либо форкнуть имеющийся и переписать куски, которые вас не устраивают. А дальше ждать, какой из проектов сдохнет раньше. Оставшийся на плаву будет прав.
Давайте начнём с немного другой стороны спектра. Как насчёт кода с закладками? Майнерами биткоинов? Червями, отправляющими ваши личные данные на удалённый сервер при запуске библиотеки?
Собственно, а при чем тут 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 в рантайме. Потому что что-то в рантайме делать так и так для ее обеспечения придется
Эта нагрузка не обязана происходить во время выполнения. Можно проверять безопасность во время компиляции.
Это увеличивает финансовую нагрузку ибо программисты на языках доказательного программирования на дороге не валяются да и в большинстве случаев тот-же функционал будет стоить больше человеко-дней чем обычно
Судя по практике цена таких программистов не зашкаливает. Решает спрос/предложение и хайп. Как говорили знакомые сениор гошники, Москва пылесосит всех, кого может, и там го разраб не будет стоить сильно дешевле раст разработчика. А вот уровень гарантий той или иной программы отличаться будет значительно.
но что делать с тем фактом, что этот проект оказывается в топе используемых (как я понимаю), и люди на него завязываются
Так и до патернализма и социализма недалеко. А начинали-то с NAP
А пока это не будет сделано — контрибутить туда будет невозможно (ну или почти невозможно).
Тут нет хорошего выхода, на самом деле. Грустная история. Я много раз такое видел — когда отличный, по всем показателям, кроме читаемости, код приходилось заменять на худший, потому что никто, кроме автора, его поддерживать не мог.
Тут нет хорошего выхода, на самом деле.
Форкнуть, поправить, как вам больше нравится и посмотреть, чей проект раньше сдохнет… Opensource-way дуэль…
У оригинала всегда есть фора перед форком. Требуется не просто сделать этот самый форк, но и объяснить всем-всем чем этот форк лучше оригинала. Так себе дуэль выходит.
При поочерёдных выстрелах очередь всегда назначается по жребию.
Выбор оружия предоставляется оскорблённой стороне
Ну да. А вот насчет «то есть тому, кто вызывает» — очень спорно.
Вот такое, например:
При нанесении оскорбления одним лицом другому необходимо определить личность оскорбителя и оскоpбленного для предоставления последнему тех привилегий, на которые он имеет право.
— При одностороннем оскорблении получивший и не ответивший на оскорбление считается оскорбленым.
— При взаимных оскорблениях одной и той же степени оскорбленным считается получивший оскорбление первым.
— При взаимных оскорблениях разной степени оскорбленным считается получивший более тяжкое оскорбление.
В совсем спорных случаях — суд чести. В нашем конкретном рассматриваемом случае, оскорбленная сторона однозначно разработчик Actix, т.к. на оскорбление он, вроде, напрямую не ответил. А мог и в жопу послать, и был бы прав, потому что «а он первый начал».
Т.е. все норм, разработчик Actix имеет фору, заслуженную и обоснованную.
* Получив оскорбление, оскорбленный должен заявить своему противнику: «Милостивый Государь, я пришлю Вам своих секундантов».
* Секунданты оскорбленного должны первыми явиться к противнику.
Да и в принципе оценивать форкающего проект как ущемленную сторону — как минимум, странно. Перед ним готовый проект, который уже кто-то написал, собрал шишки. Если кого-то этот проект оскорбляет, ему остается только дописать/исправить уже имеющийся проект. Даже если «переписать полностью», это «полное переписывание» делается на основе уже предоставленного изначальным автором «инженерного образца», ценность которого вы, очевидно, недооцениваете. На имеющемся проекте провести анализ и найти слабые места, как правило, сильно легче, чем проектировать с нуля и собирать грабли самому.
А уж про раскрутку… Ну, тоже такое себе. Сравните «мой проект ABCDE, призванный (дальше простыня текста)» и «замена Actix, более лучшая, корректная, без потери скорости, вот бенчмарки».
Вы забываете, в общем, что вызовун не только пытается залезть в нишу, которая кем-то уже занята, но и пиарится за счет уже имеющегося проекта.
Так что нормальная, справедливая дуэль. Чо не так то?
Да всё понятно же!
Аналог из мира Хаскеля:
safePerformIO = unsafePerformIO
"вот это вот" имеет комментарий, что это только для внутреннего использования. Все эти RefCell в сингл-треде и даром не нужны, но Раст без них не разрешает. Автор сделал вполне логичный workaround.
Оригинально, что вы спрашиваете у случайного человека в интернете, а не у автора. Думаю он больше в курсе. Я же, по своему опыту, думаю что большАя часть проверок раста не нужна в сингл-треде, и, кажется, что тут именно этот случай.
Просто это как гринписовцы на самом деле. Они просто хотят, чтоб не было unsafe. Они пока не знают, как этого достичь, но хотят. В принципе, имеют право, почему нет.
Отвечать надо " я не знаю как тут переписать без unsafe чтоб сохранить ту же производительность, прошу вас мне помочь".
это внутренний unsafe, который, предположительно, не имеет проблем в single-thread, так как акторы и устроены. Что он адовый должны доказывать именно вы. Я тут ничего очень плохого не вижу.
Я не говорю что он полностью безопасен или нет — я не знаю. Но надо сначала доказать либо одно, либо другое, а не как в исходном сообщении — закатывать глаза и говорить "о боже, как некрасиво!" на какой-то случайный unsafe, логика которого, вероятно, такая как я описал.
ну т.е. вы просто руководствуетесь внутренним голосом, который говорит вам, что safe лучше unsafe, вам крупно повезло, вы в opensource — форкайте и доказывайте, можете начинать прямо с std раста, интересно посмотреть на результаты будет.
Мой голос говорит, что за свою жизнь я повидал много карго-культов:
1) карго культ объектно-ориентированного программирования, которые хотели всё в мире сделать объектным, ведь это так очевидно.
2) но, неожиданно оказалось что надо не объектно, а функционально, и их сменили поклонники культа функционального программирования, которые пихали его тоже везде где могли.
3) ну и сейчас это поклонники borrow-checker'а.
И, не смотря на то, что все они принесли хорошие и правильные идеи, которые можно и нужно развивать, сами фанаты, не были правы, считая что это именно их идол — последний и единственно правильный.
Если брать модель раста без unsafe — то она очень лимитирующая — это большой минус, её бы расширять, а не запихивать весь мир в эти рамки.
А теперь вы: попробуйте объяснить, что это — не то, что мы тут наблюдаем.
И возникает когнитивный диссонанс, белые пальто итп…
Нужен раст++, который опять же невозможен (
Так что финальный результат — автор сделал свой проект непубличным — всех должен устроить…
Кому не нравится проект, тот может сделать или issue, или PR, или форк, или, что лучше, написать все с нуля. Написать правильно.
Вы, получается, аппелируете к тому, что как только проект стал публичным его автор стал кому-то чего-то должен.Да, именно и точно так. Как только проект стал публичным — автор обязан выслущивать критикующих его.
Что уж он будет с этой критикой дальше — его дело. Но ожидать, что кто-то удовлетворится ответом «мясник так видит» и перестанет указывать на проблемы, если они не исправляются — глупо.
Да, именно и точно так. Как только проект стал публичным — автор обязан выслущивать критикующих его.
Это где такие правила?
Посмотрите в лицензию. Там, как правило, права и обязанности сторон описаны. В обязанностях автора классическое «автор вам ничего не должен», в правах пользователя — пользоваться. Если лицензия свободная — плюс право на форк. Намекаю: на форк, молча…
Намекаю: на форк, молча…А это где прописано, извините? Каким законом регулируется?
Вроде как мы живём в относительно свободном мире, для того, чтобы выступать никакой лицензии не требуется.
Вот вы, к примеру, от fafhrd91 получили лицензию на ваши выступления? Нет? А почему выступаете тут, тогда? Может быть потому, что никакой лицензии и не требуется?
Достаточно того, что вы что-то про этот проект знаете… а для этого — проекту даже не нужно быть публичным… достаточно того, чтобы он не был внутренним, секретным.
Пока это не публичный проект — да.
Погодите-погодите. Проверил, погуглил… Нигде не нашел запрета выкладывания говна в публичный доступ. Оно и понятно, журналистика погибнет сразу…
Может быть, вы мне дадите ссылку на требования к публикации кода? Hello-World'ы с гитхаба вычистим заодно…
Мне кажется, вы не совсем корректно термин «публичный» понимаете. Публичный — это общедоступный. Не «устраивающий всех» или «принадлежащий каждому смотрящему», а просто общедоступный. Про обязанность кого-то там слушать вообще слова нет…
Про обязанность кого-то там слушать вообще слова нет…Извините, но вы технически не можете изолироваться и не слышать то, что про ваш проект пишут в issues, рассказывают на конференциях и так далее. И попытки «выпилить» «негодные» мения — приведут только к Эффекту Стрейзанд.
Как уж вы будете на всё это реагировать — это другой вопрос. Но не слышать у вас не получится.
Публичный — это общедоступный. Не «устраивающий всех» или «принадлежащий каждому смотрящему», а просто общедоступный.Этого достаточно. Снова читаем про Эффект Стрейзанд.
Единственный способ сделать так, чтобы о вашем проекте никто «худого слова» не говорил — сделать так, чтобы про него люди просто не знали. Всё. Никаких других способов нет.
Но сам факт наличия 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), в расте — (пока?) не завезли.
Ну вооот, в расте — не завезли. Т.е. претензия у вас, видимо, к авторам Раста? Дык, вероятно, стоит им и отнести?
Я эти ожидания масштабирую на тот код, с которым мне приходится работать.
Ну вот зря же. Ожидания — вещь, безусловно, полезная. Только полезность их проявляется на этапе решения о принятии кода в работу. Составляете список ожиданий от кода, проверяете код на соответствие ожиданиям. Если не соответствуют — не принимаете код в работу.
С момента, когда код официально принят в работу, ваши ожидания превращаются в элементарные «хотелки». Это примерно как сначала взять в олимпийскую сборную по бегу человека с плоскостопием, а потом искренне сокрушаться на тему «а я вот ожидал, что он бегает быстро».
Если в списке ваших ожиданий «валидируемость и идиоматичность кода» на первом месте, стоило прочесть список достоинств из «маленький, прагматичный, офигительно быстрый» и заметить, что слов «идиоматичный и валидируемый» в списке не значится. Если еще и голову включить, то «прагматичный» в подавляющем количестве случаев означает «а на чистоту кода я срать хотел, эффективность превыше всего».
А тут — сначала понапринимают в работу неведомо чего, а потом начинают натягивать сову на глобус и ожидания на реальность.
Логичным workaround тут было бы использовать unsafe уровнем выше.
Я бы на его месте ответил: "кто-нибудь может сделать лучше?" и не стал ничего менять.
А писать такую вот затычку для компилятора — это прямой обман потребителей библиотеки. Чем больше я на неё смотрю, тем меньше мне нравится позиция автора, это при том что ещё 3 часа назад я был полностью на его стороне...
unsafe
делает метрику «количество unsafe
-блоков» бессмысленной. Потому что после этого совершенно непонятно — сколько в этой библиоте, на самом деле, небезопасного кода. Может там этот трюк в паре мест используется, а может в тысяче… кто знает?если разворачивать все unsafe наверх, а тем более из std, то как бы в итоге не получить какой-нибуть слишком уж глобальный и неприятный вывод, например о том что safe-rust не про перфоманс вообще.
Потому что вы убедимся в том, что одновременно быстро и безопасно не бывает — и тогда, возможно, перейдём на безопасные, но медленные языки типа C# или Java.
А вот иметь код, который, как тебе кажется, безопасен, но который, на самом деле, содержит проблемы — это однозначно плохой результат.
В плюсах тоже можно написать какую-нибудь мегасортировку или мапу, которые отфайнтюнины под данные в конкретной задаче. И для этого даже необязательно считать регистры и такты. Но все вменяемые люди используют STL и горя не знают.
Сначала профилируй, потом начинай творить дичь.
если разворачивать все 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 то в идеальном мире все вызывающие функции тоже должны быть помечены как 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 реально что-то подобное у себя устроил!
Неблагодарный opensource: разработчик самого быстрого веб сервера удалил его репозиторий