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

В начале было слово... на непонятном языке
Начнём сначала. Детство у меня было тяжёлым: игрушки при... ходилось писать самостоятельно, ибо на компе был лишь голый DOS ☦. Благо к нему в комплекте шёл интерпретатор QBasic ☦, с хелпом на английском языке, который я, разумеется, не знал. Книжек никаких нет, про интернет никто даже не слышал. Но пытливый ум сделал своё - методом научного тыка и клинического анализа счастливый ребёнок превратился в бородатого погроммиста.
Идя по этой кривой дорожке я подцепил Pascal ☦, С/++, D, PHP, JS... но это я уже забегаю вперёд. Самое масштабное, что я тогда запилил - трёхмерный редактор анимаций на своей гуёвой библиотеке. У меня была мечта сделать когда-нибудь файтинг стикменов. Когда-нибудь я её обязательно исполню, но... не сегодня. Накрывшийся медным тазом жёсткий диск заставил меня начать всё с начала.
В универе, за то, что я за всех решал лабы по вычмату, ребята скинулись мне на модем. И так я окунулся в мир по... стоянного выдержания загрузки. Теперь вы знаете, откуда у меня такая сильная не любовь к тормозам. Живите с этим.

У меня была куча мелких софтин, которыми хотелось делиться с миром. Но чтобы выложить их в интернет нужен был хостинг и сайт. Все бесплатные хостинги были либо статическим, либо с каким-нибудь PHP... И конечно же я пошёл ковырять HTML, CSS, JS, PHP. Английский я по прежнему не знал, так что ковырял всё это не по докам, а методом обратного инжиниринга того, что генерировал DreamWeaver ☦.
Но 10 раз переписав свой сайт, я-таки освоил и семантическую разметку c кастомным DTD, проходящую самую строгую валидацию, и трёхколоночную вёрстку с футером без таблиц (а тогда это был высший пилотаж), и даже кроссбраузерные кнопочки со скруглениями и градиентами через SVG и VML ☦ вместо таблички 3х3 с девятью фоновыми картинками (а так вообще никто не умел).
Наш Лось в Rеверсивном Индексе
И так я наблатыкался, что вскоре устраиваюсь на работу разработчиком, и делаю оффлайн документацию для какой-то вундер-вафли на гремучей смеcи XML ☦, XSLT ☦ и VRML ☦, работающей в браузере с компакт-диска без единого экзешника.
Ещё несколько проектов на PHP и я уже в Яндексе делаю лаконичный фотохостинг Яндекс.Фотки ☦, на CORBA, XScript ☦ и других XML-технологиях ☦, ужасаясь с того звездолёта, что наворотили в соседней Ярушке ☦. Меня там, наверно, ненаведили за кучу уязвимостей, что я у них играючи находил. Эх, знал бы я тогда, что на их поиске можно хорошо так зарабатывать. Лёгкие деньги буквально просыпались сквозь пальцы.
А тут ещё и первый Яшный UI-кит Lego ☦ на подходе, где ребята настолько упоролись по DRY, что понять хоть что-то в их XSLT-шаблонах, играющими паттерн-матчингом в пинг-понг, было решительно невозможно.
Надо ли говорить, что на учёбу я совсем забил, так как она ровным счётом ничего мне не давала? Я уже работал в крупнейшей IT компании России, погружённый в проблематику бигтеха, где надо иметь сотни проектов, имея единую кодовую базу и дизайн, но под каждый проект нужны свои уникальные кастомизации... чего угодно.

