Antecedentes

Como sabréis, Velneo V7 está desarrollado en base a Qt4. Actualmente la versión 7.14.0 y 7.14.1 están compiladas con la versión de Qt 4.8.3.

Seguramente no sabréis que además usa otras librerías complementarias (las podéis ver en el cuadro de Créditos dentro del Acerca de…):

  • decNumber v3.61
  • dyncall v0.5
  • WebKit
  • QextSerialPort
  • Scintilla

Esta es la base de desarrollo actual que Velneo tiene que contemplar de cara a realizar la migración a Qt5. Esto significa que los problemas a abordar son múltiples y multiplicados por cada plataforma.

Puesta de largo de Qt5

Qt5 es un cambio importante en la arquitectura de las librerías Qt ya que incorpora nuevos enfoques a la plataforma.

http://qt.digia.com/Global/Images/Qt/Files/Qt_Developer_Day_China_2013_Presentations/Qt%20Roadmap-930-10.15%20AM%20-%20Qt%20Dev%20Day%20China%202013.pdf

En el Roadmap de Qt 5 se habla de varios puntos importantes:

  • Compatibilidad 99% con Qt 4
  • Widgets totalmente compatibles con todas las plataformas de escritorio
  • Arquitectura modular
  • Máxima abstracción de la plataforma
  • Nueva arquitectura para la representación gráfica
  • Soporte para C++11
  • Unicode para todo
image

Otras cosas importantes que incorporará:

  • Soporte JSON
  • Soporte para Mimetype
  • Fuertemente integrado con OpenGL (ANGLE para windows sin OpenGL)
  • Soporte multimedia en todas las plataformas
  • Webkit actualizado
  • Efectos gráficos para Qt Quick
  • Qt 3D

Respecto a Qt QML & Qt Quick:

  • Nuevo engine para QML (mucho más rápido) QtQuick 2.0
  • Mejoras en la gestión de cara a la Importación de componentes y el manejo de módulos
  • Texto totalmente escalable
  • MultiPointTouchArea
  • Sistema de partículas de serie
  • Qt Quick UI Components

Plataformas soportadas por Qt5 (de más a menos)

  • Linux
  • Windows
  • Mac OSX
  • QNX y VxWorks
  • Android
  • iOS
  • Windows Embedded Compact 7
  • BlackBerry 10*
  • Sailfish de Jolla Mobile**
  • Ubuntu de Canonical**
  • WebOS de HP**
  • Tizen de Intel y Samsung***

(* en proceso de desarrollo, de menos a más)

Resumen del soporte actual de Qt para Android:

  • En Qt 5.1 soporte preliminar (no funciona la cámara de Qt Multimedia, Qt WebKit y Qt Quick Controls)
  • En Qt 5.2 soporte completo (pero no es oro todo lo que reluce)

Resumen del soporte actual de para iOS:

  • En Qt 5.1 soporte preliminar (solo compila desde MacOSX, no dispone de soporte completo para el look&feel, no hay QtQuick 2.0, sin QtWebKit)
  • En Qt 5.2 soporte completo (pero no es oro todo lo que reluce)

Resumen de la evolución de Qt 5

  • 5.0… Para olvidar
  • 5.1… Estable pero carente de algunas cosas importantes
  • 5.2… Totalmente funcional en Windows/Linux/Mac pero carente de algunas funcionalidades complementarias en Blackberry, Android e iOS (necesarias para sacarle todo el potencial a Velneo).
  • 5.3… Seguramente la primera versión donde Qt tomará color en Android e iOS

Evolución en detalle de Qt 5 en Android

Parece que tendremos una versión estable y totalmente funcional de Qt sobre Android en breve, pero… ¿qué está realmente pasando en la cocina para que Velneo no adopte Qt 5 antes del año que viene?.

Sencillo Qt5 para Android está inmaduro e incompleto, vemos en detalle (marco en negrita y en rojo lo importante para Velneo):

http://www.kdab.com/qt-on-android-episode-1/?utm_source=rss&utm_medium=rss&utm_campaign=qt-on-android-episode-1

