Ouvrir le menu principal

MacGeneration

Recherche

Récit d'une grosse migration de Swift 2.3 à Swift 3 avec Firefox iOS

Stéphane Moussie

vendredi 24 février 2017 à 18:22 • 21

Logiciels

Swift 4, qui sera lancé cette année, va soulager les développeurs d’un processus contraignant : la migration. La stabilité du code source récemment annoncée par Apple signifie pour les développeurs qu’ils n’auront pas à modifier le code de leurs apps pour passer de Swift 4 à une future version.

Encore faut-il que le projet soit passé à Swift 4, et avant à Swift 3. Dans un billet de blog détaillé, Mozilla raconte la migration de Firefox iOS de la version 2.3 à la 3.0. Une opération tout sauf anodine pour un projet qui comptabilise plus de 200 000 lignes de code.

L’outil de migration intégré à Xcode.

Xcode a un outil de migration automatique, mais même s’il est d’une « aide fantastique », il vous laisse au bout du compte avec un projet impossible à compiler et long à démêler, indique l’équipe mobile de la fondation.

Pour passer à Swift 3.0, Mozilla a décidé d’agir plus méthodiquement que lors de sa transition de Swift 1.0 à 2.0, c’est-à-dire en commençant déjà par freezer le code (pas d’ajouts durant le processus).

Notre plan était simple. Avancer étape par étape, en migrant chaque composant séparément et en s’assurant que les tests soient concluants avant de passer au suivant.

Pour cela, Mozilla a identifié clairement les différents composants de son projet et les a cartographiés avec le logiciel Graphviz, ce qui a donné le graphique ci-dessous. L’équipe a ensuite organisé le travail dans la plateforme de développement Bugzilla.

Cliquer pour agrandir

Le premier accroc dans le plan s’est manifesté assez rapidement. Impossible de tester individuellement les composants migrés sans convertir le composant principal au préalable. L’approche choisie n’était pas adaptée au fonctionnement de Xcode.

L’équipe a fait face à un second obstacle quand elle a migré de gros composants, en particulier celui consacré au stockage : « même après tout ce temps, la capacité de Xcode à compiler du code Swift est… bancale. » L’environnement de développement renvoyait des messages d’erreur générique qui n’étaient d’aucune aide. Heureusement, Xcode 8.3 sortie en bêta fin janvier a amélioré ce point.

Au lieu de « paralléliser » la migration comme c’était prévu, l’équipe l’a « aplanie » en un seul fil. Un changement de méthode rendu possible par l’éloignement géographique des trois ingénieurs en charge du travail :

Notre ingénieure au Royaume-Uni travaillait sur un composant jusqu’à la fin de sa journée. Ensuite notre ingénieur basé à Toronto reprenait le travail l’a où elle l’avait laissé et le continuait jusqu’à la fin de sa journée. Puis notre ingénieur à Vancouver prenait la suite. […] Les heures de travail qui se chevauchaient étaient utilisées pour résoudre ensemble les problèmes les plus délicats.

Extrait du canal Slack mis en place pour la migration.

Finalement, alors que l’équipe avait estimé avec beaucoup d’optimisme que la migration serait faite en une semaine, il en a fallu entre trois et quatre au total. L’opération a mobilisé trois ingénieurs et trois personnes en charge du contrôle qualité. L’équipe partage sur son blog des ressources et des astuces qui lui ont été utiles.

À une autre échelle, la migration vers Swift 3 de notre application iGeneration qui avait été entièrement écrite en Swift 2 a pris environ quatre jours à notre développeur émérite (il l’a réalisée sans utiliser l’outil de migration automatique de Xcode).

Rejoignez le Club iGen

Soutenez le travail d'une rédaction indépendante.

Rejoignez la plus grande communauté Apple francophone !

S'abonner

Calendrier, chaînes d'assemblage, IA… ces startups qu'Apple a récemment achetées pour améliorer ses produits

12:15

• 0


Hirokazu Kore-eda détaille comment il a tourné son dernier film avec des iPhone 16 Pro

12:00

• 0


macFUSE 5 tire parti de FSKit pour faciliter l’ajout de systèmes de fichiers à macOS

09:34

• 23


Promo sur des batteries externes de forte capacité pour Mac, iPhone ou iPad

08:44

• 0


Promo : l'Atari 2600 Plus à 90 € (-30 €) avec 10 jeux et un joystick

08:24

• 0


Du M5 aux processeurs d'IA pour serveurs, Apple a du pain sur la planche

06:51

• 17


La production des SoC des lunettes connectées d’Apple lancée fin 2027

08/05/2025 à 21:54

• 30


Apple Intelligence par la pratique et la démonstration jusqu'en Apple Store

08/05/2025 à 15:45

• 19


Promos et cadeaux pour la réouverture de la boutique Apple de C&C Labège

08/05/2025 à 15:10

• 1


Skype s'est arrêté, mais que sont devenus les crédits non dépensés ?

08/05/2025 à 14:38

• 20


MacBook Air M4 : la chute des prix se poursuit encore sur ce nouvel incontournable 🆕

08/05/2025 à 11:38

• 74


Google contredit Apple après que son action a dévissé en bourse

08/05/2025 à 10:00

• 45


Kernel Panic : notre retour d’expérience sur les kits solaires pour balcons et jardins

08/05/2025 à 10:00

• 4


Si Apple devait ressusciter un de ses anciens produits, lequel choisiriez-vous ?

08/05/2025 à 08:00

• 142


Profitez de Microsoft Office à petit prix pendant les French Days 2025 📍

07/05/2025 à 23:20

• 0


Pour Eddy Cue, l’iPhone ne sera peut-être plus là dans 10 ans

07/05/2025 à 21:32

• 75