В те времена BEM ☦ - был не более, чем соглашением по именованию CSS-классов. Это уже позже он превратится в JS-фреймворк с привкусом XSLT и преизобретением HTML и XPath на JS синтаксисе, но так и останется с архаичной событийной архитектурой. Это его в итоге и погубит, так как сколь-нибудь сложное приложение на нём было делать больно. Я пробовал. Теперь всё время ёрзаю, когда про него слышу.
Переехав в Москву, я поддерживал легендарный Яндекс.Бар ☦, появлявшийся у пользователей сам по себе. До сих пор за это стыдно, простите. В своё оправдание скажу, что я занимался там в основном вопросами безопасности пользовательских расширений и экраном новой вкладки. И конечно же попутно я сделал свой фреймворк Fenix ☦ для разработки на XPCOM ☦, XUL ☦ и XBL ☦. Вскоре Mozilla, к сожалению, закопает все эти технологии, не предложив ничего со столь же высоким уровнем кастомизации.
Попутно я борюсь с PHP, стараясь превратить его во что-то приличное путём... написания своего фреймворка. Разумеется, там было всё гибко и лаконично. И даже было своё соглашение об именовании модулей для их автозагрузки (ещё до появления PSR-4 и неймспейсов вообще), которое легло в основу фрактальной кроссязыковой модульной системы PMS (Package/Module/Source), которая в будущем, когда я узнаю про ПМС, эволюционирует в экосистему MAM (MAM owns Abstract Modules), а сборщик будет переписан с PHP на JS, а потом и на TS.
Исходники PHP фреймворка вроде не сохранились, но его отголоски можно найти в этой доке. Там же есть и веб-компоненты через XSLT+JS, и тесты c бенчмарками встраиваемые в документацию, и даже свой визивиг с подсветкой синтаксиса. Всё это тогда не было не то что мейнстримом, а вообще не было — все верстали странички целиком, оживляя их через jQuery. Когда-нибудь я сделаю фреймворк, который буду использовать не только лишь я, но... не сегодня.
Стартаперские Враки
Вернувшись в Питер, я начинаю работу над небольшим американским стартапом про коллаборативное управление задачами Wrike, знакомясь там с фреймворком ExtJS и архитектурой, построенной на локальных состояниях и глобальной шине данных, по которой все компоненты общаются друг с другом, как на базаре. Надо ли говорить, что всё это тормозило, весило как Фобос, а сломать что-то было проще, чем найти кто от кого зависит?
И тут мне приходит задача из плоского списка на 40к задач сделать иерархический, который на плоский виртуальный список уже никак не натягивается из-за вычурного дизайна. Поняв, что с текущей (во всех смыслах) архитектурой лыжи не едут, я ковыряю альтернативы.
Благо тогда уже появился KnockoutJS ☦ с, пусть и кривоватой, но системой реактивности, вдохновившись которой, я делаю свою, более продвинутую - $jin.atom, из которой позже выйдет $mol_atom, а затем и cамая крутая на текущий момент $mol_wire. Да, классов и модулей тогда ещё не было, так что их не изобретал только ленивый. Мои классы были с поддержкой безопасного множественного наследования, а модули с поддержкой циклических зависимостей. До сих пор так никто не умеет.

Пробую её на рабочем проекте и понимаю, что это прям то, что надо — сложность управления состоянием снижается капитально. Спустя несколько месяцев у меня, наконец, есть полноценная реактивная модель, от которой зависят все вьюшки, и их состояние больше не разъезжается — цель, ради которой FaceBook написал React, но которую так и не добился (счётчик непрочитанных сообщений по прежнему не всегда соответствует реальности).
Надо ли говорить, что эти мои страдания, занимавшие всё нерабочее время, никто не оценил? Тут наши пути с командой разошлись. Я пошёл переписывать свои наработки на TypeScript, чтобы не писать километровые JSDoc-и. А они пошли переписывать проект на Dart, чтобы спустя 7 лет... переписывать всё на TypeScript. Вовремя же я соскочил, ведь в трубу отправилась всего пара месяцев моей жизни, а не человекогоды. Когда-нибудь я запилю свой менеджер задач, но... не сегодня. Надо сперва подготовить технологии.
Потом я пол года года соло пилил маркетплейс услуг Skeddy ☦, используя СУБД OrientDB, свой фреймворк для NodeJS — jin, и AngularJS для рендеринга фронтенда. Конечно же благодаря директивам, я прикрутил к нему компонентную модель (до появления компонент в самом фреймворке оставался ещё год).
Всё было готово, осталось только нагнать пользователей, но тут учредители ссорятся с инвесторами, и мой проект остаётся без денег. Благодаря гибкой модульной системе, я за 2 недели переупаковываю C2C проект в B2B. Но всё бестолку, учредители уже потеряли интерес к проекту, и маркетингом никто даже не занимался, а я тогда ещё был бесконечно далёк от всего этого. Ещё пол года моей жизни ушли в трубу. Когда-нибудь я реанимирую этот проект уже полностью на своих технологиях, но... не сегодня.
Суровый немецкий энтерпрайз
Я устраиваюсь в крупнейший интегратор SAP в России — SAPRUN, и знакомлюсь с фреймворком SAPUI5 — прекрасное изобретение сумрачного тевтонского гения, который додумался сделать два несовместимых комплекта компонент: полнофункциональные десктопные, не влезающие в мобилки, и практически ничего не умеющие мобильные. А наша компания взялась допиливать мобильные до функциональности десктопных. На чём и погорела.
Забавный случай с их коммерческой поддержкой: когда мы обратились к ней с вопросом, как сделать так, чтобы табличка на 30 строчек так адски не тормозила, нам ответили, что не следует выводить в таблицы больше 20 строк. Пагинацию их мобильная табличка, конечно же, тоже не умела, и прикручивать её было больно. Теперь волосы в неожиданных местах шевелятся, когда про это вспоминаю.

