2 декабря 2009 г.

Базовые сведения об OOXML

Office Open XML (OOXML) — семейство форматов файлов для хранения электронных документов пакетов офисных приложений — в частности, Microsoft Office. Формат представляет собой ZIP-архив, содержащий текст в виде XML, графику и другие данные, которые могут быть сериализованы с применением защищённых патентами двоичных форматов, спецификации которых были опубликованы Microsoft для пользователей OOXML на условиях Microsoft Open Specification Promise.
Первоначально формат создавался как замена прежнему двоичному проприетарному формату документов, который использовали приложения Microsoft Office вплоть до версии Office 2003 включительно. В 2006 году формат Office Open XML был объявлен свободным и открытым стандартом Ecma International. Он является форматом по умолчанию для приложений Microsoft Office 2007.
С точки зрения конкурентной борьбы на рынке офисных приложений, совершенно очевидно, что интенсивная доработка первоначальных XML-форматов Microsoft и ускоренное «протаскивание» OOXML в качестве международного стандарта обусловлены реальной угрозой рыночной позиции Microsoft в сегменте офисных приложений, которую корпорация увидела в лице открытых форматов ODF и открытых офисных пакетов, которые поддерживают эти форматы.
В настоящее время существуют две разные «стандартизованные» версии OOXML - ECMA-376 и
ISO 29500:2008. До сих пор не существует офисного пакета, полностью поддерживающего OOXML в версии стандарта ISO/IEC 29500. Ожидается, что полная поддержка стандарта ISO/IEC 29500 будет обеспечена в Microsoft Office 2010 – хотя это вызывает большие сомнения, с учетом незрелости и внутренней противоречивости стандарта.

Стандартизация OOXML
История рассмотрения и утверждения OOXML в качестве стандарта ISO была хитом скандальных публикаций в ИТ-прессе и интернете в течение 2007-2009 гг. У меня, когда я поподробнее познакомился с хронологией и деталями событий, было ощущение некоего циркового представления в глобальных масштабах. Здесь я только коротко изложу основную сюжетную линию, а подробнее обо всем происходившем напишу в отдельном посте.
Первые шаги по стандартизации OOXML были предприняты Microsoft в 2005 году, в ответ на запрос Европейского Сообщества о желательности стандартизации XML-форматов, применявшихся в MS Office 2003. Microsoft передала 2000 страниц технической документации по новым (на тот момент) форматам консорциуму Ecma International (ECMA) с целью разработки «формального стандарта для офисных приложений, полностью совместимого с форматами Office Open XML, представленными Microsoft». Консорциум ECMA создал для целей разработки стандарта Технический Комитет 45 (ТК45) под председательством двух сотрудников Microsoft; в состав ТК45 вошли также представители компаний Apple, Canon, Intel, NextPage, Novell, Pioneer, Statoil ASA, Toshiba, а также сотрудники Библиотеки Конгресса США и Британской Библиотеки. В процессе разработки стандарта спецификация увеличилась в объеме до 6000 (!) страниц. 7 декабря 2006 года спецификация была утверждена в качестве стандарта ECMA-376 (в настоящее время известна как «1-ая редакция»).
В начале 2007 года ECMA передал спецификацию OOXML в JTC1 ISO (тот же комитет, который в 2006 году утвердил ODF в качестве стандарта ISO 26300) для рассмотрения и утверждения в качестве международного стандарта ISO/IEC. При этом было высказано пожелание, чтобы рассмотрение проекта стандарта проходило по т.н. процедуре «fast-tracking», т.е. в ускоренном режиме. Фактически, процедура «fast-tracking» означает попадание проекта стандарта, как минимум, сразу на четвертую стадию рассмотрения-утверждения, минуя стадии подготовки в рабочих группах и рассмотрения в профильном комитете (см. пост, посвященный порядку разработки стандартов ISO – здесь). Такая процедура применяется, если на рассмотрение предлагается зрелый отраслевой или национальный стандарт, уже имеющий практику применения и реализации. OOXML к моменту передачи на рассмотрение в ISO не являлся зрелым стандартом, однако, ISO согласилась с рассмотрением его по процедуре «fast-tracking» и зарегистрировала в качестве ISO/IEC DIS 29500. Собственно, с этого все и началось…

