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

Отпусти меня, Meteor

Время на прочтение4 мин
Количество просмотров11K

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


Будущее


Можно сразу перейти к сути, или с предисловием: почему вообще Метеор?


Начинал на Delphi под флагами RAD и VCL. Два чемодана книжек — скупал всё подряд, как маньяк. Приятно осознавать, что некоторые учились кодить в редакторе Winsyntax.


Winsyntax


Прошли годы. Устроился веб-мастером в IT-отдел. Помимо перетряхивания корпоративного сайта на PHP, познакомился с монстром SharePoint: виджеты на C#, формочки InfoPath, шлюз в HP ServiceDesk на Java. И очень хотелось поднять сайтик про мою машинку.


Бэха-семёрка


Как SharePoint, но чтоб на PHP — привет, Drupal. Это была любовь с первого взгляда. Delphi для веба. Реестр модулей — ящик с сокровищами. Базовый функционал можно настроить мышкой. Коллективный разум для решения технических вопросов. Я заболел сам, и заразил автора LiveStreet:


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

Потом была Мамба. Узнал про Highload и Big Data, про издержки на разработку и обслуживание большого-пребольшого велосипеда. Затем примерил роль крупного эксперта веб-технологий в жирном стартапе: от любых бед нас спасёт фреймворк, в одну харю подниму супер-пупер проэкт и на Мальдивы. Django? Python очарователен, но нет. Может быть Yii? Да ну нафиг PHP вообще. V8, NPM, CoffeeScript, Jade, Express — раздолье. Крыша поехала от SocketStream (ого, все ещё жив), спасибо автору за наводку — привет, Meteor. Раздуплился на раз-два, как мне казалось. На сегодня уже прилично накопил full-time практики.



И со всем этим мы попробуем взлететь


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


Drupal, например

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


Фреймворк берёт на себя ответственность, ограничивая выбор сторонних решений. Изначально сомнительные решения мешают. Правильные решения устаревают. Метеор меняется и пакеты забрасывают: AutoForm, CollectionFS, Jade, IronRouter, поделки от гуру @arunoda. Сроки жизни пакетов, зависимых от фреймворка, значительно уступают библиотекам для платформы. И тут уже конкретная засада: на саппорте тысячи строк развесистого левого кода с обязательствами по обновлению зависимостей для новых версий фреймворка.


Детройт


Про Атмосферу и документацию

Атмосфера — официальный реестр пакетов, хранит тонны неработающего барахла. И больше не собирает статистику установок, хотя механизм можно встроить в Meteor (вспоминаю Drupal). От "богатства выбора" разбегаются глаза. Усугубляет ситуацию отказ от бесплатного хостинга демок на *.meteor.com — старт Galaxy закрывает возможность дальнейших внешних инвестиций? Ну, OK.


И эта ваша Атмосфера тормозит всю дорогу (хотя можно же ускорить, см. Fastosphere) — никому нет дела.


О редизайне документации. Ранее это была одна страничка с якорями. Кому она мешала? Больше не работают ссылки из Гугла (ребята видимо не в курсе, что гипертекст — это целостность ссылок, в первую очередь). Под воем критики спустя какое-то время появился внутренний поиск, но оставьте его себе (переехал на devdocs.io).


Чем больше ответственности берёт на себя фреймворк, тем больше технологическое отставание и в базовых пакетах. Отборные примеры: HTTP/2, Mongo, Node. Скорость сборки заметно возросла с переходом на версию 1.3 (долгожданная поддержка NPM), но это же натурально трэш по-прежнему.


Про CoffeeScript

Краеугольный камень продуктивности (да-да-да, говорю только за себя) отправляется на свалку. JS закусил удила, увы. Язык должен быть прост на базовом уровне. Но фреймворк обязан следовать трендам, ага. Реально встречал требование в вакансиях: отвращение к CoffeeScript. Посмотрите, как прекрасен React на CoffeeScript.


GraphQL закрывает вопрос масштабируемости LiveQuery? Поживём-увидим, только оно мне надо сегодня. Пока Horizon опережает в развитии Apollo. Плюс Виктор Грищенко на конференции HolyJS раскритиковал DDP. Мол нет там id-версии в пересылаемых пакетах. А это значит, что если пользователи вышли в оффлайн и вернулись через какое-то время, то "optimistic updates" (aka latency compensation) не сработает и данные потеряются.


А что написано на Метеоре?

Favro — нарядно, но исходники недоступны. Ещё есть RocketChat, но там печалька:


I believe that RocketChat will outgrow Meteor. We have been developing many workarounds to Meteor's limitations. As we develop more specific code to deal with our edge cases, move to ReactJS, create our own plugin/package system and Meteor 1.3 get more compatible with NPM, I can see we getting into a point when de-meteorising Rocket.Chat may be easier and necessary.

Больше ничего интересного не нашёл.


Кстати, вот альтернативные наборы на коленке лобзиком без претензии называться фреймворками: Meatier, lovli.js.


Только сейчас узнал, как оно было задумано:


Meteor is designed to take the technology that used to be exclusive to well-funded frontend teams at Facebook and Google, and put it in the hands of everyone.

Метеор все больше переходит на стек технологий Facebook, видимо хочет слиться в экстазе. Аминь!


Итого


Нужно дойти до горизонта, чтобы увидеть новый горизонт.


На небе только и разговоров, что о море и о закате


PS: ещё один прозрел.


PPS: why frameworks are evil.

Теги:
Хабы:
-29
Комментарии27

Публикации