Windows XP kon overweg met een indrukwekkend aantal oude programma’s en games, zelfs als die nooit voor het besturingssysteem waren aangepast. Dat was niet alleen te danken aan de kwaliteit van Windows zelf. Microsoft had ook een verborgen database met bekende softwareproblemen. Daarmee kon het systeem zich speciaal voor bepaalde programma’s anders gedragen. Soms deed Windows zelfs alsof het een oudere versie was, zodat een toepassing toch wilde starten.
Wie begin deze eeuw met Windows XP werkte, weet misschien nog hoe vanzelfsprekend veel oude software bleef werken. Microsoft-engineer Raymond Chen legde in 2003 uit hoe dat mogelijk was. In de map C:\WINDOWS\AppPatch bewaarde Windows XP een lijst met compatibiliteitsproblemen en oplossingen. De informatie stond in een binair bestand, zodat het systeem snel kon controleren of een programma een speciale behandeling nodig had.
Windows XP paste zich aan elk programma aan
Microsoft noemt die verzameling de Application Compatibility Database. Bij de lancering bevatte het bestand Sysmain.sdb ongeveer tweehonderd oplossingen. Windows keek daarbij verder dan alleen de naam van het uitvoerbare bestand. Ook de bestandsgrootte, controlesom, versienummer en datum speelden een rol. Zo kon het systeem een probleem oplossen voor één specifieke versie van een programma, zonder een nieuwere versie die wel goed werkte te beïnvloeden.
De technische ingrepen heten shims. Dat zijn kleine tussenfuncties die worden uitgevoerd wanneer een programma een Windows-functie aanroept. Ze kunnen een opdracht aanpassen, het antwoord van Windows veranderen of eerst zelf iets uitvoeren voordat de oorspronkelijke functie aan de beurt komt. Sommige programma’s weigerden bijvoorbeeld te starten als ze niet de juiste Windows-versie herkenden. Met een oplossing als Win98VersionLie kon Windows XP zich tegenover zo’n programma voordoen als Windows 98. De toepassing kreeg dus verkeerde informatie over het besturingssysteem, maar kon daardoor wel gewoon starten.
Microsoft ging soms nog een stap verder. Chen noemt EmulateHeap als een van zijn favoriete voorbeelden. Die oplossing verving het standaardgeheugenbeheer voor één programma door een kopie van de geheugenbeheerder uit Windows 95. Sommige oude toepassingen waren namelijk afhankelijk van de manier waarop dat systeem geheugen reserveerde en vrijgaf. Op een nieuwere Windows-versie konden ze daardoor problemen krijgen.
Het was bovendien geen nieuwe aanpak. Windows 95 bevatte al speciale code voor SimCity, nadat Microsoft had ontdekt dat het spel geheugen bleef gebruiken nadat het dat zelf had vrijgegeven. Windows herkende het spel en paste het geheugenbeheer aan, zodat het niet meteen vastliep. In plaats van gebruikers met een foutmelding op te zadelen, probeerde Microsoft de software dus aan de praat te houden.
Oude software blijven ondersteunen
Die compatibiliteit had ook een minder fraaie kant. Sommige oplossingen hielden verouderd gedrag in stand, zelfs wanneer dat minder veilig was. Zo kon een compatibiliteitsmodus programma’s DLL-bestanden laten laden volgens oudere Windows-regels, die minder bescherming boden dan nieuwere instellingen. Microsoft deed dat bewust voor software die anders niet meer werkte.
Chen omschrijft de aanpak als ‘bug-for-bug compatibility’: Windows hield niet alleen rekening met de functies van oude programma’s, maar soms ook met hun fouten en eigenaardigheden. De techniek had wel grenzen. Shims konden alleen ingrijpen binnen het proces van een programma en boden geen oplossing voor incompatibele stuurprogramma’s die op kernelniveau draaiden.
Waarom al die moeite voor software die soms gewoon slecht gemaakt was? Omdat één onmisbaar programma een volledige Windows-upgrade kon tegenhouden. Chen beschreef hoe bedrijven afhankelijk waren van interne toepassingen, bijvoorbeeld software in Visual Basic waarvan de oorspronkelijke ontwikkelaar inmiddels vertrokken was. Als zo’n programma niet werkte op Windows XP, kon een bedrijf voor hoge extra kosten komen te staan of zelfs niet meer naar het nieuwe systeem overstappen.
Microsoft bleef de compatibiliteitsdatabase daarom jarenlang aanvullen. In april 2011, bijna tien jaar na de introductie van XP, bracht het bedrijf nog een update uit voor het bestand Sysmain.sdb. Veel oplossingen waren intussen ondergebracht in aparte DLL-bestanden in de map AppPatch, zodat de kernbestanden van Windows zelf niet vol kwamen te staan met allerlei uitzonderingen.
De reputatie van Windows XP als besturingssysteem waarop bijna alles werkte, was dus niet helemaal te danken aan de software zelf. Microsoft deed achter de schermen heel wat moeite om oude programma’s tevreden te houden, ook wanneer die zich niet gedroegen zoals verwacht. Gebruikers hoefden daar gelukkig niets van te merken: ze dubbelklikten op een programma en het werkte. Precies dat maakte de compatibiliteit van XP zo bijzonder.
Marijn Ceulemans1266 posts
Herinnert zich nog perfect het opstartdeuntje van Windows 95. Nostalgische ziel die tegelijk graag op de hoogte blijft van de evoluties in techland. Ziet Windows, een iPhone en Google-apps als de ideale combinatie.