ACCÈS LIBRE
13.06.2025 à 10:10
Développement d’application en Flutter : retours d’expérience (2/2)
Texte intégral (3161 mots)
Au cours du développement de l’application PeerTube, nous avons acquis certaines expériences dans le choix des technologies employées et les freins que certaines décisions ont entraîné. Nous les partageons ici.
Si vous ne l’avez pas déjà lu, nous vous conseillons de commencer par l’article précédent.
Publication sur les magasins d’application
Publier une application de streaming vidéo issue du fediverse sur les différents magasins d’applications a été un vrai parcours du combattant.
Entre les politiques parfois très strictes des stores, et la sensibilité autour des contenus vidéo — notamment ceux générés ou diffusés par des tiers — il a fallu redoubler de prudence. Apple et Google considèrent en effet qu’en tant qu’éditeur de l’application nous serions responsables de tout le contenu auquel l’application permet d’accéder, et sont particulièrement virulents sur la question dans le cas des formats vidéos (bien davantage que pour une application de podcasts ou même un navigateur internet, assez curieusement). Voici donc un retour sur les différentes étapes, de la toute première soumission à la mise en production.
Les précautions prises
Pour maximiser nos chances d’être acceptés sur les stores, nous avons pris plusieurs précautions dès le départ.
Filtrage des plateformes accessibles
Première mesure : restreindre l’accès aux plateformes via un système de filtrage utilisant des identifiants spécifiques à chaque magasin. Cet identifiant permet de maintenir une liste d’autorisation (allowlist) de plateformes de confiance adaptée à chaque store :
- Sur le Play Store (Android), seule une allowlist restreinte de plateformes est accessible afin de répondre aux exigences de Google.
- Sur l’App Store (iOS), l’allowlist est encore plus limitée, Apple imposant des critères de validation particulièrement élevés.
- Sur F-Droid, en revanche, toutes les plateformes listées dans notre index (qui est modéré) sont accessibles sans filtrage supplémentaire.
L’avantage de ce système basé sur des tags, c’est qu’il est entièrement déporté côté serveur. Autrement dit, si nous devons retirer une plateforme problématique ou en ajouter une nouvelle, cela peut être fait sans mettre à jour l’application elle-même. Ce fonctionnement offre une grande souplesse et réactivité en cas de besoin.
Pas d’ajout manuel de plateformes au début
Pour garantir une validation rapide lors de la première soumission, nous avons volontairement désactivé la possibilité d’ajouter manuellement une plateforme dans l’application. Ainsi, seuls les serveurs autorisés par notre filtre, dont le nombre était très réduit, étaient disponibles.
Une fois l’application validée et disponible sur le Play Store, nous avons réactivé cette fonctionnalité manuelle côté Android, en observant attentivement si cela posait problème. Après plusieurs mois sans retour négatif, nous avons ensuite ouvert cette possibilité sur iOS également.
Présentation et stratégie de déploiement
Par ailleurs, pour mettre toutes les chances de notre côté, un soin particulier a été apporté à l’interface utilisateur de l’application ainsi qu’aux fiches des stores (miniatures, descriptions, mots-clés, captures d’écran, etc.), les stores étant également très sensibles à l’apparence, à la qualité perçue et au respect des bonnes pratiques UX/UI.
Nous avons décidé d’y aller étape par étape :
- D’abord le Play Store, plus rapide et souple.
- Puis l’App Store, plus exigeant mais incontournable.
- Et enfin F-Droid, qui demande une approche différente essentielle pour le public libriste.
Google Play Store, une validation sans accroc
Pour la publication sur le Google Play Store, la documentation officielle Flutter a été suivie : https://docs.flutter.dev/deployment/android
Le Play Store permet plusieurs types de déploiement, utiles pour tester différentes étapes de l’application :
- Test interne : permet de distribuer l’application à un petit groupe de testeurs internes (jusqu’à 100).
- Test fermé : permet de cibler un groupe restreint plus large via une liste d’adresses email ou un groupe Google.
- Test ouvert : permet à n’importe quel utilisateur de rejoindre le programme de test via un lien public.
- Production : c’est la version stable, publiée pour tous les utilisateurs sur le Play Store.
Les étapes de validation
Chaque type de déploiement est validé automatiquement par Google, avec des délais très courts :
- Les tests internes et fermés sont généralement disponibles en moins d’une heure.
- Les tests ouverts et la mise en production peuvent prendre quelques heures, rarement plus.
Google a toujours accepté l’application dès la première soumission, sans demander de modifications ou poser de questions. Aucun échange, aucun retour de leur part : uniquement la validation après envoi et un changelog bien rédigé.
À croire que les précautions mises en place en amont ont été suffisantes… voire qu’on aurait pu être un peu plus détendus !
Apple App Store, les complications…
Une fois l’étape Google franchie haut la main, direction Apple — réputé pour être nettement plus exigeant.
Comme pour Android, j’ai suivi la documentation officielle Flutter pour le déploiement iOS :
👉 Flutter iOS Deployment
Sur iOS, les applications peuvent être distribuées via deux canaux principaux :
- TestFlight : pour partager des versions bêta avec un groupe de testeurs (jusqu’à 10 000). Le processus est plus souple que pour la production, mais reste soumis à validation.
- Production : la version stable et publique de l’app, visible sur l’App Store.
Les étapes de validation
L’avertissement de Gabe
Avant de soumettre PeerTube sur iOS, nous avons échangé avec Gabe, développeur du projet OwnCast, qui avait essuyé plusieurs refus de la part d’Apple. Il nous a transmis ses précieux retours et stratégies pour répondre aux fameuses App Store Guidelines. Voici un résumé :
- Guideline 1.2 – Safety – User Generated Content
➤ Solution : intégrer un système de signalement côté client, qui envoie un email à un modérateur capable de retirer une instance si besoin. - Guideline 5.2.3 – Legal
➤ l.
➤ Solution : fournir un document PDF listant chaque serveur vidéo préconfiguré dans l’app, avec la mention “Authorized” pour chacun. Apple ne se satisfait pas d’une simple déclaration : ils veulent des preuves tangibles.
- Guideline 3.1.1 – Business – Payments – In-App Purchase
➤ Problème : l’app permettait de faire des dons via des liens comme PayPal, OpenCollective, KoFi, etc.
➤ Solution : supprimer toute interaction liée au paiement dans l’app. Tous les liens renvoyant vers des dons doivent ouvrir une page dans un navigateur externe (Safari, Chrome…). Aucun lien de paiement ne doit être affiché dans une WebView interne. - Guideline 5.2.3 – Legal (bis)
➤ Solution : fournir un maximum de documents, liens et preuves que les catalogues et services de découverte intégrés sont bien opérés par nous, et non une tierce partie non autorisée.
Merci encore à Gabe pour ces conseils précieux !
On se lance… et ça coince.
Malgré l’application rigoureuse des conseils de Gabe, Apple n’a pas fait de cadeau.
Entre Lokas et PeerTube, les deux apps que nous tentions de publier fin 2024, nous avons essuyé 8 refus pour Lokas avant d’obtenir la validation, et 3 refus pour PeerTube.
Dès qu’un reviewer Apple trouvait un souci (même mineur), la demande était rejetée, et il fallait corriger point par point avant de pouvoir espérer passer à l’étape suivante.
Voici les principales guidelines qui nous ont posées problème :
Guideline 5.2.3 – Legal
.
Malgré l’envoi d’un document listant les plateformes autorisées dans l’app iOS, cela n’a pas suffi à convaincre Apple. Nous avons donc répondu :
Le document joint était rigoureusement le même que celui soumis lors du dépôt de l’application.
Guideline 3.1.1 – Business – Payments – In-App Purchase
Apple nous a signalé un lien vers le site joinpeertube.org dans l’app, qui contient… un bouton de don. Ce simple lien externe a suffi à justifier un rejet.
Nous avons alors tenté une première réponse, en expliquant que tous les liens de dons ouvraient désormais une page externe dans le navigateur, et qu’aucune collecte n’était réalisée dans l’application elle-même. Nous avons souligné que cette approche respectait les guidelines de l’App Store, puisque le processus de don était totalement séparé des fonctionnalités de l’app. Malgré cette clarification, Apple n’a pas été convaincu.
En replongeant dans les App Store Guidelines, j’ai repéré un paragraphe en notre faveur :
J’ai donc renvoyé un message à l’équipe de validation, en expliquant que l’application ne collecte aucun don en interne : tous les liens de soutien ouvrent une page externe dans le navigateur (Safari), conformément à la section 3.2.2 (iv) des App Store Guidelines qui autorise ce fonctionnement pour les apps non caritatives. J’ai ainsi demandé une réévaluation de la décision ou des précisions si d’autres points posaient problème.
🎉 Résultat : l’application PeerTube a officiellement été publiée sur iOS !
Depuis, j’ai soumis 5 mises à jour successives de PeerTube, toutes validées sans accroc — y compris celle qui introduisait la fonctionnalité de connexion.
Chaque mise à jour a été validée en quelques heures, au plus sous 24h.
L’App Store, ce n’est jamais simple… mais avec de la patience et une bonne lecture des guidelines, ça passe.
F-Droid, une autre aventure
Une fois l’étape Apple validée, je me suis attaqué à la soumission sur F-Droid.
Ici, ce n’est pas un problème de guidelines, mais plutôt de processus.
La documentation officielle est plutôt éparse, et j’ai eu du mal à trouver une ressource exhaustive pour un projet Flutter. Je me suis donc appuyé sur :
- La documentation “rapide” : https://f-droid.org/docs/Submitting_to_F-Droid_Quick_Start_Guide/
- La FAQ développeur : https://f-droid.org/docs/FAQ_-_App_Developers/
- Et surtout l’analyse de d’autres applications Flutter déjà présentes sur F-Droid
S’adapter au fonctionnement de F-Droid
F-Droid a des exigences particulières :
- Le build doit être reproductible et entièrement libre.
- Toute dépendance externe doit pouvoir être vérifiée ou supprimée.
- Il faut déclarer les anti-features, c’est-à-dire des limitations qui ne correspondent pas aux idéaux du libre.
Exemple : TetheredNet
L’application PeerTube utilise par défaut deux services maintenus par Framasoft :
- instances.joinpeertube.org pour lister les instances disponibles
- SepiaSearch pour faire des recherches depuis un compte local
Ces services ne sont pas configurables par l’utilisateur, ce qui a été considéré comme une “anti-feature” du type TetheredNet
(connexion à un service centralisé sans possibilité de le changer).
Cette mention a donc été ajoutée lors de la soumission initiale.
Bonne nouvelle : depuis, cette anti-feature a été retirée, car nous avons rendu ces services personnalisables dans l’app.
Dépasser le blocage d’une dépendance obsolète
Avant de parvenir à la validation, nous avons rencontré un obstacle lié à une dépendance utilisée pour la gestion de la base de données locale. Cette bibliothèque, pourtant populaire au moment du choix initial, n’était plus maintenue et ne proposait pas de version compatible avec la dernière version de Flutter requise par F-Droid pour garantir la reproductibilité des builds. Ce blocage a empêché la compilation de l’application sur l’infrastructure F-Droid, rendant impossible sa publication.
Après analyse, il est apparu que la meilleure solution, pour des raisons de pérennité et de sécurité, était de remplacer cette dépendance obsolète par une alternative maintenue et compatible avec les exigences de F-Droid. Ce changement a nécessité une réécriture partielle de la gestion des données locales, mais a permis de débloquer la situation et d’assurer la stabilité du projet sur le long terme.
Le merge request de soumission
Après plusieurs itérations, nous avons enfin pu soumettre notre app sur F-Droid.
Vous pouvez consulter la MR ici : https://gitlab.com/fdroid/fdroiddata/-/merge_requests/17235
Et pour voir la configuration finale de l’application PeerTube sur F-Droid (fichier metadata/*.yml
) : https://gitlab.com/fdroid/fdroiddata/-/blob/master/metadata/org.framasoft.peertube.yml
F-Droid demande rigueur et patience, mais l’expérience permet aussi de mieux comprendre les enjeux du libre et de la décentralisation.
C’était un vrai défi, mais on est fier·es de faire partie du catalogue officiel.
Nous en profitons pour vous rappeler que le financement participatif pour le développement de l’application PeerTube est en cours jusqu’au 17 juin 2025 !
11.06.2025 à 16:48
FramIActu n°5 — La revue mensuelle sur l’actualité de l’IA
Texte intégral (4377 mots)
Alors que les chaleurs estivales arrivent, l’actualité de l’Intelligence Artificielle s’est elle aussi réchauffée ce dernier mois avec des avancées techniques majeures.
Préparez votre boisson préférée et installez-vous confortablement : c’est l’heure de la FramIActu !

Stokastik, la mascotte de FramamIA, faisant référence au perroquet stochastique. Illustration de David Revoy – Licence : CC-By 4.0
Pourquoi est-ce que Grok se met à parler de « génocide blanc » ?
Est-ce que Google vient d’enterrer la recherche sur le web ?
OpenAI rachète l’entreprise de matériel de Jony Ivy

Stokastik, la mascotte de FramamIA, faisant référence au perroquet stochastique. Illustration de David Revoy – Licence : CC-By 4.0
C’est tout pour cette FramIActu ! Nous espérons que vous l’avez appréciée !
Vous pouvez poursuivre votre lecture sur le sujet en consultant les articles de notre site de curation dédié au sujet, mais aussi et surtout FramamIA, notre site partageant des clés de compréhension sur l’IA !
Si nous pouvons vous proposer cette nouvelle revue mensuelle, c’est grâce à vos dons, Framasoft vivant presque exclusivement grâce à eux !
Pour nous soutenir et si vous en avez les moyens, vous pouvez nous faire un don via le formulaire dédié !
Enfin, notez que le rythme de parution de la FramIActu risque de changer dans les prochains mois. Nous constatons en effet une diminution du rythme de parutions d’informations « intéressante pour le grand public » sur l’IA. Il y a certes des avancées techniques, et toujours énormément de recherches sur le sujet… mais nous percevons tout de même une forme de baisse de régime. Attendez-vous donc à d’éventuels changements autour de la FramIActu pour refléter tout ça !
À bientôt ! 👋
11.06.2025 à 12:10
Développement d’application en Flutter : retours d’expérience (1/2)
Texte intégral (3114 mots)
Au cours du développement de l’application PeerTube, nous avons acquis certaines expériences dans le choix des technologies employées et les freins que certaines décisions ont entraîné. Nous les partageons ici.
Pourquoi Flutter ?
Le développement d’applications mobiles pose rapidement la question du choix des technologies : faut-il créer une application distincte pour chaque plateforme, ou adopter une approche permettant de mutualiser les efforts ? C’est là qu’intervient le cross-platform : une méthode qui consiste à développer une seule base de code pour cibler plusieurs systèmes d’exploitation, principalement Android et iOS.
Le développement cross-platform présente ainsi de nombreux avantages. Il permet avant tout de réduire considérablement les coûts et les efforts de maintenance, puisqu’une seule base de code est nécessaire, limitant ainsi les corrections de bugs et les mises à jour multiples. Il offre aussi un déploiement plus large et plus rapide, en touchant un public plus vaste sans avoir à développer des applications distinctes.
Comme notre développeur n’était pas initialement spécialisé dans le développement mobile, il a dû se former pour maîtriser les outils nécessaires. Deux technologies principales se sont imposées dans notre réflexion : React Native et Flutter.
Nous avons donc mené une étude comparative afin de choisir la solution la plus adaptée à nos besoins. Après analyse, notre choix s’est porté sur Flutter. Pour plus de détails, vous pouvez consulter l’étude complète en suivant ce lien : https://framagit.org/wicklow/peertube-prototypes
Suite à ce choix, notre développeur s’est lancé dans l’apprentissage et la maîtrise de Flutter. Il vous partage son expérience à travers la suite de cet article.
Logo Flutter – Domaine public – Wikicommons.
Apprendre Dart et Flutter
La première étape a été d’apprendre le fonctionnement de Flutter. Les applications Flutter sont écrites en Dart, un langage orienté objet. J’ai donc commencé par explorer la documentation officielle de Dart et Flutter pour comprendre les bases.
Voici les différentes ressources que j’ai utilisées pour m’initier :
- La documentation officielle de Flutter : une excellente introduction officielle pour comprendre les concepts fondamentaux de Flutter.
- Le blog de Flutteris : des articles détaillés et des tutoriels pratiques pour approfondir mes connaissances.
- Code with Andrea : des guides et des exemples concrets pour apprendre à structurer et optimiser mes projets Flutter.
Choisir son architecture
Une fois ces bases acquises, je me suis penché sur la structure idéale pour le projet. Après avoir exploré différentes approches, j’ai opté pour une architecture “Feature First”. Cette méthode consiste à organiser le code par fonctionnalités plutôt que par type de fichier (comme les modèles, les vues, ou les contrôleurs).
L’approche “Feature First” offre de nombreux avantages. Elle apporte une clarté accrue au projet en isolant chaque fonctionnalité dans son propre dossier, ce qui simplifie la navigation et la compréhension de la structure du code. De plus, cette méthode favorise la modularité en rendant les fonctionnalités indépendantes, permettant ainsi leur réutilisation ou leur modification sans affecter les autres parties du projet. Enfin, dans le cadre d’un projet libre, cette organisation facilite la contribution des développeurs externes, qui peuvent se concentrer sur des fonctionnalités spécifiques sans interférer avec le reste du code.
Choisir ses dépendances
Chaque bibliothèque intégrée dans le projet doit être remise en question dans le but de s’assurer qu’elles répondent aux exigences fonctionnelles, qu’elles soient maintenables à long terme et qu’elles n’introduisent pas de risques techniques. Flutter étant une technologie encore jeune, il est important d’être prudent dans le choix des dépendances. Certaines bibliothèques peuvent manquer de maturité ou de soutien communautaire, ce qui pourrait entraîner des bogues ou des problèmes de mises à jour futures.
Voici quelques critères généraux pour choisir une dépendance sur pub.dev :
- Vérifiez le nombre de personnes contribuant activement au projet sur GitHub. Une équipe de contributeur⋅rices plus importante indique souvent un projet plus robuste à long terme.
- Assurez-vous que le projet est actif, avec des commits récents et des demandes régulières, de préférence de la part d’utilisateur⋅rices différent⋅es.
- Regardez le score global sur pub.dev, qui mesure la qualité des paquets.
- Vérifiez la fréquence des publications.
- Donnez la préférence aux paquets publiés par un⋅e éditeur⋅rice vérifié⋅e.
Les dépendances choisies
En prenant en compte ces critères, j’ai soigneusement sélectionné les bibliothèques nécessaires pour le développement de l’application mobile PeerTube.
Voici les principales bibliothèques retenues pour le projet, accompagnées des réflexions qui ont guidé leur sélection :
Le gestionnaire d’état
Un gestionnaire d’état (ou “state management” en anglais) est une approche ou un outil utilisé pour gérer l’état d’une application. Dans le contexte de Flutter, l’état fait référence aux données dynamiques ou aux informations qui peuvent changer au cours de l’exécution de l’application, comme l’entrée utilisateur, les données récupérées d’une API, ou encore l’état d’une animation.
Plusieurs approches et bibliothèques sont disponibles pour la gestion des états dans les applications Flutter, chacune avec ses propres avantages et limitations.
Approches de gestion d’état
StatefulWidget
: le mécanisme intégré le plus simple pour gérer l’état local.InheritedWidget
: une solution native qui permet de partager l’état entre les widgets.- Variables globales : une approche où l’état est stocké dans des variables globales qui sont accessibles dans toute l’application.
Les bibliothèques populaires
Provider :
- Pour : simple, léger et largement utilisé par la communauté Flutter.
- Contre : nécessite un code standard et manque de fonctionnalités avancées.
Bloc :
- Pour : hautement structuré, il favorise la séparation des préoccupations et est idéal pour gérer une logique d’application complexe.
- Contre : courbe d’apprentissage abrupte. Nécessite plus de code de base que les autres solutions.
Riverpod :
- Pour : une alternative moderne à Provider avec une API plus simple, une meilleure testabilité et la prise en charge de l’injection de dépendances. Elle supprime les contraintes de l’arbre des widgets de Flutter, ce qui la rend plus flexible.
- Contre : elle est plus récente que les autres bibliothèques, mais son développement est très actif.
Riverpod a été choisi pour sa simplicité, sa flexibilité et son évolutivité, offrant une gestion globale de l’état indépendante de l’arbre des widgets. L’approche de Riverpod avec des variables globales me convient. En outre, l’intégration de la génération de code dans le projet promet d’améliorer les performances à l’avenir. Cependant, il est important de choisir une solution qui correspond à vos préférences et à vos besoins spécifiques.
Le routeur
Un routeur est un composant essentiel qui gère la navigation entre les différents écrans d’une application, permettant de définir les itinéraires, de gérer les transitions, de transmettre des paramètres via les URL, et de prendre en charge les liens profonds.
Plusieurs bibliothèque sont disponibles pour gérer la navigation dans les applications Flutter :
- Navigator : inclus dans le SDK Flutter mais manque de fonctionnalités telles que les liens profonds.
- AutoRoute : permet de générer du code pour simplifier la gestion des itinéraires, mais peut être difficile à configurer.
- GoRouter : une bibliothèque officielle soutenue par l’équipe Flutter, combinant la facilité d’utilisation avec un support avancé de liens profonds.
Après analyse, GoRouter s’est avéré être le meilleur choix pour ce projet, en particulier pour :
- Un support actif de l’équipe Flutter et une documentation complète, garantissant un choix fiable à long terme.
- La prise en charge des liens profonds, essentielle pour rediriger les utilisateurs entre les pages web des plateformes PeerTube et l’application.
- Basé sur l’API Navigator 2.0 incluse dans le SDK Flutter.
Le lecteur vidéo
Le lecteur vidéo est un composant essentiel pour l’application PeerTube, car il constitue le cœur de l’expérience utilisateur. Il était crucial pour nous de faire le bon choix de bibliothèque dès le début pour garantir une lecture fluide, une compatibilité avec différents formats vidéo, et une intégration harmonieuse avec les fonctionnalités de l’application.
Plusieurs bibliothèques sont disponibles et utilisées par la communauté Flutter pour implémenter la fonctionnalité de lecture vidéo :
- video_player : une bibliothèque officielle soutenue par l’équipe Flutter qui fournit des fonctionnalités de lecture vidéo de base, mais nécessite une personnalisation importante pour les fonctionnalités avancées.
- Chewie : une puissante surcouche autour de video_player soutenue par la communauté Flutter qui fournit une interface de lecteur pré-construite et hautement personnalisable et prend en charge les commandes de base telles que lecture/pause, le plein écran et les sous-titres.
- BetterPlayer : un lecteur vidéo avancé construit au-dessus de Chewie, avec des fonctionnalités supplémentaires, mais pas très bien maintenu.
- MediaKit : un ensemble plus récent qui vise à fournir une expérience de lecture vidéo cohérente et riche en fonctionnalités sur toutes les plateformes, bien que son écosystème et le soutien de la communauté soient encore en cours de maturation.
Après analyse, Chewie s’est avéré être notre premier choix en raison de son équilibre entre simplicité et fonctionnalité :
- Facile à intégrer, il fournit une interface de lecture prête à l’emploi avec une configuration minimale.
- Personnalisable, permettant aux développeurs d’adapter l’interface utilisateur et le comportement aux besoins de l’application.
- Maintenu par la communauté Flutter, il garantissait sa fiabilité.
Cependant, après plusieurs mois d’utilisation, nous avons constaté que la maintenance de Chewie était plus faible que prévu. Certaines fonctionnalités et corrections de bugs présentes dans des merge requests n’étaient pas intégrées, ce qui a limité notre capacité à répondre rapidement aux besoins de l’application.
En conséquence, nous avons décidé de migrer vers video_player. Bien que cette bibliothèque nécessite plus de temps pour mettre en place une interface utilisateur personnalisée et des fonctionnalités avancées, elle offre un contrôle plus granulaire et une stabilité accrue. Cette transition nous a permis de concevoir une expérience utilisateur sur mesure tout en garantissant une meilleure fiabilité à long terme.
Les flavors
Nous avions besoin de deux applications distinctes :
- stable : la version en production, destinée à être déployée sur les stores publics.
- nightly : la version intégrant les derniers changements, basée sur la branche de développement.
Les flavors permettent de gérer ces deux versions de manière distincte, en créant deux applications séparées. Pour mettre cela en place, il est nécessaire de configurer les flavors sur chaque plateforme native ciblée (Android et iOS). De plus, chaque application doit être signée séparément pour chaque flavor. Enfin, le code Dart partagé par toutes les plateformes peut être configuré en fonction de l’environnement grâce à l’argument --dart-define-from-file
, qui permet de fournir un fichier .env
contenant les variables nécessaires.
Exemple de commande pour construire l’environnement stable :
flutter build apk --flavor stable --dart-define-from-file=env-stable.json
Pour plus de détails sur la configuration des flavors et la signature des applications, consultez ce rapport dans lequel nous détaillons comment nous avons mis en place ce système de flavor.
Les erreurs commises
Écrire des tests trop tôt
L’une des erreurs que j’ai commises au début du projet a été de vouloir écrire des tests unitaires et d’intégration dès les premières étapes du développement. Bien que les tests soient essentiels pour garantir la qualité et la stabilité du code, les écrire trop tôt peut s’avérer contre-productif, surtout lorsque l’architecture et les fonctionnalités de l’application ne sont pas encore clairement définies. En effet, au début du projet, de nombreux changements ont été apportés à la structure du code et aux fonctionnalités, rendant ainsi les tests obsolètes rapidement.
De cette expérience, j’ai retenu la leçon suivante : il faut accorder la priorité à la stabilité de l’architecture. Avant d’écrire des tests, il est crucial de s’assurer que l’architecture de l’application est bien définie et stable. Cela permet de réduire le nombre de modifications fréquentes des tests.
Sous-estimer la complexité des dépendances
Nous avons initialement intégré plusieurs bibliothèques sans évaluer pleinement leur maturité et leur compatibilité avec notre projet. Certaines dépendances se sont avérées instables ou mal maintenues, ce qui a entraîné des problèmes imprévus et des retards. Une analyse plus approfondie des dépendances aurait permis d’éviter ces écueils.
Ce parcours d’apprentissage de Flutter m’a ainsi permis de poser des bases solides pour développer l’application mobile PeerTube.
Dans le prochain article, nous aborderons une étape cruciale : la publication de l’application sur les stores (Google Play, App Store et F-Droid). Nous y détaillerons les démarches, les bonnes pratiques et les pièges à éviter pour réussir la mise en ligne d’une application mobile telle que PeerTube.
Nous en profitons pour vous rappeler que le financement participatif pour le développement de l’application PeerTube est en cours jusqu’au 17 juin 2025 !