niedziela, 10 grudnia 2006

"Cicha wojna" o standardy: Adobe, Microsoft, ODF Alliance

Tytuł jest trochę przewrotny, ale nie pozbawiony ironii. Walka trwa w gabinetach prawników i menadżerów dużych firm. W mniejszym stopniu to interesuje informatyków.

O co chodzi? W październiku 2005 roku władze stanu Massachusetts ogłosiły że standardem formatu elektronicznego dokumentu ma zostać format OpenDocument (od stycznia 2007 roku). Władze zaleciły masową migrację danych z formatów Microsoftu do formatu ODF.

Format ODF był już wcześniej ogłoszony jako standard OASIS w maju 2005.

Microsoft zauważył, że jego pozycja jest zagrożona. Poinformował, że postara się o to żeby dokumenty MS Office były "przenośne" w tym znaczeniu, że format danych zapisywanych przez różne wersje Office był obsługiwany przez wszystkie wersje Office. Tak powstał format OpenXML.

Organizacja OASIS rozpoczęła starania o uznanie formatu OpenDocument jako standardu ISO. To spowodowało, że MS postanowił też postarać się o uznanie swojego standardu OpenXML w ECMA. Rozpoczęły się starania menadżerów Microsoftu o poparcie dla OpenXML. Otwarto serwis dla programistów OpenXML.
Z drugiej strony zwolennicy ODF zawarli sojusz i to przyspieszyło prace nad ogłoszeniem przez ISO jako standardu 5 maja 2006 roku, a opublikowanym 30 listopada 2006 roku pod nazwą ISO /IEC 26300.

Microsoft poprzez zawarcie porozumienia z Novellem i Intelem zyskał silne poparcie w ECMA w sprawie szybkiego rozwoju OpenXML. Ostatecznie 7 grudnia 2006 Ecma ogłosiła OpenXML jako standard elektronicznych dokumentów.

Firma Adobe początkowo aktywnie popierała ODF. W czerwcu 2006 Microsoft próbował dogadać się z Adobe w sprawie włączenie zapisu PDF do pakietu MS Office 2007. Mimo tego że Microsoft włączył XML Paper (XPS) jako format wydruku do .NET3 i do MS Office 2007 {jako plugin). Adobe postanowiło wstrzymać się od otwartego angażowania się w walkę o standardy. Ta walka o standardy była niekorzystna dla przyszłości formatu PDF czy Flash Paper. Adobe postanowiło rozwijać nową wersję PDF o nazwie kodowej "Mars".

Co to oznacza na dzień dzisiejszy?

Czytanie specyfikacji nie jest lektura przyjemną. Czasami warto przez to przebrnąć, bo nie ma przystępnych informacji o tym jak co można zaimplementować i wykorzystać to. Do tej pory dominowały formaty dokumentów, które były zapisane w formacie binarnym. Są to pliki pakietu Office, i jak PDF.

Obecna wojna na standardy sprawiła, że wszystkie nowe standardy (ODF, OpenXML) i jak kolejne propozycje obsługi dokumentów do druku (XPS i PDF "Mars") opierają się na formacie XML i są one plikami skompresowanymi. Prowadzi to do konkluzji że istnieje możliwość szybkiej konwersji danych pomiędzy nowymi standardami.

Użytkownicy starszych wersji Office otrzymali narzędzie Microsoft Office Compatibility Pack do obsługi OpenXML. Pojawił się nawet konwerter formatów ODF do formatów OpenXML.

Specyfikacje ODF są do ściagniecia (ODF 1.0 Second Edition w pliku PDF to jest plik 10 MB i 772 stron do przeczytania) a tak nic konkretnego w tym - spis znaczników i zalecanych standardów m.in XForm czy SMIL.

Specyfikacja OpenXML jest do ściągnięcia w 5 plikach (łącznie to 45 MB i 6035 stron). Dokumentacja zawiera tysiące przykładów i dokładnych opisów. Tylko tyle, że ogrom informacji przytłacza.

Warto też uwzględnić i przejrzeć specyfikacje PDF, XPS oraz Adobe "Mars".

Specyfikacja PDF 1.6 to 6MB i 1234 stron. Specyfikacja XPS to 8MB i 453 strony. Specyfikacja Adobe "Mars" to 2MB i 214 stron.

Tak wiec lektura tych specyfikacji pozwoli programistom na włączanie obsługi tych standardów do własnych aplikacji i jak bibliotek. Są już bliblioteki do PHP czy do .NET czy też bliblioteki .NET współpracujące z ODF i jak OpenXML.

