Qt et Windows (Phone) 8

Windows 8 RT

Windows 8 est sorti récemment, avec une nouvelle plateforme de développement : le Windows Runtime. Le système fournit alors deux modes : classique, semblable à celui de Windows 7 (au menu Démarrer près) ; moderne, anciennement Metro, une interface prévue pour les tablettes et autres smartphones. Les applications pour ce deuxième mode sont construites avec une nouvelle API, Windows Runtime, très semblable à celle de Windows Phone 8.

Le travail de recherche autour de l’utilisation de Qt dans un contexte RT ont été lancées par Andrew Knight (Digia). Les résultats sont d’ores et déjà visibles dans la branche winrt du dépôt qtbase. Avec quelques modifications de Kamil TrzciÅ„ski et la sortie de Qt 5.0, il serait temps de faire décoller ce port de Qt, une manière de compléter l’offre multiplateforme du framework (déjà fournie en ce qui concerne les plateformes mobiles, avec des ports pour Android et iOS, les systèmes mobiles les plus répandus, capitalisant pas loin de nonante pour cent des smartphone vendus).

État du port

Ce port se focalise actuellement sur le cÅ“ur de Qt (le module Qt Core). Les widgets ne seront probablement pas supportés dans le futur proche, étant donné que les développeurs préfèrent dépenser leur énergie sur des manières plus adaptées à l’environnement RT de créer des interfaces graphiques (forcément plus dynamiques), comme Qt Quick.

De même, il est probable que l’élément WebView de QML sera implémenté sur le moteur IE 10, au lieu d’utiliser WebKit 2 (comme pour le reste de Qt). Cela pourrait amener quelques problèmes de compatibilité des applications (IE 10 n’utilisant pas le même moteur de rendu), cependant.

La première étape sera d’afficher de simples fenêtres à l’écran. Ensuite, il est prévu de porter ANGLE, afin d’obtenir le support d’OpenGL ES 2.0, requis pour QML 2.

Vu que le projet est encore actuellement dans ses premières étapes, il n’est pas prévu qu’il soit intégré pour Qt 5.1, plus probablement quelque chose pour Qt 5.2.

Un plug-in pour Qt Creator est aussi en cours de développement, mais il est bien moins avancé : https://gitorious.org/~aknight/qt-creator/aknights-qt-creator.

Windows Phone 8

La situation semble plus simple, puisque tous les modules essentiels de Qt compilent – malgré des fonctionnalités manquantes, à cause de la non-implémentation des détails spécifiques à la plateforme, cela fonctionne bien. En effet, les API disponibles à WinRT sont plus restreintes que celles disponibles sur Windows Phone 8. Notamment, tout le côté réseau doit être réimplémenté presque de zéro, Winsock2 n’étant pas disponible.

La compilation utilise Visual Studio 2012, avec la chaîne de compilation ARM et de nouvelles spécifications pour QMake côté Qt. La procédure complète est plus compliquée qu’une compilation croisée plus standard de Qt, plus expérimentale (c’est le moins qu’on puisse dire), à cause du manque de maturité du port : http://ayufan.eu/2013/02/qt5-and-windows-phone-8/.

Sources

http://blog.qt.digia.com/blog/2013/02/15/port-to-windows-runtime-kick-started/, http://ayufan.eu/2013/02/qt5-and-windows-phone-8/, http://qt-project.org/wiki/WinRT

Sortie de Qt Creator 2.7.0 beta

Peu de temps après la sortie de Qt Creator 2.6.2, voici la préversion de la prochaine version majeure de l’EDI C++, qui donne quelques impressions sur les nouvelles fonctionnalités et améliorations apportées. La version finale est prévue pour la fin mars.

Avec l’open governance, pas moins de mille trois cents commits ont été réalisés par soixante-trois développeurs, ce qui montre la vivacité de l’environnement.

Nouveautés côté C++

Le support de C++11 s’améliore encore, mais n’est toujours pas parfait. Les mots-clés alignof, alignas et noexcept sont maintenant gérés, ainsi que >> dans les définitions de templates. Le support des lambdas a aussi été amélioré. La plus grosse amélioration, aux yeux des développeurs, est le support de l’initialisation uniforme, avec des accolades.

Lorsque le contexte ne fournit pas assez d’éléments, l’environnement passe maintenant par défaut en mode C++11, plus C++03.

Il faut aussi noter que ce n’est pas dans cette version que l’on verra l’utilisation de Clang pour l’analyse syntaxique du code, pour des raisons de performances.

Nouveautés côté QML

