Acerca de...
El equipo
Encuestas
Política de privacidad
WinTablets

Encuesta

¿Cual crees que triunfará?

Ver Resultados

Cargando ... Cargando ...

últimas entradas importantes

Categorías

Archivos

18
Oct 2016
AnálisisAplicaciones Universaleshasta los putos cojones de la incompetencia de microsoftMetroModern UI

Microsoft y el 2020, o la decadencia de un imperio (I)

caida-imperio-romano
Esta va a ser una serie de entradas comentando sobre el estado actual de Microsoft y mis vaticinios para el 2020. De antemano os comento que van a ser muy polémicas y que existe la posibilidad de que me despellejéis, pero qué queréis que os diga, es como lo siento.

Hoy vamos a hablar del desarrollo de las aplicaciones Modern UI, o Metro.

A finales de 2010 Microsoft sacó una “nueva” plataforma para teléfonos móviles que llamó Windows Phone. Comenzó con la versión 7.

¿Por qué 7 y no 1? Muy sencillo: la plataforma anterior, llamada Windows Mobile (WM), murió en la versión 6. Para los que no lo sepan, WM fue la última encarnación de un subconjunto de Windows especialmente construido para ser ejecutado en lo que en su momento se llamó handheld, o dispositivos para sujetar en la mano.

Como subconjunto de Windows, implementaba casi todo el API de Win32, con lo que muchas veces solo tenías que coger un programa de escritorio y recompilarlo, con el handicap de que el resultado era idéntico a la versión de escritorio, pero ejecutando en una pantalla muy pequeña, por lo que había que hacer cambios en la interfaz, teniendo al final que realizar casi un programa nuevo.

Windows CE funcionaba muy bien. Tan bien que era ampliamente utilizado en sistemas industriales como dispositivos para controla autómatas y otros procesos. Había plantas químicas que funcionaban gracias a Windows CE, con los operarios manejando el sistema desde PDA.

La versión más importante fue la 5.0. Pese a tener algunos problemas (por ejemplo, el reloj del sistema tendía a retrasarse), funcionaba perfecto.

La versión comercial se llamó Windows Mobile, y seguía a la versión de CE, saliendo un poco después. Además, cualquiera podía construirse un Windows para su hardware. Era tan sencillo como laznar el Platform Builder, elegir qué querías y listo. Tras media hora de compilación podías tener un Windows Mobile/CE con, por ejemplo, pila TCP/IP pero no Bluetooth, o con puertos serie, o con un servidor Web. Las posibilidades eran casi infinitas.

windowsce

La crisis comenzó cuando Microsoft sacó una cosa llamada .NET Compact Framework, que era la implementación del .NET Framework y C# que corría dentro de Windows CE y WM. Aquello nunca terminó de funcionar bien. Había bugs para dar y tomar, con parches casi continuos que cuando arreglaban una cosa, volvían a romper otra que ya habían solucionado, o una nueva.

De hecho, el .NET Framework no fue estable hasta la versión 3.5, sacada en el 2007, seis años después de la primera sesión. Bueno, fue estable después de muchos parches sacados los años siguientes. Pero en el escritorio. En WM nunca funcionó bien. Digamos que Microsoft tardó unos siete años en estabilizar la plataforma, pero solo en el escritorio.

Con la salida del iPhone, Microsoft mató todo aquello. Me refiero a WM y Windows CE. Todavía me encuentro gente que añora amargamente Windows CE. Gente del sector industrial, que ahora se tiene que valer de PC corriendo Linux o Windows de escritorio, o si necesita algo móvil no tiene más cojones que terminar ejecutando terminales con Android, terminales completamente inadecuados porque Android y Java no sirven para nada de eso. Con la suerte que ahora hay PC industriales que ocupan muy poco espacio.

windowsceindustrial

De hecho, hay un hueco de cinco años en los que Windows CE murió, para no renacer ya nunca más aunque ahora dispongamos de la versión 7 (2011) y la 2013, que salió en el mismo año que su nombre. Esta última versión está soportada hasta 2023, pero curiosamente si quieres acceder a cualquier versión de Windows CE, no puedes. Son licencias legacy, y supongo que el soporte será sui generis. Hasta donde sé, solo se vende en el sector Enterprise, por lo que como no seas una HP o una Lenovo no vas a poder comprarlo y, ¿tu ves que alguna empresa grande lo ofrezca? Pues eso, muerto y enterrado.

Decíamos que MS mató WM cuando salió el iPhone. Al cabo de unos años sacó una plataforma llamada Windows Phone (finales del 2010), que comenzó con la versión 7, por lo que se le llamó Windows Phone 7. El concepto y la idea de WP era rompedora. Increíblemente rompedora y original, con los live tiles. 

windows-phone-7

Aunque Miscrosft afirmaba que era una plataforma construida desde cero, lo cierto es que debajo corría Windows, con una capa encima que formaba la interfaz de usuario y con un API para desarrollar aplicaciones. Ese API no era otra cosa que una variación de Silverlight, tecnología Web destinada a acabar con Flash pero que ni siquiera terminó de arrancar por sí sola.

En aquellos años desarrollar para WP7 era un verdadero suplicio, más para los que habíamos disfrutado de Win32 y de MFC para Windows CE. Un API increíblemente limitada, tanto que no tenía ni copiar y pegar, ni sockets SSL, ni casi nada…

¿Sabéis por qué? Porque no era más que Silverlight, una página Web con esteroides que se programaba en C# y con la que casi no se podía hacer nada. Os aseguro que era frustrante hasta lo indecible. Las limitaciones, los bugs (que los había, y no pequeños), los problemas con Visual Studio y los terminales, las aplicaciones que se cierran solas sin saber por qué. Luego vino WP7.5, que tampoco era la panacea pero al menos resolvía los problemas más acuciantes -para generar otros nuevos.

