🧰 Бесплатные сервисы для OSS: каталог и чеклист

Статус: проверено по официальным страницам · 2026-08-17 (условия OSS-программ часто меняются — при подключении спустя месяцы перепроверять pricing-страницу). Контекст: организация fortemate (Free), публичные репо; приватные остаются на личном аккаунте. Уже используются: SonarCloud (4 Scala-репо под rabestro), CodeRabbit, Codecov, CodeQL/Dependabot/secret scanning, Uptime Kuma + Grafana на homelab.

Три находки, которые важнее всего каталога

  1. SonarCloud-проекты НЕ переносятся между организациями. SonarCloud-организация жёстко привязана 1:1 к GitHub-аккаунту; официальный ответ SonarSource: «recreate your project… essentially start from 0». Для 4 Scala-репо при переносе в fortemate: новая SonarCloud-организация (кнопка «Get SonarQube for OSS», без заявки) → пересоздать проекты → новые project key + SONAR_TOKEN в CI каждого репо → переиздать бейджи. История дашбордов/quality gate обнуляется — это цена переезда, и тянуть нельзя: после transfer репо старая привязка сама перестаёт получать анализы. Есть неофициальный ускоритель рутины: sonar-solutions/rebind-sqc-projects.
  2. Анти-коммерческие пункты в OSS-программах конфликтуют с open-core. Crowdin требует «no commercial products related to the open-source project», Docker-Sponsored OSS — «no pathway to commercialization». С планом «AGPL-ядро + закрытые EV-модули» заявки туда либо отклонят, либо придётся лукавить — не подавать. (У 1Password, наоборот, явное исключение для GitHub Sponsors — совместим.)
  3. Codespaces для организаций не бесплатны вообще: личные free-квоты (120 ч/мес) на organization-owned репо не действуют — платно с первого часа. Не заводить.

Мелкая, но приятная: поиск по докам уже есть «из коробки» — Starlight включает Pagefind, Quartz включает FlexSearch. Algolia DocSearch не нужен.

Ставить сейчас (чеклист подключения на организацию)

#СервисЧто делаетКак подключитьЗаметки
1GitHub Security ConfigurationsCodeQL + secret scanning + push protection + dependency review на все репо организации разом, включая будущиеOrg Settings → Advanced Security → применить GitHub-recommended configurationбесплатно для публичных даже на Free-org; сделать ПЕРВЫМ, до волн переноса
2CodeRabbitAI-ревью PR; Pro-план бесплатен навсегда для публичных репоустановить GitHub App на fortemate (All repositories).coderabbit.yaml едет с репо; судьба накопленных learnings при transfer не задокументирована — при желании спросить саппорт
3SonarCloudSAST/качество для Scala 3; OSS-план: безлимитные публичные репосоздать организацию fortemate через «Get SonarQube for OSS»миграция проектов = пересоздание (см. находку №1); синхронно с переносом каждого Scala-репо
4OpenSSF Scorecardпубличный бейдж безопасности репоworkflow-файл per-repo (push+cron), раскатать шаблоном как AGENTS.mdlanguage-agnostic; фундамент для Best Practices Badge позже
5StepSecurity harden-runnerмониторинг/фильтрация egress в Actions, защита цепочки поставки1 строка-шаг в workflow; Community-tier бесплатен навсегда для публичныхприоритет — релизные workflow (Central, ghcr)
6Trivy (action)сканирование Docker-образов ботовшаг в CI Docker-репо; не SaaS, лимитов нетзакрывает нишу Snyk Container бесплатно
7GitHub artifact attestationsSLSA-provenance для ghcr-образов и jar’овшаг attest-build-provenance в релизных workflow (id-token: write, attestations: write)бесплатно только для публичных репо
8Socket.devповеденческий анализ npm-зависимостей (малварь, не CVE)GitHub App на npm-репо (play, доки)«always free for open source»; не дублирует CodeQL/Dependabot
9Sentry for Open Source ⏳отлов ошибок SPA + play-api (сейчас фронт-ошибки не собираются вообще)✉️ заявка отправлена 17.08 — sentry.io/sponsorship; ⚠️ сначала регистрируется организация в Sentry (slug → fortemate.sentry.io), форма спрашивает её URLспонсорский план щедрый и без term limit; единственное трение — их пожелание «friendly license like Apache or MIT», AGPL в список не входит
10JetBrains OSS (All Products Pack) ⏳бесплатная лицензия на все IDE✉️ заявка отправлена 17.08 — прямая форма jetbrains.com/shop/eform/opensource (на маркетинговой странице ссылки нет); в Repository URL указан dicechess-engine-scala — активность проверяется автоматически по коммитам кодавыдаётся контрибьютору (rabestro), не организации; на год, продлеваемо; при появлении платного продукта — переходить на коммерческую лицензию
111Password for Open Source ⏸️team-хранилище секретов проекта (Terraform-креды, токены)⏸️ на паузе (решение владельца 17.08) — см. «Заявки: статус» нижеявное исключение для GitHub Sponsors — с open-core совместим

