summaryrefslogtreecommitdiff
path: root/content/Informatique/2015-03-25-sailfish.rst
diff options
context:
space:
mode:
authorSébastien Dailly <sebastien@chimrod.com>2015-03-21 11:32:09 +0100
committerSébastien Dailly <sebastien@chimrod.com>2015-03-25 21:30:13 +0100
commit3fcddf78f965a2c5ee0a9602708899fb0e72a7c0 (patch)
treee6e1ea32bde1e0e98be7e5595172a12938ea74b7 /content/Informatique/2015-03-25-sailfish.rst
parent9823d9e70be435e5a86f9d51489d85b6c6ba7a69 (diff)
Article on sailfish developpement
Diffstat (limited to 'content/Informatique/2015-03-25-sailfish.rst')
-rwxr-xr-xcontent/Informatique/2015-03-25-sailfish.rst152
1 files changed, 152 insertions, 0 deletions
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.