Вообще, я был в департаменте мобильной разработки, и с не меньшим ужасом смотрел, как несколько разработчиков пытаются одновременно выкатывать релизы: под Android, под iOS, под Windows Phone ☦ и, конечно, под Web. Это всё было долго, не предсказуемо и затратно по деньгам.
А кроссплатформенная веб-версия дико тупила на мобилках, так как веб-фреймворки разрабатывались под десктопы, где ресурсы системы не столь ограничены. Например, тривиальное приложение на PolymerJS ☦ открывалось со скоростью 1 кнопка в секунду. Да, можно было прямо в реальном времени наблюдать, как появляется интерфейс. Если вы задавались вопросом, почему YouTube так сильно тупит при своём весьма аскетичном интерфейсе, то причина именно в этом - архитектура, основанная на веб-компонентах, гвоздями прибитыми к DOM-у и инициализирующихся асинхронно с постоянными ререндерами. Живите с этим.
Нанотехнологии для гиперзадач
Тут начинается история $mol, первые несколько лет которой я подробно описывал в этой статье. Здесь же мы пробежимся галопом по антресолям и пойдём дальше.
Я подкатываю к директору с демкой своего шустрого микро-фреймворка, и предлагаю сделать на её основе свой, оптимизированный под мобилки, но адаптивный к любым размерам экранов. Он дал бы нам конкурентное преимущество в борьбе за тендеры. Ведь за меньшие деньги и сроки, он позволял бы нам делать больше и качественнее.
Короче, всё завертелось, и, в свободное от коммандировок в Газпром время (да, удалёнка тогда была ещё табу), я приступил к аккуратной реализации, используя все идеи и наработки, что накопил за долгие годы веб-разработки. Была создана украинская компания для выхода на мировой рынок. У меня появились помощники. Я занялся селф-брендингом: стал выступать на конференциях, писать статьи, формировать оупенсорс сообщество вокруг нового крутейшего инструмента...

Но вот с последним, правда, было туго. Вместо того, чтобы сплотиться вокруг прорывных идей и помогать их развивать, наши соотечественники начали искать до чего бы докопаться, чтобы не изучать ничего нового. Кому-то не нравился нейминг, кому-то синтаксис шаблонов, кому-то дефолтный дизайн, кто-то нашёл багу в одном компоненте, а кому-то было достаточно того, что я недостаточно сильно расшаркивался.
Я тогда ещё не потерял веру в человечество, и старался объяснять причины всех технических решений, надеясь, что все программисты такие же увлечённые, как я, и надо просто преодолеть недопонимание. Как же наивен я был.
К сожалению, компания с отрицательным сальдо просуществовала не долго. Я, конечно, топил за то, чтобы уменьшить размер команды, но увеличить зарплаты хотя бы до рыночных, но... в какой-то момент я возвращаюсь из больнички и вижу следующую картину: осталось в нашем департаменте два разраба, один из которых уже последний день работает, а другой при мне подписывает заявление на увольнение. Да и у меня самого на руках x2
оффер. Внезапно, выбор стал не таким уж и тяжёлым.

Несколько лет жизни коту... а, стоп, к счастью, фреймворк изначально публиковался под лицензией MIT, что позволило мне дальше развивать его уже самостоятельно. Вскоре появится виртуальный рендеринг вместо изначального ленивого, статически типизированнная каскадная стилизация вместо классического CSS, самая продвинутая реактивная система, математически выверенный дизайн и куча других уникальных для индустрии вещей.
А самое главное — собралось хоть и небольшое, но сообщество заинтересованных в этом всём разработчиков. Появляются сторонние коммерческие проекты. Часть успешных историй можно найти на этой странице. Кто-то занял призовое место в Хакатоне. Кто-то запилил проект на работе, пока начальник моргнул. А кто-то работает фултайм $mol-разработчиком, отказавшись даже от большей зарплаты на React. Свои нервы дороже. После $mol пересаживаться на то, что сейчас популярно в индустрии — это как с квадроцикла пересаживаться на одноколёсный велосипед... без сиденья... с треугольными колёсами. Ездить-то можно, но... есть нюанс.
Ой, это же могут воспринять как рекламу... Да мне как-то плевать. Говорю, как есть, а вы уж сами решайте есть или не есть. Но всё, о чём я говорю, легко проверить — было бы желание. Ребята из Сбера уже проверили, например, что кода на $mol получается на порядок меньше, и подарили мне корону. Живите с этим.
Опять дер Угловатый
Прихожу я, такой звезданутый, в Немецкий банк, а там всё на Angular. Да вы (Каналья!) издеваетесь! И не хотят никакого $mol, ибо тут хайтек бигдата энтерпрайз... ну вы поняли.
Всё, что можно было сделать не так, тут было сделано не так. Ладно, закатываю рукава, надеваю респиратор и начинаю вырезать. За тормоза под нож сразу же попало детектирование изменений через ZoneJS ☦. Позже авторы фреймворка и сами признают это плохой идеей, но так и будут тянуть лямку обратной совместимости. Следующим было удалено создание джунглей для банана в TestBed, что замедляло тесты на несколько порядков.
Наконец, RxJS был заменён на MobX, чтобы снизить бойлерплейт и повысить надёжность кода за счёт обеспечения инвариантов реактивной системой. Спустя 5 лет, авторы фреймворка тоже начнут переход на что-то похожее в виде сигналов. Но конечно же, глянуть как оно всё классно работает в $mol всем лень, не смотря на кучу, написанных мной, статей по этой теме.
Потом я чинил инверсию зависимостей, заменяя нарушающий инкапсуляцию DI на контексты окружения; модульную систему, не совместимую с tree-shaking; прикручивал виртуализацию рендеринга, все сторонние реализации которой сломались с очередным мажорным обновлением фреймворка...

