Войти с помощью github
Форум /
вынесу из комментариев историю про модификаторы:

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

Изначально были id-шники, и для блоков (например, формы поиска) мы писали как-то так:
HTML:
...

CSS:
#search { ... }


Потом мы поняли, что блоки могут повторяться на странице и нам хочется как можно меньше делать изменений при этом. Так например форма поиска однажды появлялась внизу выдачи, чтобы было удобнее перезадавать запрос по прочтении результатов. И мы приняли решение, всегда использовать классы, чтобы лишний раз не менять css, если блок будет повторяться:
HTML:
... верхняя форма поиска ...
...
... нижняя форма поиска ...

CSS:
.search { ... }


Потом настала необходимость немного изменить нижнюю форму поиска, сделать её не такой большой. Мы придумали добавлять ещё один класс-модификатор (тогда это было просто слово, а не ключ/значение как сейчас, но об этом ниже):
HTML:
... верхняя форма поиска ...
...
... нижняя форма поиска ...

CSS:
.search { ... основные стили ... }
.search-small { ... стили для уменьшения размера ... }


Отдельно стоит сказать, что из-за IE мы тогда не смогли использовать совмещение классов вот так:
HTML:
... нижняя форма поиска ...

CSS:
.search.small { ... стили для уменьшения размера ... }

И это позже нам даже помогло, когда мы стали смешивать разные БЭМ-сущности на одной HTML-ноде.

Время шло, блоков становилось больше и они становились сложнее, перестало хватать слов одиночных чтобы понятно именовать сущности. Мы попробовали несколько вариантов:
searchform searchform-small — один токен пишется одним словом, разделитель токенов дефис (не очень красивые слова получались)
SearchForm SearchForm-Small — CamelCase для слов в токене, разделитель токенов дефис (мы привыкли не использовать верхний регистр и этот вариант тоже не прижился)
search-form search-form_small — один токен пишется с дефисами между словами, разделитель токенов нижнее подчёркивание (прижившийся вариант, чем-то напоминает xsl)


Примерно тогда же, мы начали использовать что-то типа венгерской нотации, указывая разные префиксы для разных типов блоков. Были разные b-, l-, w-, g- и ещё какие-то, но в итоге можно считать выжившими b- для визуальных самостоятельных блоков и i- для вспомогательных, не использующихся в явном виде самостоятельно. Стоит сказать, что сейчас эти префиксы уже скорее дань истории и та часть, которую мы не меняем по причине сильной распространённости внутри, а вовсе не что-то обязательное (без префиксов легко можно жить!).

Прошло ещё больше времени и модификаторов стало становиться ещё больше. Появились такие модификаторы как: цвет, размер, тип и прочие. Некоторые модификаторы стали пересекаться по значениям. Появились проблемы в работе с модификаторами из клиентского JS, т.к. класс не содержал имени модификатора, а следовательно небыло полной информации. И мы пришли к тому, что модификатор это именно ключ (название модификации) и значение. И это должно быть в CSS-классе:
HTML:
... нижняя форма поиска ...

CSS:
.b-search-form { ... основные стили ... }
.b-search-form_size_small { ... стили для уменьшения размера ... }

К слову, это было одно из самых болезненных изменений, которое очень долго внедряли по сервисам.

Практически в тоже время мы поняли, что очень удобно для многих случаев, иметь возможность смешивать несколько БЭМ-объектов на одной HTML-ноде.
HTML:
...

К этому времени это получилось абсолютно логично и без всяких проблем, благодаря тому, что в классе для модификатора содержалось имя блока (привет IE из-за которого нельзя было делать в CSS .search-form.size.small). В противном случае была бы проблема с пересечением модификаторов у смешиваемых блоков/элементов.

Вот такая история Надеюсь она проливает свет на исходный вопрос, а если нет, то думаю всё равно она может быть интересна.