Build 2015 – The « Microsoft Edge » rendering engine that makes the Web just works

Le moteur d’Internet Explorer a 20 ans (1995), mettre en place de nouvelles versions sans altérer la compatibilité devenait un réel problème, et la gestion de la compatibilité un frein à l’innovation et aux performances. Les navigateurs concurrents ne se posent pas ces contraintes… il était donc temps pour Microsoft de faire place nette.

Le moteur de Edge est issu de celui de Trident (le moteur HTML de IE), mais il a subit un gros nettoyage avec la suppression de certaines fonctionnalités anciennes (ex: attachEvent) et de tout ce qui touchait à la compatibilité avec les version séculaires de IE. Edge s’aligne ausi sur le comportement implémenté dans les autres navigateurs pour que les sites fonctionnent correctement, même si ils sont alignés sur les spécificités de webkit.

Edge implémente aussi beaucoup de nouvelles choses. La liste est longue et l’idéal est de consulter status.modern.ie pour se faire un aperçu complet.

Si vous jetez un oeil à cette session, vous pourrez voir des démos de css filters (post processing d’un noeud du DOM avec des shaders déclarés en css), @support (feature detection en css), srcset (gestion des images selon la résolution), svg foreign objects (incorporer du HTML dans du SVG), et HTTP 2 (multiplexage des requêtes, …).

La session se termine par une petite démo de Vorlon.js, un nouvel outil dans la ligné de choses comme weinre, pour diagnostiquer et auditer très facilement une application web, quel que soit son mode de fonctionnement (Cordova, web, web mobile, etc).

Build 2015 – JavaScript frameworks in your apps and sites from WinJS and beyond

Cette session permet de voir les dernières évolutions apportées à WinJS et son utilisation dans les Windows web apps, à travers une petite application. Elle aborde ensuite l’utilisation des contrôles de WinJS dans les frameworks les plus « hot » du moment, en portant cette même application, avec Knockout, Angular, et React.
C’est un panoram interessant, bien que superficiel, des frameworks front-end du moment.

Build 2015 – User Data : Working with Contacts, appointments, text messages and more

Windows 10 introduit de nouvelles API pour interagir avec les entités les plus fondamentales pour un utilisateur : contacts, agenda, appels, sms, messages, etc… toutes ces entités manipulées par les applications fournies dans Windows comme People, mail ou Cortana. Les API utilisées par ces applications sont maintenant exposées dans WinRT.

L’objectif est de pouvoir manipuler et requêter ces entités et les données associées (historique des appels par exemple). Pour le moment, tout n’est pas accessible sur toutes les entités. L’entité la mieux couverte niveau API celle concernant les contacts.

Une application peut attacher des données supplémentaires sur les entités, ou créer des conteneurs (datastore) qui lui sont spécifiques. Ces données peuvent n’être visibles que par l’application, ou partagées avec les autres. Les datastores proposent des fonctions avancées comme le tracking de modifications, ainsi que des évènements particuliers, dans l’application, et pour certains types d’entités, le déclenchement de tâches de fond.

Build 2015 – ma première application holographique (avec Hololens !)

Après deux jours de conférence, tout espoir de toucher à Hololens me semblait perdu. J’ai eu la bonne surprise de recevoir un message 5 minutes avant le début d’une session pour participer à 1h30 de développement d’une application pour Hololens !!!

Difficile de refuser…

Pour cette petite application, le moteur 3D utilisé fut celui d’Unity 3D. Ce petit training a consisté en un pas à pas permettant d’appréhender les différents aspect de Hololens comme les inputs (regard, gestures, voix), l’affichage d’un modèle en 3D et son positionnement dans l’espace, la découverte de ce que voient les Hololens, la gestion du son spatialisé, etc.

Dès qu’on passe les premières étapes de l’atelier et qu’on a quelque chose d’interactif, on bascule tout de suite dans quelque chose de très immersif. J’apprèhendais un peu des effets de tremblotements, ou que les modèles 3D ne soient pas bien synchronisés avec les éléments du monde réel mais pas du tout. Tout est stable et à sa place, et le reste même quand on se déplace. La reconnaissance vocale fonctionne bien du premier coup, malgré mon accent francais. Les gestures sont faciles à appréhender et bien reconnues.

L’atelier se termine par une dernière scène dans laquelle une des interactions fait un trou dans le sol dans le monde réel. A travers ce trou, on peut observer un monde virtuel… Je peux vous garantir que toute les personnes qui se trouvaient dans la pièce (moi inclus) ont fini à genou ou quasi à plat ventre pour observer ce qui se passe de l’autre côté.

La seule chose qui dégrade un peu le côté immersif est la taille de la zone d’affichage. Elle semble un peu petite au premier abord, d’autant plus qu’on a le réflexe de bouger les yeux plutôt que de bouger la tête.

Malgré ce petit détail, cette première expérience avec Hololens a été vraiment bluffante. Le pari d’une expérience simple, intuitive et immersive est réussi, et on ne peut que laisser aller son imagination sur la multitude d’usages que l’on peut faire d’un tel outil. Tant au niveau professionnel qu’au niveau domestique.

Build 2015 – Hosted web apps and web platform innovations

L’objectif des applications Windows en HTML, ou « Windows web apps » sous Windows 10 est d’enlever les quelques barrières qui existaient sous Windows 8, dans le but d’utiliser les frameworks et les outils courants du web, sans avoir besoin de contournements comme c’est le cas aujourd’hui. Ces applications font intégralement partie des « Universal APplications » ou UAP, et fonctionnent sur toutes les plateformes Windows (Rasperry, Hololens, …).

