Local-first и децентрализация
706 subscribers
140 photos
19 videos
3 files
312 links
Replicated Object Notation,
CRDT, распределёнщина и децентрализация.
Ведёт @gritzko
Чат @Ronzgovory
Download Telegram
Пошёл второй заход на Чётки (CRDT базу данных очень простого вида). Основное изменение: стала ещё проще.
👍62🔥2👏1😈1👨‍💻1
Local-first и децентрализация
Что нас ведёт обратно к теме про Новое Средневековье. Национальные границы теряют значение, этносы и расы живут вперемешку, единого контроля территории нет. В аэропорту Схипхол сидит смотрящий от Пекина в должности дворника, но наверное уже миллионер. Суверенные…
Чем больше на эти темы размышляю, тем более логичной кажется эта мысль о новом Средневековье. Почему прогресс был медленным в те века? В том числе потому, что каждый инноватор наводил максимум тумана вокруг своей работы - чтоб конкуренты не спёрли. У каждого мастера были свои секреты, которые он только сыну перед смертью расскажет, больше никому. Поэтому, терялась инновация примерно так же часто, как появлялась. Мало ли, инфаркт микарда, не успел, всё. Плюс, максимально защищали рынок сбыта через цеховую систему.
XIX век нам принёс эффективную патентную систему Западного мира. Смысл простой: расскажи, в чём твой секрет, и правительство будет k лет защищать твою монополию. Это был период Дизелей и Эдисонов (Дизель продал патент, не имея пригодного для продажи двигателя, только прототип.)
Что мы имеем сейчас? Вот в связи с конфликтом в Украине некоторые чехвостят российское руководство за отсутствие инноваций. Увы, руководство право - инновации для лузеров. Это дорого и рискованно, а в результате Китай всё скопирует и будет продавать раньше и дешевле, чем вы. И это в лучшем случае - если у вас всё получится. Может Китай будет заниматься инновациями? Вряд ли. Они уже выстроили масштабную систему, заточенную на кражу проверенных технологий, менять работающую систему никто не будет (заработает ли новая - ещё неизвестно). Поэтому - назад в Средневековье. Все максимально наводят туман относительно причин своего успеха и вообще наличия оного. Как старый еврей в романе Вальтера Скотта. Инновациями занимаются только странные люди, а вокруг них уже трётся орава желающих всё украсть, если вдруг заработает.
Как-то так.
11💯6🤔4🤨1😭1
Local-first и децентрализация
Чем больше на эти темы размышляю, тем более логичной кажется эта мысль о новом Средневековье. Почему прогресс был медленным в те века? В том числе потому, что каждый инноватор наводил максимум тумана вокруг своей работы - чтоб конкуренты не спёрли. У каждого…
Вот кстати версия, почему Леонардо писал зеркальным письмом и в своей собственной системе сокращений: чтобы конкуренты идеи не спёрли. (Не спёрли, насколько я только знаю.)
Но если бы он шифровался ещё чуть получше, про него широкие массы и не узнали бы наверное. Была бы это неразгаданная тайна, наряду с манускриптами Войнича - что за летающие механизмы там изображены, кем, почему - непонятно.
🤯93
В ходе курса из Chotki начал расти интересный побег - "protobuf для CRDT", он же RDX, Replicated Data Interchange Format. Он заметно отличается от последних версий RON, что оправдывает смену названия.
(Контекст: "единая библиотека CRDT типов", оно же "единый формат CRDT данных" - это такой Святой Грааль local-first)
2🤡2🤔1
Local-first и децентрализация
В ходе курса из Chotki начал расти интересный побег - "protobuf для CRDT", он же RDX, Replicated Data Interchange Format. Он заметно отличается от последних версий RON, что оправдывает смену названия. (Контекст: "единая библиотека CRDT типов", оно же "единый…
Для новоприбывших поясняю: этот канал долго назывался "RON и тайны децентрализации", потому что автор долгое время работал над RON, форматом сериализации для CRDT. В том плане, чтобы можно было обмениваться данными не только в топологии клиент-сервер, но и в оффлайне и в разных децентрализованных сценариях. На github лежит изрядное количество реализаций RON, все разных версий - это был исследовательский проект. Похоже, количество переходит в качество - RDX выглядит (для меня лично) более зрело. В том плане, в том числе, что непонятно, что ещё можно было бы убрать :)

