Acerca de...
El equipo
Encuestas
WinTablets

Encuesta

Si las WINTABLETs no pudiesen ejecutar aplicaciones de escritorio, ¿las seguirías usando?

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

8 Comentarios

sergio
Enviado el 18/10/2016 a las 21:11 | Permalink

Buen resumen si señor! He vivido todo esto, con dolor e incredulidad. Publique aplicaciones windows 8 y Windows phone 8, un autentico suplicio. Empezar es sencillo, se obtiene algo rápido, pero afinar y hacer una app redonda es muy complicado. Quizás eso explique la baja calidad de la tienda.

Espero con ganas como vas a explicar el siguiente movimiento d micro: .net core…

    RFOG
    Enviado el 23/10/2016 a las 11:02 | Permalink

    Hola. La idea es hablar del .NET al completo, el origen y lo que es ahora, con un final similar a este, pero antes creo que me veo en la obligación de tapar algunas bocas twitteras.

    Ya veré qué escribo.

Enviado el 19/10/2016 a las 09:01 | Permalink

Al cesar lo que es del Cesar, muchos veces te pierdes en el fanboyismo maquero pero este no es el caso. Cuando tienes razón, te la doy. Olé!!!

Microsoft ha estado unos años perdido en el limbo, los últimos años hemos estado en un mundo siniestro, y que parecía que no podía salir (muchos se han largado el entorno de m$ por eso).
Pero creo que con las UWP han visto la luz , aunque todavía estemos con una linterna y no lleguemos a la lampara.

Aunque todavía es pronto para ver como acaba UWP , te pongo un “pero”, es cierto que las UWP no es como prometieron o todavía no lo tienen 100%, pero también es cierto que es muy fácil crear una aplicación para el pc ,movil,xbox,hololens con muy pocos cambios. Un claro ejemplo es VLC una app UWP, en el anterior hangout acababa de salir como uwp (pc/movil) y no soportaba Xbox, una semana mas tarde ya lo soportaba en xbox,surface hub y hololens.

Yo me considero una programador kiddie (ni siquiera merezco el termino de programador ya que solo conozco 4 o 5 programadores de verdad en 20 años en este sector, he realizado alguna utilidad de sistemas, scripts, algo de de NET, algo de PHP , javascript, python,, procedimientos de SQL, ese tipo de cosas ) , pero pude realizar una mierda de APP en UWP en un par de horas, que funciona tanto en móviles como en PC, sin cambiar nada de código ni diseño de pantallas.

También puedo decir que he realizado una App parecida en Android, y tuve que dedicarle muchas mas horas, con varios problemas de diseño de pantallas de tableta y móvil . Y lo mejor de todo, se puedo decir que tengo mas conocimiento en programación de app de android que en uwp.

Buen articulo.

    RFOG
    Enviado el 19/10/2016 a las 09:24 | Permalink

    Jordi, te ha sido fácil hacer una aplicación UWP porque no has profundizado en el API. Tu lo que haces son WebApps, que no son más que el navegador contiendo código HTML5, pero si profundizaras de verdad, verías que tenías que usar compilación condicional “a la” .NET. Es decir, en lugar de controlar el código con #ifdef, lo controlas consultando al API si este dispositivo puede hacer esto o aquello… igual que se hace en iOS y en Android… Además, si quieres una interfaz útil en cada sistema, la tienes que rehacer, casi igual que en iOS y Android.

    Así que de Universal tiene lo que yo de guapo: poco o nada.

    (Respecto a tus problemas con la interfaz de Android, se deben a que no elegiste el nivel de API adecuado, porque a partir de no sé qué versión, los controles visuales son los mismos, igual que en UWP, de hecho me atrevo a afirmar que los de UWP son una copia de los de Android, de ahí el “menú hamburguesa”).

Enviado el 19/10/2016 a las 19:13 | Permalink

Aunque yo de programador na de na, sí que fui usuario de Windows CE y aún tengo mi Handheld PC HP Jornada 680 y coincido contigo en que los cambios de rumbo de las APIs son en grandísima parte responsables de la actual situación de aplicaciones en entorno MUI.

Espero nuevas entregas y me congratulo enormemente de que no hayas necesitado mencionar a Apple ni comparar nada con ellos… no es necesario y el artículo gana mucho ;) (ala… al final he sido yo el que los he mencionado… ¡Penitenciagite!!

Darío
Enviado el 22/10/2016 a las 17:44 | Permalink

Gran artículo y me lo guardo para revisarlo dentro de unos años. Espero que la nueva deriva con la “universalización” de la plataforma y sus coqueteos con el Open Source te quiten la razón y eso atraiga desarrolladores para un público no empresarial.

    RFOG
    Enviado el 23/10/2016 a las 10:59 | Permalink

    Ya me gustaría, ya. Pero lo único que hace MS con los estándares es envenenarlos y luego cargárselos si puede, aunque no siempre les sale el tiro bien. Por ejemplo con IE se cargó es estándar Web, aunque ahora Chrome les esté dando con su misma moneda. Otro: Visual J intentó “matar” a Java y lo único que consiguió es dejar tirada a mucha gente que confiaba en el producto.

Joel
Enviado el 22/10/2016 a las 23:52 | Permalink

Excelente articulo y coincido contigo en todo.

Deja un comentario  

Tu email nunca se publica o se comparte. Los campos obligatorios están marcados con *

*
*
:wink: :-| :-x :twisted: :) 8-O :( :roll: :-P :oops: :-o :mrgreen: :lol: :idea: :-D :evil: :cry: 8) :arrow: :-? :?: :!:
Puedes usar las siguientes etiquetas y atributos HTML:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

contacto@wintablet.info tema WinTablet.info por Ángel García (Hal9000)