6 points par GN⁺ 2024-03-28 | 3 commentaires | Partager sur WhatsApp
  • Swift convient bien à la création d’interfaces utilisateur grâce à sa syntaxe claire, son typage statique et ses fonctionnalités particulières qui facilitent l’écriture de code
  • Adwaita for Swift exploite ces atouts de Swift pour offrir une interface intuitive de développement d’applications pour la plateforme GNOME
  • GNOME est un environnement de bureau open source populaire pour Linux, axé sur la simplicité et l’accessibilité

Exemple de code

  • Dans l’exemple de code utilisant Adwaita for Swift, une vue nommée Counter est définie pour afficher la partie interface utilisateur à l’intérieur de la fenêtre
  • Une vue peut être imbriquée dans d’autres vues ou ajoutée comme enfant d’une fenêtre, et son contenu peut être modifié de l’extérieur selon sa position dans la hiérarchie des vues
  • Cela facilite la combinaison de vues pour produire différents résultats

Motivation

  • Permettre l’écriture d’applications GNOME en Swift
  • Les liaisons existantes pour libadwaita et GTK suivent un style de programmation impératif, où l’interface utilisateur est construite à l’aide d’une série de commandes
  • Adwaita for Swift est conçu autour des données : par exemple, si l’on modifie la variable count en appuyant sur un bouton, l’interface utilisateur se met automatiquement à jour

Facilité d’utilisation

  • Avec les liaisons traditionnelles, il faut appeler des fonctions sur les objets pour que les widgets mettent à jour leur contenu à chaque changement de valeur
  • Adwaita for Swift s’occupe du reste dès qu’on ajoute simplement un identifiant unique aux variables à conserver

Lisibilité

  • L’approche centrée sur les données a un effet positif sur la lisibilité
  • Grâce à la définition déclarative de l’interface utilisateur elle-même, on peut se concentrer sur l’apparence et le comportement de l’application plutôt que sur la manière d’obtenir le résultat

Développement d’applications multiplateformes

  • Adwaita for Swift permet d’écrire des applications qui s’exécutent sur Linux, macOS et Windows à partir d’une base de code unique
  • Il est possible de partager le code Swift backend entre des applications SwiftUI et des applications GNOME
  • Swift permet de créer de nouvelles applications GNOME tout en offrant une excellente lisibilité du code et une bonne sûreté mémoire

Publication d’applications

  • Adwaita for Swift fonctionne bien avec Flathub, ce qui simplifie l’installation et la publication d’applications pour le bureau Linux
  • Il existe une extension Freedesktop SDK pour Swift 5 ainsi qu’un outil qui convertit les dépendances Swift Package Manager en sources Flatpak

Avis de GN⁺

  • L’association de Swift et de GNOME offre aux développeurs de nouvelles possibilités de développement d’applications sur une nouvelle plateforme, en particulier grâce à la combinaison des puissantes fonctionnalités du langage Swift et de l’environnement convivial de GNOME, qui permet une expérience de développement efficace.
  • Cet article propose une nouvelle approche de l’environnement de bureau Linux et met en avant la facilité de développement et la lisibilité d’un style déclaratif par rapport aux méthodes de développement existantes.
  • Il souligne les avantages du développement multiplateforme et met en lumière l’importance de fournir la même expérience utilisateur sur différents systèmes d’exploitation
  • Sur le plan technique, le typage statique et la sûreté mémoire de Swift peuvent contribuer à améliorer les performances et la stabilité des applications
  • D’un point de vue critique, il faut prendre en compte la possibilité de problèmes de compatibilité ou de performances dans des environnements de bureau autres que GNOME

3 commentaires

 
bbulbum 2024-03-30

https://stuff.mit.edu/afs/athena/…

La prononciation officielle de GNOME n’est pas « nome », mais « gnome ».

 
neoroman 2024-03-29