Заявки: статус (обновлено 2026-08-17)

СервисСтатусСсылка на формуЧто дальше
JetBrains OSS⏳ отправлена 17.08jetbrains.com/shop/eform/opensourceждём ответа; активность проверяется автоматически, ответ обычно быстрый
Sentry OSS⏳ отправлена 17.08sentry.io/sponsorshipждём; при вопросе про AGPL — ответить, что стартер-киты MIT, а AGPL защищает платформу от закрытых форков, не ограничивая игроков
1Password OSS⏸️ на паузешаблон issueвернуться после фазы B (миграции сайта) — причины ниже

Почему 1Password на паузе

Две причины, обе про сроки, а не про пригодность:

  1. Заявка — публичный GitHub issue в репозитории 1Password/for-open-source, а не приватная форма. Имя проекта, домен и почта становятся индексируемыми — это было бы первым публичным упоминанием бренда Fortemate, до анонса и до миграции сайта. Публичным станет и отказ, если он случится.
  2. Требование «permissive open source license» сформулировано жёстче, чем у Sentry, а наше ядро под AGPL (copyleft). При этом в их же шаблоне заявки поле «License type» приводит GPL как пример — то есть формулировка неаккуратная и copyleft на практике, похоже, проходит. Разрешается письмом на opensource@1password.com до публичной заявки (README прямо это предлагает; в шаблоне есть и приватный путь для тех, кто не может публиковать почту).

Предусловия, когда вернёмся: нужен именно Teams-аккаунт (личные и family не подходят; тип аккаунта меняется в настройках), и 🔑 второго человека надо добавить в группу Owners — 1Password рекомендует это против блокировки, и это тот же bus-factor-аргумент, что и со вторым owner’ом GitHub-организации.

Настройка Sentry после одобрения — не забыть

  • ⚠️ Не включать согласие «use your Sentry data … to help validate our models» (Settings → Usage & Billing → Legal & Compliance → Service Data Usage). Проверено по докам: Seer и прочий AI работают без него, то есть отказ ничего не отключает. Против: выгоды для нас ноль; в набор данных входят DOM interactions (session replays) — обработка данных игроков сверх отладки, а Privacy Policy у нас пока нет; и главное — «code from your connected repositories» при доступе интеграции к приватным репо утащило бы закрытые EV-модули в чужой оценочный датасет. Тумблер account-wide, по репозиториям не гранулируется. Перепроверить, что выключен, после активации спонсорского плана — смена плана может сбрасывать настройки.
  • При подключении SDK: включить Data Scrubbing, Session Replay не включать без явной нужды.

