Непросто отказываться от иллюзий, но пришла пора подвести черту. Может кому-то сгодится на распутье выбора. Ну и внукам потом буду показывать. Этой истории уже 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.

Поделиться с друзьями
-->

Комментарии (27)


  1. AllexIn
    10.07.2016 07:17
    +29

    Что это? О чем это? Зачем это?


    1. voidMan
      10.07.2016 07:37
      +16

      Видимо человека ещё не «отпустило» )


  1. KhodeN
    10.07.2016 08:17
    +30

    Какой-то дамп сознания


    1. comerc
      10.07.2016 09:41

      В точку! Попытался зафиксировать текущее состояние мыслей. Каждый абзац — отдельная карточка в Trello. Сорян, первые 100 просмотров на счетчике — всю ночь вычитывал и редактировал, чтобы привести в удобоваримый вид. Уже наизусть могу повторить написанное.


      У меня буквально перевернулся мир после этого доклада, две недели в режиме форсажа принимаю новую информацию.


      1. zuluss
        10.07.2016 10:10
        +5

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


      1. AllexIn
        10.07.2016 10:10
        +7

        Заведите ЖЖ


      1. napa3um
        10.07.2016 10:44
        +14

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


    1. Per_Ardua
      10.07.2016 10:28
      +2

      После частичной фрагментации


  1. gibson_dev
    10.07.2016 11:05

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


  1. zuluss
    10.07.2016 11:44
    +8

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


  1. k12th
    10.07.2016 13:43
    +6

    А что непонятного-то? Метеор — барахло, это было ясно уже давно. Монолиты еще ни к чему хорошему не приводили («Космическая одиссея» не в счет:)).


    1. Large
      10.07.2016 16:56
      +2

      Да, это было предсказуемо. Вопрос в том — что не барахло среди серверных nodejs фреймворков? Попыток что-то сделать было много, а чего-то уровня django так и не построили. С микрофреймворками все по лучше, но иногда не хочется в очередной раз делать авторизацию, рест и прочие стандартные вещи снова и снова.


      1. k12th
        10.07.2016 17:10
        +1

        Есть такая проблема, согласен. Но я думаю, что еще все впереди, django тоже не сразу строился. Интересно, кстати, как там sails.js поживает.


        1. Large
          10.07.2016 17:32
          +1

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


          1. AxCx
            10.07.2016 20:03
            +2

            Обратите внимание на think.js https://thinkjs.org/


            1. murzilka
              14.07.2016 17:23

              Почему на него обратить внимание? Почему не на koa/sails/restify/derby/hapy/strapy...?


        1. B_Rudenko
          10.07.2016 22:08
          +1

          Да как то непонятно у них все. Какая то часть мейнтейнеров отвалилась от проекта и начала пилить свой самый лучший фреймворк, trailsjs называется.


      1. stalkerg
        11.07.2016 12:59

        Django это как раз монолит. Для python есть много куда более приятных и гибких фреймворков (я до сих пор использую Pylons).
        А в последнее время так вообще, во многом плюсы у Tornado и asyncio перевешивают в пользу отказа от не асинхронных фреймворков.


  1. AntonSor
    10.07.2016 14:41

    А что это вообще такое? Почему не обычное Delphi?


  1. NeoCode
    10.07.2016 17:05
    +7

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


  1. spmbt
    11.07.2016 15:18

    А не подскажут ли знающие, что лучше Метеора и других full-stack (или тут ещё одно слово-сининим вкручивают — консистентных, что ли) сред программирования на JS? Где максимально избавились от фреймворковости?


    1. k12th
      11.07.2016 15:53

      Посмотрите Derby.js — фреймворк того же назначения, но клянется, что модулярный.


      1. spmbt
        11.07.2016 19:30

        Модулярность — это не то. Ангуляр модулярный, но жёсткий по структуре. А есть ли либы с единым JS, но примерно как Backbone по отношению к Ангуляру, Ember, ExtJS, и многим другим?


        1. k12th
          11.07.2016 19:55

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


    1. comerc
      12.07.2016 10:24

      Как говорит Александр Соловьев новым разработчикам при приеме на работу про ClojureScript: мы кодим на JS, просто это такой немного странный синтаксис. :)


      Там om.next (!), все остальное подбираешь сам по вкусу на уровне платформы.


      1. murzilka
        14.07.2016 17:26

        Гугл подсказывает что Александр Соловьёв — актёр. Трудно представить с какой целью он нанимает разработчиков. Расскажете?


        1. comerc
          15.07.2016 09:02

          Ссылка была уже выше.