En los módulos esenciales los problemas son:

MóduloQt 5.1Qt 5.2Qt 5.3
Qt CoreLos semáforos y memoria compartida no funcionan de forma completaTrabajando en ello
Qt MultimediaSin soporte para la cámarasoporte con cámara incluida
Qt NetworkSin soporte SSLsoporte completo con SSL
Qt Quick ControlsSin soporte para estilo nativosoporte para estilos nativos
Qt SQLSolo soporte para SQL lite
Qt WebKit & Qt WebKitWidgets, Qt WebEngineNo disponible por los dimes y diretes de Google y Apple con el WebKitEstán trabajando en un nuevo enfoque basado en otro engine: Qt WebEngine
Qt WidgetsSin soporte para estilo nativosoporte para estilos nativos
Qt GUI, QML, Quick, Quick Layouts, TestTodo funcionando

 

Y en los añadidos de Qt los problemas están resumidos aquí:

ModuleQt 5.1Qt 5.2Qt 5.3
Qt Android Extrasno esta disponiblecapaces de resolver algunas particularidades de AndroidTrabajando en el soporte para los servicios android
Qt Bluetoothno esta disponibleEn el TODO
Qt NFCno esta disponibleEn el TODO
Qt Positioningno esta disponibleEn el TODO
Qt D-Busno esta disponible, android usa otra cosa llamada IPC.Trabajaran en algo similar pero seguramente no esté disponible para esta versión
Qt SensorsSersores habitualesSoporte completo
Qt PrintSupportNo habrá soporte nativo para Android. Esto es muy importante!!!
Qt OpenGLsoporte limitadoPodrán dar soporte mediante un widget de nivel más alto permitiendo mezclar QGLWidget con QWidgets
Qt SerialPortno esta disponibleSoporte completo
Qt Concurrent, Declarative, GraphicalEffects, ImageFormats, Script, ScriptTools, SVG, XML, XMLPatterns  Todo funcionando

Ejemplos corriendo en Android

 

Evolución en detalle de Qt 5 en iOS

Parece que ya disponemos de una versión estable y funcional de Qt sobre iOS, pero… ¿está totalmente funcional?.

Para analizar la verdadera situación no dispongo de tiempo para realizar un análisis detallado pero si os puedo dar el resumen:

En Qt 5.1:

  • Tenemos soporte completo para: Qt Core, Qt Gui, Qt Network, Qt Widgets, Qt Sensors, Qt Quick 1
  • Limitaciones a la hora de compilar. Requerimos de MacOSx y sus herramientas ya que desplegamos via XCode
  • No tenemos el soporte nativo de look&feel
  • Qt Quick 2 no esta funcional
  • No hay soporte para QtWebKit pero se puede usar el componente nativo

En Qt 5.2:

  • Soporte completo
  • Soporte para Qt Multimedia, Qt Quick 2
  • Quedaran decenas de cosas pendientes relacionada con los Addon’s

Problemas con Windows 8.

Como sabréis, Window 8 introduce grandes cambios en la interfaz de usuario. También introduce cambios sustanciales de arquitectura y de API’s de programación. Estos cambios están provocando un replanteamiento de Qt5 respecto a como abordar la mejor solución de integración de cara a futuro.
Estos cambios provocan que de momento, las aplicaciones actuales tendrán que correr en modo clásico (basadas en GDI y Win32) limitando sus despliegues a Windows 8 Pro (no siendo de momento compatibles con Windows RT ni con Windows Phone)

En el futuro Qt 5 tiene que dar soporte a ambas plataformas (mobile y escritorio) y a todas las versiones de producto (Windows es prioritario para Digia y Qt)

El soporte para los UI de Windows 8 y para WinRT requiere de un arduo trabajo.

