Хотел предложить внести bem в хаб документации devdocs https://github.com/Thibaut/devdocs
пользуюсь им из alfred, так удобнее быстро переходить к описанию методов из API
Но bem выглядит совершенно непопулярным, т.к. количество звёздочек например у https://github.com/bem/bem-core/ сильно меньше 3k У bemhtml и того меньше: https://github.com/bem/bem-xjst
Условия:
- Source code documentations only (HTML format)
- Project must be open source (as defined by OSI) and actively maintained
- License must permit alteration, redistribution and commercial use
- Project must have >3k stars on GitHub or equivalent
Кажется, с другой стороны, пользовтелей сильно больше 3k, только они не очень активны
Этот показатель хотя и является несерьёзным, всё же используется как ключевой аргумент при переходе на технологию
Может быть сделать цель, увеличить звёздочки? Замотивировать их ставить
Можно в BEM чатик написать прямо, И опосредованно в блогах и на страницах на bem.info Флешмоб на внутреннем семинаре провести + внешние конференции, тоже можно обыграть как-нибудь
А мне иногда кажется, что я лично знаю всех, кто использует технологический стек БЭМ.
@apsavin +1
@a-x- так ты популярность библиотеке не принесёшь
@apsavin +1
Пока люди видят что-то страшное и непонятное в использовании (как внедрить в проект / workflow и т.д.), звёздочек будет мало.
Сейчас не так очевидно, как прикрутить всё к проекту. Нет гайдов по внедрению.
Людям приходится перекапывать форум в поисках решения. Те, у кого не хватило времени разобраться (сроки, терпение и т.д.) идут поливать грязью БЭМ на разных публичных ресурсах (хабр и т.д.). У меня хватило терпения (за это время кучу гадостей начитался), но использовать БЭМ (в контексте FullStack) начал только сейчас (но прошёл год! И перешёл полностью на NodeJS).
П.Н. Отдельно спасибо разработчикам БЭМа и другим членам сообщества за ответы и терпение (их нужно орденом уже награждать).
Согласен с @belozyorcev.
Кроме этого, есть еще пара моментов.
Bem - это сразу много проектов. На какой именно вы хотите сфокусировать старшторм?
P.S. я пользуюсь devdocs, но не пользуюсь bem. Пожалуйста, не надо захламлять и без того длинный список поддерживаемой документации своей проприетарщиной. Лучшем решением проблемы будет добавить локальные источники документации в alfred, чтобы и вам было хорошо, и остальным нормально.
Давайте начнем тогда описывать все плюсы, которые предоставляет БЭМ в сравнительной таблице это будет для старта очень хорошо
запилите таблицу в репозитории)) будем присылать PR
Насколько я понимаю БЭМ решает проблемы, которые для 99% разработчиков проблемами не являются. Рискну сказать, что в массах БЭМ понимается лишь как схема именования классов с кучей дефисов и подчеркиваний. В то-же время сама технология довольно сложна для понимания. Отсюда ждать популярности БЭМ не приходится. Пока оно используется Яндексом оно будет жить и я думаю этого достаточно - свою аудиторию пользователей технология будет набирать.
@webhive сейчас идут большие работы по упрощению инструментов. И есть шансы, что всё это уменьшит порог вхождения. А по поводу классов да... Каждый доклад который начинался - это история каскада и способы именования классов. Вот и сложилось понимание, что BEM - это длинные классы и только.
На будущее/настоящее. Есть приводить кому-то примеры BEM классов. Нужно говорить не BEM, а BEMCSS (касается сообщества) и никак иначе!
Вокруг BEM сложилось много неоднозначностей, которые ломают людям мозг.
Формулировка BEM-FullStack - очень пугает, что это что-то невообразимо сложное.
А вот так должна измениться терминология, которая сейчас сложилась в обществе:
@uradvd85
Я боюсь для подавляющего большинства проектов эти плюсы не будут достаточно важными, чтобы окупить смену стека. Всё, что предлагает БЭМ в той или иной мере есть и в других фреймворках и технологиях. Вот тут плюсы описаны "https://ru.bem.info/methodology/" - правда там один marketing bullshit, но тем не менее.
Проблемы, которые решает БЭМ довольно специфичны, и пока с ними не столкнулся - просто не поймёшь о чём речь. На мелком проекте передвинуть блок в другое место (поправив при этом HTML, CSS и JS) не является проблемой. Вы просто не сможете автору такого проекта объяснить в чем тут выигрыш, потому что он такую проблему исправит за 5 минут без всякого БЭМ-а. В его сознании БЭМ будет выглядеть нелепо - куча кода технологий - всё запутано и сложно.
Но когда попадаешь в достаточно крупный проект, который писало куча народу до тебя и куча народу поддерживает сейчас - вот тут приходит понимание. И банальная проблема передвинуть блок становится весьма нетривиальной задачей, потому. Стоит сдвинуть блок с насиженного места и всё - JS не работает, стили поехали, а искать что на что влияет в сотнях файлов та ещё задачка.
И вот тут БЭМ рулит, но повторюсь - пока в это не окунёшься понять это очень трудно. Вообще трудно оценить красоту решения проблемы которой для тебя не существует.
@just-boris
Яростно плюсую
@belozyorcev
Для начала непонятно даже зачем внедрять. Это не отменяет конечно проблемы отсутствия гайдов.
Блин - чё-то зацепился за https://ru.bem.info/methodology/ - просто порвало блин. Начну с конца.
Сходу враньё - ага блин - за утренним кофе сел и всё освоил
Опять неправда - БЭМ в данный момент жёстко завязан на nodejs. Есть какие-то попытки что-то там для PHP сделать, но пока надо констатировать факт БЭМ это node. Хотя может имеется в виду схема именование CSS классов? Тогда это опять путаница - давайте уж как-то решать, что такое БЭМ - полноценный стек технологий или просто схема именования классов.
Ну а где сейчас не так? Практически любой фреймворк сейчас умеет генерить код автоматически. Причём в БЭМ это в данный момент сделано далеко не лучшим образом (
bem-tools
признаны устаревшими, рекомендуется всё делать руками)Общая терминология позволяет разработчикам быстро переходить от проекта к проекту независимо от наличия отсутствия БЭМ.
Да блин достаточно уже .... основная страница проекта, которая должна вызвать вау эффект и сподвигнуть копнуть глубже - набор стандартных пустых фраз и штампов плюс немножко неправды. Первая же попытка попробовать упирается в мёртвую устаревшую документацию и невозможность что либо сделать. Отсюда разочарование и негативная реакция.
Вообще от погружения в БЭМ остаётся двоякое впечатление - с одной стороны неплохая идея, методология. Работающая реализация. Но блин абсолютно никакая документация, подача. Стойкое ощущение, что команда разработчиков то-ли занята по горло и некогда им, то-ли мечутся из стороны в сторону, распыляя силы на разные сайд проекты. Сайтом я вообще уверен, что занимается другая команда просто бездумно нарезая туда куски рабочей документации, добавляя маркетинговых перлов.
@belozyorcev
Поддерживаю! Когда первый раз написал на форуме не ожидал вообще, что кто-то ответит ... ну или думаю пошлют подальше типа "сам дурак". Довольно неожиданно было получить внятные ответы. Это однозначно плюс. Но опять же за отсутствие внятно документации отдуваются разработчики на форуме - это на мой взгляд неправильно.
@belozyorcev
Это кстати вносит ещё больше путаницы. Может стоило заморозить текущий БЭМ, а все эти нововведения добавить в некий БЭМ 2.0? В сети куча гайдов, где используется
bem-tools
, но блин когда доходит до дела оказывается, что они устарели - используйтеenb
.... ааа кстати там есть далеко не всё но вы не волнуйтесь мы сейчас пилим новыйbem-tools
... и кстати можно использоватьgulp
, только он недоделан, но вы подождите.@webhive
Я редко пользовался линтерами для кода... Он был из-за этого немного грязноват. Тут можно тот же аргумент привести в сторону БЭМ. (с линтерами ведь разработчики знакомы?)
БЭМ "Перезагрузка"
В главных ролях - data, html, css.
@belozyorcev
Только когда увидишь, что такое линтер, сходу понятно, что это такое и что это даст. Ну и линтер подключил/отключил - затраты небольшие. А с БЭМ-ом всё сложнее - и не въедешь в технологию сходу и не прикрутишь за пять минут - это фактически полная смена стэка (я про полный БЭМ).
@belozyorcev
На самом деле так: BEMCSS -> БЭМ методология (или БЭМ нейминг, если речь буквально про подчеркивания в классах) BEM-FullStack -> БЭМ платформа
Историческая справка: мы сами нигде и никогда BEMCSS не использовали и не планируем. FullStack у нас где-то звучал, но это действительно неудачное название.
@webhive
Воу-воу, там написано про «прочитать», а не освоить ;) А прочитать раздел https://ru.bem.info/methodology/ действительно можно. Чтобы освоить, конечно, потребуется какая-то практика. Но вся методологическая часть сводится к:
Правда же, человек, которому это вообще зачем-то нужно, в состоянии осознать эти пункты и начать пробовать их применять за вполне небольшое количество времени?
Алярма! Это раздел про методологию! Он специально был отделен от раздела про платформу настолько, что между ними даже нет прямых ссылок. В шапке каждого раздела прямо явно и написано: «Методология» или «Платформа». Как еще понятнее разделить-то?
Этот пункт скорее про технологии сборки и историю про то, что из единой декларации можно сгенерировать разные страницы для разных окружений. И да, у других ребят тоже есть кодогенерация, чему это противоречит?
Ты предлагаешь этот кусок просто удалить или есть идеи, что положить на морду методологии, чтобы вызвать вау-эффект?
Мы актуализировали часть про методологию, над остальными разделами работаем. Не откажемся от помощи ;)
В первой части угадал, во второй — нет. Команда совсем небольшая, у нее помимо работы собственно над кодом (bem-core, bem-components, ENB, куча пакетов в bem-sdk и так далее), как ни странное, есть еще продуктовые задачи в Яндексе. Сайтом bem.info занимаемся мы же. И выбор выглядит примерно так: выпустить релиз библиотеки, написать доку на уже рабочий инструмент, поправить баги или еще раз собраться и переписать морду (нам это, надо признать, дается с трудом, мы больше под JS заточены). Сегодня можно выбрать что-то одно, все остальное — в беклог.
Документатор на данный момент у нас на все технологии ровно один. При этом документацию мы стараемся делать на 2.5 языках. Так что да, она по построению не может успевать за кодом, если люди из сообщества не будут помогать как минимум в виде фидбека и багрепортов.
Уже то, что ты пишешь про проблемы — очень помогает. Если сможешь сформулировать какие-то решения — будет совсем круто.
Спасибо @tadatuta за прекрасное объяснение, в 5 пунктах содержится все, что нужно знать для начала.
Мне кажется, большинство непоняток с документацией возникают из-за предвзятости читателя. Он явно уже слышал упоминание этих трех букв и имеет сложившиеся о них впечателение.
То ли дело, если назвать все это новым именем и начать писать заново. Итак:
Достаточно заменить наименование, и уже идея звучит намного привлекательнее
Первым делом определиться бы, что означает именно БЭМ. Одной фразой, а лучше словом. А всё остальное называть вроде %ИМЯ_ШТУКИ% для БЭМ.
Тут путаница уже с самого начала. В названии участвует слово, которое характеризует понятие. А если в тексте встречается просто БЭМ, то сразу непонятно о чём речь. Фраза "Сайт на БЭМ" что означает? Непонятно.
Про платформу. Представляется, что платформа - это какая-то среда выполнения. Аппаратный комплекс, виртуальная машина, фреймворк и т. д. Я пишу приложение под эту платформу, оно в ней выполняется. В случае с БЭМ-платформой при первом рассмотрении мы имеем черный ящик в виде project-stub. А что на выходе? Это уже можно деплоить вместе с сервером или руками копировать HTML? Непонятно.
Допустим мы захотели узнать, что такое БЭМ. Вбили в Гугл эти три буквы и смотрим:
Сайт проекта:
Вики:
Яндекс:
Делаем вывод, что БЭМ - это какая-то непонятная каша, и идём писать на Хабр гневный комментарий.
@tadatuta
Только в начале капсом написано "ЛЕГКО ИЗУЧИТЬ". Для меня как для человека пытающегося изучить эту технологию уже в который раз звучит как издевательство. На всякий случай уточню - я не являюсь БЭМ-хейтером - идея мне нравится, я вижу плюсы и хочу попробовать (ну это так - небольшое отступление - просто много критикую).
AAAA! Ну почему вот это не написать в разделе Методология вместо текущего контента? Ну ты же сам всё можешь легко объяснить простым русским языком. Сравни это с тем, что есть на странице - ничего общего. Ты написал про методологию, а там какая-то чушь.
Да, но проблема одна - на странице Методология нет этих пунктов, зато много бла-бла-бла про производительнось и эффективность, что на мой взгляд к методологии никакого отношения не имеет.
Хммм кстати @sefus чертовски прав - наверно действительно стоит отделить название методологии от названия стека. Это должно разрешить многие проблемы с путаницей. Я бы стэк переименовал. Но на данном этапе развития не факт, что реализуемо.
Я тут подумал, перечитал раздел и кажется понял в чём тут проблема. Начитается раздел как "Эти проблемы решены БЭМ-методологией ..." - тут проблем нет, всё понятно и логично. Далее "БЭМ ПРЕДЛАГАЕТ ..." вот тут уже контекст переключается на БЭМ (без методологии), а так как есть определённая терминологическая путаница, а дальше текст идёт без упоминания БЭМ то текст ниже воспринимается как не относящийся к методологии, тем более такие понятия как "эффективность" и "масштабирование" на мой взгляд к методологии вообще отношения не имеют. Ну и на закуску "ЭКСПЕРТЫ РЕКОМЕНДУЮТ БЭМ", "БЭМ ИСПОЛЬЗУЮТ", "ИСПОЛЬЗУЙТЕ БЭМ И ВЫ". Про методологию уже ни слова, а что за БЭМ в данном контексте уже неясно.
Но это так - моё мнение. Не факт, что верное.
Пролистал страницу методологии... Как по мне, так всё норм. Есть желание "заглянуть под капот".
Можно кстати сделать скил-лист
чек-листна страничке.типа:
А дальше человек уже сам выбирает нужный уровень, куда он хочет стремиться и видит предстоящий "алгоритм" умственных действий.
Или так:
#
Что вы хотите от БЭМ?
Вам нужно:
#
Что вы хотите от БЭМ?
Вам нужно:
Ну допустим методология всегда нужна. Я бы предложил всё-таки добавить реальные примеры когда есть проблема, решение традиционным путём сложное, и тут же решение на БЭМ - простое и элегантное. Без всей этой мути про быстродействие, масштабируемость и повторное использование. Вот те классические примеры когда CSS каскадом, и блок двигаем с одного места на другое и теряем стили.
@belozyorcev
Чеклист мне кажется не прокатит - там всё связано-увязано. Я бы как-то от "простого к сложному" попробовал. Сначала классическая проблема с CSS, потом логичный переход к блокам, потом - руками блоки сложно -> bemjson, потом повторное использование кода -> компоненты + bemhtml, потом блоками нужны данные - bemtree. Ну и как-то это всё нужно автоматизировать - тут уже всякие
enb
. Хотя тоже не вполне уверен. Идея такая, что каждый дойдёт до своего максимума. Ну и с любого уровня можно типа двинуться дальше если возникнет желание.@webhive
https://github.com/bem/bem-forum-content-ru/issues/1090#issuecomment-238283548
Я просто описал свой путь к использованию БЭМ. От базы до полного набора. И думаю каждый такой-же проходит.
Да не упрекнуть хочу как может показаться по моим постам. Как-то обидно что-ли вроде идея-то отличная, но всё хромает из-за каких-то мелочей. Ну и непонятны вот эти метания например с
gulp
-ом. Почему не навалиться и все эти усилия не приложить например к тому-жеenb
раз уж он специально был разработан? Я думаю вложение в инфраструктуру (сборка, документация, гайды), должны привлечь людей, а дальше уже эта экосистема должна сама заработать давая в том числе отдачу и вам самим (Яндексу) в виде какого-то кода, реализации на других платформах, компонентов и т.п.Пока насколько я понимаю всё держится на плечах команды БЭМ в Яндексе.
@webhive
Всё для того, чтобы уменьшить порог вхождения.
Сборка через Gulp и BEM-SDK