From 3fcddf78f965a2c5ee0a9602708899fb0e72a7c0 Mon Sep 17 00:00:00 2001 From: Sébastien Dailly Date: Sat, 21 Mar 2015 11:32:09 +0100 Subject: Article on sailfish developpement --- content/Informatique/2015-03-25-sailfish.rst | 152 +++++++++++++++++++++ content/images/hacking/2294144289_a54db90ac5_q.jpg | Bin 0 -> 12826 bytes content/images/icons/tsumego_150.jpg | Bin 0 -> 8119 bytes content/images/sailfish/ide.jpg | Bin 0 -> 47934 bytes content/images/sailfish/sailfish.jpg | Bin 0 -> 2856 bytes 5 files changed, 152 insertions(+) create mode 100755 content/Informatique/2015-03-25-sailfish.rst create mode 100644 content/images/hacking/2294144289_a54db90ac5_q.jpg create mode 100644 content/images/icons/tsumego_150.jpg create mode 100644 content/images/sailfish/ide.jpg create mode 100644 content/images/sailfish/sailfish.jpg (limited to 'content') diff --git a/content/Informatique/2015-03-25-sailfish.rst b/content/Informatique/2015-03-25-sailfish.rst new file mode 100755 index 0000000..f6f3796 --- /dev/null +++ b/content/Informatique/2015-03-25-sailfish.rst @@ -0,0 +1,152 @@ +.. -*- mode: rst -*- +.. -*- coding: utf-8 -*- + +================================== +Revue du système Sailfish OS (1/2) +================================== + +:date: 2015-03-25 +:tags: Libre, Programmation, Sailfish +:logo: /images/sailfish/sailfish.jpg +:summary: Petite revue du développement et de la sécurité du système + d'exploitation Sailfish, suite à la diffusion de ma première + application. + +.. figure:: {filename}/images/sailfish/sailfish.jpg + :figwidth: 150 + :figclass: floatleft + :alt: Logo de sailfish OS + + Logo de sailfish OS + + +J'ai publié la semaine dernière ma première application pour Sailfish OS. Il +s'agit du système qui tourne sur les téléphones Jolla. Ce petit jeu permet de +charger des problèmes de go déjà préparés, pour ensuite les tester et +rechercher la solution. La première version a été publiée sur le site +openrepos.net_ la semaine dernière, pour la première version du jeu avec les +fonctionnalités que je souhaitais. C'est l'occasion de faire une petite revue +du développement pour Sailfish OS. + +.. _openrepos.net: https://openrepos.net/content/chimrod/tsumego + +Présentation +============ + +Sailfish OS est un système d'exploitation tournant sur le téléphone Jolla_. Le +système est construit en utilisant Qt et Wayland pour la partie graphique. Un +terminal est nativement disponible sur le téléphone, et la connexion ssh est +prévue sans qu'il ne soit nécessaire d'installer quoi que ce soit. On peut donc +dire qu'un bidouilleur sous linux retrouve facilement ses marques sur le +téléphone et le système. + +.. _jolla: https://fr.wikipedia.org/wiki/Jolla + +L'ide +===== + +Les développeurs ont eut le bon gout d'utiliser des technologies existantes +pour faire l'environnement de développement. On dispose donc d'un package +comprenant : + +- Une IDE — Qt Creator +- Une machine virtuelle pour faire la compilation vers ARM +- Une machine virtuelle pour émuler le téléphone. + +Le développement se fait donc en QML, et un binding python est également disponible. + +.. figure:: {filename}/images/sailfish/ide.jpg + :alt: Capture d'écran de l'environnement de travail + + Capture d'écran de l'environnement de travail + + +Des exemples sont fournis, permettant de lancer quelques applications, +principalement en QML et javascript ; la partie C++ est limitée au lancement de +l'application. + +On peut remarquer des incohérences autorisées par l'éditeur et le compilateur +dans l'agencement des composants — par exemple il est possible de mettre un +composant « page » dans un autre composant « page » ce qui provoque des erreurs +à l'affichage ou dans le comportement. Quand on a pris l'habitude des langages +fortement typés où le compilateur bloque tout programme mal structuré, ça +agace… Il s'agit d'un problème dans l'éditeur Qt Creator et non sur le système +mais pour un développeur qui ne connaît pas, ce genre de problème met du temps +avant d'être compris et résolu. + +Les composants +============== + +L'interface de Sailfish est construite en enrichissant la base Qt de nouveaux +composants, qui correspondent à l'interface du téléphone. Il est donc facile de +construire une application qui s'intègre dans l'ergonomie du téléphone, puisque +l'utilisation des composants standards va donner une base à la fois sur +l'aspect visuel, mais également concernant la partie interactivité. + +Il est facile d'intégrer une application existante pour le téléphone. Par +exemple gPodder_ est présent à la fois sur android_ et sailfish_, seule +l'interface graphique diffère entre les deux projets. + +.. _gPodder: https://github.com/gpodder +.. _android: https://github.com/gpodder/gpodder-android +.. _sailfish: https://github.com/gpodder/gpodder-sailfish + +Il est facile de coder en Python grâce à la librairie PyOtherSide_, qui permet +de faire la liaison entre la partie QML et du code python. Sans toucher au C++, +on dispose donc des briques nécessaires pour pouvoir se faire une application +complète assez rapidement. + +.. _PyOtherSide: http://thp.io/2011/pyotherside/ + +La documentation +================ + +La documentation ne couvre que la partie composant graphique de QML. Les +composants propres au système Sailfish OS sont bien décrits et l'aide est +intégrée à Qt Creator sans qu'il soit nécessaire d'aller chercher sur le net +(la documentation autrefois disponible en ligne a été retirée lors de la +dernière diffusion de l'environnement de développement ; on trouve donc de +nombreux liens qui pointent désormais vers des pages inaccessibles…) + +Par contre, le fonctionnement des binding python (par exemple) n'est pas +couvert, et il est nécessaire de parcourir le code des autres projets pour +comprendre comment utiliser telle fonctionnalité. + +La compilation +============== + +À travers quelques clics, il est facile de changer la cible de la compilation : + +- Un exécutable à lancer dans l'émulateur +- Un RPM à destination d'une plate-forme ARM +- Un RPM pour une architecture locale + +Comme dit plus haut, je n'ai pas testé l'écriture d'application C++, cela +facilite la chaîne de compilation… Si l'on se contente d'une application +Python, on dispose alors d'une chaîne de compilation très facile à mettre en +place. + +Bilan +===== + +Je n'ai eu aucun problème à installer et lancer l'environnement de +développement. Tout fonctionne correctement dès l'installation sans rien avoir +à configurer. + +Les technologies utilisées sont plutôt bien choisies (au moins pour quelqu'un +qui a déjà son PC sous linux), et actuelles. Je pense que le pari d'avoir +choisi Qt est gagnant, autant pour l'équipe de développement du système, qui +dispose déjà d'un environnement bien construit que pour le développeur +d'application qui trouve facilement de la documentation pour son besoin. On +sent par contre la jeunesse de l'environnement à travers les petits problèmes +mentionnés ci-dessus. + +L'émulateur tourne dans une image virtualbox. Il est possible de se connecter à +la machine via ssh, ce qui permet d'accéder au système, il n'y a pas de +limitation d'accès et il est possible d'être root comme sur le téléphone. + +Sur mon poste, l'environnement est beaucoup plus lent que le téléphone, il est +parfois nécessaire d'attendre un moment avant de charger une page et qu'une +animation se termine. + +J'aborderai dans un autre article la question de la sécurité des applications. diff --git a/content/images/hacking/2294144289_a54db90ac5_q.jpg b/content/images/hacking/2294144289_a54db90ac5_q.jpg new file mode 100644 index 0000000..1c937d0 Binary files /dev/null and b/content/images/hacking/2294144289_a54db90ac5_q.jpg differ diff --git a/content/images/icons/tsumego_150.jpg b/content/images/icons/tsumego_150.jpg new file mode 100644 index 0000000..b9e5102 Binary files /dev/null and b/content/images/icons/tsumego_150.jpg differ diff --git a/content/images/sailfish/ide.jpg b/content/images/sailfish/ide.jpg new file mode 100644 index 0000000..cfebf93 Binary files /dev/null and b/content/images/sailfish/ide.jpg differ diff --git a/content/images/sailfish/sailfish.jpg b/content/images/sailfish/sailfish.jpg new file mode 100644 index 0000000..7d63a69 Binary files /dev/null and b/content/images/sailfish/sailfish.jpg differ -- cgit v1.2.3