MOffice

Карта компонентов (черновик 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 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) → не брать.