Как устроена юридическая шпаргалка GitHub и зачем разворачивать choosealicense.com локально

25 июл 2026
4,203
1,620
497
1 месяц

Вы наверняка встречали форму выбора лицензии при создании нового репозитория на GitHub. Пара кликов, и в проекте появляется файл LICENSE с правильным копирайтом и текущим годом. Мало кто задумывается, но вся эта логика, короткие понятные пояснения и подсвеченные иконками права живут в открытом репозитории github/choosealicense.com.

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

Зачем нужен этот репозиторий

В первую очередь это статический сайт на Jekyll. Его главная задача — разложить сложные юрдокументы на понятные категории без оценочных суждений. Авторы не навязывают конкретную лицензию, а дают инструмент для самостоятельного выбора.

Помимо работы веб-сайта, контент репозитория регулярно импортируется в Ruby-гем Licensee. Именно эта библиотека под капотом самого GitHub определяет тип лицензии в ваших проектах, выводит её статус в интерфейсе репозитория и отдает данные через GitHub API.

Как устроены лицензии внутри

Вся магия сайта и интеграций строится на структурированном описании каждого документа. В папке _licenses лежат Markdown-файлы. Каждая лицензия снабжена шапкой в формате YAML (front matter) и полным юридическим текстом.

Реклама

В YAML-шапке задаются метаданные:

title: MIT License
spdx-id: MIT
description: A short and simple permissive license...
how: Create a file named LICENSE containing the license text...
using:
  babel: https://github.com/babel/babel/blob/main/LICENSE
permissions:
  - commercial-use
  - modifications
  - distribution
  - private-use
conditions:
  - include-copyright
limitations:
  - liability
  - warranty

Правила разделены на три категории: разрешения, условия и ограничения. Вся расшифровка отдельных атомарных правил вроде commercial-use или include-copyright хранится отдельно в файле _data/rules.yml. Если нужно добавить новое условие, вы описываете его один раз в rules.yml и ссылаетесь на него в файлах лицензий.

При создании нового репозитория GitHub берет шаблон и подставляет реальные значения вместо встроенных переменных:

  • fullname или login автора
  • year текущего года
  • project для названия репозитория
  • projecturl для ссылки на проект

Автоматическая сборка и мультиязычность

Сайт поддерживает переводы интерфейса и кратких аннотаций через Jekyll-плагин jekyll-polyglot. Сами юридические тексты лицензий принципиально не переводятся, чтобы не искажать правовую суть оригинальных документов.

Поскольку jekyll-polyglot не входит в стандартный список поддерживаемых плагинов GitHub Pages, деплой организован через GitHub Actions. Рабочий процесс собирает сайт и публикует готовый статический бандл в ветку gh-pages.

Build Status

Запуск проекта на своем компьютере

Развернуть локальную копию сайта можно за пару минут. Потребуются установленные компиляторы make и cmake.

На macOS зависимости ставятся через Homebrew:

brew install make cmake

В Ubuntu или Debian достаточно стандартного пакетного менеджера:

sudo apt-get install make cmake

После этого клонируем репозиторий вместе с подмодулями и запускаем внутренние скрипты:

git clone https://github.com/github/choosealicense.com.git --recursive
cd choosealicense.com
./script/bootstrap
./script/server

Сайт поднимется по адресу http://localhost:4000. Вы сможете редактировать файлы в _licenses и сразу видеть результаты в браузере.

Как использовать репозиторий в своих проектах

Локальная сборка или форк проекта пригодятся в разных ситуациях:

  1. Создание внутренней базы юридических документов. В крупных компаниях часто действуют свои правила использования стороннего кода. Можно сфоркать репозиторий, добавить туда корпоративные требования и развернуть внутренний справочник.
  2. Генерация лицензий в CLI-утилитах. Если вы пишете собственный генератор шаблонов проектов, отсюда удобно брать выверенные тексты LICENSE с переменными автоподстановки.
  3. Автоматический аудит кодовой базы. Опираясь на файлы правил из _licenses, легко написать простой линтер для проверки сторонних зависимостей в вашем CI/CD.
  4. Изучение архитектуры многоязычных Jekyll-сайтов. Кастомный пайплайн сборки с плагином jekyll-polyglot служит хорошим примером для собственных статических проектов.

Что в итоге

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

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.