Далее – тезисное изложение основных фактов (как я обещал, пикантные подробности последуют – в отдельном посте).
- В течение 5-ти месяцев ISO/IEC DIS 29500 проходил обсуждение в национальных организациях по стандартизации.
- 5 сентября 2007 года принятие варианта OOXML как стандарта ISO/IEC 29500 было временно отклонено по результатам голосования в JTC1 (проект стандарта не набрал необходимую квоту голосов «за» и превысил квоту голосов «против»).
- С сентября 2007 начался отсчет второго 5-месячного срока, в течение которого организация-инициатор утверждения стандарта (ECMA) собирала замечания и комментарии от стран-участниц голосования. В результате был подготовлен рабочий документ «Disposition of Comments», в котором ECMA попыталась ответить на полученные замечания и комментарии. Документ состоял из 1600 страниц и включал рассмотрение более 1000 замечаний, полученных от стран-участниц (по некоторым данным, общее количество замечаний и комментариев к проекту стандарта превысило 3000).
- Члены ISO имели в своем распоряжении всего 6 недель в январе-феврале 2008 года для рассмотрения вышеупомянутого документа и проведения нескольких неформальных телефонных конференций с представителями ТК45 ECMA до момента открытия специальной рабочей встречи (BRM – Ballots Resolution Meeting, Согласительная встреча по итогам голосования).
- BRM по проекту ISO/IEC DIS 29500 состоялась в конце февраля 2008 года. На этой встрече ECMA вынесла на обсуждение более 870 предложенных изменений к проекту стандарта (из общего количества в 1000+, включенного в документ «Disposition of Comments»). Из предложенных к обсуждению изменений только около 20% были рассмотрены в ходе 5-дневной согласительной встречи, после чего лимит времени на обсуждение был исчерпан. Оставшиеся 80% изменений не были рассмотрены в ходе BRM – голосование по ним должно было быть проведено в индивидуальном порядке с помощью специальной процедуры, одобренной в ходе встречи (каждая страна могла проголосовать «за», «против» или воздержаться по каждому предложенному изменению). Результаты голосования по пунктам, не вынесенным на обсуждение (по предварительным подсчетам сайта Groklaw): 18 стран воздержались, 4 делегации отказались от голосования, 6 сочли исправления ECMA приемлемыми, 4 — неприемлемыми.
- После завершения BRM каждая из стран-участниц имела в своем распоряжении 30 дней для того, чтобы окончательно определиться по вопросу голосования (точнее – принять решение об изменении или сохранении своего голоса, поданного на голосовании в сентябре 2007 года).
- В конце марта 2008 года (по некоторым данным – 1 апреля!) изменённая спецификация была принята как будущий стандарт ISO/IEC 29500. При этом, в частности, в Норвегии были отмечены нарушения процесса стандартизации. Позже оказалось, что файлы, сохраняемые Microsoft Office 2007, не проходят тестов на соответствие стандарту, что нарушает правила принятия стандарта через процедуру Fast-Tracking, требующие, чтобы существовали реализации стандарта.
- В мае 2008 были поданы апелляции от ЮАР, Бразилии, Индии, Венесуэлы. Также подана жалоба о нескольких нарушениях от Open Source Leverandørforeningen в Дании. Основные претензии национальных комитетов к ISO — несоблюдение требуемых процедур в процессе обсуждения, которое не позволило удовлетворительным образом обсудить и устранить замечания национальных комитетов к проекту стандарта, отсутствие консенсуса в ходе согласительной встречи, а также тот факт, что в нарушение регламента, предписывающего публикацию текста стандарта в течение месяца по окончании обсуждения, его текст до сих пор не опубликован. Публикация ISO/IEC DIS 29500 была отложена на период рассмотрения апелляций (30 дней).
- В июле 2008 года руководители ISO и IEC порекомендовали Technical Management Board отклонить апелляции, указав в качестве причины то, что проект стандарта был принят голосованием в соответствии с директивами ISO/IEC JTC 1.
- В августе 2008 года ISO отклонила апелляции стран, выступающих против принятия OOXML как стандарта, так как они не смогли получить поддержку необходимого числа участников ISO для приостановления принятия стандарта.
- В конце августа 2008 года государственные IT-организации Бразилии, ЮАР, Венесуэлы, Эквадора, Кубы и Парагвая опубликовали заявление о сомнениях в нейтральности ISO.
- В Норвегии, где из 21 голоса «против» и двух голосов «за», поданных в ходе национального голосования, получилось «за», поданное от имени Норвегии в ISO, 29 сентября 2008 года 13 членов технической комиссии в знак протеста вышли из состава Standard Norge.
- По данным собрания ISO/IEC JTC1/SC34, подкомиссии ISO/IEC JTC1, в начале октября 2008 года SC34 отправил OASIS неопубликованный запрос на передачу ей контроля над стандартом ISO/IEC 26300 (ODF), обосновывая это стремлением к лучшей совместимости между стандартами. В Groklaw также обратили внимание на то, что 9 из 20 присутствовавших на собрании в июле являлись сотрудниками или консультантами Microsoft, либо членами ECMA TC45. В результате появились подозрения в попытке захвата Microsoft контроля над ODF.
Международный стандарт ISO/IEC 29500:2008 был опубликован в ноябре 2008 года…


Реализации OOXML
Без сомнения, самым известным и широко распространенным, офисным пакетом, поддерживающим форматы OOXML является MS Office 2007. Однако, реализация OOXML в этом пакете выполнена в соответствии со стандартом ECMA-376, а не ISO 29500.
Microsoft обещает, что полная поддержка OOXML  в соответствии со спецификацией ISO/IEC 29500:2008 будет реализована в MS Office 2010.

