Повторное использование открытого кода: что берём, куда и как всё остаётся под лицензией MOffice
Версия 1.0 · 2026-10-04 · основание: проверка 669 компонентов (
docs/research/oss-verified.tsv), чтение кода 33 ключевых проектов, пять отчётов по областям (docs/research/oss-*.md), политикаdocs/12-license-policy.md. Макеты сборки —mockups/oss.html, реестр с фильтрами —docs/research/oss-registry.htmlна сайте.
1. Короткий ответ
Код «совсем без лицензии» использовать нельзя. По закону код без лицензии означает «все права защищены»: его нельзя ни копировать, ни встраивать. Поэтому цель «всё под нашей лицензией» достигается иначе — выбором только таких источников, которые не накладывают на наш продукт никаких обязательств:
| Что берём | Что это значит для MOffice |
|---|---|
| Класс 0 — Public Domain, CC0, Unlicense, 0BSD | берём как своё, ничего никому не должны |
| Класс 1 — MIT, BSD, ISC, Zlib, Apache-2.0, OFL (шрифты) | берём, меняем, продаём в закрытом продукте; единственное обязательство — строка с именем автора в окне «О программе → Лицензии открытого ПО» (так делают Microsoft Office, Adobe, Apple) |
| Собственный код владельца — PasswordSafe, ScreenPrompt, FlyType, Formulник | уже ваш, переносится без условий |
| Класс 2 — MPL, LGPL, EPL | только по вашему отдельному решению; для каждого случая найдена замена класса 0–1 |
| Класс 3 — GPL, AGPL, SSPL, BUSL, некоммерческие | запрещено; только «чистая комната» (своя реализация по описанию) |
Итог: весь MOffice остаётся под вашей лицензией (EULA), исходный код закрыт, продавать можно без ограничений. Чужой код класса 0–1 после переноса становится частью нашего кода; от авторов остаётся только упоминание в списке лицензий.
2. Как проверяли
- Список кандидатов — около 430 репозиториев (GitHub,
GitLab) и около 240 крейтов Rust по 30 областям: текст, рендер, форматы,
таблицы, графика, схемы, PDF, OCR, диаграммы, формулы, почта, заметки,
формы, скрипты, CRDT, поиск, аккаунты, лицензии, биллинг, обновления,
сбои, платформа, оболочка, иконки, корпуса
(
docs/research/candidates.tsv). - Автоматическая проверка — скрипт
scripts/oss_verify.py: лицензия, звёзды, дата последнего коммита и архивность по ecosyste.ms и deps.dev; для крейтов — точное SPDX-выражение с crates.io; для неясных случаев — разбор самого текста LICENSE/COPYING. Ручные уточнения по чтению файлов лицензий —docs/research/oss-overrides.tsv. - Чтение кода — неглубокие клоны 33 ключевых проектов через ваш доступ к GitHub (IronCalc, libmypaint, mypaint-brushes, Pinta, draw.io, Univer, typst, словари LibreOffice и др.): подсчёт функций, кистей, эффектов, трафаретов, чтение лицензий отдельных папок и файлов.
- Ваши проекты — локальные клоны и repoBase (Forgejo, вход по SSH-ключу): PasswordSafe, ScreenPrompt, FlyType, voice-agent, TermitPro; ничего не публиковалось и не менялось.
- Отчёты по областям —
docs/research/oss-text-render-lingo-math.md,oss-formats-sheets-data.md,oss-graphics-pdf-charts.md,oss-pim-collab-script.md,oss-platform-apps-strategy.md.
Результат по классам (669 позиций; после ручных уточнений по отчётам часть позиций перешла в класс 3 — например, веса моделей OCR и bpmn-js):
| Класс | Количество |
|---|---|
| 0 — без обязательств | 15 |
| 1 — только атрибуция | 572 |
| 2 — решение владельца | 40 |
| 3 — запрещено | 35 |
| ? — проверка по языкам/файлам | 7 |
3. Главные находки
- Движок таблиц почти готов. Форк IronCalc (MIT OR Apache-2.0) даёт 492 работающие функции из 518 нашего каталога: для P0 это 99,4 % (не хватает AGGREGATE и GETPIVOTDATA). В нём есть парсер A1/R1C1 с локалями, LET/LAMBDA, spill, структурированные ссылки, импорт и экспорт xlsx, 2 768 тестов и 211 эталонных книг. Своими остаются граф зависимостей и многопоточный пересчёт (образец — formualizer, MIT/Apache), 3D- и внешние ссылки. Это снимает главный риск фазы 2: 500 функций «с нуля» стоили бы 28–35 чел.-мес. при 21 заложенном.
- Microsoft сама выпустила чтение PST на Rust под MIT
(
outlook-pst, ≈15 тыс. строк, ANSI и Unicode), аjetdb(MIT/Apache) читает базы Access. Импорт Outlook и Access больше не нужно писать с нуля. - Бинарные форматы Office — порт Apache POI (Apache-2.0): doc ≈36,7 тыс. строк, xls ≈28,8 тыс., ppt ≈21,3 тыс.; порт 15–17 чел.-мес. против 30–37 с нуля.
- PDF целиком на разрешительных лицензиях: просмотр —
pdfium, собственный рендер этапа B — hayro (MIT/Apache, с декодерами
JBIG2, JPEG 2000, CCITT), правка и инкрементальное сохранение — lopdf,
экспорт PDF/A и PDF/UA — krilla, подписи PAdES и формы — порт из PDFBox
на RustCrypto
cms. MuPDF, Poppler и iText не нужны. - Paint получает готовые сильные стороны: движок кистей libmypaint (ISC) и 196 кистей (CC0), 37 эффектов и 9 коррекций Pinta (MIT) со 125 эталонными картинками для тестов, стабилизатор пера ink-stroke-modeler.
- Draw: ≈3,5 тыс. общих фигур в 28 наборах draw.io (Apache-2.0; запрет для продуктов Atlassian переносится в наши трафареты), раскладки и коннекторы из mxGraph, dagre, WebCola, d3-force. Обход препятствий — свой.
- Почта и календарь собираются из крейтов Stalwart
(MIME, DKIM, iCalendar/vCard с RRULE —
calcard), imap-codec, libdav (CalDAV/CardDAV), rPGP. - Формулы: раскладка переносится из typst (Apache-2.0), озвучивание и Брайль с русским языком — MathCAT (MIT).
- Платформа: velopack (установка, дельта-обновления, MSI), crash-handler + minidump + сервер GlitchTip, облака через OpenDAL и rclone, CRDT на Yrs с сервером на основе y-sweet, поиск tantivy.
- Ваш код закрывает целые модули: шифрование и синхронизация из PasswordSafe, захват экрана из ScreenPrompt, диктовка и сервер аккаунтов из FlyType, инструменты формул и OCR из Formulник.
Что важно знать о правописании: все движки Hunspell идут под MPL/LGPL, поэтому движок проверки пишем свой (7,5–9,5 чел.-мес.), а в комплект без ваших решений входят только словари ru, en (4 варианта), pl, nl и tr.
4. Ваш собственный код — лучший источник
Код ваших проектов уже принадлежит вам и переносится в MOffice без условий. Все коммиты, сделанные людьми, — от ваших учётных записей. Перед переносом нужны две формальности: короткий документ о правах на код (в файлах LICENSE правообладатель записан условной меткой, а в истории много коммитов, сделанных с помощью ИИ-инструментов) и фиксация незакоммиченного кода (в PasswordSafe это ≈27 % Rust).
| Ваш проект | Что переносим | Модуль MOffice | Экономия, чел.-мес. |
|---|---|---|---|
| PasswordSafe (Rust) | шифрованный «конверт» Argon2id + AES-256-GCM, защищённая память, TOTP — ≈2–2,5 тыс. строк; при переносе исправить: ключ выводить через HKDF, MAC на весь файл, добавить потоковое шифрование | MOffice Crypto: «Файл → Защитить паролем», шифрование пакетов MOP | 3–5 |
| сквозное шифрование и синхронизация через WebDAV и S3 | облачные хранилища Hub, «свой сервер» | 2–3 | |
| фоновый IPC-сервис, протокол клиент-сервер | MOffice Broker | 1–2 | |
| ScreenPrompt (Rust + Tauri) | захват экрана (Windows Graphics Capture, macOS ScreenCaptureKit), звук, пауза, политика источников, протокол помощника, управление записью; не переносим склейку через FFmpeg + libx264 (GPL) | Paint → «Снимок», Slides → «Запись экрана», Notes → вырезка | 3–4 |
| FlyType (Go, Rust, Swift) | сервер аккаунтов (Go, ≈8,3 тыс. строк), биллинг и выпуск релизов, правила «полировки» диктовки RU/EN, маршрутизатор облако/локально; не переносим веса Silero (некоммерческие) и edge-tts (LGPL) — замена Whisper (MIT) | MOffice ID, «Диктовка» в Write/Notes/Mail, расшифровка аудио в Notes | 8–12 |
| Formulник / AXEL | инструменты формул (перевод RU↔︎EN, диагностика, сравнение книг, рассылки, ИНН, сумма прописью), OCR счетов, извлечение таблиц из PDF | Sheets → «Проверка формул», PDF → «Преобразовать в Sheets» | 5–8 |
| voice-agent, TermitPro | ядро ассистента, инструменты и права доступа, MCP, плагины | MOffice Assist, расширения | 2–3 |
| Итого | 24–37 |
5. Итоговая карта: что берём и куда
Класс: ★ — ваш код, 0 — без обязательств, 1 — только атрибуция, 2 —
ваше решение. Стратегия: adopt — зависимость как есть,
fork — копия в наш репозиторий с правками,
port — переписать на Rust с уведомлением об авторстве,
ref — только образец. Подробности по каждому пункту — в
отчётах docs/research/oss-*.md.
| Модуль MOffice | Что берём | Класс | Стратегия |
|---|---|---|---|
| Шейпинг, шрифты, Unicode | harfrust, skrifa/read-fonts, fontique, ICU4X
(icu_segmenter, сортировка, числа), unicode-bidi |
1 | adopt |
| Раскладка абзаца | parley (образец), Кнут–Пласс из typst
inline/linebreak |
1 | ref + port |
| Переносы | форк hypher + TeX-шаблоны с проверкой лицензии каждого языка | 1 | fork |
| Сравнение документов | imara-diff, similar | 1 | adopt |
| Рендер и геометрия | Skia (skia-safe), tiny-skia, kurbo, lyon, i_overlay, resvg/usvg | 1 | adopt |
| Цвет | Little-CMS 2 (lcms2) | 1 | adopt |
| Экспорт PDF | krilla (PDF/A-1…4, PDF/UA-1, теги, субсеты шрифтов), pdf-writer, subsetter | 1 | adopt |
| Правописание и грамматика | свой meridian-spell (формат Hunspell), словари
ru/en/pl/nl/tr; Harper для английской грамматики; русская грамматика и
тезаурус — свои |
★ / 1 | own / adopt |
| Формулы Sheets | форк IronCalc → meridian-calc; граф и параллельный
пересчёт по образцу formualizer; formulajs и Univer — как тесты |
1 | fork / ref |
| Числовые форматы | порт SheetJS SSF (+ ≈2,4 млн эталонных проверок) | 1 | port |
| Данные и поиск решения | Polars, DuckDB, Arrow/Parquet, csv, encoding_rs, chardetng; HiGHS +
good_lp (только highs), Clarabel, argmin; statrs,
nalgebra |
0–1 | adopt |
| Бинарные doc/xls/ppt | порт Apache POI (HWPF, HSSF, HSLF, DDF, HPSF); быстрый импорт — calamine | 1 | port / adopt |
| xlsx-запись, шифрование Office | rust_xlsxwriter; office-crypto, ms-offcrypto-writer, msoffcrypto-tool | 1 | adopt / port |
| iWork | numbers-parser, iWorkFileFormat, litchi — образцы IWA | 1 | ref |
| Access | jetdb + порт Jackcess | 1 | fork / port |
| Outlook | outlook-pst (Microsoft) + compressed-rtf; msg-parser | 1 | adopt |
| OneNote | своя реализация по [MS-ONESTORE]/[MS-ONE] (решение владельца 2026-10-04: класс 2 не используем); pyOneNote (Apache) — образец | ★ / 1 | own |
| Base | SQLite, rusqlite, SQLCipher, sqlparser-rs, tokio-postgres, mysql_async, tiberius, odbc-api; полосы отчётов — по образцу FastReport | 0–1 | adopt / ref |
| Paint | libmypaint + mypaint-brushes, ink-stroke-modeler, порт эффектов
Pinta, «Удалить фон» — ort + IS-Net/U-2-Net (Apache) или
BiRefNet (MIT); кодеки image, png, zune-jpeg, image-webp, ravif, exr,
tiff, gif, psd |
0–1 | port / adopt |
| Снимки и запись экрана | ScreenPrompt (ваш), windows-capture, xcap (только Windows/Linux), ashpd + PipeWire | ★ / 1 | own / adopt |
| Draw | общие трафареты draw.io → .mvs; раскладки mxGraph,
dagre, WebCola, d3-force; петли графов — petgraph; импорт синтаксиса
Mermaid |
1 | fork / port |
pdfium (pdfium-render) на этапе A, hayro — основа своего рендера,
lopdf — правка и инкрементальное сохранение, PDFBox — образец подписей и
форм, RustCrypto cms/x509-* |
1 | adopt / fork / port | |
| OCR и конвертация PDF | Tesseract 5 + tessdata, PP-OCRv5 (ONNX, кириллица); LAParams из pdfminer.six, таблицы из pdfplumber, модели раскладки Docling | 1 | adopt / port |
| Chart | d3-scale, d3-array, d3-shape, d3-hierarchy; палитры ColorBrewer и viridis | 0–1 | port |
| Math | раскладка формул typst, MathCAT (озвучивание, Брайль), Temml/latex2mathml | 1 | port / adopt |
| Slides и медиа | Lottie через Skottie (Skia); видео — кодеры ОС, WebM — rav1e/libvpx; аудио — hound, lewton, claxon, minimp3 (без symphonia) | 0–1 | adopt |
mail-parser, mail-builder, mail-auth, imap-codec + imap-next,
lettre, calcard, libdav, rPGP, RustCrypto cms (S/MIME);
санитайзер HTML — свой на html5ever |
1 | adopt | |
| Notes | ink-stroke-modeler, perfect-freehand, tantivy; ENEX — свой парсер | 1 | adopt / port |
| Forms | survey-library (MIT) — образец схемы и выражений | 1 | ref |
| Script | QuickJS-ng + rquickjs, oxc, tree-sitter, wasmtime + Extism; VBA — ovba, грамматика VB6 (grammars-v4), семантика из oletools/ViperMonkey | 1 | adopt / ref |
| Sync и поиск | Yrs + сервер на основе y-sweet; tantivy | 1 | adopt |
| MOffice ID | свой сервис на Rust с переносом сервера аккаунтов FlyType; SAML и SCIM — Ory Polis; passkeys — порт проверки go-webauthn; openidconnect, oauth2, totp-rs, argon2; Keycloak — эталон в CI и план Б | ★ / 1 | own / adopt |
| Лицензии и биллинг | свой meridian-license (уже в репозитории), machine-uid;
Stripe через async-stripe, свои адаптеры ЮKassa и CloudPayments; Kill
Bill — образец |
★ / 1 | own / adopt |
| Установка и обновления | velopack (дельты, каналы, откат, MSI, нотаризация) + своя подпись фида Ed25519 | 1 | adopt |
| Сбои и телеметрия | crash-handler, minidump-writer, rust-minidump, сервер GlitchTip; OpenTelemetry | 1 | adopt |
| Облака | OpenDAL в брокере + rclone rcd для синхронизируемых
папок; Google Drive — только drive.file |
1 | adopt |
| Оболочка | своя QML-лента по алгоритмам SARibbon (MIT), свой докинг, cxx-qt; иконки — Lucide + Tabler, перерисованные в MOffice Glyphs | ★ / 1 | port / adopt |
| Справка | Sphinx (mdBook кладёт MPL-тему в вывод) | 1 | adopt |
| Целые приложения | Apache OpenOffice — выборочный порт: фильтр Word 97, функции Calc, StarMath, формулы фигур, пресеты анимаций | 1 | port |
6. Экономия и что меняется в плане
Оценки отчётов независимы: каждый считал разницу «сделать самим» минус «перенос и встраивание» по составу команд и длительности эпиков из плана. Итоги сходятся с общим расчётом стратегии.
| Область | Экономия, чел.-мес. |
|---|---|
| Форматы, движок таблиц, данные, Base | 44–58 |
| Графика, Draw, PDF, OCR, Chart, медиа | 40–60 |
| Текст, рендер, язык, шрифты, Qt, формулы | 35–48 |
| Почта, заметки, формы, скрипты, CRDT, поиск | ≈40 |
| Платформа: установка, сбои, облака, ID, оболочка, иконки, порт из OpenOffice | 35–50 |
| Ваш собственный код | 24–37 |
| Минус дополнительные работы из-за политики (своё правописание, русская грамматика и тезаурус) | −(15–19) |
| Итого | ≈200–280 |
Это 7,5–10,5 % плана: 2 660 → ≈2 380–2 460 чел.-мес. В деньгах по ставкам-ориентирам плана: ≈0,8–1,1 млн USD для команды в РФ и ≈2,2–3,1 млн USD для международной. Пиковая команда снижается с 73 до ≈67 человек.
Рекомендация по срокам: публичные даты релизов не
менять, а экономию направить в резерв на риски. Важнее денег
то, что снимаются главные технические риски: каталог функций Sheets,
импорт PST и Access, свой рендер PDF, кисти и эффекты Paint. Если фаза 2
пройдёт по плану, релизы 1.5, 2.0, 3.0, 3.5 и 4.0 можно сдвинуть на 4
недели раньше. Если вы одобрите onenote_parser (MPL),
экономия вырастет ещё на 4–6 чел.-мес.
Технические пробелы, которые нашлись при проверке, и как их закрываем:
| Пробел | Решение |
|---|---|
| В IronCalc нет графа зависимостей, пересчёт полный и однопоточный, нет 3D-ссылок, внешних ссылок, объединения и пересечения диапазонов | свой граф и параллельный пересчёт; двухнедельный спайк «IronCalc против formualizer» в первом инкременте фазы 2 |
В QuickJS-ng нет API отладчика и нет Intl |
свой протокол отладчика; Intl — функции хоста на
ICU4X |
| В Yrs нет операции перемещения элементов | порядок страниц и блоков — дробные индексы |
| В krilla нет шифрования, подписей и аннотаций PDF | свои на lopdf и RustCrypto cms |
| Qt 6.8 Multimedia по умолчанию работает через FFmpeg | свой медиаслой на системных API: Media Foundation, AVFoundation, GStreamer |
| xcap на macOS использует устаревший API | ScreenCaptureKit, как в ScreenPrompt |
| rodio по умолчанию тянет symphonia (MPL) | default-features = false + hound, lewton, claxon,
minimp3 |
dirs тянет option-ext (MPL) |
своя функция папок ОС через системные API |
good_lp по умолчанию тянет coin_cbc
(EPL) |
только функция highs |
| WiX начиная с версии 6 требует платы при выручке больше 10 000 USD | MSI собираем через velopack |
7. Что требует вашего решения
Ничего из этого не блокирует фазу 0: для каждого пункта есть путь без условий, решение лишь ускоряет работу.
| Вопрос | Варианты | Рекомендация |
|---|---|---|
| Лицензия Qt 6 | LGPL с динамической линковкой (бесплатно, пользователь может заменить библиотеки Qt) или коммерческая Qt; тариф Small Business (546 €/год за место) не подходит — максимум 3 места и выручка до 1 млн € | начать на LGPL, модули Qt только под GPL не использовать; к выпуску 1.0 решить, нужна ли коммерческая |
| OneNote | onenote_parser (MPL-2.0) без правок или своя реализация
по спецификации |
одобрить как неизменяемую зависимость: −4–6 чел.-мес. |
| Словари под MPL/LGPL (fr, uk, es, pt, da, el, kk, sv, be) | в комплект или загрузка пользователем из первоисточника | загрузка по запросу; в комплекте только ru, en, pl, nl, tr |
| База автонастройки почты ISPDB (MPL) | встроить данные или запрашивать онлайн | не встраивать; запрос к публичному сервису только с согласия пользователя |
| GStreamer на Linux (LGPL) | системная библиотека или свой кодек | одобрить как системную зависимость |
| libheif и libraw (LGPL) | HEIC и RAW через декодеры ОС или эти библиотеки | декодеры ОС на Windows и macOS, на Linux — необязательная системная библиотека |
| Шрифт Intos (OFL, метрический клон Aptos) | включить или ждать | включить после юридической проверки кернинга |
| Права на ваш код | короткий документ о правах на FlyType, ScreenPrompt, PasswordSafe, AXEL | подписать до переноса кода |
| Тестовые серверы Stalwart и Dovecot (AGPL) | только как внешние контейнеры в CI | разрешить в политике как тестовую инфраструктуру, в продукт не входят |
8. Что запрещено и чем заменяем
| Запрещено (лицензия) | Замена |
|---|---|
| MuPDF, PyMuPDF, iText (AGPL), Poppler (GPL), pdf2docx (тянет PyMuPDF) | pdfium, hayro, lopdf, krilla; своя конвертация по алгоритмам pdfminer.six и pdfplumber |
| Веса surya и marker (CC BY-NC-SA, OpenRAIL-M с порогом 5 млн USD), веса ocrs (CC BY-SA, только латиница) | Tesseract 5, PP-OCRv5 (Apache-2.0), модели Docling |
| Модель по умолчанию в rembg — bria-rmbg (некоммерческая) | IS-Net и U-2-Net (Apache-2.0), BiRefNet (MIT) |
| HyperFormula (GPL/коммерческая), EPPlus (PolyForm NC) | IronCalc, rust_xlsxwriter |
mdbtools (GPL), крейт epub (GPL-3.0), sieve-rs и
evalexpr (AGPL), minicaldav (GPL) |
jetdb + Jackcess, свой EPUB, свой Sieve (P2), выражения на
meridian-calc, libdav |
| keygen-api (Fair Core License) | свой сервер лицензий и крейт meridian-license |
| Zitadel (AGPL), Authentik (CC-BY-SA и enterprise), Lago (AGPL) | свой MOffice ID, Ory Polis, свой биллинг |
| Сервер Sentry и Symbolicator (FSL), Bugsink (PolyForm NC), Meilisearch (части BUSL) | GlitchTip, rust-minidump, tantivy |
| OnlyOffice (AGPL), Calligra, AbiWord, Gnumeric, Krita, GIMP (GPL), CKEditor (GPL), Joplin, Logseq, AppFlowy (AGPL) | только «чистая комната»: свои реализации по документации и поведению |
| bpmn-js и tldraw (водяной знак в интерфейсе), SurveyJS Creator (коммерческая) | свои трафареты на основе draw.io, свой конструктор Forms |
| QFluentWidgets (GPL), KDDockWidgets (GPL/коммерческая), модули Qt только под GPL | своя QML-лента и докинг; Chart — свой движок |
| Иконки Paint.NET (CC BY-NC-ND), Papirus (GPL), RemixIcon (собственная лицензия 2026) | Lucide + Tabler, перерисованные в MOffice Glyphs |
| Silero (CC BY-NC-SA) и edge-tts (LGPL) в FlyType, FFmpeg + libx264 (GPL) в ScreenPrompt | Whisper (MIT), синтез речи ОС, кодеры ОС |
9. Обязательства по атрибуции и как их выполнять
Для классов 0–1 обязательства минимальны, но их нужно выполнять аккуратно — это и есть «чистота» продукта:
- Окно «О программе → Лицензии открытого ПО» (макет OS-02): список компонентов с версией, лицензией и полным текстом. Генерируется из SBOM при каждой сборке.
- Файл NOTICE в установщике: тексты уведомлений Apache-2.0 (у IronCalc, typst, krilla, jackcess и др. есть свои NOTICE — их сохраняем дословно).
- Заголовки в перенесённых файлах: при порте кода на Rust в начале файла — «Основано на <проект> (MIT), © авторы»; остальной файл — наш код под EULA.
- Шрифты OFL: не продаём шрифты отдельно; если меняем — переименовываем (Reserved Font Name).
- Контроль в CI:
cargo deny check licenses(файлdeny.tomlуже в репозитории) пропускает только классы 0–1; для C/C++/JS/данных — сканер лицензий; SBOM в формате CycloneDX к каждому релизу (макет OS-13). - Зеркала исходников: копии выбранных проектов храним у себя (repoBase), чтобы исчезновение исходного репозитория не остановило сборку.
10. Что делаем дальше (фаза 0)
- Зеркала — сделано 2026-10-04: приватная организация
meridian-ossна repoBase, 21 зеркало с ежедневной синхронизацией: IronCalc, formualizer, ssf, jackcess, jetdb, outlook-pst-rs, onenote-rs, libmypaint, mypaint-brushes, Pinta, ink-stroke-modeler, dagre, hayro, krilla, typst, hypher, harfrust, MathCAT, calcard, mail-parser, y-crdt. Крупные проекты фондов (Apache POI, draw.io, mxGraph) не зеркалим; трафареты draw.io соберём отдельным репозиторием. - Реестр
THIRD_PARTY.mdи SBOM — генерация изoss-verified.jsonиCargo.lock, окно «Лицензии открытого ПО». - cargo-deny в CI с файлом
deny.toml(уже в репозитории) и сканер лицензий для C/C++/JS/данных. - Спайки первых инкрементов: «IronCalc против formualizer» (2 недели), «harfrust + parley + свой Кнут–Пласс», «pdfium и hayro на корпусе PDF», «libmypaint через FFI или порт».
- Перенос вашего кода: документ о правах, фиксация незакоммиченного кода, исправления шифрования PasswordSafe при переносе.
- Юридические проверки: шрифт Intos, патенты на ленту, перенос запрета Atlassian в лицензию наших трафаретов.
- Ваши решения из раздела 7 — к концу фазы 0.
Макеты того, как выглядит продукт с этими компонентами, —
mockups/oss.html (13 экранов с метками
источников).