Надо ли говорить, что никто не оценил лечение всех эти детских болезней? Как мне сказал тогда начальник на тет-а-тете: "Ты думаешь один такой Д'Артаньян? Да у меня тут пол офиса Д'Артаньянов". Дальше уже решения принимались большинством. И я думаю вы прекрасно понимаете, каким местом большинство думает. А самое обидное, что все эти наработки так и померли в закрытых исходниках, уничтожив ещё пол года моей жизни.
Гипер Редактор для Гипер Текста
Я давно вынашиваю идею сделать свой легковесный WYSIWYG редактор. Много прототипировал, но так и не довёл до ума. И тут мне поступает оффер мечты — сделать такой редактор для новой платформы 1С, которую пилили на крафтовом фреймворке с MVC, моделями на MobX, и рендерингом через React. Следующие пару лет я недоумевающе смотрел, как ребята делали то, что уже давно было быв $mol, но выворачивая эти попсовые инструменты наизнанку. Когда-нибудь я сделаю свою платформу на правильных технологиях, но... не сегодня.

Ну да ладно, главное, что моя хата с краю не была ограничена ни технологиями, ни даже... требованиями. Так что первые несколько недель я не понимал, что вообще надо делать, а потом кааак понял: нужен редактор, которым можно и огромные договора совместно редактировать, и комментарии к задачам писать. Задача виделась амбициозной, прям как я люблю: легковесный, но мощный и быстрый редактор с лаконичным интерфейсом.
Через пару лет у нас уже был почти готов движок такого редактора с кучей уникальных фичей. Например, там был применён виртуальный рендеринг на холстах. Через несколько лет что-то похожее реализуют и в Google Docs. Гугл следит за мной?
А вот что туда вн так и не смогут, так это CRDT для объединения правок в реальном времени, вместо уже порядком устаревшего OT ☦. Надо ли говорить, что у нас после глубокого анализа получился свой dCvRDT алгоритм, ещё круче всех аналогов? Позже его идеи получат развитие уже в оупенсорс библиотеке $hyoo_crowd, а затем и в базе данных CRUS_DB, но не будем забегать вперёд.
Так же у нас было полное разделение содержания и оформления. До сих пор этого никто так толком и не умеет. Все, кто пол ночи исправлял оформление текста по ГОСТ-у, знают, какая это боль. А у нас её не было принципиально. Иронично, что многим это не понравилось, ибо привычку лепить стили как попало, ибо "я так вижу", пришлось бы поменять на привычку "делать хорошо", через указание смысла.
А ещё у нас были такие фичи как "горизонтальная каретка" с возможностью поставить её, например, между с таблицы и начать печатать, чтобы вставить новую; мультивыделения со множественными буферами обмена, знакомые нам в по IDE; и даже прозрачная поддержка MarkedText для интероперабельности с редакторами плоского текста. И всё это счастье всего в 80 КБ!
Не см на еженедельные командировки в Московию (удалёнку тогда ещё не изобрели), это было золотое время как для меня лично, так и для $mol экосистемы в целом. Не редки были случаи, когда на рабочем проекте я сталкивался с проблемой, пос работы изобретал обобщённое решение, и следующий день уже мог опробовать его в бою.
И тут начинается ковид. "Ура, удалёнка!" — скандируют все в конференц-колах. А менеджмент тем временем начинает затягивать пояса вокруг гаек. Мой проект вскоре закрывают, посчитав бесперспективным. Дождался удалёнки, наконец. Два года жизни коту под балансировщик.

