viernes, 30 de abril de 2010

Apple descubrió la rueda: Flash apesta - actualizado

La "Grey Screen of Death" de Flash


Ultimamente se habla bastante de Flash y su pelea con Apple por su uso en dispositivos móviles. Esto trae a la luz muchas realidades que los usuarios de PC (especialmente los que usamos GNU/Linux) conocemos hace mucho. Como usé Flash por años tengo bastante experiencia sobre sus defectos y sus virtudes.


Un poco de historia

Macromedia era una pequeña companía que empezó a desarrollar una tecnología que otras empresas ignoraron: generar animaciones a partir de gráficos vectoriales. Grandes empresas como Corel habían hecho prototipos, pero la ventaja de Macromedia Flash es que estaba pensado para la web. Desde fines de los 90, este plugin fue creciendo, hasta convertirse en algo habitual. La incorporación de audio y video en el plugin sin necesidad de programas externos lo hizo muy popular por sobre otros formatos como Quicktime (que anda bien en mac pero mal en el resto), Windows Media Video (que anda bien en Windows, pero mal en el resto) o Real (que anda mal en todos lados).
Adobe era una empresa muy fuerte en el campo del diseño de impresos, pero débil en web. Para competir con Macromedia dio señales de soportar el formato SVG, que ya era norma ISO, creó un plugin para Internet Explorer para ver estos archivos (otros navegadores como Firefox y Opera ya lo tenían incorporado). Pero finalmente Adobe dio un giro inesperado a sus estrategia, y decidió gastar una pequeña fortuna (1450 millones de dolares) y comprar Macromedia. Luego de la compra abandonó el soporte SVG, modificó el formato de tal manera que los visores libres solo funcionaba con Flash 7 o anterior. Además en típica estrategia de Adobe, Flash dejó de venderse como un programa individual , sino que pasó a ser parte de una Suite, pero cada programa tiene su propia interfaz.


Ventajas

  • El editor que creó Macromedia es simple pero funcional a la hora de crear animaciones. Eso lo hizo muy accesible a diseñadores, que sin saber sobre estándares o HTML pueden decir que saben hacer webs (yo también empecé así ).
  • Incorporar efectos y pequeñas funciones de programación es simple en comparación con formatos de programación más avanzados
  • Los gráficos vectoriales permiten hacer archivos muy livianos, bien usados permiten hacer un sitio rápido.
  • Cuando Macromedia era una empresa independiente se dio cuenta que no podía hacer el Flash Player para todas las plataformas, y liberó información sobre el formato. Eso impulsó el surgimiento de programas libres como gnash (visor) y UIRA (editor).
  • Personalmente he encontrado Flash muy bueno para crear aplicaciones multimedia, los ejecutables generados en flash son algo pesados, pero independientes, y funcionan en máquinas lentas, incluso en Linux via Wine. Permiten crear programas en pantalla completa, como para hacer interfaces complejas.
  • La incorporación de un codec de video dentro del formato cambió la manera de ver contenido en la web, y rápidamente ganó terreno en comparación a competidores más lentos o que pedían drivers adicionales (Real, Quicktime, WMP).
  • Muchos programadores consideran a Flash muy útil para proteger contenido como imágenes y videos cargándolos en segundo plano y sin control del usuario.