А задача "убирания лишнего" - это и есть суть вопроса, потому что RON/RDX, в отличие от protobuf/CBOR/JSON/flatbuffers/чегоугодно, содержит метаданные, необходимые для корректной репликации/синхронизации/мержа (которые и портят жизнь всякими патологическими случаями, когда их объём начинает превышать объём данных).
👍71🤔1💩1🤡1🖕1
Кстати, блиц-опрос, пожалуйста без заглядывания в доки. Сколько в protobuf видов интов (целочисленных типов) ?
Anonymous Poll
9%
1
31%
3
37%
6
23%
12
🤔2🤡2
Local-first и децентрализация
Кстати, блиц-опрос, пожалуйста без заглядывания в доки. Сколько в protobuf видов интов (целочисленных типов) ?
84 голоса, 11% 29% 40% 20%
1. int32,
2. int64,
3. uint32,
4. uint64,
5. sint32,
6. sint64,
7. fixed32,
8. fixed64,
9. sfixed32,
10. sfixed64
Получается 10, никто правильно не ответил. Ха-ха. Ну либо 11, если с bool. Ну либо 12, с double и float, но тогда это просто численные типы.
😁10🤡6🤯21
Local-first и децентрализация
Давайте подумаем, какие ещё эксперименты можно ставить на китайских шпионах. Обязательное условие: не должно быть опасности моей жизни.
По-видимому, выкручивание WiFi платки всё ещё работает. Сел в кафе поработать, отошёл на несколько секунд буквально, поворачиваюсь - к ноуту подшмыгнул китаец, внимательно смотрит на экран, запоминает. Зря они так, я всё на GitHub выкладываю.
Странно, что за полтора года ничего вкрутить в ноут не успели.
Или может опасаются, что я как-то найду - это будет ещё неприятней.
🤯12🤣2🤮1💩1🤡1😈1
Испания блокирует Телеграм по жалобам правообладателей (на пиратство). Технически, блокировку должны осуществлять провайдеры. Как в РФ в 2018, помню, пол-интернета глючило, пока Роскомнадзор блокировал случайные диапазоны адресов на всех возможных хостингах. Посмотрим-посмотрим.
👍2🥰21🎉1👌1🍾1
Local-first и децентрализация
Пошёл второй заход на Чётки (CRDT базу данных очень простого вида). Основное изменение: стала ещё проще.
Сегодня утром, хотя и кофе не пил, но что-то нашло, сделал почти все студенческие задания одним махом. Все CRDT типы. FIRST (Float, Int, Reference, String, Tomb~nil) уже были, добавил NZ счётчики (натуральные и целочисленные), ME (мапы и сеты) и вот сейчас смотрю на L (массивы).
Забавность в том, что массивы это Causal Tree, алгоритм, который я же и придумал, но они чуть сложней в реализации.
В конечном счёте NZ и MEL сводятся к iterator heap, это крайне красивая структура данных из LSM баз данных. Что может быть красивей iterator heap? Только iterator heap вложенный в iterator heap (LSM+CRDT).
Такие вот бурные выходные.

