Карта
компонентов (черновик v0, 2026-10-04 — заменён разделом 5
docs/11-open-source-reuse.md)
Черновик, по которому рисовались макеты. Итоговые решения с поправками отчётов — в
docs/11-open-source-reuse.md. Главные отличия итоговой карты: rustybuzz → harfrust; правописание — свойmeridian-spell; PST — outlook-pst от Microsoft; Access — jetdb; OCR — Tesseract + PP-OCRv5 (ocrs не годится: веса CC BY-SA и только латиница); «Удалить фон» — IS-Net/U-2-Net/BiRefNet (модель rembg по умолчанию некоммерческая); санитайзер HTML — свой; MOffice ID — свой сервис с переносом сервера аккаунтов FlyType, Keycloak — план Б; облака — OpenDAL + rclone.
Что из найденного закрывает какую часть MOffice. Класс лицензии — по
docs/12-license-policy.md (0 — без обязательств, 1 — только
атрибуция, 2 — решение владельца, ★ — собственный код владельца).
Стратегии: adopt — зависимость как есть,
fork — копия в наш репозиторий с правками,
port — переписать на Rust с уведомлением об авторстве,
ref — только изучить. Итоговая версия — в
docs/11-open-source-reuse.md.
| Модуль MOffice | Что берём | Лиц. | Класс | Стратегия | Где видно в интерфейсе (экран макета) |
|---|---|---|---|---|---|
| Kernel / шейпинг и шрифты | rustybuzz, skrifa/read-fonts, ttf-parser, fontdb | MIT / MIT-Apache | 1 | adopt | везде: текст в документах |
| Kernel / Unicode | ICU4X (сегментация, сортировка, числа), unicode-bidi, unicode-linebreak | Unicode-3.0 / MIT-Apache | 1 | adopt | арабский/иврит в Write, сортировка в Sheets |
| Kernel / раскладка абзаца | parley (идеи), Кнут–Пласс из typst
inline/linebreak |
MIT-Apache / Apache-2.0 | 1 | ref + port | Write: «Выравнивание по ширине — качественное» |
| Kernel / переносы | hyphenation + TeX-шаблоны hyph-utf8 | MIT-Apache / LPPL, MIT, PD (по языкам) | 1 | adopt | Write → Макет → Расстановка переносов |
| Kernel / сравнение | imara-diff, similar | Apache-2.0 / Apache-2.0 | 1 | adopt | Write → Рецензирование → Сравнить |
| Render | Skia + skia-safe, tiny-skia, kurbo, lyon, i_overlay, resvg | BSD-3 / MIT / MIT-Apache | 1 | adopt | весь холст, SVG, фигуры |
| Color | Little-CMS 2 + rust-lcms2 | MIT | 1 | adopt | Paint → профиль цвета; PDF → печать CMYK |
| PDF-экспорт | krilla, pdf-writer, subsetter | MIT-Apache | 1 | adopt | Экспорт в PDF: PDF/A-2b, PDF/UA |
| Lingo / орфография | свой Hunspell-совместимый движок на Rust; словари ru_RU (BSD-подобная), en_US SCOWL (BSD/PD) | наш / BSD | ★ / 1 | port по формату .aff/.dic |
Write: панель «Правописание» |
| Lingo / прочие языки | словари de (GPL/OASIS), uk (MPL/GPL), be (CC BY-SA/LGPL) | — | 2–3 | загрузка по запросу из первоисточника, не в установщике | Параметры → Языки → «Загрузить словарь» |
| Lingo / грамматика | Harper (англ.), свои правила для русского | Apache-2.0 / наш | 1 / ★ | adopt / own | Write: волнистое синее подчёркивание |
| Shell / лента | SARibbon (Qt Widgets) как основа ленты | MIT | 1 | fork | лента во всех приложениях |
| Shell / докинг панелей | свой на QML (Qt-ADS — LGPL, только как ref) | — | ★ | own | боковые панели |
| Shell / мост Rust↔︎Qt | cxx-qt | MIT-Apache | 1 | adopt | — |
| Shell / Qt 6 | Qt 6 LGPL-модули или коммерческая лицензия Qt | LGPL-3 / коммерч. | 2 | решение владельца | — |
| Иконки | Lucide / Tabler / Phosphor → перерисовка в MOffice Glyphs | ISC / MIT | 1 | fork | все кнопки ленты |
| Шрифты в комплекте | Liberation, Carlito, Caladea, Noto, STIX Two, Inter, JetBrains Mono, PT, Selawik | OFL | 1 | adopt | список шрифтов |
| Sheets / движок | IronCalc (496 функций, xlsx import/export) | MIT OR Apache-2.0 | 1 | fork → meridian-calc | Sheets: формулы, мастер функций |
| Sheets / недостающие функции | formulajs (411 функций), Univer engine-formula (502) | MIT / Apache-2.0 | 1 | port | мастер функций: полный каталог |
| Sheets / числовые форматы | SheetJS SSF | Apache-2.0 | 1 | port | Формат ячеек → «Все форматы» |
| Sheets / потоки данных | Polars, DuckDB, Arrow/Parquet, csv, encoding_rs, chardetng | MIT / Apache | 1 | adopt | Данные → Получить данные → Parquet/CSV 10 млн строк |
| Sheets / поиск решения | HiGHS + good_lp, Clarabel, argmin | MIT / Apache | 1 | adopt | Данные → Поиск решения |
| Sheets / статистика | statrs, nalgebra | MIT / Apache-2.0 | 1 | adopt | функции LINEST, распределения |
| Форматы / xls, xlsb, ods чтение | calamine | MIT | 1 | adopt | Открыть: .xls/.xlsb/.ods |
| Форматы / xlsx запись | rust_xlsxwriter | MIT OR Apache-2.0 | 1 | adopt | Сохранить как .xlsx |
| Форматы / doc, xls, ppt бинарные | Apache POI (HWPF/HSSF/HSLF) | Apache-2.0 | 1 | port | Открыть: .doc/.xls/.ppt |
| Форматы / CFB и шифрование | cfb, olefile, msoffcrypto-tool | MIT / BSD / MIT | 1 | adopt / port | открыть защищённый паролем .docx |
| Форматы / Access | jackcess | Apache-2.0 | 1 | port | Base → Импорт .accdb/.mdb |
| Форматы / OneNote | onenote.rs или свой по спецификации [MS-ONESTORE] | MPL-2.0 / наш | 2 / ★ | решение владельца | Notes → Импорт .one/.onepkg |
| Форматы / PST | свой по спецификации [MS-PST] (libpff — LGPL) | наш | ★ | own | Mail → Импорт .pst |
| Форматы / Markdown, HTML | pulldown-cmark, comrak, html5ever | MIT / BSD-2 / MIT-Apache | 1 | adopt | Открыть .md/.html |
| Base / СУБД | SQLite, rusqlite, SQLCipher, sqlparser-rs, tokio-postgres, mysql_async, tiberius, odbc-api, DuckDB | PD / MIT / BSD / Apache | 0–1 | adopt | Base: подключения, конструктор запросов SQL↔︎QBE |
| Paint / кисти | libmypaint + 196 кистей mypaint-brushes | ISC / CC0 | 1 / 0 | adopt | Paint → «Кисти» (библиотека наборов) |
| Paint / сглаживание пера | ink-stroke-modeler | Apache-2.0 | 1 | adopt | Paint, Notes: стабилизатор |
| Paint / эффекты | Pinta: 37 эффектов + 9 коррекций (код, без иконок Paint.NET) | MIT | 1 | port | Paint → Эффекты |
| Paint / удаление фона | ONNX Runtime (ort) + модель U-2-Net | MIT / Apache-2.0 | 1 | adopt | Paint → «Удалить фон» (офлайн) |
| Paint / кодеки | image, png, zune-jpeg, image-webp, ravif, exr, tiff, gif, psd | MIT-Apache / BSD | 1 | adopt | Открыть/экспорт изображений |
| Снимки и запись экрана | ScreenPrompt (свой) + xcap, windows-capture, ashpd | ★ / Apache / MIT | ★ / 1 | own + adopt | Paint → Снимок; Slides → Запись экрана |
| Draw / раскладки и маршрутизация | mxGraph/draw.io (Apache), dagre (MIT), WebCola (MIT), d3-force (ISC), petgraph | Apache / MIT / ISC | 1 | port | Draw → Автораскладка, коннекторы |
| Draw / трафареты | draw.io: общие наборы (блок-схема, UML, BPMN, сеть-общие) без иконок вендоров | Apache-2.0 + запрет Atlassian | 1* | fork | Draw → Трафареты |
| Draw / диаграмма из текста | Mermaid (импорт синтаксиса) | MIT | 1 | port парсера | Draw → Вставка → «Из текста» |
| PDF / рендер | pdfium через pdfium-render | BSD-3 / MIT-Apache | 1 | adopt | PDF: просмотр |
| PDF / правка и сохранение | lopdf, qpdf (идеи), PDFBox (подписи, формы) | MIT / Apache | 1 | adopt / port | PDF: правка, подпись, формы |
| PDF / OCR | Tesseract + tessdata_fast, ocrs, модели PaddleOCR (через ONNX) | Apache / MIT-Apache | 1 | adopt | PDF → Распознать текст |
| PDF / конвертация в Word/Sheets | pdfminer.six (раскладка), pdfplumber (таблицы), Docling (структура) | MIT | 1 | port | PDF → Преобразовать |
| Chart | модули d3 (шкалы, формы, treemap, бины), ECharts (типы), ColorBrewer | ISC / Apache-2.0 | 1 | port / ref | Вставка → Диаграмма |
| Math | раскладка формул typst, ReX, Temml/latex2mathml, MathCAT (озвучивание) | Apache / MIT | 1 | port / adopt | Math: формулы, LaTeX, чтение вслух |
| Slides / медиа | rlottie, rav1e/libvpx (экспорт webm), платформенные кодеры (H.264) | MIT / BSD | 1 | adopt | Slides → Экспорт видео |
| mail-parser, mail-builder, mail-send, mail-auth, async-imap, lettre, calcard (ics/vcf/RRULE), libdav (CalDAV/CardDAV), outlook-pst (Microsoft), rpgp; санитайзер HTML — свой на html5ever (ammonia тянет MPL-зависимости) | Apache-MIT / MIT / ISC | 1 | adopt | Mail: письма, календарь, повторения, PGP | |
| Notes / поиск | tantivy | MIT | 1 | adopt | Notes, Hub: поиск по содержимому |
| Диктовка | FlyType (свой): офлайн/онлайн распознавание речи, расстановка пунктуации | ★ (MIT, владелец) | ★ | own | Write/Notes/Mail → «Диктовка» |
| Script | QuickJS-ng + rquickjs, oxc (TS→JS), tree-sitter (подсветка), wasmtime (песочница плагинов) | MIT / Apache | 1 | adopt | Скрипты → редактор |
| Sync | Yrs (CRDT), y-sweet (сервер) | MIT | 1 | adopt | совместное редактирование |
| Crypto | PasswordSafe core (свой): Argon2id + AES-256-GCM, защищённая память | ★ | ★ | own | Файл → Защитить паролем |
| Облака | rclone (OneDrive, Google Drive, Dropbox, Яндекс Диск, WebDAV, S3) + PasswordSafe sync (свой) | MIT / ★ | 1 / ★ | adopt / own | Hub → Облако и подключения |
| MOffice ID | Keycloak (сервер SSO, OIDC/SAML, 2FA) или свой на axum + openidconnect, oauth2, samael, totp-rs, argon2 | Apache-2.0 / MIT | 1 | adopt или own | Вход в MOffice ID, консоль администратора |
| Лицензии | свой крейт meridian-license + machine-uid | ★ / MIT | ★ / 1 | own | Активация, менеджер лицензий |
| Биллинг | Kill Bill (опционально) + async-stripe + свои адаптеры ЮKassa/CloudPayments | Apache / MIT | 1 | adopt / own | Портал: тарифы и оплата |
| Обновления и установка | velopack (+ Sparkle на macOS) | MIT | 1 | adopt | «Доступно обновление» |
| Отчёты о сбоях | minidump-writer, crash-handler, rust-minidump + сервер GlitchTip | MIT-Apache / MIT | 1 | adopt | «Отправить отчёт о сбое» |
| Буфер, секреты, IPC | arboard, keyring, interprocess, PasswordSafe daemon (свой) | MIT-Apache / ★ | 1 / ★ | adopt / own | — |
Запрещено (класс 3) и чем заменяем: MuPDF/PyMuPDF/iText (AGPL) → pdfium + lopdf + krilla; Poppler (GPL) → pdfium; HyperFormula (GPL/коммерч.) → IronCalc; OnlyOffice (AGPL), LibreOffice-LGPL-части, Gnumeric, Calligra, AbiWord, Krita, GIMP (GPL) → только «чистая комната»; Zitadel (AGPL — уточнить), Lago (AGPL), Sentry-сервер (FSL) → Keycloak/свой, Kill Bill, GlitchTip; bpmn-js и tldraw (условия с водяным знаком) → свои трафареты на основе draw.io; иконки Paint.NET (CC BY-NC-ND) → не брать.