Desventajas

  • Cuando Adobe compró Macromedia cambió el formato, cerró el código, eliminando toda posibilidad de convertir el formato en un Standard real (la W3C siguió trabajando en SVG, pero no ha tenido mucha prensa hasta ahora.
  • Los proyectos libres quedaron congelados, y en el caso de UIRA tuvo problemas con las leyes de propiedad intelectual de Francia y el proyecto se disolvió.
  • El contenido dentro de un swf está encriptado y no puede ser leido o indexado por los buscadores (Google trabajó junto con Google para intentar que funcione, pero sin éxito).
  • Hacer una página integralmente en Flash puede verse muy linda pero va en contra de las sugerencias de la W3C y usabilidad: No puede ser visitada por no videntes, no puede agrandarse el texto para personas con problemas de visión, y la navegación es lineal y quedamos obligados a hacer lo que el programador decida, no podemos ir directamente a la sección que queramos (se supone que el concepto del hipertexto es ir a cualquier sección con la barra de direcciones).
  • La velocidad de la animación depende directamente de la velocidad del procesador. Si la máquina es muy lenta o muy rápida la animación se ve mal, se des sincroniza el audio, o resulta molesta para trabajar.
  • Además del punto anterior, Flash trata de consumir el 100 % del procesador, basta con tener alguna aplicación en segundo plano para notar un baja de rendimiento, especialmente video. Ver la segunda actualización
  • El codec de video propio flv genera archivos de muy baja calidad, Adobe intentó compensar esto agregando algunos codecs privativos. Y de paso agregó DRM.
  • Flash Player para Linux y Mac tiene un rendimiento notoriamente inferior. No tengo una PC muy rápida, pero puedo reproducir video 720p en Totem, pero no puedo ver videos ni en 430p porque anda muy lento. Y el problema es mucho peor en Chrome.
  • Macromedia Flash costaba 40 dolares, Hoy Adobe cobra unos 200 por el paquete Flash más económico, un precio demasiado alto para este standard de facto de la web. Durante mucho tiempo fue la principal critica a Adobe, recién ahora con el conflicto con Apple se habla un poco más de las desventajas aquí mencionadas.
  • El visor de videos es inestable, muy inestable. De hecho es lo que provoca más fallas y tildes en el navegador, especialmente los que tienen Mac y Linux tienen un Flash Player muy inferior.
  • Si se carga un video no hay manera de detener la carga del video, si no queremos sobrecagar la conexión tendremos que cerrar la ventana. Corregido: Youtube tiene la opcion para dejar de cargar, apretando el botón derecho y eligiendo "stop download"
  • Al crear aplicaciones multimedia he tenido bugs inexplicables como que el programa se queda totalmente en blanco y en pantalla completa. Dicha falla es errática y ocurre muy ocasionalmente, primero pensé que era culpa de mi programa, pero parece que fue (quizas sigue siendo) un bug de Flash 8 MX.
  • Cambió tanto Actionscript 3 que todo lo que aprendí desde Flash 5 en adelante es inútil.
  • Los problemas de seguridad del formato no han sido solucionados, solo se han hecho parches, bloqueando el acceso a links externos desde un swf local (un gran fastidio cuando se prueba si un banner a un sitio externo funciona) o obligar a poner los ejecutables en una carpeta fscommand para que flash los ejecute.
  • Flash permite intencionalmente cargar contenido en segundo plano sin autorización del usuario. Los diseñadores creen que con eso protegen el contenido y lo hacen más difícil de extraer. No se engañen, eso puede detener a un usuario con poca experiencia, pero alguien malintencionado sabe como sacar imágenes del cache, incluso existen herramientas para descompilar flash, así que ni siquiera la programación está segura.
  • El plugin es un problema para los dispositivos móviles. Si bien Android está haciendo un intento porque funcione, todavía anda muy lento, y no quiero imaginarme como se comportaría en el mundo real si por ejemplo estamos jugando a un juego Flash y nos llaman por teléfono, un congelamiento de la pantalla en una PC es molesto pero soportable, pero en un móvil no es algo aceptable.
  • El formato está siendo superado por muchas tecnologías en desarrollo. Por un lado WebGL han mostrado Quake 2 jugando en un navegador sin necesidad de plugins, las nuevas funciones de canvas y video de HTML 5 permiten incorporar objetos vectoriales y video a un sitio, SVG es un formato vectorial que es una forma de XML, así que se puede incorporar a un sitio sin applets pesados.
  • Apple se queja, no porque Flash sea privativo, sino porque ese formato privativo tiene que funcionar por encima de su propio sistema privativo, y ninguna de las dos empresas puede tocar el formato, ni siquiera para mejorarlo. Pero en el fondo esto tiene una queja mayor: el Flash Player para Mac OS es tan lento como el de Linux, pero el editor de Flash para Mac funciona bien, algunos dicen mejor que en Windows, pero por alguna razón, Adobe lo cobra más caro para el sistema operativo de la manzana. ¿Mac hace un buen sistema operativo privativo para correr las aplicaciones de Adobe, pero no Adobe no trabaja lo suficiente para hacer un Player que pueda correr en un sistema sin comer todos los recursos de sistema. La discusión es claramente un pase de factura.
  • Todo esto demuestra la inferioridad de formatos privativos, se pueden convertir en standard de facto por un un tiempo, pero en el peor de los casos terminan siendo reemplazados por un formato privativo diferente (como java, que si bien es común en la web, no tiene la popularidad del pasado) Flash como un formato de diseño multimedia offline es excelente, pero como aplicación Web está lleno de defectos, y su falta de apertura es solo uno de ellos.
Actualización y corrección:

No creo que Flash vaya a desaparecer, pero parece inevitable que surgan reproductores de videos en HTML5, sitios que usen SVG animados y juegos en WebGL. Flash seguirá teniendo su margen del mercado en juegos y animación, Flex para gráficos. He visto que en respuesta a las acusaciones de Apple, Adobe asegura que el formato es abierto. En realidad el desarrollo de Flash fue y aún es cerrado, se suele liberar algo de información sobre el formato, pero una vez que la versión siguiente está en camino. Además las últimas versiones de Flash incluyen otros elementos no libres como codecs de video (cosa que han reconocido hace tiempo cuando se les preguntó porque lo liberaban Flash). Esta estrategia de comprar empresas, absorber formatos y liberar información de estos cuando son obsoletos le han permitido mantener una posición hegemónica sin perder liderazgo.


Segunda actualización:

El 11 de agosto de 2010, Adobe publicó una nueva versión de Flash Player para Mac y Linux con aceleración por hardware, debo reconocer que mejoró la velocidad de reproducción, aunque sigue siendo más lento que reproducir el .flv que queda en el cache con algún reproductor del sistema. Además incorpora un nuevo sistema que anuncia cuando Flash falla sin tildar el navegador. Es decir, sigue teniendo las mismas fallas, pero por lo menos no arrastra al pobre Firefox. Cada prooveedor de videos tiene sus propios bugs, solo por nombrar algunos:

  • Los videos de youtube a veces no cargan, o se cortan.
  • blip.tv sigue reproduciendo el audio pero la imagen queda estancada
  • el reproductor de Spike usa un formato de video (supongo que streaming) que no carga el video completo.
  • El reproductor de Gametrailers TV empieza a reproducir video solo, aunque lo haya dejado pausado.
  • La página donde están los video del Angry Video Game Nerd, ScrewAttack, tiene un reproductor que cada vez que abro un video firefox se congela, muchas veces Firefox me ofrece detener el script.
Ni hablar de los sitios que pese a ser flash me rechazan por usar linux (Terra) los que simplemente no me andan (freakmov) y los que me andan ridiculamente lento (streetfire).

2 comentarios:

Daniel Ortiz Mata dijo...

Todo lo que mencionas ciertamente es una especie de "Crónica de una muerte anunciada". Sinceramente creo que con el avance de otras tecnologías que tienen la ventaja de ser abiertas (y entiéndase bien ese término) es poco lo que le queda de vida a Flash. Personalmente mi experiencia no ha sido tan profunda con Flash ya que tan pronto como lo iba aprendiendo iba tambien descubriendo otras formas más fáciles y más emocionantes de darle vida, pero sobre todo funcionalidad a mis sitios web, y de esa forma un día terminé dejándolo de lado cuando me metí de lleno con los CMSs... mi reto ahora es aprender y dominar el CSS.

minombresbond dijo...

epa! q buen post que se mandaron

saludos!