Avec la sortie de Qt 5, il était fort probable que le support de Qt Quick 2 allait recevoir beaucoup d’attention – et cela a été le cas. Le designer graphique devrait à présent fonctionner bien mieux avec cette version de l’environnement de programmation déclarative d’interfaces graphiques.

Cependant, les binaires actuellement disponibles sont compilés avec Qt 4.8, ce qui signifie que le rendu ne peut pas encore utiliser cette version de Qt Quick. Il faudra, pour en profiter, soit compiler soi-même Qt Creator, soit attendre la sortie de Qt 5.1 (cette version de Qt devrait également inclure les composants Qt Quick en tant que module essentiel, ce qui ne manquera pas de donner un plus grand intérêt à la plateforme).

Nouveautés côté kits

La grande nouveauté de Qt Creator 2.6 était la présence des kits, une solution très flexible pour gérer les chaînes de compilation utilisées (ce qui est très utile dans un contexte multiplateforme avec de la compilation croisée, de plus en plus fréquente avec la montée en puissance des plateformes mobiles).

Il sera maintenant possible d’utiliser certaines chaînes personnalisées sans devoir créer son propre plug-in.

Cette flexibilité était venue avec quelques zones plus sombres, une interface pas aussi claire qu’elle aurait dû ; maintenant, une grande partie de ces défauts de jeunesse sont corrigés, l’avis de la communauté sera d’une très grande aide pour peaufiner encore cette partie.

Divers

Le probable prochain système de compilation, QBS, qui devrait remplacer QMake cette année (vers l’été ?), est supporté de manière expérimentale par l’EDI.
Des templates pour la création d’applications BlackBerry 10 sont disponibles.

Les chaînes à traduire seront gelées la semaine prochaine (jeudi), le vrai travail de traduction pourra commencer à ce moment.
Une première version Release Candidate est attendue deux semaines plus tard.

Source : http://blog.qt.digia.com/blog/2013/02/07/qt-creator-2-7-0-beta-released/

Sortie de Qt 5.0

À proximité de Noël mais aussi d’une nouvelle fin du monde, Digia dépose un gros cadeau sous le sapin : Qt 5. Pour rappel, Qt est le standard de facto pour les interfaces graphiques en C++, mais il fournit également un bon nombre d’autres fonctionnalités (comme le support de WebKit, pour afficher des pages Web, des fonctionnalités multimédia, de réseau, de script, des interfaces déclaratives avec Qt Quick, etc., sans oublier l’EDI Qt Creator). Pour ceux qui en suivent l’actualité, il est également important de noter qu’il s’agit de la première version majeure depuis que Trolltech, la société l’ayant créé, a été rachetée, d’abord par Nokia, puis par Digia.

Fonctionnalités majeures

Cette version est disponible comme un paquet de binaires pour toutes les plateformes desktop (Linux 32 et 64 bits, Mac OS X 10.7 et 10.8, Windows), comprenant, en plus de Qt 5, l’environnement de développement Qt Creator 2.6, les exemples et la documentation complète.

