Как Paradigm и VKUI стали одной дизайн-системой

Рассказываем, как взяли лучшее из двух крупных систем и преодолели технические ограничения при слиянии.

Как Paradigm и VKUI стали одной дизайн-системой
Валерий Сироткин
арт-директор в команде дизайна Mail.ru

Paradigm — одна из первых российских дизайн-систем: она существует уже около 10 лет и постоянно развивается и обновляется. Благодаря организации и принципам, заложенным в самом начале, даже после ребрендинга компании Paradigm остается основной системой для Почты, Облака, Календаря, Заметок и Задач от Mail.ru.

Точка слияния дизайн-систем

До ребрендинга компании Mail.ru Group в VK дизайн-система Paradigm использовалась как основная во многих продуктах. Исключением были продукты ВКонтакте — у ребят была собственная библиотека React-компонентов VKUI. Именно с ее помощью создавались приложения ВКонтакте и сайт vk.com.

После ребрендинга появилась стратегическая необходимость в более удобной интеграции проектов с точки зрения не только бизнеса, но и пользовательского опыта. Некоторые продукты стали адаптироваться под новый бренд VK, например VK Мессенджер или VK Добро. Их командам нужно было быстро вносить изменения на уровне интерфейса — использовать единый набор иконок, палитру или шрифты.

Стремясь упростить интеграцию, команды начали использовать технологии и компоненты Mail.ru в сервисах ВКонтакте. Продукты, ранее использовавшие разные компоненты, начали думать о переходе на общую базу. Это привело к идее объединить существующие дизайн-системы.

Объединиться решили вокруг VKUI: ее исходный код был открыт, и все команды могли работать с ним без лишних доступов. В качестве основной технологии мы выбрали React — большинство проектов компании использовали именно его для работы с компонентами.

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

Общая база токенов

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

За основу мы взяли существующие дизайн-токены VKUI. Мы стремились не увеличивать их количество, но сохранить при этом достаточно цветов для компонентов. Поскольку VKUI поддерживает и темную, и светлую тему, некоторые цвета дублировались. Чтобы понять, как быть с дублями, команда дизайн-системы Paradigm поехала в питерский офис — работать вместе с дизайнерами ВКонтакте. В итоге мы выделили 120 токенов цветов и типографики, которые покрыли все компоненты и стали общими для Paradigm и VKUI.

Токен — это переменная. В работе над дизайн-библиотеками элементы визуального языка, такие как цвета и шрифты, часто заменяются токенами для удобства кастомизации. Например, colorAccent=#005FF9, где colorAccent — это токен, а #005FF9 — его значение.

Так обе дизайн-системы получили базовые темы для разных брендов: для продуктов под брендом VK базовой темой стала VK base, а для сервисов Mail.ru — Paradigm base. У тем один и тот же набор токенов, который отличается только значениями. Таким же образом мы сохранили акцентные цвета и особенности типографики.

Как Paradigm и VKUI стали одной дизайн-системой

Такой подход позволил нам объединить лучшее из двух дизайн-систем. Из VKUI мы взяли работу с темными и светлыми темами и адаптивные компоненты. Из Paradigm — механизм генерации цветов состояний и архитектуру тем проектов.

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

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

Чтобы сохранить общие процессы в работе с токенами мы разработали единый подход к их добавлению и наименованию. Мы описали структуру имени и все его составляющие с параметрами. Использование такого подхода позволяет по названию определить, что это за токен и для чего он используется. Например, для токенов с прозрачностью мы добавляем специальную метку, чтобы отличать их от остальных.

Как Paradigm и VKUI стали одной дизайн-системой

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

Дизайн-система глазами дизайнера

Перейдем от разработки к дизайну. Как мы знаем, для дизайнера продукта основным инструментом является Figma, а для работы с дизайн-системой используются отдельные Figma-библиотеки. Вы можете посмотреть, как устроены наши библиотеки, в Community — Paradigm и VKUI.

Организация компонентов внутри библиотек значительно отличается. Paradigm использует подход, где все компоненты размещены на одной странице, это позволяет дизайнеру быстро находить необходимое. VKUI наоборот разделяет компоненты по отдельным страницам: это удобно при поиске по названию. Поэтому общую дизайн-библиотеку мы разделили на две части, чтобы сохранить привычные паттерны для дизайнеров из разных команд.

Токены и параметры компонентов у нас одинаковые, так как эти же значения использует и разработка. Но если все объединить внутри одной библиотеки, настройка компонентов станет сложнее. Variables позволяют быстро менять значения переменных, но это требует больших ресурсов для работы и поддержки.

Разделив библиотеки, мы сообщаем дизайнерам: если вы работаете с брендом ВКонтакте или VK — для вас подходит VKUI library, для работы с проектами Mail. ru — Paradigm base.

Как Paradigm и VKUI стали одной дизайн-системой

Используя разные библиотеки, мы можем дополнять их специфическими компонентами для наших продуктов. Например, общая библиотека VKUI содержит элементы мессенджера, а для Paradigm можно добавить портальную навигацию или ячейку письма.

Мы постоянно обмениваемся лучшими практиками между командами. Например, при обновлении библиотеки Paradigm команда дизайна Mail.ru подробно описала параметры каждого компонента c допустимыми вариантами использования и примерами. Команде ВКонтакте такой подход понравился, и теперь подобной документацией наполняется и библиотека VKUI. При добавлении новых компонентов мы также синхронизируемся и стремимся, чтобы эти компоненты решали проблемы разных продуктов.

Процессы

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

Самый сложный процесс для нас — добавление новых компонентов. Так как дизайн-системы объединились, теперь они должны соответствовать требованиям большего количества продуктов и быть универсальными. К тому же в разработку компонентов включаются разные команды. Поэтому со стороны дизайна макет создается со всеми параметрами сразу, и чтобы угодить всем, и этих параметров иногда получается довольно много.

Мы учитываем темную и светлую версию, адаптивность, размечаем компонент токенами и пишем подробную документацию. Все эти подготовительные работы проводятся перед тем, как компонент переходит в разработку, поэтому от идеи до реализации теперь проходит больше времени. Зато в итоге мы получаем компонент, который позволяет решать разные задачи в нескольких продуктах.

Как Paradigm и VKUI стали одной дизайн-системой

Хороший пример такой универсальности — компонент Accordion. При переходе на VKUI в почтовой авторизации команда разработки заметила, что подходящего компонента нет. В то же время у ВКонтакте был запрос на компонент с похожей механикой. Мы смогли объединиться и быстро его добавить. Благодаря токенам для разных проектов он выглядел по-разному. Мы смогли сохранить его визуальные особенности и аккуратно встроить в интерфейс.

Что дальше

Несмотря на то, что теперь Paradigm и VKUI — это одна объединенная дизайн-система компании VK, Paradigm продолжает развиваться и обновляться и как независимый проект. Ведь дизайн-система для нас — не только технический инструмент или необходимость в строгом соответствии гайдлайнам, но и ценности, стандарты и, конечно же, поддержка и быстрая реакция на изменения в продуктах. Есть несколько направлений, в которых нам предстоит еще много работы.

Нужно обновить сайт. Документация Paradigm давно стала примером для многих команд и дизайнеров. На сайте мы описали основные приемы визуального языка, анимации и работы с доступностью. Эта информация остается актуальной, а некоторые описания в ближайшее время будут дополнены. Также мы опишем все обновления, связанные с переходом на компоненты и токены VKUI.

Нужно внести обновления в документацию. У нас есть большая база знаний, которая продолжает расти. Статьи о лучших практиках работы с компонентами, схемы внутренних процессов, документация по именованию токенов и для разработчиков, которые работают с Paradigm — все это должно обновляться и поддерживаться.

Совершенствование самих компонентов. Мы продолжим создавать и развивать внутренние компоненты Paradigm, которые необходимы только для продуктов Mail.ru под управлением нашей дизайн-системы.

Cоветы

В большой компании создание и поддержка единой дизайн-системы — задача не из легких. Различные продукты со своими требованиями и разными брендами делают визуальное разнообразие проектов неизбежным.

Однако есть общий набор компонентов с одинаковыми функциями, отличающихся лишь цветом, скруглениями или размерами текста. Кнопки и поля ввода на всех сайтах и приложениях функционируют одинаково, несмотря на визуальные различия. Эта общая структура и должна быть основой любого компонента. Чем проще — тем лучше. История Paradigm именно об этом.

Как Paradigm и VKUI стали одной дизайн-системой

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

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

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

В этой статье мы рассказали, как удалось сохранить принципы, заложенные в основу Paradigm и пройти путь объединения с VKUI в общую дизайн-систему VK. Единая компонентная база в разы ускорила процесс разработки, а изменения, которые происходят в разных дизайн-системах теперь обогащают библиотеки и VKUI и Paradigm.

2929
20 комментариев

Статья прикольная, но есть множество вопросов) Если статья написана для пользы, а не рекламы ВК. Например: как вы организуете токены, используете только нативные Figma или совместно с плагином Tokens Studio, если да то почему? Что за метка для токена с прозрачностью, какой для нее нейминг? Как проходит ревью и когда компонент попадает в общую ДС, а когда останется внутри продукта, как организованы токены типографики и отступов? Удалось ли решить вопрос с токеном размера шрифтов, это когда ты хочешь поменять размер, а подставляется числовое значение. Если да, то как?)

1

Да, к сожалению формат и несколько редакторов не позволили уместить все. Теперь по вопросам,

Раньше использовали Tokens Studio для синхронизации, но теперь перешли на Variables. Есть стремление во всем использовать нативные решение + переключение тем теперь – просто сказка.

Для токенов с прозрачностью у нас добавляется в названии Alpha или Overlay. На уровне репозитория есть проверка этого тега. И если в коде значение задано с прозрачностью, а тега в названии нет, то такие токены не даст залить в общий репозиторий.

Компонент переходит в общую дизайн–систему когда он требуется более чем двум проектам. Сначала ревью на уровне дизайна проводит команда дизайна дс, затем уже обсуждаем технические моменты.
Для некоторых компонентов есть токены для размеров. Они добавлены в репозиторий, но в Figma пока не поддерживаем.

Типографика пока добавлена просто стилями в Figma. Для нее пока не используем Variables, поскольку у нас значения размеров шрифтов в основном одинаковые. При этом в стилях есть разделение на мобильную и десктоп версию. Как устроена библиотека Paradigm можно посмотреть в Figma Community. Там версия уже с Variables и типографикой.
https://www.figma.com/@paradigm

8

Любая большая компания — почти религиозная секта, пока вы проводите свои ритуальные обряды и колдуете, простые ребята выживают фрилансом.

Даже читать не хочется подобное, а раньше это все было так интересно...

3

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

Комментарий недоступен

Привет, статья не про изобретение чего-то нового, а про использование разных "изобретений" и подходов в своей дизайн–системе.

Да, кнопки есть везде, но при этом они выглядят по разному. Технически продукты mail.ru и ВКонтакте используют одни и те же компоненты(в коде), но при этом они выглядят по разному.

7

В какое же уродство превратили веб версию ВК. Я не знаю что за бездарь сместил ленту влеву, когда раньше она была по центру.

2