Revista Comunicación

Flash ha muerto… o no? – Mitos y verdades

Publicado el 11 enero 2013 por Cosmoduende @cosmoduende

Desde el infame post de Apple en 2010 ha habido un linchamiento masivo en contra de Flash y todo lo que signifique tecnologías propietarias. El clamor principal es “liberar al web”.

Desafortunadamente el grueso de la gente que “odia” a Flash, lo hace por las razones equivocadas. Atribuyendo cualidades irreales al HTML5, exagerando defectos, promoviendo información incorrecta, atacando a los desarrolladores que “todavía” hacen Flash, declarando muerta una tecnología que todavía tiene el 98% del share en computadoras personales y abrazando al Open Web como única posibilidad para el futuro.

Vayamos aclarando algunos puntos.

Flash es más lento que Javascript.

Dynamic analysis is a great complement to static analysis: unfortunately, it is not a replacement. An ActionScript program that has been optimized to death by an AOT compiler can, almost trivially, beat a JavaScript program that is optimized on the fly by the JIT compiler. The only way out would be to let the JIT compiler work till death, but that is not an option! Checkmate.

The ActionScript toolchain beat the JavaScript toolchain by around 3x.

Fuente

Esto tiene que ver con la ejecución del código, todavía no estamos hablando de las capacidades de rendering. Pero a eso voy.

Stage3D(Flash) vs WebGL(Javascript)

El tema de la integración con GPU es algo totalmente diferente y la ejecución del código lo afecta a medida que escala el proyecto. Por un lado tenemos WebGL que es muy cercano a la especificación del OpenGL. Y acá tenemos un Benchmark entre ambas. Los resultados son muy similares y varían mucho dependiendo de la tarjeta de video y del navegador.

¿Podemos decir que están empatados hasta cierto punto? No tanto, ¿cuál es uno de los principales gritos de batalla de HTML5? “Multiplataforma”. Bien, veamos la penetración:

http://caniuse.com/webgl nos dice que WebGL tiene una penetración de 52.91%, pero en realidad solo el 29.73% es full support. La parte divertida es esta: No lo soporta iOS, y en Android solo lo soporta Firefox. ¿Cómo es posible que no lo soporte iOS? Bueno, eso lo voy a comentar cuando lleguemos a tocar el tema de Apple. Por cierto, en Internet Explorer hay 0% soporte ¿la excusa? “problemas de seguridad”, de lo mismo que acusaba Jobs a Flash.

Pero, pero… ¿qué no debería implementarse en todos los navegadores HTML5? WebGL no está en la especificación HTML5, no es HTML5.

¿HTML5 tiene algo en su especificación que pueda competir con Stage3d? No. ¿Canvas?¿CSS3 3D Transforms? Ni de cerca.

Bueno, pero sin tomar en cuenta la penetración tienen el mismo rendimiento. Si y no. En un test benchmark sí, pero en el mundo real, en los proyectos complejos influyen mucho las herramientas y librerías. Flash tiene al Unreal Engine, ¿WebGL?

http://www.unrealengine.com/flash/

Unity también exporta hacia Flash:

Pinche aquí para ver el vídeo

Flash es más pesado y ocupa muchos recursos

Todo depende de las prácticas. ¿Qué pensarías de un desarrollador que incluya un PNG de 100×100 px que pese 800 kb? Actualmente hay sitios que hasta para hacer un hover cargan jQuery. O peor, librerías que ni necesitan (especialmente los que están basados en templates u CMS como WordPress). Hay gente que usa jQuery para animar cuando hay mejores frameworks de animación como el GreenSock Animation Platform (aquí un Benchmark) y sus sitios corren a 10fps porque se come los recursos y nadie dice nada.

Flash ocupa muchísimos recursos cuando es mal utilizado, el nuevo compilador ASC2.0 y frameworks como Starling hacen maravillas con los recursos. StageVideo, recientemente introducido en Flash, aumenta significativamente el rendimiento sobre todo en streams 1080p. No solo en browser, sino en mobile.

Como dije, todo depende de las prácticas. Afortunadamente los primeros que han saltado del barco son esos desarrolladores, lo malo es que esos mismos malos desarrolladores siguen utilizando las mismas malas prácticas en HTML5, pero haciendo over-price aprovechando el over-hype a la tecnología.

Pero siendo honestos ni las computadoras de hoy, ni las conexiones son las mismas que en 1998, así que eso de los recursos es absurdo.

¿Pero en Mobile?

En iOS la historia es más divertida. Frameworks como Titanium (appcelerator) o PhoneGap, envuelven tu aplicación HTML5 para que corra como si fuera nativa y le agregan algunas APIs para tener acceso a algunas funcionalidades nativas (como el acelerómetro). En iOS existe algo llamado Nitro, que es un acelerador de Javascript. Bueno, este acelerador incrementa el rendimiento de Javascript, pero Apple (desde iOS4.3) decidió limitarlo solo a Safari.

¿Por qué? No tengo la más remota idea. Podría ser para desalentar el desarrollo híbrido y fomentar el nativo (no es la primera vez que tome medidas contra los desarrollos no-nativos), o para evitar que otros navegadores como Chrome, desbanquen a Safari. Porque para que Chrome sea acelerado por Nitro hay que meterle Jail Break al dispositivo y utilizar Nitrous. Way to go Open, right?

Por su lado, Flash corre como aplicación dentro de iOS por medio de Air. Air 3.6 y el nuevo compilador ASC2.0 permiten un rendimiento muy similar a las aplicaciones nativas. Test en iPhone a 60fps con Starling + Nape (physics engine):

Pinche aquí para ver el vídeo

Flash no puede ser indexado

Tiene como 10 años (o más) que Flash podía ser indexado, incluso si no, había prácticas sencillas SEO. El problema no radica en la indexación, sino en la implementación de la carga de contenidos en donde prácticamente nadie hacía caso a estas recomendaciones.

Desafortunadamente era una época de aprendizaje en la que se cometieron muchos errores, errores que ahora nos han dado las pautas para las prácticas actuales.

Hay varias razones por las que Flash no debe usarse para una página, pero voy a tocar el tema más adelante.

Flash no es responsivo, solo puede tener un tamaño.

Esto es falso. No hay mucho que decir.

Flash es un peligro para el Web.

Otra cosa muy divertida. Durante años y años y años los malwares se instalaban en las computadoras utilizando Javascript, hackeando páginas e insertando estos scripts en el HTML. La mayor parte de este malware eran spybot worms, trojans, etc. Uno tenía que instalar mil cosas para proteger su equipo (o cambiar a Mac). ¿Cuándo alguien clamó que Javascript era un peligro para el Web?

¿Cuántos virus, trojans, spybots fueron infectados via Flash?  Pues, hubo un virus que se hacía pasar por Flash… pero no tenía nada que ver con Flash. Fuera de eso, solo había alertas de seguridad, estoy casi seguro (necesito confirmar) que nunca se capitalizó una vulnerabilidad de manera masiva… ni mucho menos como se hacía con Javascript.  Vaya, en 2009 Symantec documentó 23 vulnerabilidades en Flash… ¿Quick Time de Apple? 27, ¿Java SE? 84.  Esa es la información que debió haber tenido Apple cuando hizo sus afirmaciones, y nunca dijo que su Quick Time era más inseguro que Flash.

¿Al día de hoy?  ¿Han escuchado hablar del Sandbox de Chrome a Flash?

El HTML5 todo lo puede y va a vencer hasta a las aplicaciones nativas.

Hay una extraña percepción de que todo en internet debe ser abierto y gratis. Aplicaciones, juegos, libros, música y películas. Pero no todos piensan igual, y algunos de estos seres resultan ser empresas en las que la gente se gana el pan. ¿Alguna vez se han preguntado por qué Netflix o TotalMovie no usan HTML en su versión web? Por que el Video del HTML5 carece de una cosita: DRM.

El DRM es la forma de asegurar que el contenido está llegando a quien debe. Si tú fueses Netflix no te gustaría que cualquier persona, sin pagar, ponga el stream desde su VLC ¿verdad?

“Ah, pero HTML5 es maravilloso y pronto lo incluirá”. Pues no. Microsoft, Google, Netflix y otros han hecho propuestas para integrarlo, y estas han sido rechazadas. En HTML5 no lo veremos, ¿en HTML5.1? no hay nada que indique que se cambiará la postura.

Otro asunto es la ejecución del Javascript, en los dispositivos móviles es muy pobre comparada con aplicaciones nativas. Sí, alcanza para algunas cosas. Pero siendo honestos, al día de hoy el mejor desempeño se logra con desarrollos nativos.

Flash es propietario, los desarrollos propietarios son evil. ¡Viva el Open Source! ¡Viva el Open Web! !Liberen al Web de Plugins!

Sin duda el Open Source ha traído grandes contribuciones (por ejemplo Linux y por ende Android), pero sin los desarrollos propietarios no tendríamos iPhones (del cual se ha inspirado mucho Android); iOS y OSX no son Open Source. Sí, están construidos sobre Unix (darwin), pero Unix tampoco es Open.  ¿Javascript? Javascript era un desarrollo propietario de Netscape.

Flash, Unity, Silverlight, Shockwave, Real Player, Quick Time, Java, etc. todos han sido desarrollos/plugins propietarios que han permitido que hoy tengas Youtube, Facebook, Netflix, Streaming, etc. Negar la competencia de los particulares es entrar en una especie de Oscurantismo Tecnológico.

¿Qué pasa si esta tendencia la llevamos a todos los aspectos del web? ¿Le pedirías a los desarrolladores de PHP, de Python, de Ruby, de C#, de Java que dejaran de usar su lenguaje para utilizar [{inserte un lenguaje aquí}] en server side? ¿Apple lanzaría iPhones con Android?

