Titanic en construccion

El Reporte Gartner

Durante las últimas semanas, la blogosfera ha estado opinando acerca de un controversial reporte de la compañía de consultoría Gartner, que declara que Microsoft debe realizar cambios radicales en su sistema operativo, ya que Windows está “colapsando” y que la situación actual es “insostenible”. Aunque estos tipos de reporte suelen ser cuestiones publicitarias, éste ha recibido más atención y seriedad, pues viene de una compañía un poco más respetada en el mundo de la tecnología.

Hace dos años, en un artículo anterior titulado “Microsoft: Un Gigante Amarrado” explicaba que Microsoft ha caído en un dilema grave: Windows y su ecosistema de aplicaciones se han vuelto tan grandes y complejas que cualquier cambio (por pequeño que sea) afecta una infinidad de áreas del sistema. Esto a su vez resulta en que los ciclos de desarrollo, programación, y “bug testing” se hagan horriblemente largos. Vista tardó cinco años en lanzarse, algo que en el mundo de la informática son siglos. Lo peor es que aún después de todo ese tiempo, Vista no fue la revolución que una vez se esperaba. Inclusive Steve Ballmer concedió que Vista es un “trabajo en progreso” y anunciaron también que la próxima versión de Windows, Windows 7, saldrá a mercado mucho más rápido que lo que tardó Vista.

Esto ha dejado a Microsoft en una situación difícil. Aunque es claro que todavía Microsoft se encuentra en una posición envidiable en la empresa y el hogar, de no hacer algo pronto podrían verse en verdaderos problemas. Poco a poco esa ventaja se va a ir erosionando y no van a tener forma de evitarlo.

¿Cómo se metió MS en este lío?

Para Microsoft, la regla de oro en el desarrollo de Windows siempre ha sido preservar la compatibilidad con programas viejos (“backward compatibility”). Por eso es que usted puede correr programas de hace diez años o más en el Windows de hoy. Esto es una posición sensible, especialmente cuando hablamos de la empresa – un mundo notoriamente lento para el cambio y notoriamente lucrativo para Microsoft.

Pero esta máxima también trae consigo problemas. Hoy en día los API’s de programación de Windows son una extraña mezcla de lo nuevo, lo viejo y lo obsoleto, como explica Peter Bright en su artículo “From Win32 to Cocoa: a Windows user’s conversion to Mac OS X”:

[Microsoft] desarrolló un sistema moderno, pero lo hizo a prinicpios de los noventa: Windows NT… Sus APIs se basaron en el API Win16 del Windows 16-bit. Esto fue una decisión premeditada, ya que facilitaba la migración de aplicaciones 16-bit a la nueva plataforma 32-bit, y en el momento probablemente hacía sentido. Pero eso significa que hoy en día el API 64-bits (Win64) todavía refleja decisiones que se hicieron hace 20 años.

Este afán de preservar compatibilidad puede llegar a extremos ridículos, como muestra Joel Spolsky en su artículo “How Microsoft Lost the API War”:

Escuché de esto por primera vez de uno de los programadores del famoso juego SimCity, quien me dijo que había un error crítico en su programa: usaba memoria justo después de haberla liberado, un gran no-no que de casualidad funcionaba en DOS pero no en Windows… [La gente de Microsoft] estaba probando varias aplicaciones famosas, asegurándose que funcionaran bien en Windows, pero SimCity constantemente fallaba… Los desarrolladores de Windows descompilaron SimCity, encontraron el error y añadieron código especial en Windows que chequeaba si SimCity estaba corriendo, y si lo estaba, corría el asignador de memoria en un modo especial donde la memoria se pudiera usar luego de liberarla.

Wow. Si usted conoce de programación esta historia le tiene que haber hecho temblar. ¿Cómo pudo Microsoft hacer decisiones tan pobres en cuanto a la arquitectura de su sistema? Porque eran decisiones de negocio, no tecnológicas. La realidad es que a estos extremos llegaba Microsoft para mantener compatibilidad, y ahora están pagando por ello.

La Internet Maliciosa

Muchos consideran que Windows 2000 fue cuando Microsoft alcanzó el pináculo de estabilidad en la familia Windows. Pero muchos no entienden que Windows 2000 fue un sistema operativo que vivió en otra época, antes de que la Internet se convirtiera en un lugar hostil. En efecto, cualquier dispositivo conectado hoy en día a la red está sujeto a un ataque constante de tráfico que tiene la intención de adueñarse del sistema para propósitos maliciosos (es por esto que usted siempre debe estar detrás de un “firewall” al conectarse a la red). Recuerdo que en la compañía donde trabajaba en el año 2000, todas las computadoras Windows tenían IP’s públicos, sin firewall, y a pesar de esta locura, los virus y los troyanos no representaban un problema.

Sin embargo, todo esto cambió poco después, cuando ya Windows XP estaba en uso general. Ante los ataques de worms como Nimda, Code Red y los demás, Microsoft se dio cuenta que su sistema operativo era incapaz de enfrentar esta nueva amenaza con un sistema que por 20 años había recibido funcionalidad sobre funcionalidad sin pensar en la seguridad de tal arquitectura.