Sous Windows 10 le moteur d’execution utilisé est le tout nouveau moteur Edge, ainsi que la nouvelle version de Chakra.

Les Windows web apps peuvent être packagées comme c’était le cas dans Windows 8+ et Windows Phone 8.1 en créant un package (appx) contenant les fichiers. Avec Windows 10, les applications web peuvent maintenant aussi être hébergées sur un serveur. Conceptuellement, il s’agit dans ce cas d’un site web, visible dans le store, sans le chrome du navigateur. Les applications hostées peuvent donc être mises à jour en modifiant leur code sur le serveur, sans republier dans le store. Ces applications peuvent être sideloadée comme les autres. Ce modèle d’application constitue donc un modèle très attractif pour toute application qui est connectée par nature.

Pour créer une « hosted app », on peut modifier le manifeste appx pour déclarer une page de démarrage en http, et ajouter une instruction pour déclarer l’application comme étant hébergée. On peut préciser aussi le ou les domaines http autorisés

Une application hosted va tout de même plus loin qu’un simle site internet, et peut accéder aux API windows (une autre instruction à checker dans le manifeste), et on peut restreindre l’accès aux API Windows à certain domaine http.
Le fait qu’une application soit hostée n’empêche pas d’inclure des fichiers dans le package, et de fait d’avoir une application qui mixe les deux modes.

Pour les Windows web apps, le modèle de sécurité a été modifié pour se baser sur le standard W3C « Content Security Policy » (CSP), plutôt que sur des restrictions propriétaires. Cela permet d’avoir davantage de flexibilité, et permet que la plupart des frameworks fonctionnent out of the box. Le modèle CSP permet aussi de personnaliser le niveau de sécurité si besoin.

La nouvelle plateforme web est également au coeur du contrôle de Webview dans Windows 10. Cette nouvelle Webview permet maintenant d’injecter un objet C# dans une page pour faciliter la communication avec le contenu de la Webview. On a également une API permettant de nettoyer le cache, ou la possibilité d’autoriser une page à utiliser l’API WinRT.

Par ailleurs, ces modifications facilitent beaucoup l’intégration des Windows web apps dans Cordova (avec Windows Phone 8.1 ca frotte un peu sur les bords…).
Pour les applications hostées, on peut aussi faire cette intégration avec Manifoldjs qui va crée des applications hostées avec Cordova, à condition de mettre un webmanifest sur le serveur pour décrire les différentes ressources nécessaires.

Beaucoup de modifications intéressantes donc pour tout ce qui touche à la plateforme web, en natif (packagée et/ou hostée), et aussi en cross platform.

Build 2015 – Windows App Lifecycle from activation/suspension, background and multitasking

Session intéressante sur le cycle de vie des applications et les tâches de fond dans Windows 10. Pas besoin de connaitre déjà ces mécanismes pour voir cette session puisque le speaker explique ces éléments « from scratch ».

Le cycle de vie reprend celui de Windows 8 avec 3 états : Not running / Running / suspended

Dans windows 10, une application tournant en mode desktop est suspendue quand on la passe en « minimize »

La grosse nouveauté concernant le cycle de vie dans Windows 10 est le concept de « Extended Execution ». Une application peut demander un sursit pour by-passer la suspension (par défaut l’application a quelques secondes et elle est tuée si la suspension prend trop de temps). L’objectif est de permettre des traitements plus long à la suspension (enregistrement des données), ou de continuer l’execution (application de navigation GPS par exemple). Ce sursit peut être révoquée par le système en cours de route si il est nécessaire de libérer des ressources, un évènement est alors déclenché pour notifier l’application qu’elle va être quand même suspendue. Côté code, cela passe par la création d’un objet de session qu’on référence au niveau du système, et qui va porter la callback de révocation.

Pour les traitements en tâche de fond, le modèle est également celui de WinRT, avec des évènements déclencheurs (triggers) et des conditions. Il existe cependant plein de nouveaux types de triggers (ajout d’un appointment, d’un contact, device bluetooth demandant une connexion, capteurs, …). Une différence cependant est que les applications n’ont plus besoin d’être sur le lock screen pour certains déclencheurs comme le TimeTrigger (bonne nouvelle car c’est galère).

Parmis les choses intéressantes, de nouveaux triggers comme le ApplicationTrigger, ou des anciens comme le MaintenanceTrigger tournent maintenant en mode opportuniste, sans quota de ressources. Cependant, les tâches de fond de ce type ne fonctionnent que si les ressources sont disponibles. Autre nouveauté intéressante, le ApplicationTrigger, qui permet (enfin) de déclencher une tâche de fond depuis l’application. Très interessant dans les applis offline pour déclencher une première synchro, ou un traitement long.

On peut maintenant aussi avoir une tache de fond qui s’execute dans le même process que l’application.

Build 2015 – Project Oxford : Adding smart to applications

Project Oxford est une nouvelle fonctionnalité qui n’a pas été annoncée pendant la keynote. Elle fait partie de Azure, dans la famille du machine learning

C’est un set d’API REST basé sur du machine learning pour interagir avec des contenus multimedias
– traitement images (analyse, OCR, thumbnail intelligent, …)
– reconnaissance visages (detection, verification, identification)
– speech (Text To Speech, Speech To Text)
– LUIS (language understanding intelligent service, ex: traductions, détecter les intentions)

L’API semble simple d’utilisation, et la partie LUIS permet seule, ou combinée au speech, des scénarios métier assez intéressant pour pouvoir définir des commandes, un peu comme le fait Cortana.

Project Oxford est disponible en béta ici:
http://www.projectoxford.ai

Cela passe par la souscription et le portail azure donc il vous faudra obligatoirement un compte Azure pour pouvoir tester