Я, конечно, пытался договориться об открытии исходников, или создании нового стартапа, который продолжил бы развитие, и в будущем мог бы окупить уже потраченные миллионы. Но... не сегодня.
Драматичности истории через пару лет добавит внезапно начавшаяся огульная русофобия и торговые санкции, из-за чего всем российским компани придётся срочно искать российские аналоги западным сервисам. Тут бы свой мощный веб-редактор очень бы пригодился. Но придётся всем жевать беспалевный форк OnlyOffice.
IT-пенсия в 35
Тут я понимаю, что я уже слишком стар для всего этого времясмытия и бросаю в топку свою трудовую книжку. Первый год, конечно, чувствуешь себя неудачником, ибо из недавнего руководителя направления дауншифтнулся в профессиональные безработные, о чём окружающие регулярно напоминали. Я, конечно, посматриваю иногда вакансии — мало ли появится что-то интересное, но... не сегодня.
Однако, со временем, я стал чувствовать себя по настоящему свободным человеком, которому не надо переть в офис к дейлику и сидеть над бессмысленными задачами; делать вид, что дурак говорит что-то разумное, и участвовать в корпоративных крысиных бегах; впрягаться в дедлайны жертвуя либо качеством, либо свободным временем; да и вообще делать всё не так, как считаешь правильным, а так, как принято.
Я наконец-то нашёл время для себя, и для своих проектов, которых у меня на пару порядков больше, чем пальцев на руках. Однажды, например, почти доделал реактивный 3d-движок на $mol, но вовремя остановился. А то так можно и детскую мечту случайно исполнить — о чём же тогда я буду мечтать?
Да, $mol — это больше чем фронтенд фреймворк. На нём можно писать и бэкенд, и игры, и даже... базы данных с системами контроля версий. Развивая идеи бесконфликтных структур данных, я начинаю строить на их основе децентрализованную систему надёжного и безопасного хранения данных с синхронизацией в реальном времени. Квинтэссенцией этой наркомании должна стать ноукод платформа, позволяющая, например, с чистого листа буквально накликать себе коллаборативный менеджер задач всего за 15 минут, как в этом старом прототипе $hyoo_case:
До ковида я успел влиться в питерскую программерскую движуху с ежемесячными митапами PiterJS и даже стал её соорганизатором. Первым делом я, конечно, сделал полноценный сайт на $mol вместо заглушки со ссылками на соцсети. А то не дело это — у сообщества JS-программистов... да нет даже сайта на JS. А теперь всё по фен-шую — образчик самых передовых технологий. У меня даже отдельный доклад был про него, хотя я и старался не использовать сообщество для продвижения своих проектов. Всё же цель его не в том, чтобы насадить свой вижн, а дать трибуну каждому, кому есть что сказать, и помочь не ударить при этом в грязь лицом. К сожалению, уход н добровольно-принудительную самоизоляцию, поставил крест на возможнос собирать людей на митапы.
Но тут я открываю для себя хакатоны, демонстрируя как много можно сд в сжатые сроки благодаря $mol. Ведь это не просто фреймворк, это экосистема из множества готовых р: от просто библиотек и компонент, до целых приложений, которые можно прозрачно встраивать в свои, не изобретая велосипед. Например, портал $mo состоит из десятка ничего не знающих друг о друге приложений, границы которых вы не найдёте, если не показ. Живите с этим.
Отступление на СВО
Но стоит только расслабиться, как жизнь ударит тебя с неожиданного ракурса. Под новый год я обнаруживаю у своей кошки опухоль уже на последней стадии. Пока возился с ней, плохо спал, от чего начало двоиться в глазах. И когда спустя неделю лучше не стало, а скорее наоборот, пришлось мне встречать новый год бегая по врачам. Оказалось, у меня и самого лежит на сердце большущая елда, дающая такие вот интересные сайд эффекты, которые со мной теперь навсегда. Так что если снова встретите этого позитивного пирата в стильных крафтовых очках, то знайте, что весёлый он такой не от хорошей жизни.
Обычно мы живём как бессмертные, крутясь в бесконечном цикле дом-работа. Но в такие моменты начинаешь задумываться и над негативными сценариями. Оставшиеся до операции пару месяцев я посвятил обработке исключений: научил маму саму управлять финансами; раздал права на каналы и репозитории тем, кому мог бы их доверить; записал подробный рассказ о состоянии экосистемы на тот момент и заложенных в ней идеях, чтобы каждый участник сообщества имел общее видение того, зачем это всё и куда движется.
Благо в самом коде $mol менять ничего не пришлось — он намеренно сделан настолько простым, что с его поддержкой справится любой TypeScript разработчик, раскуривший мои статьи про реактивное программирование.
Своевременно Выполненная Операция прошла не без осложнений, но всё обошлось. В день, когда меня выписали, началась война, и толпа шизоидов начала донимать меня главным вопросом жизни, вселенной и вообще: ты за своих или чужих? Я был в шоке от того, сколько ранее уважаемых мной людей выбрало второй вариант. Пара таких оболтусов нашлась и в PiterJS, но вскоре пошла на X с жалобами, мол именно из-за такого плохого человека, как я, они не могут извиниться от имени всех организаторов.
Особенно тут отличился Андрей Ситник, поднимавший у себя в X русский народ на восстание и диверсии, сидя в Барселоне. Хорошо, что его PostCSS мы уже давно выпилили из $mol. Да у нас и в принципе практически нет внешних зависимостей. То, что многие считали недостатком, оказалось нашим преимуществом — нам не пришлось разгребать проявившиеся как грибы после дождя программные закладки.
Потом у меня была лучевая терапия, у Мурки — химия. Из-за плохого самочувствия мы уходили вместе в долину смерти: я спал или ко в тишине, она — смотрела батарею; потом мы менялись ролями. Через пол года её пришлось усыпить. Она спасла мою жизнь, а я её убил.