Y para mayor inri, se prohibió acceder a Win32, por lo que una opción que podría haber paliado los problemas quedó descartada.

En el mundo del escritorio, más o menos por aquellos años, Microsoft reinventó la rueda y sacó el .NET Framework 4.0, que era como el 3.5 pero con un montón de nuevos bugs.

Dos años después, a finales de 2012 salió Windows Phone 8. Absolutamente todas las promesas que Microsoft había hecho se vieron incumplidas, porque ningún terminal con WP7.x se pudo actualizar y el API de desarrollo era completamente incompatible con el de WP7.x

windowsphone8-apps

Y como es habitual en la empresa, al menos en el sector doméstico, después de Windows Phone 7.8 ya no se actualizó más la plataforma, así reventara por estar completamente llena de bugs. La gente se acostumbró a que las aplicaciones se les cerraran solas sin más e hicieran cosas raras.

Paralelamente salió Windows 8 en el escritorio, con un API de desarrollo completamente diferente del del Windows Phone 8. Otra vez se afirmó que la plataforma era completamente nueva, y otra vez se demostró que no era cierto.

Windows 8 sentó otro precedente: fue la peor versión de la historia de Microsoft en cuanto a las novedades incorporadas. El nuevo API pensaba ser un reemplazo de Win32, con una nueva implementación y los conceptos de Windows Phone 7.x transportados al escritorio.

datvs

La realidad fue otra: el API contenía bugs aterradores. El que esto suscribe recuerda mostrar, en uno de los hangouts, cómo la propia tienda de Windows 8 se caía y reventaba sola.

En el aspecto del desarrollo, el programador tuvo que aprender dos nuevos API, muy similares pero completamente diferentes, uno para Windows Phone 8 y otro para Windows 8, y por supuesto incompatibles con Windows Phone 7.x.

Además, en ambos sistemas el API no era muy estable y hacía cosas raras. De nuevo la gente se acostumbró, o seguía acostumbrada, a que los terminales y las aplicaciones Metro se cerraran solas o no terminaran de funcionar bien.

En esas fechas salió un nuevo subsistema Windows: Windows RT. Iba a ser la solución para los equipos ARM de bajo coste (y no tan bajo), con la posibilidad de ejecutar las aplicaciones Windows (hechas con el nuevo API, por supuesto). De nuevo se cerró completamente el acceso a Win32, y de nuevo Microsoft incumplió todas sus promesas. Al cabo de dos años, la plataforma estaba cerrada y abandonada.

Llegamos al año 2013/2014. Microsoft saca Windows Phone 8.1 y Windows 8.1. Otro nuevo API de desarrollo, en este caso compartido a medias entre los teléfonos y la parte Modern UI del escritorio. Y de nuevo con significativas diferencias de cara al propio API, pero sobre todo a la interfaz, que convertía el sistema en chiste universal, porque de Universal el API tenía poco. Además, la mitad de las llamadas en Windows Phone no estaban implementadas. Es decir, podías ejecutar el código pero o bien no hacía nada o bien saltaba una excepción de “Not Implemented”. Y la otra mitad no es que fueran muy bien que digamos. De hecho ni siquiera los ejemplos de Microsoft funcionaban en la mayoría de los terminales. Y otras veces funcionaban una vez y la siguiente no.

windows-8-1-bsod-error-cause-and-fix

El que suscribe se cansó de reportar bugs de esta versión, pero sobre todo de la anterior, la 8.0. También fue cuando dejó de ser MVP. Un grano en el culo bastante incómodo de escuchar.

Y llegamos al último API de Microsoft, el de Windows 10. Este sí, este sí que es universal de verdad, de hecho lo han llamado Aplicaciones UWP (de Universal Windows Platform). Se supone que un mismo código fuente puede compilarse, sin cambios, para el teléfono, el escritorio, la XBOX, el Surface ese de ochocientas mil pulgadas, las HoloLens…

Pues no. De momento la XBOX no está, y si quieres ejecutar en el teléfono y en las demás plataformas, tienes que hacer compilación condicional. Es decir, tener código fuente diferente para según qué plataforma estés generando el código.

Las UWP han traído otras tecnologías nuevas, como el .NET Native, que en lugar de usar un Jitter y pseudo-ensamblador, se genera código máquina final. También en meses recientes hay una nueva versión del .NET Framework, que vuelve a empezar desde cero, con, ejem, nuevo API.

devicefamily

Resumiendo, y para que no se me haga muy mala sangre:

  • 2010: Te olvidas de todo lo anterior, que hay nuevo API: WP7.x
  • 2012: Nuevo API para el teléfono (WP8) y para el ordenador (W8), incompatibles entre sí.
  • 2013: Nuevo API para el Modern UI del escritorio (W8.1), incompatible con todo lo anterior.
  • 2014: Nuevo API para el teléfono (WP8.1), incompatible con todo lo anterior.
  • 2015:  Nuevo API para teléfono y escritorio (UWP), incompatible con todo lo anterior, incompatible entre sí
  • 2015: .NET Native, nuevo API, todavía no sabemos cómo será para los teléfonos.

Solamente se salvan por una cosa: las aplicaciones de W(P)8 todavía corren en W(P)10, que si no…

En cinco años, seis nuevos API incompatibles entre sí, siete si separamos WP10 de W10. ¿Pensáis que hay algún desarrollador que en su momento apoyara las aplicaciones Modern UI y que todavía no haya mandado a tomar por culo a Microsoft?

depression-laptop-computer-sad-desperate

Por RFOG | 8 Comentarios | Enlaza esta entrada
contacto@wintablet.info tema WinTablet.info por Ángel García (Hal9000)