Про отказ от MS Office (не важно из каких соображений). Если сравнивать между собой альтернативы, такие как LibreOffice, ONLYOFFICE / Р7-Офис и тот же МойОфис/MyOffice.
Это настоящая кроличья нора и, в основном, из-за ситуации с форматом документов, используемом в прошлом или настоящем в MS Office на данный момент. Того самого OOXML (Office Open XML), формата от Microsoft для файлов .docx, .xlsx, .pptx — не только текст, но и таблицы, диаграммы с презентациями (spreadsheets, charts, presentations).
LibreOffice создавался вокруг ODF-формата, а поддержка OOXML была добавлена с боку-припёку. И это не метафора, вся работа с документами (DOM, Document Object Model) выстроена через сущности ODF-формата. Приложения LibreOffice не могут работать с OOXML без предварительной конвертации документа в ODF, производящейся скрытно от пользователя при открытии файла. Если же документ отредактирован и требуется его сохранение в OOXML, то всё его представление подвергается повторной конвертации.
ONLYOFFICE / Р7-Офис проектировался изначально на работу с OOXML, и не просто так, а Transitional-вариантом (ISO/IEC 29500 Transitional). Т.е. вокруг реферс-инженеринга того поведения, которое демонстрирует MS Office в определённых ситуациях. Это можно назвать стремлением или погоней за обратной совместимостью. Всё ради того, чтобы пользователи наблюдали одинаковое единообразное отображение документа. Работа с элементами и сущностями документов (DOM) выстроена вокруг OOXML, как основного средства и способа работы с документами, симметрично тому, как с ODF внутри LibreOffice.
МойОфис / MyOffice использует как бы свою собственную DOM, не ориентированную на ODF или же OOXML и создавался без однозначной привязки к какому-либо формату. Изрядное количество внимания уделено и ожидаемому пользователем совместимости поведения с MS Office. Так же изрядным образом обыгран вопрос управления DOM в условиях одновременной работы над документом нескольких пользователей (есть свой отдельный сервер для коллективной работы).
Облака и онлайнДля работы с документами в веб-браузерах, внедрения в различные онлайн-сервисы, удачно и органично выглядит именно ONLYOFFICE / Р7-Офис, поскольку изначально реализован вокруг JavaScript. По сути своей, крайне сильно напоминая тот самый VSCode, из которого легко и просто получилось Cloud/Online IDE для GitHub.
МойОфис / MyOffice же, напротив, реализован на C++ и работать в браузерах может лишь через компиляцию кода в WASM — это приводит к ещё более выраженной однопоточности, нежели идея вокруг workers в кодовой базе на JavaScript.
Исходя из этого всего и не удивительно, что Euro Office было решено создавать
принудительно присвоив себе именно ONLYOFFICE / Р7-Офис — и формат OOXML Transitional поддерживает и в различные онлайн-сервисы удобно внедрять.
Два разных Office Open XMLСуществует OOXML аж в двух вариациях: Strict и Transitional, оба являются частью ISO/IEC 29500. Деление это обусловлено ситуацией вокруг MS Office и однозначно отражено архитектурой спецификации OOXML (ISO/IEC 29500)
- Часть 1: Основы и справочник по языку разметки (Strict), около 4500–5000 страниц, это структура XML для текста, таблиц и презентаций.
- Часть 2: Open Packaging Conventions (OPC), около 150 страниц, как упаковывать XML-файлы в ZIP-архив.
- Часть 3: Совместимость и расширяемость разметки, около 40 страниц.
- Часть 4: Особенности переходной миграции (Transitional), около 1500 страниц.
OOXML StrictИспользование ориентировано для долгосрочного (архивного) хранения документов. Полностью запрещены старые бинарные элементы внутри документов. Известные ошибки MS Office были исправлены по математическим и логическим нормам. А для формул или различных спецсимволов используется Unicode.
OOXML TransitionalНужен для перехода со старых форматов .doc, .xls, .ppt. Внутри документов разрешены старые бинарные элементы из 90-х. Известные ошибки MS Office описаны и узаконены как нюансы во имя совместимости. Использует десятки «флагов совместимости» описывающие не логику разметки, а указывающие отображать документ с определёнными нюансами/ошибками/нормами устоявшимися когда-то в прошлом во времена MS Office.
Примеры различий Strict и TransitionalГрафические фигуры и диаграммы могут быть описаны как на базе DrawingML (современном стандарте для векторной графики).
Так и с использованием VML — типичном для конвертации старых .doc файлов, необходимость в котором отсутствует в Strict, но выплывает в ряде случаев из Transitional.
Так же поддержка старых макросов, именно Transitional сохраняет полную поддержку VBA (Visual Basic for Applications). Что завязано на внутреннее устройство как Windows, так и нюансы API MS Office.
Маркеры списков, стрелочки в Transitional-файлах могут прописываться ссылками на проприетарные шрифты (Wingdings или Symbol). Когда таких шрифтов нет в системе, то получаются пустые квадраты или случайные буквы.
Примеры ошибокТот же 1900 год считается високосным в OOXML Transitional — так повелось со времён Lotus 1-2-3, который родом из 1980-х и на замену которому MS Excel продвигался. Известная вещь, происхождение хорошо задокументировано и случившаяся ради производительности (есть у Джоела Спольски, как отдельная история о появлении Visual Basic for Applications).
Требовалось уместить Lotus в 640 Kбайт – не так много памяти. Если не обращать внимания на 1900 год, то можно проверить год на високосность по двум правым разрядам числа – они должны быть нулевыми. Быстро и легко. Наверное, ребята из Lotus решили, что ничего не случится, если какие-то два месяца в далеком прошлом будут считаться неправильно.
Вот в случае OOXML Strict сдвинута точка отсчёта на 30/31 декабря 1989, так же как было всегда в Visual Basic, но сдвинутая на один день по сравнению с MS Excel.
Есть и другие альтернативы MS Office, про них уже было в контексте того, что
Microsoft ворует файлы отсылая к себе в облако без спроса. Но у них будут ровно такие же проблемы вокруг слабой распространённости OOXML Scrict и необходимости реализовывать OOXML Transitional как сам по себе, так и посредством «обратной инженерии».
#
ooxml #
LibreOffice #
МойОфис #
Р7-Офис #
ONLYOFFICE #
r7-office #
onlyoffice #
officesuite #
opensource #
software #
lang_ru @
Russia