summaryrefslogtreecommitdiff
path: root/content/Informatique/2015-03-25-sailfish.rst
blob: f6f379634db40ff4d329026bbfd773e9765df2a1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
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.