Я ничего не говорил про личную жизнь. Да её просто и не было. Я всю жизнь занимался разработкой и достижением финансовой независимости. У меня нет друзей, и я не знаю откуда они берутся. Я настолько не вписываюсь во все компании разом, что в универе меня прозвали марсианином. А девушки, с которой я десяток лет строил отношения, в самый тяжёлый момент просто не было рядом.
Следующий год я провёл в депрессии, практически не выходя из дома и активно прокрастинируя. А в сообществе все бесились, что я опять ничего не делаю, или делаю, но не то, что следовало бы по их мнению. Бывают моменты, когда даже самый несгибаемый человек понимает бессмысленность всего, что делает, да и своей жизни вообще.
С самого дна есть лишь один путь
Понятно, что так долго продолжаться не могло. И чтобы хоть как-то выбраться из безысходности, я занялся производством видео. У меня уже был канал Core Dump, с качественным контентом про компьютерные науки, но подготовка даже таких, весьма не идеальных видео, отнимала слишком много сил.
Поэтому я остановился на формате по проще — оффлайн-стримы на канале $mol — беру первую попавшуюся технологию, и сходу нахожу в ней критические проблемы, из-за которых она не пригодна для продакшена. Мне не сложно — требует всего несколько часов времени. Зрителям полезно — возможность взглянуть опытным критическим взглядом на распиаренные технологии. Да и просто весело. Особенно, когда я стал добавлять и немного перфоманса.
Чтобы был повод выйти из дома, я снова стал ходить по разным мероприятиям. Ну и собрался реанимировать PiterJS. Но, как оказалось, из организаторов в Питере остался один я. Что ж, собираю новую команду.
Народ соскучился по офлайну, так что набралось человек десять. По хорошему их бы по одному онбордить, чтобы сохранить преемственность и избежать конфликтов. Но тут у меня обнаруживают новую опухоль, и я понимаю, что времени на раскачку нет от слова совсем. Так что работаем все вместе сразу.
Тут же начинается грызня за лидерство, конфликты ценностей и прочая социализация. Я пытаюсь направить эту энергию в позитивное русло, но ситуация всё ухудшается. В конце концов доходит до того, что половина команды косплеит Пригожина ☦ и пытается меня выгнать. Тут я, конечно, охреневаю капитально.

Я прощаюсь с этими горе-революционерами и ухожу готовиться к операции в тишине и спокойствии. К счастью, эта опухоль оказалась доброкачественной. К несчастью, мне теперь до конца жизни придётся каждый день принимать гормоны. Впрочем, мне не привыкать — всю жизнь иммунная система пытается меня убить, но я ловко уворачиваюсь: 3 раза в день я косплею Грегори Хауса, закидываясь таблетками, 2 раза в месяц — Курта Коннорса, вкалывая генетические модификации, и 1 раз в год — Годзиллу, облучая окружающих гамма-квантами.
А вот в команде с тех пор атмосфера наладилась, и мы вот уже больше года каждый месяц организуем тёплые ламповые вечера для программистов. А скоро планируем аналогичные ещё и для дизайнеров. К сожалению, часто так оказывается, что люди, кичащиеся своими софт-скиллами, и борющиеся за всё хорошее, против всего плохого, сами на деле оказываются теми ещё токсиками, не способными на эмпатию. Живите с этим.
За десяток лет у меня набралось много крутых хардкорных докладов. Так что по случаю юбилея, я решил устроить себе подарок, и провел целую конференцию, состоящую целиком из них: ? Brain Dance Day. А чуть позже мы с товарищем из Германии провели ещё и хакатон посвящённый разработке на $mol.
А самая движуха начинается, когда я поступаю в универ для закрытия своего гештальта. Время просыпается сквозь пальцы, и я практически перестаю писать код. Вообще, я думал найду таких же заряженных, как я, ребят, с кучей свободного времени, которых хлебом не корми, а дай перевернуть мир по пятницам. Но встретили меня в основном эйджизм, культура отмены и безразличие. Интересные конкурсы, конечно, но... не сегодня.
Так а сегодня-то что?
А сегодня $mol-у уже 10 годиков. За ним не стоит никаких больших компаний, но он уже пережил и БЭМ от Яндекса, и AngularJS от Гугла. Не благодаря громкому имени, большим деньгам, хайпу, да всеобщей любви и помощи, а вопреки отсутсвию всего этого.
Многие на Хабре меня уже ненавидят за то, что я десять лет разоблачаю хайповые технологии и рассказываю про идеи, заложенные в $mol. Мне раз десять уже сливали карму настолько, что я не мог писать даже комментарии. Но, как профессиональный плавец против течения, я двигаюсь туда, куда считаю правильным, а не жду, пока течение доставит меня туда, куда мне надо.

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