Y así comenzó el proceso de arreglar a Windows. Microsoft le añadió un firewall a XP y por años ha revisado el código entero del sistema, lanzando parchos constantes para arreglar asuntos de seguridad. El arreglo a XP, y especialmente el nuevo Vista, ha sido probablemente la revisión de código más grande en la historia del software.

Este esfuerzo atrasó considerablemente el lanzamiento de Vista. Microsoft tuvo que hacer cambios profundos en la arquitectura de este nuevo sistema: arreglaron el sistema de permisos en XP (donde era casi imposible trabajar en una cuenta no-administrativa) e introdujeron sistemas nuevos tales como el molestoso UAC. Todo esto mejoró la seguridad de Windows, pero aún así no implementaron su plan completo de seguridad, nuevamente en nombre de la compatibilidad que discutimos anteriormente.

Actualizar Temprano, Actualizar a Menudo

Así que volvemos al problema: Windows es demasiado grande y difícil de actualizar. Por esto, cualquier cambio que se haga será evolucionario en vez de revolucionario, lo que está completamente opuesto al modelo ágil que desde hace varios años están presentando el Código Abierto y la nueva era de la Web 2.0. “Actualizar temprano, actualizar a menudo” es un modelo que Microsoft tendrá mucha dificultad en seguir.

En los años noventa, Apple se dio cuenta que tenían el mismo problema de Microsoft, y con OS X tomaron la radical decisión de deshacerse de lo viejo y empezar de cero sobre una base probada. El resultado es un sistema más moderno, eficiente y capaz de evolucionar en el futuro. La calidad de las aplicaciones en OS X prueban este punto, como bien menciona Peter Bright en su artículo.

Ahora bien, se argumenta que Apple no tenía tanto que perder como Microsoft en una decisión como esta, ya que su presencia en la empresa es mínima. Esto es muy cierto, pero por otro lado me pregunto: ¿Por qué el sistema operativo que yo utilizo en mi casa tiene que estar sujeto a las restricciones del mundo de la empresa? La empresa es el templo de la estabilidad y de lo probado; rara vez es el lugar donde se prueban los límites. Por esto es que mucha gente de la vieja guardia que trabaja en la informática empresarial protestan cuando se habla del “ocaso de Microsoft”, mientras que los jóvenes que desde hace años viven en este mundo Web 2.0 consideran a Microsoft un dinosaurio que (con la notable excepción del Xbox) no tiene nada excitante que ofrecerles, si lo consideran del todo. La nueva generación de usuarios, que ahora más que nunca está tratando las computadoras como “consumer products”, siempre andan en busca de lo moderno, lo nuevo y lo “cool”, y la realidad es que Apple se los está dando y Microsoft no. Microsoft es el nuevo IBM.

El Futuro

Microsoft debe reconsiderar alterar radicalmente el concepto de la compatibilidad. Empiecen de cero o casi de cero con un sistema operativo eficiente, modular, y sin dependencias excesivas. Ya la compañía ha anunciado que Windows 7 será modular, pero esto parece ser más bien un término de mercadeo que una verdadera modularidad a nivel arquitectónico.

Para proveer compatibilidad con aplicaciones existentes, virtualicen las versiones viejas de Windows (como hizo Apple con OS9 cuando lanzó OS X). La tecnología de la virtualización ha llegado a un punto de madurez donde la experiencia puede ser prácticamente transparente para el usuario. Aquí también Microsoft ha anunciado iniciativas de virtualización, pero éstas son más bien para el mundo de los servidores, no la PC del escritorio.

Y mirando más allá, estas medidas serán inevitables para que Microsoft pueda mantener su competitividad ante este nuevo mundo donde las aplicaciones residen en la nube, y el sistema operativo poco a poco se va haciendo irrelevante.

Artículos Relacionados:

Presiona para mostrar los comentarios (5) o añadir un comentario. Comentarios (presiona para esconder)
  1. Alexander Allen abril 21, 2008 7:35 pm

    Buen post. Lo pegue en mi facebook . . .

  2. El Rata mayo 12, 2008 9:09 am

    ¡Saludos, Rafi! Sólo te quería avisar a través de este comentario que

    Joel Villarini mayo 12, 2008 10:09 am

    Excelente post… Vista es extremedamente buggy.. me recuerda mucho al desastre que fue Windows Me, porque yo como consumidor debo de aceptar un producto mediocre? Me compre una laptop en enero y hoy en dia me pregunto pq la compre Windows.. cuando Mac es mucho mas estable.. como dice un colega mio “Mac just works right”.

  3. HabitosVitales julio 1, 2008 12:50 pm

    Hola, no creo que hay un gran problema si MS se queda en ser el próximo IBM. Sus acciones ya están actuando desde hace como si lo son, muy estables.

    En mi opinión no hace falta que se meten en innovación (bueno, nunca lo fueron en todos modos…) y dejar eso a pequeñas empresas. MS puede seguir sirviendo a las grandes empresas.

    Un saludo!

  4. Giancarlo Gonzalez octubre 7, 2008 7:29 pm

    Lo que dice Steve Ballmer (CEO Microsoft) sobre Vista…

    http://www.youtube.com/watch?v=Ar_r2kE9Ej4&feature=related

    Lo tiran al medio bien duro