Les fonctionnalités majeures sont rassemblées dans une vidéo, entièrement générée par une application Qt 5, avec Qt Quick, OpenGL et WebKit. (Les sources sont bien évidemment disponibles : https://qt.gitorious.org/qt-labs/qt5-launch-demo.)

Également à noter : la deuxième beta a apporté une totale refonte de la documentation, elle est maintenant plus adaptée à la modularisation du framework.

Compatibilité

Qt 5 est un grand remaniement de Qt 4 (sorti en 2005), tout en restant dans la continuité : le but est d’avoir un framework ouvert sur le futur, prêt à supporter toutes les plateformes, mais sans rupture forte avec Qt 4, afin de faciliter la migration.

Cette version a donc été l’occasion de bien nettoyer l’architecture interne, notamment avec une modularisation du framework, mais une migration très rapide de la plupart des applications est possible. Ceci implique notamment que les widgets, la base des interfaces graphiques des précédentes versions, sont toujours supportés, bien qu’ils ne sont plus inclus dans le module Qt GUI (ils ont été déplacés dans un autre module, afin d’en faciliter la maintenance (ils ne sont plus la seule et l’unique manière de créer des interfaces).

Un exemple de cette très forte compatibilité : Qt Creator. Une seule base de code est utilisée pour compiler tant avec Qt 5 que Qt 4.

Futur

Pour la série 5.0, encore quelques points seront régularisés : pas de paquet de binaires disponible pour MinGW (le port de GCC pour Windows), étant donné que WebKit ne le supporte pas complètement, ni pour Visual C++ 2012 (il faut compiler Qt 5 soi-même). Il est actuellement prévu de résoudre ces problèmes pour Qt 5.0.1, prévu fin janvier.

Au-delà cette première échéance, la version 5.1 est prévue pour le printemps 2013, où le but sera de stabiliser encore plus le framework et de porter des modules add-ons tels que Qt 3D et Qt Sensors dans les modules principaux. Il est également prévu de montrer les avancées des ports vers Android et iOS.

Pour les versions suivantes, il est prévu que deux versions mineures sortent chaque année.

Contribution

Bien évidemment, il s’agit d’une première version finale, expurgée des bogues les plus problématiques, mais toute une série de problèmes est connue : http://qt-project.org/wiki/Qt500KnownIssues. Si vous souhaitez contribuer au framework (en rapportant de nouveaux bogues, en en corrigeant, en développant de nouvelles fonctionnalités, etc.), n’hésitez surtout pas : http://qt-project.org/contribute.

Déjà un grand nombre de gens ont contribué à cette version : 427 personnes pour le code source. Bien plus pour le rapport de bogues, les discussions, le feedback. Avec un peu plus d’un an, le Qt Project s’est montré être une grande communauté, une grande réussite pour l’avenir du framework.

Source : http://blog.qt.digia.com/blog/2012/12/19/qt-5-0/

Sortie de Qt 5 Release Candidate

La RC de Qt 5 est sortie, la Beta 2 étant disponible depuis les Developer Days, début novembre.

Sur ce temps, l’objectif a été la finalisation de l’API Qt et la résolution de bogues, il s’agit de l’étape de polissage du produit avant qu’il soit labellisé final. La structure et le contenu n’ont presque pas changé depuis la version précédente, à deux exceptions près :

  • la documentation a été restructurée, pour la rendre plus facile d’accès ; de même, les exemples ont été revus et sont désormais disponibles depuis l’écran d’accueil de Qt Creator ;
  • quelques changements dans les API ont été apportés.

L’objectif de cette nouvelle version majeure était de faciliter autant que possible la transition depuis Qt 4, ces nouveaux changements d’API ne font pas changer la balance.

Cette nouvelle version devrait être très proche de la version finale : à moins que de bogues importants soient remarqués d’ici là, la version finale devrait sortir la semaine prochaine. Sinon, une nouvelle RC sera publiée. L’objectif de Qt 5 en 2012 devrait donc être respecté !

Source : http://blog.qt.digia.com/blog/2012/12/06/qt-5-0-release-candidate/
La nouvelle documentation : http://qt-project.org/doc/qt-5.0/qtdoc/index.html
Les changements depuis Qt 4 : https://qt.gitorious.org/qt/qtbase/blobs/stable/dist/changes-5.0.0
Télécharger Qt 5 RC : http://qt-project.org/downloads

Necessitas, le port Android de Qt, intégré au Qt Project

Il était déjà annoncé que Digia envisageait de supporter les plateformes mobiles de mieux en mieux avec Qt, avec pour objectif l’intégration d’Android et iOS dans les plateformes supportées en tier 1 courant 2013 (c’est-à-dire comme plateformes principales). Une des pistes était l’intégration du code de Necessitas, le port lancé par BogDan Vatra pour Android : la bonne nouvelle du jour est que les deux parties se sont mises d’accord pour que cela arrive ! Le port Android de Qt 5 sera basé sur le projet Necessitas, BogDan souhaitant en devenir mainteneur (selon l’organisation du Qt Project : http://qt.developpez.com/actu/38218/Le-Qt-Project-est-la-le-projet-d-open-gouvernance-pour-le-framework-C-est-arrive-a-terme/).

Necessitas est développé sous l’égide du projet KDE, qui a fourni l’infrastructure nécessaire pour le développement et la distribution ; il est actuellement utilisé par un grand nombre de développeurs, qui ont publié des applications l’utilisant sur des périphériques Android.

Ce projet a été lancé grâce à QPA, la plateforme d’abstraction des plateformes de Qt, apparue avec la version 4.8 pour faciliter le port de Qt vers d’autres plateformes. Faisant ses débuts fin 2010, la première beta a été rendue disponible en février 2011, le port ne cessant depuis lors de supporter de plus en plus de fonctionnalités. Actuellement, le port n’est toujours pas considéré fini, mais cela devrait arriver dans les mois à venir, ces efforts pouvant être repris en très grande partie pour le port Qt 5.

Le projet Necessitas ne contient pas qu’un port de Qt : on compte également le Necessitas SDK, qui ajoute à Qt Creator le support d’Android, ainsi que Ministro, qui télécharge les dépendances (Qt) des applications déployées.

Pour ceux qui sont à Berlin cette semaine, quelques démos devraient avoir lieu aux DevDays (reportage en live : http://www.developpez.net/forums/d1278682/c-cpp/bibliotheques/qt/direct-qt-devdays-2012-a/).

Source : https://www.readability.com/articles/m86pwans

Sortie de Qt 5 Beta 2

Juste pour les Qt DevDays 2012 à Berlin (reportage en live : http://www.developpez.net/forums/d1278682/c-cpp/bibliotheques/qt/direct-qt-devdays-2012-a/), Qt 5.0 Beta 2 est de sortie, comme prévu. La sortie de la version finale est toujours prévue pour cette fin d’année 2012.

D’ailleurs, tout commence à se mettre au parfum Qt 5 : Qt Creator 2.6, sorti il y a peu, peut être basé sur Qt 5 pour compiler avec Qt 5, formant une version complète de l’environnement Qt très utile pour tester cette nouvelle version majeure.

Cela montre aussi le niveau de compatibilité entre Qt 5 et Qt 4 : le même code source est utilisé pour compiler Qt Creator, peu importe la version de Qt. Qt 4.8 et Qt 5.0 garantissent presque une garantie de compatibilité des sources.

Cette préversion montre aussi une liste des modules et paquets qui feront partie de la version 5.0 finale, ainsi que les distributions entre modules essentiels et add-ons. Mêmes si ces listes paraissent longues (signe d’un grand nombre de fonctionnalités), certains modules – comme Qt 3D – n’en font pas partie, bien qu’ils seront disponibles du Qt Project et utilisables avec Qt 5.0.
[B]Qt Essentials [/B]:
Qt Core
Qt Network
Qt Gui
Qt Sql
Qt Testlib
Qt Widgets
Qt Qml
Qt Quick
Qt Multimedia
Qt WebKit
Qt WebKit Widgets
[B]Qt Add-ons[/B] :
Qt Xml
Qt XmlPatterns
Qt Svg
Qt Concurrent
Qt Printsupport
Qt DBus
Qt OpenGL
Qt ActiveQt
Qt Graphical Effects
Qt Script
Qt Declarative
Qt Image Formats
[B]Outils[/B] :
Qt Assistant
Qt Linguist
Qt Designer
Qt Translations
Qt Creator
Qt Documentation

En tant que préversion, un certain nombre de problèmes est déjà connu ; notamment, la documentation n’a pas reçu sa dose d’attention, de grands changements sont à prévoir à ce niveau avant la version finale. La liste des problèmes connus : http://qt-project.org/wiki/Qt500beta2KnownIssues.

En tant que projet communautaire, il est important que tous participent à l’élaboration de cette nouvelle version : essayez Qt 5 sur vos projets, donnez votre avis au Qt Project pour résoudre autant de problèmes potentiels que possible avant la version finale.

Télécharger Qt 5 Beta 2 : http://qt-project.org/downloads

Nouveau voyage pour Qt

Ce 18 septembre 2012 était le premier jour avec Digia propriétaire de Qt. Avec une équipe renforcée (notamment par Lars Knoll), Digia annonce que le « vrai potentiel de Qt sera libéré, ainsi que son écosystème ». Dès l’annonce du rachat en août dernier, une série de questions se posaient sur l’avenir de l’écosystème libre : Qt sera-t-il toujours disponible sous la LGPL ? Quid de Necessitas, pour le support d’Android, puisqu’un objectif était le support tant d’iOS et d’Android ?

L’objectif de Digia est toujours de « garder Qt disponible tant en commercial qu’en open source, tout en continuant à maintenir activement les deux », d’« avoir une communauté Qt forte et unie », sachant que « faire avancer la technologie est extrêmement important ».

La transaction comprenait également le financement et la gestion de l’infrastructure du Qt Project ; ce transfert est actuellement presque achevé, ne restent que quelques items (comme le système d’intégration continue).

Lire la suite

KDE Frameworks 5 suit la même orientation que Qt 5

Qt 5 s’apprête à sortir, malgré les nouvelles de rachat par Digia ; de même du côté de KDE, l’environnement de bureau pour Linux (notamment), qui s’apprête à sortir KDE Frameworks 5, l’évolution des kdelibs, les bibliothèques de base complémentant Qt sur lesquelles tout l’environnement est construit.

Tout d’abord, quelques constats sur les kdelibs : elles ne sont pas très modulaires ou réutilisables (même si cela change), ont des fonctionnalités qui devraient plutôt bénéficier à toute la communauté Qt, disposent de classes et modules redondants par rapport à Qt (KHTML et QtWebKit, QLocale et KLocale, etc.). Ainsi, notamment, ses différentes parties dépendent fortement les unes des autre (jusqu’à nécessiter l’exécution de plusieurs processus sur le côté).

Grâce à l’open governance de Qt, il est plus facile de contribuer au framework et donc d’y passer toutes les fonctionnalités fournies par les kdelibs alors qu’elles devraient être dans le framework fondation. De l’autre côté de la frontière, il est dans les projets de faire disparaître la distinction entre applications Qt et applications KDE, de manière technique : les nouveaux KDE Frameworks sont aussi prévus pour une utilisation plus large que dans le seul projet KDE. Cela est une bonne nouvelle pour tous : si votre application aurait pu profiter d’une classe ou l’autre du projet KDE, il ne sera plus nécessaire de prendre tout le projet (ou presque) à côté ; une application KDE pourra également être utilisable plus facilement dans d’autres environnements (dans la lignée des initiatives KDE on Windows et KDE on Mac OS X), bien que sans les fonctionnalités d’intégration à KDE.

Ces changements philosophiques dans la conception des bibliothèques profite en même temps des nouveautés de Qt 5, puisque tout est actuellement développé avec, en tête, tant Qt 4 que Qt 5, en préparant une manière facile de porter le code vers Qt 5 lorsque ce temps sera venu (déplacement des méthodes dans des classes temporaires, par exemple, qui seront obsolètes avec Qt 5 mais très utiles avec Qt 4), ceci ne pouvant pas se faire sans quelques grands changements du côté de l’API par rapport aux kdelibs.

Lire la suite

Jolla fera-t-elle renaître le nouveau-né MeeGo de ses cendres ?

Un seul smartphone sous MeeGo, tel est le constat de Nokia après la fusion de Maemo avec Moblin (l’ex-OS mobile d’Intel), le N9 ; c’est ce même N9 qui a servi de base au Lumia 800, sous Windows Phone, marquant l’arrêt de mort de MeeGo sur les smartphones du géant finlandais en déroute.

Certains diront même qu’il ne s’agit pas vraiment de MeeGo, mais plutôt d’un Harmattan, un OS prévu pour effectuer la transition entre Maemo et MeeGo : on prend un Maemo 5, on en éjecte GTK+ pour qu’il ne reste que Qt, on colle les API MeeGo dessus, ça fait un Harmattan, officiellement sous le nom de « MeeGo 1.2 Harmattan » – pour la petite histoire, la version 1.2 est sortie cette année, ayant pour nom complet « MeeGo 1.2 Harmattan 1.2 », légèrement surréaliste.

Suite au partenariat avec Microsoft sur Windows Phone, malgré un semblant d’intérêt dans le projet MeeGo, avec l’aide d’Intel (qui, pourtant, avait l’air de le soutenir), MeeGo sera quand même rangé au placard, pour être remplacé, dans le verbe au moins, par Tizen, un OS mobile toujours basé sur Linux mais, cette fois, résolument orienté HTML 5, JavaScript et autres technologies Web, sans laisser la place au natif.

C’est pourquoi le projet Mer a été lancé : une distribution Linux, à base de Qt (surtout de QML) et d’HTML 5, basée sur MeeGo, avec une forte orientation mobile. Différence principale par rapport à MeeGo ? Tout est ouvert, transparent, méritocratique (un peu comme le Qt Project).

Sauf que…

Lire la suite

Digia s’investit de plus en plus dans Qt, Nokia continue-t-il de sombrer?

Il y a une quinzaine de mois, Nokia « refilait » le support commercial de Qt à Digia ; certaines rumeurs parlaient déjà d’une revente complète de tout ce qui concerne le framework, il ne s’agissait que du support commercial – à l’époque. Ces rumeurs se révèlent maintenant confirmées : Digia s’apprête à acquérir tout ce qui concerne Qt de Nokia (toutes les activités Qt, dont le développement du produit, les licences open source et commerciales, tout le service commercial). Ceci intervient dans une période relativement sombre pour Nokia (« Nokia coule-t-il à pic ? »), avec parfois des décisions douloureuses et, selon certains, injustifiables (pour se relancer, la société a licencié une grande partie de ses développeurs, selon Mirko Boehm, se basant probablement sur les annonces d’un « affinage stratégique »).

Lire la suite