Los problemas son múltiples:

  • Tienen que cambiar la parte de representación basada en GDI por una basada en WinRT API
  • Necesitan nuevos componentes de UI
  • Además los componentes core tienen que ser refactorizados para conseguir que sean funcionales en WinRT.
  • No hay soporte para hilos (algo que tendrán que resolver)
  • Tienen que rediseñar todo el acceso de red
  • También tendrán que rediseñar el sistema de eventos

Pufff … pus mucho curro me parece.

¿Cómo anda la cosa?. Actualmente existe un prototipo pero no será público hasta al menos el cierre de Qt 5.2.

Mis conclusiones

La fragmentación de plataformas cada vez es mayor, por ello, Qt5 tendrá un hueco importante en esta etapa tecnológica. El problema para Qt es el trabajo que se tiene que hacer para conseguir resolver todos los problemas en todas las plataformas . Poco a poco ese trabajo se está materializando, Qt5 nos muestra el camino que la comunidad open source tiene que seguir de cara a abordar la multiplataforma a bajo nivel. Hay otros enfoques, pero en el fondo todos adolecen del mismo problema (la fragmentación de plataformas) y todos tendrán tarde o temprano que abordar las mismas cuestiones que Qt, especialmente las relacionadas con la compatibilidad a bajo nivel.

La conclusión fundamental es que Qt5 acaba de empezar una nueva etapa y que aún estando inmaduro en plataformas como Android e iOS será muy funcional en la release 5.2. La proyección es que que en la 5.3 se convierta en una seria alternativa a los frameworks multiplataforma existentes. Por lo tanto Velneo tiene que de alguna forma seguir esta inercia de Digia con Qt para abordar lo antes posible las dos vertientes fundamentales de cara a dar soporte a la multiplataforma en al menos los cinco sistemas operativos mayoritarios.

Respecto a los tiempo de Velneo con Qt son los lógicos leído este artículo.

6 Comments

  1. Gracias por leerme y espero que resuelva parte de vuestras dudas respecto a los avances de Qt5. Es un gran salto cualitativo y cuantitativo por lo que hay que ser pacientes con Qt y con Velneo.

    Espero que nuestros artículos sean claros respecto a nuestra visión y que no lleven a malentendidos con nadie de la comunidad o de Velneo. Este blog es la forma de comunicar nuestras ilusiones y decepciones respecto a todo lo que gira entorno a la parte tecnológica y empresarial de nuestros productos. Los artículos los escribimos sin mayor interés que aclarar a la comunidad nuestra visión.

    A veces hay artículos negativos, a veces los hay positivos pero en el fondo decimos lo que pensamos buscando la mayor transparencia en el proceso de comunicación de cara a la comunidad de desarrollo que usa nuestros productos.

  2. Jorge, una consulta.

    Cuando dices «pero carente de algunas funcionalidades complementarias en Blackberry, Android e iOS (necesarias para sacarle todo el potencial a Velneo).»

    Yo pregunto, esas carencias en qt5.2, serán peores que las carecnias que existían en Necessitas Alpha y Beta, que es en lo que se basa Velneo para su vClient Android?

    Si Digia ha incorporado al mismo Bogdan Vatra a su equipo hace ya tiempo, ¿no debería ser el soporte de qt 5.2, algo mucho mejor al soporte de que dispone velneo ahora, basandose en qt 4.8.3?

  3. Sin lugar a dudas, la versión 5.2 de Qt es mucho más «completa» que la 4.8.3 y por tanto es de esperar que el vClient compilado con Qt 5.x sea mucho mejor que la anterior versión. Aún siendo de esta forma, la forma de ser de Android hace que algunas cuestiones importantes para Velneo queden sin solución para esta plataforma y otras tengan que esperar un poco más (las que considero más importantes las remarco en rojo).

    Por hacer un supuesto; Si Velneo compila el vClient con la versión 5.1.1 de Qt obtendrá una mejor respuesta en muchos apartados pero seguirá adoleciendo de ciertos problemas de compatibilidad (resumidos en las tablas). No podemos esperar que el vClient para android sea comparable al de Linux/Windows hasta que Velneo compile con una versión de Qt 5 más madura (seguramente para 5.3 o 5.4).

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *