Innotek OpenOffice.org voor OS/2

> Index <

Op deze pagina besteed ik aandacht aan de Windows versies van OpenOffice.org die Innotek voor het OS/2 platform uitbracht. De Duitse firma Innotek is bekend vanwege zijn op Project ODIN gebaseerde technologie waarbij Windows applicaties onder OS/2 kunnen lopen. Een soortgelijk project voor Linux is Wine.

Ik schrijf dit onder StarOffice 5.1A, de laatste OS/2 versie die StarDivision uitbracht. Deze laatste StarOffice voor OS/2 is sneller en gebruikt ondanks de StarDesktop minder geheugen dan zijn opvolger. Hierbij zal een rol spelen dat de voor OS/2 enabled Windows versies natuurlijk ook een simpele Win32 API nodig hebben. Maar de OpenOffice.org "port" van Innotek biedt door zijn betere fiters, bugfixes en de bijgeleverde fontserver wel een betere compatibiliteit met MS Office dan StarOffice voor OS/2 ooit heeft gehad. Deze kan slechts de verbeteren zijn door de op handen zijn (2006) de pure OS/2 port van OpenOffice.org versie 2 die door Mensys wordt gefinancierd.

Hoewel StarOffice 3.1 al in 1996 op het OS/2 platform uitkwam, heeft Sun de OS/2 ondersteuning geschrapt. StarOffice 5.2 en opvolgers kwam alleen voor Windows, Solaris en Linux uit. Later, toen Sun de ontwikkeling van een open source versie toeliet (de huidige OpenOffice.org), was de code al weer zo veranderd dat het moeilijk was om er nog eens een OS/2 versie van te compileren. Bij het herschrijven van de broncode werd niet meer met de OS/2 compilers rekening gehouden. Moderne cross compilers die dit "onwilprobleem" kunnen oplossen zijn er helaas niet. IBM zette de ontwikkeling van zijn VisualAge C++ Version 4.0 OS/2 compiler in 2000 stop.

Zelfs de naar eigen zeggen welwillende Lotus en IBM kwamen in grote problemen toen zij SmartSuite voor Windows naar OS/2 wilden porteren. Door het onvermogen en de tegenzin van Lotus moesten OS/2 gebruikers jarenlang op een bruikbare OS/2 versie wachten. Uiteindelijk besloot IBM, die het noodlijdende Lotus had opgekocht, de moeilijk te vertalen Windows functionaliteit aan de OS/2 API toe te voegen om het aan haar klanten beloofde SmartSuite voor OS/2 product te kunnen leveren. Vanwege IBM's vasthoudendheid kreeg OS/2 een met Windows NT compatibele registry en een summiere Win32 API, waar het open source project ODIN dankbaar gebruik van maakten. En dankzij de InnoTek GCC for OS/2 port komen ook steeds meer Linux applicaties onder OS/2 's bereik.

Het door Serenity Systems ingeschakelde Innotek wenste voor haar OpenOffice.org "port" niet zo'n lange weg te gaan. Er waren al sporadische (maar moeilijk te verifiëren) meldingen van OS/2 gebruikers die de Windows versie onder Odin aan de praat hadden gekregen. En met Innoteks kennis van de emulatie van Windows programma's onder OS/2 - Innotek had ODIN programmeur Sander van Leeuwen in huis gehaald - moest de Windows versie van OpenOffice.org onder OS/2 dus aan de praat te krijgen zijn. Op deze manier (Win32 emulatie) laat Innotek ook SUNs Java versies voor Windows onder OS/2 installeren.

Het geheim van ODIN (http://odin.netlabs.org) zit hem hierin dat OS/2 meer met Windows' New Technology gemeen heeft, dan dat ze ervan verschilt. En dat een eenmaal in het geheugen geladen programma gewoon machinecode naar de processor stuurt. De kunst van Wine en Odin is om Windows programma's in het geheugen te laden. En ze een Windows omgeving voor te spiegelen. Zodat ze zowel met de processor als met de rest van het besturingssysteem n interacties kunne aangaan.

Windows NT en OS/2 maken van oudsher gebruik van draden, terwijl het op UNIX principes georiënteerde Linux meer procesgericht is. Suns Solaris is daarentegen een UNIX systeem dat uitzonderlijk goed met draden overweg kan. Wellicht ook daarom SUN's interesse in het meerdradige StarOffice.

Innoteks OpenOffice.org: Windows onder OS/2

Inmiddels is de Windows versie van OpenOffice 1.1.5 voor OS/2 beschikbaar. Deze is als OpenOffice.org for eComStation and OS/2 bij Mensys te bestellen. U betaalt voor Innoteks op Odins gebaseerde runtime engine waar Innotek energie in heeft geïnvesteerd. De beta OpenOffice 1.1.3 for OS/2 port was nog bij Innotek beschikbaar. En een pure OS/2 port van OpenOffice 2 is in de maak (komt 2006 uit).

Voor OpenOffice.org maakte Innotek gebruik van zijn InnoTek "Win32" Runtime for OS/2, de OS/2 registry en haar voor Mozilla ontwikkelde Freetype fontserver port.

De door Innotek uitgebrachte van OpenOffice.org voor OS/2 bevat nauwelijks OS/2 code. Vergeleken met de port van Virtual PC voor OS/2 (Innotek) en Opera voor OS/2 (Opera) is het Windows gehalte hoog. Er zijn, verwacht ik, nauwelijks OS/2 optimalisaties aangebracht. OpenOffice.org draait als een met minimale middelen voor OS/2 geschikt gemaakte Windows applicatie onder InnoTeks Runtime for OS/2. De laatste vormt net als het op IBM's Win32 API gebaseerde ODIN een 32 bits Windows omgeving (Win32 API) onder OS/2.

De keerzijde hiervan is OpenOffice.org veel meer geheugen gebruikt als StarOffice 5.1a voor OS/2 zoals onderstaande meting met Theseus laat zien.


RAM Usage by Process:
--------- private --------   ------ owned shared ------
   bytes   Kbytes   Mbytes      bytes   Kbytes   Mbytes   who
00B68000    11680   11.406   038FA000    58344   56.977   SOFFICE
00591000     5700    5.566   01018000    16480   16.094   SOFFICE

In dit geval laden en Innoteks Win32 API versie van OpenOffice.org 1.1 onder de OS/2 hetzelfde bestand. Maar het geheugengebruik van OpenOffice HTML module is bijna twee maal zo groot (5,7 versus 11,7 MB RAM) als dat van de complete StarOffice Suite. Het virtuele geheugengebruik van de WIN32 versie is onder OS/2 nog vele malen groter (16 versus 57 MB RAM). Het bestand zelf werd door de OS/2 port in het hier niet afgebeelde systeemgeheugen geladen, waar ook Innoteks font engine zit.

De SETUP.EXE en OFFICE.EXE van de Windows versie van OpenOffice.org zijn zo aangepast dat ze door OS/2 kunnen worden geladen, maar daarna gebruiken ze de oorspronkelijke OpenOffice.org Windows bibliotheken. Deze kunnen dan ook niet door gewone OS/2 programma's geladen worden: als u met PM Dll op een van OpenOffice.org afkomstig DLL-bestand klikt, geeft het programma de foutmelding Unsupported EXE type ("PE").

Het door de Aurora kernel geladen hoofdprogramma (SOFFICE.EXE) kreeg wel een OS/2 stub. Het wordt probleemloos door de OS/2 kernel geladen. Daarna spreekt het programma OS/2 kernel bibliotheken (DOSCALL1.DLL, NLS.DLL, MSG.DLL) en alleen in een Windows runtime environment te laden Windows bibliotheken aan. De processor luistert slechts naar machinetaal - of die nu van een Windows of een OS/2 API - komt.

Alleen daar waar de Windows code specifieke Windows API opdrachten aanroepen ontstaan er problemen. Maar hier komt Innoteks Runtime for OS/2 in het geding. Deze WIN32 OS/2 bibliotheek vormt de vertaalslag naar Presentation Manager en de Aurora kernel.

Het voordeel van deze methode is dat de code van komende OpenOffice.org versies niet opnieuw voor OS/2 hoeven te worden herschreven. Dat is met zo'n groot niet meer voor OS/2 geschreven programma onbegonnen werk. Om dezelfde reden besloot Innotek ook SUN's Java voor Windows onder haar eigen Win32 runtime environment te laten lopen. OS/2 aan de Windows API aanpassen was gemakkelijkere dan steeds maar opnieuw de laatste Windows versies van Java voor OS/2 te herschrijven, zoals IBM lange tijd deed.

Let wel: Met InnoTek OS/2 Kit for Java loopt SUN's Java Runtime Environment voor Windows onder Innoteks Windows omgeving onder OS/2. Maar omdat het grootse deel van de SUN's Java direct met de processor praat, blijft het snelheidsverlies gering. Java is immers een vrij afgesloten systeem, dat zoveel mogelijk buiten de API van het gastbesturingssysteem probeert te werken. Alleen dan krijgt het "Write once, run everywhere" daadwerkelijk gestalte. Hetzelfde fenomeen zagen we bij Innoteks Virtual PC voor OS/2, waar de gast PC gebruikersprogramma's de vrije processor loop liet. Maar een kantoorapplicatie zal veel meer met de API's van het gastbesturingssysteem moeten integreren. En dan wordt de kwaliteit en snelheid van Innoteks Win32 runtime omgeving bepalend.

Innotek besloot dus dat ze zich beter op de voor de Windows versie van OpenOffice.Org benodigde vertaalslag naar de OS/2 API kon concentreren, dan op de door de OpenOffice.Org programmeurs gewenste functionaliteit. Die kan men op een voor meerdere besturingssystemen bedoeld systeem beter buiten de officiële API om afhandelen. Het programma wordt dan wel groter, maar het is gemakkelijker naar andere omgevingen te vertalen. Van een goed lopende OS/2 WIN32 API kunnen ook toekomstige Windows versies van OpenOffice.org en andere Windows programma's profiteren. Want deze Innoteks Runtime for OS/2 is wel degelijk een voor OS/2 te optimaliseren bibliotheek, net zo goed als de OS/2 Java Run Time machines en ODIN dat zijn.

Innoteks Runtime voor OS/2 maakt gebruik van het geheugenbeheer van de Aurora kernel. U hebt dus een recente OS/2 versie nodig: OS/2 Warp 4 Convenience Pack 1 of 2, OS/2 Warp 4 met Fixpack 16, WorkSpace On-Demand 2 met Fixpack 16 of eComStation. Voor Innoteks met de GRADD API samenwerkende font server wordt de OS/2 versie van SciTech Display Docter (SDD, tegenwoordig SNAP geheten) aanbevolen.

OpenOffice.org versus StarOffice 5.1A

Wat betekent dit in de OS/2 praktijk? Dat deze WIN32 versie van OpenOffice zich heel anders gedraagt als StarOffice 5.1A voor OS/2.

De originele StarOffice voor OS/2 integreerde niet alleen met Presentation Manager maar ook met de Workplace Shell: Zo kunt u als Werkmap file:///{wp_drives}/ of file:///{wp_desktop}/ invullen om het Drives object of de WPS als startpunt te gebruiken. Maar OpenOffice.org pikt dit niet.

Met Nieuw/ Koppeling kon u een snelkoppeling naar een WPS object (file:///{object_id}) maken. Door op Local System te rechtsklikken kon u de Systeemeigenschappen (lees: het WPS notebook instellingen) van een object bekijken. Maar die object georiënteerde SO5 integratie met de OS/2 WPS ontbreekt in de Win32 versie van OOO.

Bovendien was StarOffice voor OS/2 ook als shell inzetbaar. Door op FC te klikken open ik File Commander/2. StarOffice was als Protected Mode Shell inzetbaar (SET PROTSHELLL=), maar OpenOffice.org is dit niet.

Maar mijn grootse bezwaar tegen deze WIN32 OpenOffice.org is het feit dat het niet alleen veel geheugen gebruikt, maar ook veel trager is dan de originele StarOffice voor OS/2.

Toen OpenOffice ontwikkelt werd beschouwde men het voor OS/2 ontworpen StarOffice als een geheugen vretende monstrum (bloatware). Dat is begrijpelijk, want de andere besturingssystemen kenden niet het vertraagd doorvoeren van het geheugen of de een efficiënte multithreading van OS/2. Onder Linux en Windows was StarOffice dan ook langzamer dan onder OS/2. Om dit te verbeteren stelden de OpenOffice ontwikkelaars zich tot doel om StarOffice van al zijn rompslomp te ontdoen door alleen nog maar afzonderlijke componenten te laden. Als je een tekst wilde schrijven moest alleen de -writer component van soffice geladen worden. Bovendien moest StarOffice 6 zich zijn Windows Verkenner eigenschappen ontdoen.

Op zich was dat een goed idee. Linux gebruikers beschouwden StarOffice als bloatware en voor de Windows en MAC gebruikers waren de Verkenner eigen schappen niet nodig. Het ambitieuze StarOffice team had gehoopt een beter geïntegreerd Office pakket te scheppen dan MS Office, maar was daar maar ten dele in geslaagd.

OpenOffice.org aanpassen.

Allereerst is het handig om de Werkmap aan te passen. Deze staat op C:\INNOTEKRT\My Documents\ ingesteld, maar het is onwaarschijnlijk dat u onder deze nep Windows runtime environment map wilt werken. Ga hiervoor naar Tools/ Options/ OpenOffice.org/ Paths en stel "My Documents" in op uw eigen datamap.

Ten tweede moet u de HTML Taalinstellingen veranderen. Deze staan standaard op het Windows ansi (CP 1252, "WinLatin"). Aangezien een normaal mens zijn gedachtengoed niet met het Microsofts Windows Latijn wil verbinden, kiest u voor Western Europe (ISO-8859-1). Goede alternatieven zijn het hiermee verwante legacy Western Europe DOS/OS2 CP850 en Western Europe ISO-8859-15/Euro. Helaas wordt UTF nog niet ondersteund, maar alles is beter dan Windows ansi. Al was het alleen maar om copyright claims van Microsoft te voorkomen op uw eigen woorden.

Als u de Nederlands spellingscontrole installeert (download_dictionary.html), kunt u onder Tools/ Options /Language Settings /Language Dutch als standaard taal instellen.

Met betrekking tot de compatibiliteit is het (net als bij StarOffice) verstandig HTML te exporteren als Tools /Options /Load/Save Export als "Netscape Navigator" met de "Print Layout" aangevinkt. Hierbij wordt voor de Alinea opmaak van Cascading Style Sheets (CSS) gebruik gemaakt, wat veel opmaakcode scheelt. U stelt deze profielen in met F11 (Alinea Opmaakprofielen).

In de map OpenOffice.org 1.1.1 bevindt zich een programma-object "Open Document" dat evenals de rest van de objecten naar het hoofdprogramma soffice.exe verwijst, maar met ".uno:Open" in het parameterveld.

Unofficial NLS OpenOffice 1.1.1 (Chinese) for OS/2 and eComStation : hoe pas je de Engelse versie van OpenOffice aan.

> Index <