Как внести вклад

Вклад принимается, и до открытия pull request стоит знать три вещи: соглашение, инструменты и то, что сейчас помогает больше всего.

Соглашение (CLA)

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

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

Подпись — строка, которую вы добавляете сами, в своём же pull request, в .github/cla-signatures.json. Коммит аутентифицирован вашей учётной записью GitHub, датирован и хранится в истории — ровно то, чем должна быть запись о согласии. Подпись проверяет гейт на каждом pull request; бота с правом записи в репозиторий нет.

Прочитать соглашение

Инструменты

Node 22 или новее и Yarn 1.22 Classic — именно эта версия, потому что lock-файл совместим только с ней. CI гоняет на Node 22 и 24.

Это правило монорепозитория, а не пакета. Установка Granularity в ваше приложение работает с npm, pnpm, yarn и bun — страница установки показывает все четыре. Путаница между этими двумя вещами стоит полдня, поэтому она проговаривается прямо. Установка

Порядок работы

  1. Ветка от main
  2. правка и тесты к ней
  3. локально прогнать линт, тесты и сборку
  4. открыть pull request в main — CI повторит все три шага для пакета и витрины

Стиль

ESLint с @antfu/eslint-config, типы порождает vue-tsc на сборке и ни одной ошибки не допускает, коммиты — Conventional Commits: последнее рекомендация, а не правило, и она облегчает сборку журнала изменений.

Релизы

Версия поднимается в манифесте пакета, на main уходит тег vX.Y.Z, и тег запускает публикацию в npm с provenance. Журнал изменений выпускаемого пакета обновляется тем же pull request — общего журнала в корне нет, у каждого пакета свой.

Под какой лицензией окажется вклад

Apache-2.0 с оговоркой об этичном использовании. Оговорка добавляет ограничение по области применения поверх Apache-2.0, что делает проект source-available, а не OSI-совместимым; на вклад она распространяется ровно так же, как на остальной код.

Лицензия целиком

Что сейчас помогает больше всего

Не список пожеланий: это дыры, в которые портал упёрся, пока строился, и каждую из них сегодня видно на сайте.

Расскажите, что используете

Бейдж для вашего README. Тёмный вариант — /badge/built-with-dark.svg, рядом ещё два: version.svg и components.svg, и их числа считаются на каждой сборке, а не набираются руками, — в вашем файле они не устареют.

Built with Granularity

Markdown
[![Built with Granularity](https://granularity.tech/badge/built-with.svg)](https://granularity.tech)

Живой компонент помещается и в статью: кнопка «Встроить» под любым примером на странице компонента копирует готовый <iframe>, а ссылка на страницу компонента, вставленная в Notion, Ghost или WordPress, сама превращается в то же демо.

Правила поведения

Файла с кодексом поведения пока нет, и делать вид, что он есть, хуже, чем сказать прямо. Этическая оговорка в лицензии — про другое: она регулирует использование продукта, а не то, как люди разговаривают друг с другом.

Репозиторий