Весьма объемные перечни офисных пакетов и отдельных офисных приложений, поддерживающих OOXML, опубликованы в Википедии (http://en.wikipedia.org/wiki/Office_Open_XML_software) и на сайте OOXML Community (http://www.openxmlcommunity.org/applications.aspx).

Применение OOXML
Ряд стран объявил о формальном признании (или рассмотрении вопроса о признании) форматов OOXML. В чем конкретно заключается признание, варьируется от случая к случаю: иногда это означает что стандарт OOXML одобрен в качестве национального стандарта, иногда – что форматы OOXML допустимы для использования, когда существуют требования национальных регуляторов об использовании не-проприетарных форматов, в остальных случаях это означает, что национальные правительства приняли решения об использовании OOXML в некоторых специфических контекстах.
Ниже перечислены страны, в той или иной форме, признавшие OOXML:
- Бельгия. Готова признать все открытые стандарты ISO, в том числе и OOXML
- Дания. С 1 января 2008 года государственные ведомства должны поддерживать, по крайней мере, один из двух открытых офисных форматов – OOXML или ODF, в зависимости от обстоятельств
- Германия. OOXML рассматривается правительственным офисом по стандартизации в публичных ИТ. Последний релиз "SAGA" (Standards and Architectures for E-Government-Applications) включает форматы OOXML
- Япония. Новая инфраструктура интероперабельности правительственных приложений отдает предпочтение открытым форматам, в том числе, и OOXML
- Литва. 5 марта 2009 года стандарт ISO/IEC 29500:2008 утвержден в качестве национального стандарта Литвы
- Норвегия. Правительство рассматривает возможность использования форматов OOXML с декабря 2007 года
- Швеция. Стандарт ISO/IEC 29500:2008 утвержден в качестве национального стандарта - SS-ISO/IEC 29500:2009
- Швейцария. Последняя версия SAGA.ch, включающая форматы OOXML, является обязательной для департаментов Федерального Совета, а также для кантонов, городов и муниципалитетов
- Великобритания. Правительство утвердило план действий по использованию открытых стандартов, который включает ISO/IEC 29500 в качестве одного из поддерживаемых форматов
- США. 15 апреля 2009 года INCITS, дочерняя организация ANSI, проголосовала за ISO/IEC 29500:2008 в качестве национального стандарта США

Критика OOXML
Ниже перечислены только некоторые из критических замечаний к спецификации OOXML. Исчерпывающую подборку критики можно найти на сайте OOXML.org (http://www.noooxml.org).

- Название Office Open XML слишком похоже на OpenOffice.org XML, что приводит к путанице. Такое уже случалось с предложениями стандартов от Microsoft. Некоторые считают, что это было сделано намеренно.
- Несмотря на то, что информация о формате открыта, он защищён патентами Microsoft, и любая программа (нарушающая лицензионное соглашение на использование запатентованных составляющих стандарта) для чтения Open XML нарушит законы США.  
- Документация к Open XML занимает более 7000 страниц, что является излишне большим объёмом и существенно усложняет попытку создания программы с поддержкой Open XML.
- Open XML является, по сути, переводом в XML бинарных форматов Microsoft Office. Как ручное редактирование, так и поддержка Open XML в других программах серьёзно затруднены. Размеры бумаги перенумерованы числами от 1 до 68, вместо имён A4, B5 и т. д; аналогично сделано с кодами языков. Некоторые наименования цветов отличаются от стандартных.
- Формат времени, доставшийся Open XML по наследству от Microsoft Excel, а тому — от Lotus 1-2-3, отсчитывает годы, начиная с 1900. При этом сам 1900 год неправильно трактуется как високосный, вследствие чего все даты до 28 февраля 1900 года включительно имеют неправильное соответствие с днём недели. Также в формате времени не задан часовой пояс, и временны́е расчёты не учитывают переходов на летнее время.
- Использование специального формата математических формул, который имеет альтернативу в виде MathML, и вдобавок был отвергнут консорциумом W3C ещё в 1997 году. В других местах также используются собственные форматы Microsoft — например, для векторной графики применяется внутренний формат Windows WMF, а не стандартизированный SVG.
- Software Freedom Law Center указал на проблемы с условиями (связанными с патентами, то есть Microsoft Open Specification Promise), под которыми Microsoft опубликовали спецификацию: право на использование патента на «технологию» даётся только для кода, реализующего её — частично или полностью — и не распространяется на работы (в том числе и производные от упомянутого кода), не связанные напрямую с данной технологией.
- Из-за широкого использования в Open XML битовых масок невозможно провести формальную проверку XML-файла с помощью DTD.
- Формат поддерживает вставку двоичных данных, что в будущем может привести к несовместимости.

Комментариев нет:

Отправить комментарий