P.S. Готовы и каузальные деревья. Тоже через iterator heap.
🔥17🤯5👏31👎1🤡1💊1
Прочитал вот текст Вьюкова, что не бывает безобидных data races. Он там приводит пример очень неожиданных супер-оптимизаций, которые может сделать компилятор, чтобы из вашего доступа двух ниток к инту (который сам безусловно атомарно записывается и читается) тем не менее сделать катастрофу.
Напомнило старый советский анекдот.
Человек прилетел в Грузию, взял такси. Таксист гонит, круто маневрирует, всех обгоняет по встречке, джигит в общем. Впереди красный, таксист - пролетает пулей. У пассажира уже штаны полные. Впереди снова красный. Снова пулей. Пассажир: "Вы почему едете на красный" Таксист: "Патаму чта МАСТЭР!" Гонит дальше, впереди зелёный. Резко раз по тормозам, пассажир лицом бам в доску, кровь, нос держит, спрашивает: "А подему на делёный не едеде?" Таксист: "Слушай, апасна, да? Вдруг там другой мастэр?"
😁16👍5👎1🤡1🥴1
Чотки приобретают относительно играбельный вид. Уже не просто теория распредёлённых типов, а можно узлы пинговать, смотреть как оно мёржится с грехом пополам, даже немношко бенчить.
Декабрь, январь, март - три месяца работы, не полный full-time, но плотно. Пока главное достижение RDX, Chotki всё таки на уровне proof-of-concept пока. Но ещё пара-тройка месяцев работы и будет наверное вполне практически полезно.
Что тут интересного сделано:
1. RDX как сериализация CRDT (кстати обрабатывается без парсинга в объекты, как и нужно делать в БД)
2. RDX впилен в LSM БД через merge operators (рецепт превращения в CRDT годится для RocksDB, Cassandra, всех их клонов и форков)
3. JSON подобный текстовый RDX, парсер на ragel итд (это не JSON всё-таки на экране, это RDX)
4. Довольно забавный механизм пересинхронизации реплик через дельты (лог для синхронизации не нужен)
5. Не менее забавная система объектов и типов (CRDT, они же реплицированные типы, это типы полей, из них состоят объекты, есть "классы" и наследование)
🔥18👍51🤯1
Никита очень успешный предприниматель, 10 лет возгравлял стартап MemSQL (newsql база данных). Сейчас делает постгрес в облаке.
🤔41🤣1
Сегодня прошёлся по CRDT sync / CRDT database проектам на GitHub. Очень густо стало, есть люди которых я вообще не знаю - уже целая индустрия растёт. Не обошлось и без забавных сюрпризов, например "collision-free replication data types (CRDT) and decentralized appendix-only logs" - похоже ChatGPT уже начал создавать свои проекты на GitHub.
Что ж, я предупреждал. Вот уже пишут, что GitHub чистит миллионы фейковых реп с бэкдорами.
1🤔1
Вообще интересно, насколько можно масштабировать "инфраструктуру доверия". В том плане, что я скачиваю дистр, собранный известными людьми, который включает пакеты, собранные известными им людьми, итд. В том плане, что ни на каком шаге не появляется случайно скачанный из интернета пакет, написанный неизвестно кем, либо (сценарий xz) контрибутор оказывается виртуалом и злоумышленником. PGP Web-of-trust уже который десяток лет убиваются строят свою "паутину", и оно даже работает в некоторых узких кругах для очень упёртых людей (типа коммитеров в ядро Linux).
А NPM в этом плане это обезьянник с мартышками, за которыми присматривает полицейский-пенсионер.
В go придумали пару фишек, типа регистрации хэша каждой версии проекта в публичном регистре, так что при некоторой аккуратности можно от очевидных атак уберечься.
В Linux в целом нельзя сказать что дела хорошо, там например во все мэйнстримовые дистры был протащен совершенно катастрофический systemd (а это типа миллиона строк кода, которые имеют доступ ко всему - прощай unix way). Ну и история xz опять же, показывает, что даже целеустремлённый хулиган сможет многого достичь, если запасётся терпением. Слишком большие и необозримые стали дистры.
А вот до опен сорса был порядок (нет не был). В Solaris помню был "баг" - логин по telnet рутом без пароля, в Apple в 2018 такой тоже ловили, только локально, без telnet.
Значит ли это, что мы не можем построить социальную структуру, которая позволит надёжно контролировать >1млн строк кода?
🤔8👍5👎1🤡1🙈1💊1
◌ open a1ece-0
a1ece-302511
◌ cat b0b-6
{_ref:0,Title:"pinc-ponc",Count:223938}
b0b-6
◌ sinc {fid:b0b-6-2,count:1000000,ms:0}
b0b-6-2
1000000 incs complete for b0b-6-2, elapsed 2.587417349s, a1ece-302511..a1ece-3f6751
◌ cat b0b-6
{_ref:0,Title:"pinc-ponc",Count:1223938}
b0b-6

А тут мы видим, как Chotki за 2.58 секунды на ноуте Lenovo Yoga инкрементит счётчик 1 миллион раз. Это не in-memory, это с записью на диск. Если не знать, как работают LSM базы данных, это может показаться фантастикой, а если знать - просто видно, что я ничего не испортил.
С перекачкой данных на другую реплику (на том же ноуте) 3.7сек.
10млн+10млн встречной перекачки в формате RDX управилось за 60 сек. То есть, всё те же 3 секунды на миллион операций.
Как бы метрики ухудшить. Может, в облаке запустить? С докером и кубернетисом?
🍾12👍41❤‍🔥1🤡1
Local-first и децентрализация
И это ведёт к ответу на аргумент про Схему Понци. Да, пирамида это довольно мощный мотиватор роста, но в долгосрочной перспективе проблемный и ведёт к циклам пузыря: надули-лопнул. Это пока состояние экосистем крипты. Система более доброкачественная позволяет…
Опирамиживание экономики (мой термин) это когда тратятся деньги под обещания будущих доходов, а "будущие доходы" не материализуются. В результате образуется висящий долг. Тут можно вспомнить Мавроди, а можно вспомнить теории J.Tainter'а, но неважно. Сегодня на HN в вентилятор попал пост из рассылки Gentoo, где предлагают вписать в политику нежелательность использования AI контрибуторами. Причины:
- непонятность ситуации с авторским правом (AI как "автоматический плагиат")
- плохое качество кода и текстов сгенерированных AI (plausibly looking bullshit)
- ну и тот факт что AI используется, как оправдание массовых увольнений
Совместив в голове эти две темы, мне неожиданно показалось, что в плане опирамиживания AI вообще очень удобная технология. Чтобы, так сказать, съехать с базара. Почему массовые увольнения белых воротничков? Потому что AI заменил. Где моё здравоохранение, я всю жизнь страховку выплачивал. А вот вам (реальный эпизод из маркетинга OpenAI) виртуальная медсестра на основе AI, говорите с ней сколько хотите!
Итого, получается сдув пирамиды по Тайнтеру, под предлогом AI.
Опять же, если AI начнут продуктивно использовать в промышленной автоматизации, я эти соображения возьму обратно.
😁15👍71