Позже (привязано к этапам роадмапа)

  • CLA — искать сервис ❌ отменено 17.08: CLA v1.0 уже реализован своими силами в engine-scala, play, play-api, analytics (CLA.md + self-service реестр .github/cla-signatures.json + workflow на pull_request_target, без сторонних SaaS). Сторонние варианты (cla-assistant.io, форк contributor-assistant) не нужны — наш лучше. DCO app ставить НЕ надо: он слабее и путал бы контрибьюторов вторым обрядом. Осталась работа: починить owner-skip до переноса в org (сломается: context.repo.owner станет fortemate) и закрыть AGPL-репо dicechess-bot-java, где CLA нет. Полный разбор: dco-vs-cla.
  • Weblate (план Libre) или inlang Fink — к фазе i18n (play#261): Weblate — 160k строк бесплатно для публичных, без анти-коммерческого пункта; Fink — нативный для Paraglide, но «Free Beta». Crowdin — не подавать (находка №2).
  • BrowserStack for Open Source — к публичному запуску: безлимитные Live/Automate/Percy (визуальная регрессия включена — отдельный Chromatic не нужен), 5 параллелей; реальные устройства поверх Playwright-смоуков.
  • OpenSSF Best Practices Badge — после того как Scorecard закроет технические дыры; ручная анкета на часы работы.
  • Open Collective — только если получателей средств станет больше одного (комиссия ~10% против 0% у GitHub Sponsors).
  • Snyk — вернуться для приватных EV-модулей (там CodeQL недоступен без Enterprise); free-лимитов (200 SCA-тестов/мес) на 30 публичных репо не хватит, а для пары приватных — хватит.

Пропустить (и почему)

СервисПричина
DeepSource / Codacy / CodeFactor / Coverallsдублируют SonarCloud+Codecov; поддержка именно Scala 3 не подтверждена
Algolia DocSearchPagefind (Starlight) и FlexSearch (Quartz) уже встроены; без утечки запросов читателей
Crowdinанти-коммерческий пункт против open-core (находка №2)
Docker Hub DSOS«no pathway to commercialization» + ghcr уже закрывает нишу
GitHub Codespacesдля организаций не бесплатен вообще (находка №3)
Grafana Cloud Freeсвой Grafana на homelab с лучшим retention (14 дней у бесплатного облака)
ChromaticPercy входит в BrowserStack OSS-грант
LambdaTest/TestMuдублирует BrowserStack; бренд в процессе ребрендинга (01.2026)
Codecov⚠️ решение владельца 17.08: не переустанавливать на организацию — SonarCloud с настроенным покрытием закрывает главную функцию (Quality Gate по «Coverage on New Code» в PR) в том же месте, где уже живут баги/смеллы. Сверх этого Codecov даёт per-file diff-таблицы (косметика) и flags/carryforward для матричных сборок (у нас один отчёт на репо). Минус сервис = минус точка отказа и минус чужой доступ к коду. Вернуть — установкой App за 5 минут, если реально не хватит diff-аннотаций. ⚠️ Условие отказа: покрытие в Sonar ДОЛЖНО быть настроено и включено в Quality Gate, иначе метрика просто исчезнет. NB: Codecov с 02.06.2026 принадлежит Harness, не Sentry
Renovate / Scala StewardDependabot умеет sbt с 26.05.2026 (version updates) и уже раскатан; два бот-бампера = шум. Вернуться, если упрёмся в отсутствие sbt-security-апдейтов (их у Dependabot нет) или понадобятся Scalafix-миграции (ниша Scala Steward)

Настройка покрытия в SonarCloud (условие отказа от Codecov)

Отказ от Codecov имеет смысл только когда покрытие реально доезжает до Sonar и участвует в гейте. Что нужно в каждом репо:

СтекОтчётСвойство Sonar
Scala (sbt)scoverage XMLsonar.scala.coverage.reportPaths
Java (Maven)JaCoCo XML (target/site/jacoco/jacoco.xml)sonar.coverage.jacoco.xmlReportPaths
TypeScript (SvelteKit)LCOV (coverage/lcov.info)sonar.javascript.lcov.reportPaths

Плюс: включить условие «Coverage on New Code» в Quality Gate, и ⚠️ выключить Automatic Analysis в каждом новом проекте (Administration → Analysis Method) — иначе она конфликтует с CI-сканом и отчитывается без покрытия (в bot-java именно это и наблюдалось: 400 ncloc, метрики coverage нет).

🔗 Связанное