С пользователя собирают 100500 метрик, оптимизируют более 9000 KPI, проводят несчётное число А/Б/Ц/Д-тестирований гипотез. Но никак не могут понять, что лучший маркетинговый ресурс — это влюблённый в тебя пользователь, который и сам денег занесёт, и друзьям расскажет. А ему эти друзья поверят с гораздо большей охотой, чем всем вашим попапам, вылезающим в самый не удобный момент.
Но чем крупнее компания, тем старательнее она делает всё возможное, чтобы пользователи её ненавидели. Как сказал однажды мне один из разрабов ВК: "да мне плевать на пользователей, я просто делаю всё, что мне говорит менеджер". И дело тут не в конкретном человеке и его возможностях влиять на других. Рыба гниёт с головы. Поэтому именно к ней и тянутся все паразиты. Живите с этим.
Прекрасное далёко
С недавних пор я занялся ещё более амбициозной задачей: сделать экосистему продуктов, которые бы закрывали все цифровые потребности людей. И всё это без навязчивой рекламы, без тёмных паттернов маркетинга, да и вообще без вымогательства денег не знамо на что. Продуктов, которыми хотелось бы пользоваться, потому что хорошо решают свою задачу.
Каждый такой продукт полезен и сам по себе, но, попадая в экосистему, даёт синергетический эффект и для всех остальных. Например, сделав мессенджер, мы получаем не просто возможность общаться в нём, но и вести обсуждения на любых других страницах. А сделав систему личных микро-фондов, получаем не просто донаты между людьми, но и обобщённую систему рекомендаций, подкреплённую рублём.
При этом я строю архитектуру так, чтобы поддержание её работы не требовало существенных денежных или организационных затрат. Я не настолько богат, чтобы тратить деньги впустую. Любой энтузиаст может поднять у себя узел децентрализованной сети на своём сервере, чтобы помогать ей тем самым обслуживать всё больше клиентов и данных. И даже если сервера не выдержат нагрузки, политики порвут сеть в лоскуты, или меня таки догонит автобус — всё продолжит работать благодаря P2P коммуникациям.
Только так, благодаря инновациям, и можно конкурировать с крупными игроками, у которых ресурсов столько, сколько ты и представишь себе не можешь. Но они не умеют ими грамотно распоряжаться, раздувая огромный штат кодеров, еле справляющихся с тривиальными задачами.
Я пишу эти строки в рилтайм-вики, на базе крутящегося уже пару лет в проде прототипе CRUS_DB — децентрализованной неубиваемой безопасной базе данных реального времени, которая должна лечь в основу веба будущего. Где каждый пользователь будет по настоящему владеть своими данными. Где корпорации не будут иметь пользователей, замыкая их в своих продуктах, а будут конкурировать между собой, предоставляя им максимально удобные сервисы для работы с их данными.

