Introduction

Gova est un framework GUI déclaratif pour le langage de programmation Go, permettant de créer des applications de bureau natives pour macOS, Windows et Linux à partir d'une seule base de code Go. Il offre des composants typés, un état réactif, des boîtes de dialogue de plate-forme réelles et un seul binaire statique.

Contexte Technique

Gova se distingue par son approche déclarative, où les composants sont des structs et les vues sont des structs Go simples avec des champs de propriétés typés. L'état réactif est géré explicitement via un Scope visible, sans ordonnanceurs cachés ou surprises de re-rendering. Le framework intègre également des composants de plate-forme réels, tels que NSAlert, NSOpenPanel et NSSavePanel sur macOS, et utilise Fyne comme fallback sur Windows et Linux.

Les applications créées avec Gova sont compilées en un seul binaire statique, sans nécessité de runtime JavaScript, de navigateur intégré ou d'actifs supplémentaires. Le framework propose également une fonctionnalité de rechargement à chaud, qui permet de recharger l'application après des modifications du code, avec la possibilité de conserver l'état de l'interface utilisateur.

Analyse et Implications

Gova présente plusieurs avantages pour les développeurs Go, notamment la possibilité de créer des applications de bureau natives pour plusieurs plate-formes à partir d'une seule base de code. Le framework est également conçu pour être facile à utiliser, avec une API simple et intuitive. Cependant, il est important de noter que Gova est encore en version pré-1.0, ce qui signifie que l'API peut évoluer avant la version 1.0.

En termes de sécurité, Gova est construit sur Fyne, qui est sous licence BSD-3, et est distribué sous licence MIT. Les problèmes de sécurité sont gérés via le fichier SECURITY.md sur GitHub.

Perspective

Les développeurs intéressés par Gova peuvent commencer par consulter la documentation complète sur gova.dev ou en exécutant npm run dev dans le répertoire docs-site/ pour une version locale. Les exemples de code sont disponibles dans le répertoire examples/ et peuvent être exécutés directement avec go run. Les tests sont également disponibles et peuvent être exécutés avec go test ./.... Les discussions, les problèmes et les demandes de tirage sont gérés sur GitHub.