Tanto los desarrollos propietarios como los open source se inspiran unos de otros, la competencia entre los propietarios beneficia al open, las soluciones del open se canalizan (generalmente) más rápido en propietario. ¿Qué sería del HTML5 si no hubiera existido Flash? ¿Que hubiera sido de Flash sin Java?

Flash no corre en móviles

Esto es una verdad a medias. Flash corre en móviles Android. Recientemente hay que instalarlo manualmente, pero los usuarios de Android están acostumbrados a eso y más. Flash no corre en navegador de iOS ¿pero en Aplicaciones?

In fact, there are currently more than 20,000 mobile apps and games built using Flash technology available in Google Play and the Apple App Store.

Fuente
El negocio del mobile nunca ha estado en web apps, sino en native apps.

Flash está muerto, nadie programa en Flash

IntelliJ nos reporta que entre sus usuarios:

…as it turns out, is that the number of active ActionScript and Flex developers has been growing constantly.

Fuente

¿Cómo puede declararse muerta una tecnología que sigue teniendo el 98% del share de PCs?

No tengo que hacer mi sitio varias veces, con HTML5 se ve en todos lados y es super compatible

De hecho no, para que en verdad se vea en todos lados usa HTML4 o XHTML1… de cualquier forma, para un sitio regular prácticamente todo lo que hace HTML5 lo puedes hacer con aquellos dos.

Además, de todas formas tienes que hacer una versión móvil (si es que quieres hacer las cosas bien). Incluso si tu sitio es responsivo, de todas formas estás haciendo otra versión.

¿Entonces por qué Apple no quiere a Flash? *

La razón es netamente comercial. Para juegos, las únicas tecnologías que podían competir en rendimiento con las aplicaciones nativas en iOS eran Flash y WebGL. El iTunesStore te obliga a usar el sistema de cobro de Apple (este se queda con el 30%), pero si pudieses hacer aplicaciones flash o WebGL en browser, Apple no tenía manera de cobrar un solo peso a los desarrolladores. Pero estos si podrían buscar otras plataformas más convenientes para monetizar sus desarrollos.

adobe-flash-die

¡Pero Apple defiende el Open Web! Bueno, ¿te has preguntado porqué no existe app de GrooveShark para iPhone? Al no haber DRM en browser en iOS todos los contenidos con derechos tendrían que pasar por una app nativa y por lo tanto por el Apple Store, y a la vez Apple podría bloquear lo que quisiera en la misma store.

¡Apple defiende el HTML5! ¡Claro! ¿de quién es la patente de Canvas? ¿de quién es H.264?

Entonces, ¿Por qué no se debe de usar Flash en un sitio web?

Antes de que Jobs dijera que no se debía usar Flash para un sitio, los Flash devs ya lo sabíamos. Desde 2004 la tendencia en Flash comenzó a ser las RIAs (no necesariamente webBased), publicidad, los juegos y el video.

Hace 13 años Jakob Nielsen publicó este artículo: Flash 99% bad. Estas son las razones reales por las que no se debe de usar Flash:

It encourages design abuse.

Los diseños solían ser confusos, sobrecargados de animaciones/elementos no necesarios (como las Intros).

It breaks with the Web’s fundamental interaction principles.

El papel del navegador es proporcionar herramientas básicas para… navegar. Con Flash todas estas herramientas (scroll, search in page, forms, etc.) se perdían, y tenían que ser creadas de cero (o utilizar componentes que realmente no eran muy buenos). Muchas veces esto llevaba a interfases confusas y nada usables.

It distracts attention from the site’s core value.

El contenido. Las páginas en Flash tendían a priorizar las animaciones, efectos, visuales, etc. sobre los contenidos. Y apesar de que se podían generar contenidos dinámicos, conectar a Flash con cualquier base de datos, webservice o lenguaje/tecnología externa; eran pocos los desarrolladores que lo hacían bien.

El asunto es sencillo, el HTML fue creado para presentar de mejor manera los contenidos. Los plug-ins han sido complementos para situaciones específicas en estos contenidos. Muchos de los factores que propiciaron la creación del HTML5 y toda la ola nueva de herramientas se han basado en los logros y errores de otras tecnologías, Flash es una de ellas. Hay que conocer y respetar la historia, repetir los errores es muy fácil.

Actualmente Flash (por medio de Air) está enfocado a ser un entorno para desarrollo de Juegos multiplataforma y aplicaciones para móviles y tabletas. Recientemente Adobe publicó un compilador de C/C++ llamado FlasCC, es un paso muy grande en la dirección adecuada. Además está Stage Video, Apache Flex, y el próximo anuncio para el siguiente IDE de Flash. La tecnología de Flash está muy lejos de estar muerta, simplemente su enfoque tiene un camino mejor definido.

FUENTE DEL POST: http://alesys.net/site/2013/01/10/flash-is-ded/ escrito por @alesys_net con contribución de @tangamanpilia


Volver a la Portada de Logo Paperblog