C’est excellent.

 
GN⁺ 2024-03-28
Avis Hacker News
  • Discussion autour d’un wrapper similaire à SwiftUI

    • Il est fait mention d’une approche fournissant un wrapper déclaratif similaire à SwiftUI. L’idée centrale est de proposer un wrapper de style SwiftUI pour les fonctionnalités de GNOME.
    • SwiftUI lui-même traverse des difficultés de jeunesse en ce qui concerne l’exécution et les mises à jour sur le bon thread ainsi que la bonne gestion du data binding.
    • Les billets de blog de swift.org ou d’Apple ne sont généralement que de petites démos montrant des chemins qui fonctionnent globalement bien. Lorsqu’il est question d’un nouveau framework ou d’une nouvelle plateforme, on aimerait voir davantage de preuves que les auteurs comprennent les principaux problèmes, les résolvent et poursuivront le développement.
    • Les frameworks d’UI multiplateforme deviennent rapidement complexes et traînent des problèmes de long terme qui peuvent constituer des obstacles pour les utilisateurs ou les clients, comme Flutter ou Java/Eclipse.
    • Dans le cas de Swift, cela n’aide pas qu’il existe plusieurs modèles de concurrence et des comportements différents entre les plateformes Apple et Linux (où l’UI n’est pas officiellement testée).
  • Mentions d’autres projets et outils

    • Des liens sont fournis vers un wrapper similaire à SwiftUI, Tokamak, ainsi que FlutterSwift pour des cas d’usage embarqués.
  • Partage d’une expérience personnelle sur un projet

    • Une expérience d’écriture d’un petit projet annexe avec Vala et gtk4 est partagée.
    • Le format de Blueprint plaisait, mais l’absence de documentation sur la manière de réaliser des fonctionnalités plus avancées a posé problème.
    • Bien que Vala soit une langue très appréciée, il est estimé qu’il serait préférable d’écrire toute la logique et les modèles en Vala, puis d’utiliser cette bibliothèque Swift pour l’UI.
  • Comparaison avec une expérience passée

    • Cela rappelle une expérience similaire d’écriture d’une application GNOME en C# avec Mono il y a environ 20 ans.
  • Problème d’exécution sur Mac

    • Une tentative d’exécution sur Mac a été faite, mais le problème d’un adwaita.h manquant a été rencontré.
  • Avis sur un « framework de rêve » personnel

    • Le fait qu’il soit open source, similaire à SwiftUI et cible GTK4 le rapproche d’un framework d’UI desktop multiplateforme de rêve.
    • La syntaxe de Swift demande du temps pour s’y habituer, mais une fois tous les concepts assimilés, c’est une langue très agréable à utiliser.
    • La seule raison de ne pas utiliser Swift est que le support sous Linux n’est pas aussi bon que sur les plateformes Apple.
  • Question sur le support 3D dans gtk4

    • Une question est posée sur le fait de savoir si, lors de l’utilisation de la 3D dans gtk4, on reste encore limité à un contexte OpenGL.
  • Avis sur l’usage de clés dans les paramètres de fonction

    • Il est estimé que l’introduction de clés dans les paramètres de fonction était une erreur.
  • Discussion sur les tests d’une base de code Swift

    • Une discussion a lieu sur la manière de tester une base de code Swift. La documentation sur les tests est insuffisante et ne propose pas de stratégie pour les mocks, les stubs, le reporting ou la couverture de code.
    • Dans le cas d’applications utilisant des extensions réseau, les tests doivent être effectués uniquement sur des appareils physiques en raison des contraintes de signature.
    • Une question est posée pour savoir si quelqu’un connaît un bon service de CI sur appareils physiques prenant en charge à la fois les appareils iOS et macOS.
  • Constat que Swift devient une option intéressante pour le développement desktop

    • Il a été récemment constaté que Swift devient une option intéressante pour le développement desktop. En plus de cet exemple, Arc pour macOS et Windows est également mentionné.