Retour

Blog

Blog

Ingénierie

Ingénierie

19 déc. 2023

Construire la sécurité EDAMAME : Notre parcours avec Flutter et Rust

Frank Lyonnet

Dans notre quête de créer quelque chose d'impactant dans le monde de la technologie, nous avons entrepris un projet ambitieux : EDAMAME Security, une application de sécurité multiplateforme alliant Flutter et Rust. Notre équipe, avec des expériences et des perspectives diverses, est ravie de partager notre parcours et les leçons apprises en cours de route.

Qu'est-ce qu'EDAMAME Security ?

EDAMAME Security est notre réponse au besoin croissant de protection numérique complète. Voici ce qu'il englobe :

  • Critères de sécurité : Il utilise des normes comme CIS Benchmarks mais inclut également la dimension personnelle de l'analyse de posture de sécurité.

  • Gestion de l'identité numérique : Intégration avec HaveIBeenPwned.com pour la gestion de l'identité en ligne.

  • Analyse de réseau pour tous : Inspiré par 'nmap', nous avons rendu l'analyse de réseau accessible à tous.

  • Agent de gestion axé sur la confidentialité : Il peut se connecter à notre plateforme "sans MDM" (voir https://www.edamame.tech) pour gérer tous les appareils, y compris ceux personnels ou de sous-traitants, garantissant la confidentialité et la confidentialité.

  • Large support de plateforme : Disponible sur macOS, Windows, iOS, et bientôt sur Linux, Android, et Chromebook.

Notre expérience avec Flutter

Flutter a été notre choix pour sa flexibilité et sa liberté créative. Voici un aperçu de notre expérience :

  • Parés à partir de zéro : Nous avons adopté une approche de haut en bas, permettant même les idées les plus folles comme un 'radar' d'analyse de réseau.

  • Défis des composants : Certains composants, comme Bitsdojo Window, nécessitaient une attention particulière en raison d'un entretien insuffisant.

  • Courbe d'apprentissage : Nous l'avons trouvée tout à fait raisonnable, contrairement à certaines attentes.

  • Développement multiplateforme : Étonnamment fluide, debunking les mythes sur sa complexité.

  • Assistance IA : Un outil utile qui a généralement bien fonctionné pour nous. En fait, le radar a été construit avec l'aide d'une version précoce de GPT-4…

Rust : La puissance

Rust nous a apporté la performance et la sécurité dont nous avions besoin, bien qu'il soit venu avec ses défis :

  • Performance et sécurité : Ces éléments étaient non négociables pour nous, et Rust a livré.

  • Philosophie et culture : Nous avons adopté l'éthique de Rust, en le qualifiant souvent avec humour de "véritable langage de l'amour".

  • Courbe d'apprentissage : Admettons-le, difficile, particulièrement avec des concepts comme l'emprunt et les Futurs.

  • Complexité des Futurs : Cela a présenté des erreurs cryptiques, nous obligeant à plonger profondément dans la résolution de problèmes.

L'expérience du pont Flutter Rust

Utiliser le Flutter Rust Bridge a été une expérience mitigée :

  • Automatisation de FFI : Une excellente idée, mais pas sans ses bugs.

  • Bogues et solutions de contournement difficiles : Nous avons passé des jours, parfois des semaines, à résoudre des problèmes comme le bug de fichier multi-API.

  • Régressions et erreurs : De nouvelles mises à jour apportaient parfois de nouvelles douleurs de tête.

  • Investissement en temps : Le débogage et la recherche de solutions ont consommé une part significative de notre temps.

Flutter => Rust => Natifs (Swift, Java…) : Devenons fous

Nous ne nous sommes pas arrêtés là avec le mélange de langages. Nous avions besoin d'appels système natifs non supportés dans Rust et qui ne pouvaient pas être effectués dans Flutter.

  • macOS/iOS : certains crates comme swift-rs fournissent un pont fonctionnel entre Rust et Swift, mais encore une fois, c'est à la pointe.

  • Android : encore une fois ce n'est pas un cas d'utilisation standard et nous avons dû nous gratter la tête.

  • Dans l'ensemble, la maintenance est un défi pour cette partie du code.

App Stores … Ça marche !

Nous avons réussi à créer des exécutables pour tous les magasins sans aucun problème.

  • Apple : n'oubliez pas d'activer l'exception JIT si vous utilisez le droit d'entitlement de temps d'exécution renforcé !

  • Microsoft : faire fonctionner les notifications peut être un défi.

Conclusion

Avec le recul, combiner Flutter et Rust a été un rêve devenu réalité à bien des égards. Nous avons apprécié le processus, malgré les frustrations occasionnelles avec le pont Flutter Rust. Bien que nous n'ayons pas pu contribuer autant que nous l'aurions souhaité au projet du pont, nous apprécions l'équipe qui le soutient.

Pour l'avenir, nous gardons un œil sur la nouvelle version v2 du pont.

En résumé, notre aventure dans la construction d'EDAMAME Security a été un témoignage de la réalité du développement d'applications multiplateformes - difficile, enrichissant, et finalement gratifiant. C'est un parcours dont nous sommes fiers et que nous sommes impatients de continuer.

Vous voulez essayer ? Regardez ici : https://github.com/edamametechnologies/


Frank Lyonnet

Partagez ce post