Sporną kwestią pozostaje to w którą stronę pójdzie dalej rozwój dokumentu elektronicznego. Czy te standardy mogą w przyszłości zastąpić PDF? Trzeba odróżnić technologie do druku i jak do dokumentu elektronicznego czy plików pomocy.

Kluczowa sprawą jest jak tworzyć i obsługiwać formularze dokumentu elektronicznego oraz podpisywać je podpisem elektronicznym. O ile mi wiadomo specyfikacja OpenXML lepiej to opisała. Dzięki XPS i Rights Management Add-on for Internet Explorer 6 możemy zarządzać uprawnieniami dostępu.
Ale czy podpisywanie PDF-ów wymaga posiadania Adobe Acrobata? W OpenOffice są mechanizmy pozwalające na podpisywanie dokumentów ODF. U mnie to nie działało dobrze czasami powodowało zawieszenie się OpenOffice.

2 komentarze:

rafau.k3 pisze...

Cześć,
Ciekawy art jak i blog. Szukałem właśnie informacji na temat flashpaper i dotarłem (aż:) tutaj. Tworze teraz swoją pracę inż. i mam pewien problem, mianowicie chciałbym z danych z formularzy stworzyć dokumenty niemożliwe do edycji (pdf, flashpaper?) i.. teraz tak naprawdę nie wiem jaki format wyjściowy powinnnem przyjąć. Nadmienie, że tworzyć chciałbym je przy użyciu php lub ew. flasha (chyba że masz pomysł na inne rozwiązanie;).
Wspominasz też o podpisywaniu i prawach do takiego dokumentu - a to wogóle już byłby wypas;))...
Napisz jak widzisz taką sprawę - byłoby mi to pomocne. Dzięki

Michał Małaj pisze...

Nie ma formatu który nie byłby niemożliwy do edycji, nawet na poziomie binarnym.

Nie napisano mi co mam rozumiec pod słowem "dokument".

Czy tutaj chodzi o przygotowanie formatu do wydruku? Czy raczej o zapisanie go w jakimś formacie który nie pozwalałby na dalszą edycję?

Wnioskuję że chcesz to robić w technologii server-side.

Pozwolę że "wywrócę" Ci logikę takiego rozwiązania. Można opisać technologię "przechowywania" uwierzytelnionych i wygenerowanych tak dokumentów. To polega na tym że dla każdego dokumentu generuje się unikalny adres URI i taki adres zapisujesz w dokumencie. Na serwerze będą przechowywane "kopie" tak żeby każdy kto ma wątpliwości co orginału może go sprawdzić pobierając kopię przechowywaną na serwerze.
Ten adres URI dokumentu przypominałby adresy generowane przez programy P2P (to jest obliczanie sumy kontrolnej).
Format tutaj już mniej istotny. Warto wziąć pod uwagę mechanizm szyfrowania dokumentów na hasło. Dołączanie podpisów elektronicznych do dokumentów generowanych po stronie serwera to problem bardzo skomplikowany pod katem prawnym, w praktyce to powinno polegać na dołączeniu do pliku danych o podpisie (tylko który format wybrać?)

PDF jest dobrym rozwiazaniem, tylko że trudniej z realizacją szyfrowania czy realizacji zaradzaniem praw - tzw DRM za pomocą opensourcowych bibliotek.

SWF kolejny format który wydaje się
się niemodyfikowalny. Problem w tym ze ten format nie przewiduje szyfrowania czy zarządzania DRM, bądź dołączania podpisów elektronicznych. Teoretyczne można by umieścić dane o podpisie elektronicznym w "metadanych" SWF. Owszem jest w ActionScripcie obiekt PrintJob który pozwalałby na jednolite wydruki dokumentu.

Formaty bazujące na formacie XML OpenDocument, OpenXML czy jeszcze Adobe "Mars" i Microsoft XPS przewidują ochronę przed modyfikacją poprzez kontrolowanie sumy kontrolnej. Twórca może przy pomocy odpowiedniego oprogramowania (OpenOffice, MS Office 2007, Adobe Acrobat} podpisać taki dokument podpisem cyfrowym. Natomiast zarządzanie prawami użytkownika do dokumentów wymaga stosowania aplikacji serwerowych takich jak Adobe LiveCycle Policy bądż Microsoft Windows Rights Management Services.