Pues, porque naturalmente no todas las apis van a ser eliminadas. Solo se eliminan las que van quedando muy obsoletas, y esto incluso se hace luego de dos lanzamientos de la plataforma o asi.
Conoces el Blog de Reed and Steve? Es un blog oficial de microsoft.
Mira lo que dice el de las API's que estan marcadas como deprecadas:
When we determine that an old API is obsolete, we flag it as deprecated in the SDK. This means it’s going away and will stop working at some point but we typically make every effort to support it for another 1-2 revisions of the platform. The idea is to give developers time to prepare their apps.
Traduccion:
Cuando determinamos que una vieja API esta obsoleta, la marcamos como Deprecada en el SDK. Esto significa que SERA REMOVIDA y DEJARA DE FUNCIONAR en algun momento, pero normalmente hacemos todo lo posible para soportarla por 1 o 2 revisiones de la plataforma. La idea es de dar a los desarrolladores tiempo para preparar sus aplicaciones
Por otra parte, cuando salio Windows 7, a nuestra institucion se le entrego un documento marcado como Confidencial por Microsoft Dominicana. Por motivos obvios, no puedo hablar abiertamente de ello, pero el encabezado dice asi:
Este documento Confidencial muestra los terminos, estructuras y API's que estan deprecadas en Windows 7 y Windows Server 2008, y que por tanto no estaran disponibles en el proximo gran lanzamiento de Windows. Usted no debe hacer uso de ninguno de estos terminos, estructuras y API's en nuevas aplicaciones o en su respectiva documentacion; Estos tambien deben ser eliminados de cualquier documentacion o aplicacion existente. Este documento provee sugerencias sobre los posibles reemplazos para estos terminos, estructuras y API's. Los posibles reemplazos sugeridos por este documento, incluyen links que usted podria encontrar de utilidad
Poniendote un ejemplo:
Windows 95, 98, ME, utilizan un modelo de Drivers llamado "VxD". Luego, en Windows 2000, Xp, 2003, Vista, 7, etc... se utiliza un modelo de drivers llamado WDM.
Supongamos que realizas una aplicacion que utiliza API's relacionadas con el modelo VxD, y intentas correr esa aplicacion en Windows 7... que crees que pasara!? No funcionara. Porque? Porque... que sentido tiene soportar API's en Windows 7, para un modelo de drivers que quedo obsoleto hace 10 años?!
No tiene ningun sentido. Aparte, una de las mejores practicas al momento de dar Mantenimiento a las aplicaciones es remover funcionalidad obsoleta. Esto es recomendado en un libro de Microsoft Programming llamado Code Complete 2.
Otro caso de ejemplo: El api de QoS (Quality of Service). Esta deprecada y sera eliminada en cualquier proxima version de windows.
Que dicen en Microsoft al respecto?
The idea of networking Quality of Service in Windows has been around for a long time. If you look at the APIs in Windows 2000 and Windows XP, you'll find at least 3 APIs for QoS. We reviewed each of them and decided to deprecate them. What this means is that, some time in the future, each of these APIs will be removed from Windows.
Traduccion:
La idea de "networking Quality of Service" en Windows ha estado por ahi por largo tiempo. Si te fijas en las API's de Windows 2000 y Xp, encontraras al menos 3 apis para QoS. Analizamos cada una de ellas y decidimos deprecarlas. Lo que esto significa es que, en algun momento futuro, CADA UNA DE ESAS APIS SERA ELIMINADA DE WINDOWS
Fuente:
http://blogs.msdn.com/b/wndp/archive/2006/07/05/657196.aspxEn resumen: En microsoft
SI eliminan API's. Que es un proceso lento? Es cierto. Que ellos tratan de no hacerlo para evitar problemas de compatibilidad? Es cierto. Pero tambien es cierto que no todas las apis siguen ahi, como afirmas tu.
Por cierto... tambien en Windows Mobile deprecan y eliminan API's:
Fuente:
http://msdn.microsoft.com/en-us/library/bb629458.aspxY de Linux ni te hablo... En Linux se eliminan API's constantemente tambien.