Скоро, я надеюсь, доведу её уже, наконец, до релиза. Зато у вас сейчас ещё есть уникальная возможность присоединиться к этой маленькой революции, пока она ещё не стала мейнстримом. Ну, либо брюзжать, сидя крабом в ведре, что у меня ничего не получится, рассказывать как я вам сильно надоел, или чем вы там ещё занимаетесь в свободное от промотки жизни время. Выбор за вами.
Для тех же, кто смотря, на текущую ситуацию в индустрии, чувствует, что что-то здесь не так, я основал техногильдию Гипер Дев, объединяющую самых крутых ребят с горящими внутренними движками. Это не типичная компания, где работяги получают хорошо если 10% от реальной стоимости их труда. Это сообщество специалистов, которые инновациями решают насущные проблемы, помогая тем самым друг другу делать больше за меньшее время и деньги.
Вместе мы разрабатываем как свои продукты, так и делаем проекты на заказ, распределяя доход пропорционально вложенным усилиям. И вы тоже можете к нам присоединиться. Ну, либо просто следить за новостями и кусать локти.
На этом мой рассказ подходит к концу, но история только начинается. Живите с этим.
Другие площадки
https://habr.com/ru/articles/910894/comments/
Комментарии (17)
SeveR31
20.05.2025 13:55Т.к не фронтендер, не в курсе всей это движухи по фреймворкам. Но видя ваши комментарии в различных диалогах, могу сказать, что 90% проблема вашего фреймворка - в его позиционировании относительно других технологий и в поведение его создателя, которое отталкивает даже нейтрального наблюдателя. Статью плюсанул по той же причине, что и другой комментатор - чтобы люди видели, как не надо настраивать мир против себя, если хочешь его изменить.
Согласен только с хейтом направления текущего энтерпрайза (Яндекс.музыка и их десктопное приложение это отдельная боль), но тут на каждое решение можно найти условную Casette, которую Вася (реальное имя автора) сделает в одиночку и лучше, если есть желание улучшить свой пользовательский опыт. А кому не нужно - тем и стандартного хватит. Каждый сам выбирает, что ему использовать.
ИМХО, пользователю вообще не важно, как оно внутри работает, а разработчиков под что-то микроскопически нишевое искать сложнее. Можете вместо гильдии свою компанию основать и посмотреть, как она укатает всех тех гигантов в вебе будущего.Кошку жалко, теневой герой всего рассказа.
gennayo
20.05.2025 13:55Человек нашел свой смысл жизни, в какой-то мере можно ему позавидовать. И просто пожелать удачи.
Habr4687544
20.05.2025 13:55У мужского пола крыша больше склонна к уезжанию, рекомендую больше времени проводить с противоположным, они с этим помогают
nin-jin Автор
20.05.2025 13:55Прекрасный совет. Где-то на уровне "Если у них нет хлеба, пусть едят пирожные".
alhimik45
20.05.2025 13:55он уже пережил и БЭМ от Яндекса, и AngularJS от Гугла
Неуловимый Джо прям. Ну и могильные камни напротив XML и PostCSS? Надо тогда расшифровать его значение, а то по интуитивному значению данного символа, сам mol его также заслуживает.
Tzimie
20.05.2025 13:55Тут я понимаю, что я уже слишком стар для всего этого времясмытия и бросаю в топку свою трудовую книжку. Первый год, конечно, чувствуешь себя неудачником, ибо из недавнего руководителя направления дауншифтнулся в профессиональные безработные, о чём окружающие регулярно напоминали. Я, конечно, посматриваю иногда вакансии — мало ли появится что-то интересное, но... не сегодня.
Однако, со временем, я стал чувствовать себя по настоящему свободным человеком
Я тоже так хочу, не не понимаю, что я в этот год буду кушать
Amigun
20.05.2025 13:55Дмитрий, спасибо за прекрасную статью!
Сам я познакомился с $mol пару лет назад, когда узнал про формат tree, вдохновился им и захотел сделать реализацию на питоне. После чего стал читать разные статьи и смотреть примеры. Чем больше я погружался в фреймворк, тем больше влюблялся в него.
Очень жаль, что почти все вокруг так пренебрежительно относятся к фреймворку и его автору, даже не разобравшись что к чему: «не буду использовать $mol, там непривычный нейминг, странные шаблоны, токсичный автор». Такие люди просто не смотрят дальше своего носа.
Вы меня очень вдохновили, я стал иначе смотреть на разработку и многие вещи по-другому, можно даже сказать, моя жизнь в каком-то смысле поменялась, когда я познакомился с Вами и Вашим творчеством, за что безмерно Вам благодарен.
Вам желаю крепких нервов, большого здоровья и сил продолжать работать над тем, над чем ведется работа. Фреймворку желаю дальнейшего развития, а Красу скорейшего релиза.
Не сдавайтесь!)
i360u
20.05.2025 13:55Вселенная, раз за разом, щелкает автора по носу, какбэ говоря ему: "научись уже конструктивному общению" и "перестань в любом утверждении исходить из того, что ты считаешь себя самым умным"... Но автор, к сожалению, глух ко вселенной. А ведь какой-то потенциал у товарища действительно был.
pnmv
20.05.2025 13:55Голый дос - да у вас было счастливое детство.
К бк0010-01 (эвм из моего детства), хотя и была инструкция (бумажная), но прыгнуть выше головы, увы, не позволяла.
kmatveev
Нормальная история человека, чьё самолюбие настолько велико, что он решил стать самым умным, чтобы все его любили и уважали, после чего он, наконец, смог бы полюбить себя сам. Читать интересно. Главным образом затем, чтобы понимать, как не надо делать. Кошку жалко. Статью плюсанул.
nin-jin Автор
Умные учатся на чужих ошибках. Дураки - на своих. Рад, что вы от меня хоть чему-то научились.