Microsoft-ontwikkelaar Yochay Kiriaty roept zijn collega-developers op om in hun software voortaan niet langer de Windows-versie te controleren. Volgens Kiriaty zorgen slecht uitgewerkte versiechecks te vaak voor problemen, zelfs bij upgrades.
Kiriaty noemt in zijn blogposting twee structurele problemen die optreden bij het controleren welke Windows-versie een gebruiker draait. Ten eerste falen veel versiechecks op het versienummer van Windows. Zo willen sommige applicaties niet opstarten omdat een gebruiker een upgrade heeft uitgevoerd van Windows XP met versienummer 5.1 naar Windows Vista met versienummer 6.0. Dat komt omdat het controlemechanisme uitsluitend kijkt naar het zogenaamde minor version number, het cijfer achter de punt, en niet naar het major version number, dat voor de punt staat: omdat de minor-waarde is verlaagd, weigert de applicatie op te starten. Dergelijke problemen kunnen ontstaan na de installatie van Windows-servicepacks.
Een tweede veelvoorkomend probleem is dat bepaalde software weigert te starten op Windows-versies die door de ontwikkelaars niet zijn getest. Daardoor kan bijvoorbeeld software die probleemloos draait op Vista, dienst weigeren op Windows 7, ook al zou de software technisch gezien prima op het nieuwe OS kunnen draaien. Microsoft biedt al sinds Windows 95 een methode om koppige applicaties dan alsnog aan de praat te krijgen: de compatibility-modus, die via de eigenschappen-dialoog ingesteld kan worden. Een structurele oplossing is dit echter niet.
Kiriaty noemt een aantal mogelijkheden om de implementatie van versiecontroles te verbeteren, al ziet hij ze het liefst geheel verdwijnen. Volgens de Microsoft-ontwikkelaar is het beter om te controleren op de beschikbare functionaliteit van een Windows-versie, bijvoorbeeld door te kijken of een bepaalde DirectX-api aanwezig is. Mocht een ontwikkelaar zich toch genoodzaakt voelen om uitsluitend op het OS-versienummer te controleren, dan geeft Kiriaty voorbeeldcode voor een controlemechanisme dat moet voorkomen dat applicaties in toekomstige Windows-versies dienst weigeren.