lunes, 4 de agosto de 2008

Windows 7 y Midori

Cuando por la mañana empiezas a leer apaciblemente las noticias, te topas con algo así y abres los ojos algo más de lo normal... y no es para menos: esta noticia no sale todos los días, y no en vano se ha extendido como la pólvora por toda la blogosfera.

Para empezar el nivel de "credibilidad" que yo personalmente le doy es -aún- bajo. Siguiendo un poco la noticia a sus origenes parece que o es una filtración por parte de Microsoft o es algo que una persona ajena a Microsoft ha inferido a partir de varios hechos.

Además, si nos paramos un momento más y recordamos, hace uno o dos meses apareció una de esas noticias, yo creo que un globo-sonda, que lanzó un ingeniero hablando del "nuevo" Windows 7, o mejor dicho, de miniwin (http://meneame.net/story/salen- ... -minwin) y diciendo, casi aproximadamente, lo mismo que se dice aquí, sólo que en lugar de hablar del sistema en general hablaba del Kernel y por tanto no matizaba tanto algunas cosas. Finalmente la propia Microsoft dijo que no (http://meneame.net/story/proximo- ... -kernel), que Windows 7 iba a ser el -ordinario- sucesor de Vista, basado en el Kernel WinNT.

Ahora aparece esta noticia, yo creo que tiene mucho que ver con aquella que se lanzó originalmente, más desarrollada, pero viene a decir lo mismo:
  • Por un lado, como es lógico, Microsoft está cansada del mastodóntico código que tiene el Kernel WinNT, por causa, sobre todo, de la retro-compatibilidad nativa que ofrece ¡¡hasta Windows 3.11 incluso!! y de manera nativa. Si alguno es programador sabrá a que me refiero. Se habla de usar un micro-núcleo, idea con sus añitos, pero que hasta la fecha apenas es implementada por un puñado de sistemas, debido a la complejidad que encierra (por ejemplo MINIX usa un micro-núcleo desde hace años y Hurd, el hermano pequeño de Linux, esperemos que pronto esté listo, WinNT estaba a medio camino siendo de tipo híbrido). Esta me parece una línea de actuación adecuada.
  • Por otro lado la idea es poder reducir los recursos que "devora" el sistema, haciéndolo mucho más ligero, aunque esto no hay que confundirlo con el hecho de que si activamos una interfaz similar a Aero si no tenemos recursos. Sin embargo el núcleo en si mismo es una pieza muy liviana: el mismo núcleo o kernel, por ejemplo Linux, se puede usar en dispositivos móviles o en super main-frames de peta-flops, siempre que se cumplan una serie de requisitos: es lo que se monta sobre el kernel lo que va orientado a uno u otro dispositivo. Sin comentarios: supongo que todo el mundo dirá que esto es genial.
  • Se habla del .NET como plataforma de desarrollo integrada en el sistema. Para aquellos que no lo conozcan: es un entorno de compilación dinámica (JIT), similar a Java en algunos aspectos. No voy a entrar en profundidad, tenéis un magnífico artículo en la Wikipedia sobre el JIT: http://es.wikipedia.org/wiki/Compilaci%C3%B3n_JIT ni que decir que lo del JIT tiene sus años, aunque no lo creáis. Desde mi punto de vista meter .NET me parece bien, pero no me parecería una decisión correcta desplazar a la interfaz de funciones stdcall de toda la vida por ello (ambos sistemas pueden y deben coexistir). Por otro lado programar en .NET elementos críticos en velocidad del sistema operativo también puede ser un gran error que provoque que se pierda el rendimiento ganado por la primera decisión.
  • Aunque no se comentaba en la primera noticia, ya se entreveía la virtualización como apuesta fuerte: con virtualización podemos ejecutar aplicaciones que a priori no son compatibles con el sistema en él. Esta idea no es, ni mucho menos nueva. El máximo exponente de esto, creo yo, es Rosetta de MacOSX, un elemento que casi ningún maquero (yo no lo soy, al menos no 100%) conoce y que permite ejecutar aplicaciones de PowerPC en Macs basados en Intel es muy similar, sino idéntica. Una idea muy acertada, creo yo, sobre todo porque al seguir funcionando el sistema sobre una plataforma x86 la eficiencia de ejecución es mucho mayor que en el caso de Rosetta. LO MÁS IMPORTANTE ES QUE EL USUARIO TENGA CONTROL sobre el virtualizador para que este no coma recursos a lo tonto.
  • Además, como efecto colateral de la virtualización, y esto se comenta ya sólo en la última noticia, el sistema funcionará con un sistema similar a la jaula chroot. No sé si tienen pensado llegar al extremo de chroot, pero si es así: cada aplicación estará completamente aislada de las otras, incluso a nivel de disco (cada aplicación no podría ver datos fuera de su zona de disco), salvo que específicamente se solicite al sistema que dicha aplicación tenga acceso a otra o usando IPCs. Hasta aquí la idea ya estaba implementada en WinNT, sólo que a la hora de la verdad WinNT permitía que hicieran de él un pandero puesto que las aplicaciones de un mismo usuario podían entrar en la memoria de las demás (ESTA ES LA CAUSA, JUNTO CON EL ACCESO AL DISCO, DE TANTO VIRUS DE WINDOWS). Con la jaula la idea es que cada aplicación va a pensar que tiene todo un ordenador sólo para ella. Para comunicarse con otras aplicaciones tendrá que usar sockets, memoria compartida y otros tipos de IPCs. En ocasiones se puede permitir que una aplicación tenga acceso a otra, pero sólo en casos contados. Mi opinión sobre este punto es que ¡¡¡ya era hora!!!
  • En la nueva noticia se habla de cloud-computing y de integración de la web y de internet con el sistema... mi opinión es que esto llega ya tarde, bastante tarde. Todo el tema este de sistema operativo y web es un problema de interfaces y usabilidad más que de infraestructuras: sobre esto mi opinión es que lo que más futuro tiene son los sistemas que carguen en menos de un segundo, en los que las páginas web se integren como un contenido más del sistema, una aplicación más, vamos y desde luego es algo que ya hace tiempo que debió hacer Microsoft. Sobre esto, a ver si publico un artículo que había escrito hace un tiempo sobre el futuro de los navegadores y que habla de la integración de sistema operativo y navegador y en el que defiendo que no C# o C, sino Javascript, sobre .NET o cualquier otro compilador JIT debería ser el lenguaje de peso del sistema, pero sin dejar de lado a C, como ya dije.
Por lo tanto, nada nuevo, aunque eso sí, todo interesante; ya cuando leí la noticia por primera vez me pareció una idea muy interesante.

Fuentes:
http://pixelame.net/story/se-acaba-windows-llega-midori
http://www.error500.net/articulo/midori-microsoft-sistema-operativo-cero
http://www.elpais.com/articulo/internet/Microsoft/prepara/sustituto/virtual/Windows/elpeputec/20080804elpepunet_4/Tes
http://meneame.net/story/microsoft-podria-estar-trabajando-futuro-sin-windows-proyecto-midori
http://www.sdtimes.com/MICROSOFT_S_PLANS_FOR_POST_WINDOWS_OS_REVEALED/About_CLOUDCOMPUTING_and_MOBILEDEVELOPMENT_and_NET_and_SOASAAS_and_SOFTWAREDEVELOPMENT_and_WINDOWS_and_MICROSOFT/32627
http://www.infoworld.com/article/08/07/29/Microsoft_prepares_for_end_of_Windows_with_Midori_1.html
http://research.microsoft.com/os/Singularity/

No hay comentarios: